resolver.jsView |
---|
15 | 15 … | const didRe = /^did:ssb:(ed25519):([0-9a-zA-Z._\-]+)$/; |
16 | 16 … | const didUrlRe = /^(did:[^?#\/]*)(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; |
17 | 17 … | const ssbRefRe = /^(@|%|&)([A-Za-z0-9\/+]{43}=)\.([\w\d]+)$/; |
18 | 18 … | const ssbMsgIdRe = /^%[A-Za-z0-9\/+]{43}=\.[\w\d]+$/; |
| 19 … | +const dateTimeRe = /^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ$/; |
19 | 20 … | |
20 | 21 … | function parseDIDURL(uri) { |
21 | 22 … | const m = didUrlRe.exec(uri); |
22 | 23 … | if (!m) return null; |
99 | 100 … | msg = {key: msgId, value}; |
100 | 101 … | gotLatestMessage(); |
101 | 102 … | }); |
102 | 103 … | } else if (versionTime) { |
| 104 … | + if (!dateTimeRe.test(versionTime)) return cb({error: 'invalidVersionTime'}, Null, {}); |
103 | 105 … | const versionDate = new Date(versionTime); |
| 106 … | + const timestampQuery = {$lte: versionDate.getTime() + 1000}; |
104 | 107 … | |
105 | 108 … | pull( |
106 | 109 … | self.sbot.query.read({ |
107 | 110 … | reverse: true, |
110 | 113 … | {$filter: { |
111 | 114 … | value: { |
112 | 115 … | author: feedId, |
113 | 116 … | content: {type: 'did-document-update'}, |
114 | | - timestamp: {$lte: versionDate.getTime()} |
| 117 … | + timestamp: timestampQuery |
115 | 118 … | } |
116 | 119 … | }} |
117 | 120 … | ] |
118 | 121 … | }), |