@enbox/dwn-sdk-js 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +2591 -1435
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/constants.js +20 -0
  6. package/dist/esm/src/core/constants.js.map +1 -1
  7. package/dist/esm/src/core/dwn-error.js +24 -1
  8. package/dist/esm/src/core/dwn-error.js.map +1 -1
  9. package/dist/esm/src/core/grant-authorization.js +4 -4
  10. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  11. package/dist/esm/src/core/message.js +89 -4
  12. package/dist/esm/src/core/message.js.map +1 -1
  13. package/dist/esm/src/core/messages-grant-authorization.js +147 -55
  14. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/protocol-authorization.js +76 -0
  16. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  17. package/dist/esm/src/core/records-grant-authorization.js +40 -15
  18. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  19. package/dist/esm/src/handlers/messages-read.js +5 -5
  20. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  21. package/dist/esm/src/handlers/messages-subscribe.js +109 -7
  22. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  23. package/dist/esm/src/handlers/messages-sync.js +341 -96
  24. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  25. package/dist/esm/src/handlers/protocols-configure.js +81 -2
  26. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  27. package/dist/esm/src/handlers/records-count.js +30 -0
  28. package/dist/esm/src/handlers/records-count.js.map +1 -1
  29. package/dist/esm/src/handlers/records-delete.js +3 -2
  30. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  31. package/dist/esm/src/handlers/records-query.js +30 -0
  32. package/dist/esm/src/handlers/records-query.js.map +1 -1
  33. package/dist/esm/src/handlers/records-read.js +3 -2
  34. package/dist/esm/src/handlers/records-read.js.map +1 -1
  35. package/dist/esm/src/handlers/records-subscribe.js +31 -0
  36. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  37. package/dist/esm/src/handlers/records-write.js +3 -2
  38. package/dist/esm/src/handlers/records-write.js.map +1 -1
  39. package/dist/esm/src/index.js +2 -0
  40. package/dist/esm/src/index.js.map +1 -1
  41. package/dist/esm/src/interfaces/messages-read.js +6 -3
  42. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  43. package/dist/esm/src/interfaces/messages-subscribe.js +6 -3
  44. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  45. package/dist/esm/src/interfaces/messages-sync.js +17 -3
  46. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  47. package/dist/esm/src/interfaces/protocols-configure.js +5 -2
  48. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  49. package/dist/esm/src/interfaces/protocols-query.js +8 -4
  50. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  51. package/dist/esm/src/interfaces/records-count.js +5 -0
  52. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  53. package/dist/esm/src/interfaces/records-delete.js +6 -2
  54. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  55. package/dist/esm/src/interfaces/records-query.js +5 -0
  56. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  57. package/dist/esm/src/interfaces/records-read.js +6 -3
  58. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  59. package/dist/esm/src/interfaces/records-subscribe.js +5 -0
  60. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  61. package/dist/esm/src/interfaces/records-write.js +6 -3
  62. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  63. package/dist/esm/src/protocols/permissions.js +28 -7
  64. package/dist/esm/src/protocols/permissions.js.map +1 -1
  65. package/dist/esm/src/sync/records-projection.js +228 -0
  66. package/dist/esm/src/sync/records-projection.js.map +1 -0
  67. package/dist/esm/src/types/message-types.js.map +1 -1
  68. package/dist/esm/src/types/permission-types.js.map +1 -1
  69. package/dist/esm/src/utils/permission-scope.js +37 -0
  70. package/dist/esm/src/utils/permission-scope.js.map +1 -0
  71. package/dist/esm/tests/core/grant-authorization.spec.js +26 -3
  72. package/dist/esm/tests/core/grant-authorization.spec.js.map +1 -1
  73. package/dist/esm/tests/core/records-grant-authorization.spec.js +117 -0
  74. package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -0
  75. package/dist/esm/tests/features/permissions.spec.js +126 -0
  76. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  77. package/dist/esm/tests/handlers/messages-read.spec.js +345 -12
  78. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  79. package/dist/esm/tests/handlers/messages-subscribe.spec.js +326 -9
  80. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  81. package/dist/esm/tests/handlers/messages-sync.spec.js +1053 -7
  82. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  83. package/dist/esm/tests/handlers/protocols-configure.spec.js +361 -0
  84. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  85. package/dist/esm/tests/handlers/records-count.spec.js +75 -2
  86. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  87. package/dist/esm/tests/handlers/records-query.spec.js +73 -0
  88. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  89. package/dist/esm/tests/handlers/records-subscribe.spec.js +75 -1
  90. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  91. package/dist/esm/tests/interfaces/messages-get.spec.js +107 -5
  92. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  93. package/dist/esm/tests/interfaces/protocols-configure.spec.js +13 -0
  94. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  95. package/dist/esm/tests/interfaces/records-delete.spec.js +12 -0
  96. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  97. package/dist/esm/tests/interfaces/records-query.spec.js +10 -0
  98. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  99. package/dist/esm/tests/interfaces/records-subscribe.spec.js +10 -0
  100. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  101. package/dist/esm/tests/interfaces/records-write.spec.js +33 -0
  102. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  103. package/dist/esm/tests/sync/records-projection.spec.js +245 -0
  104. package/dist/esm/tests/sync/records-projection.spec.js.map +1 -0
  105. package/dist/esm/tests/test-suite.js +2 -0
  106. package/dist/esm/tests/test-suite.js.map +1 -1
  107. package/dist/esm/tests/utils/permission-scope.spec.js +66 -0
  108. package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -0
  109. package/dist/esm/tests/utils/test-data-generator.js +5 -2
  110. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  111. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  112. package/dist/types/src/core/constants.d.ts +13 -0
  113. package/dist/types/src/core/constants.d.ts.map +1 -1
  114. package/dist/types/src/core/dwn-error.d.ts +24 -1
  115. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  116. package/dist/types/src/core/grant-authorization.d.ts +1 -2
  117. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  118. package/dist/types/src/core/message.d.ts +41 -1
  119. package/dist/types/src/core/message.d.ts.map +1 -1
  120. package/dist/types/src/core/messages-grant-authorization.d.ts +36 -4
  121. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  122. package/dist/types/src/core/protocol-authorization.d.ts +12 -0
  123. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  124. package/dist/types/src/core/records-grant-authorization.d.ts +6 -0
  125. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  126. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  127. package/dist/types/src/handlers/messages-subscribe.d.ts +2 -1
  128. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  129. package/dist/types/src/handlers/messages-sync.d.ts +31 -0
  130. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  131. package/dist/types/src/handlers/protocols-configure.d.ts +3 -0
  132. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  133. package/dist/types/src/handlers/records-count.d.ts +4 -0
  134. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  135. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  136. package/dist/types/src/handlers/records-query.d.ts +4 -0
  137. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  138. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  139. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  140. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  141. package/dist/types/src/index.d.ts +6 -2
  142. package/dist/types/src/index.d.ts.map +1 -1
  143. package/dist/types/src/interfaces/messages-read.d.ts +1 -1
  144. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
  145. package/dist/types/src/interfaces/messages-subscribe.d.ts +1 -1
  146. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  147. package/dist/types/src/interfaces/messages-sync.d.ts +4 -1
  148. package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -1
  149. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  150. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
  151. package/dist/types/src/interfaces/records-count.d.ts +1 -0
  152. package/dist/types/src/interfaces/records-count.d.ts.map +1 -1
  153. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  154. package/dist/types/src/interfaces/records-query.d.ts +1 -0
  155. package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
  156. package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
  157. package/dist/types/src/interfaces/records-subscribe.d.ts +1 -0
  158. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  159. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  160. package/dist/types/src/protocols/permissions.d.ts +2 -0
  161. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  162. package/dist/types/src/sync/records-projection.d.ts +98 -0
  163. package/dist/types/src/sync/records-projection.d.ts.map +1 -0
  164. package/dist/types/src/types/message-types.d.ts +1 -0
  165. package/dist/types/src/types/message-types.d.ts.map +1 -1
  166. package/dist/types/src/types/messages-types.d.ts +21 -3
  167. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  168. package/dist/types/src/types/permission-types.d.ts +4 -0
  169. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  170. package/dist/types/src/types/records-types.d.ts +4 -0
  171. package/dist/types/src/types/records-types.d.ts.map +1 -1
  172. package/dist/types/src/types/subscriptions.d.ts +18 -3
  173. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  174. package/dist/types/src/utils/permission-scope.d.ts +29 -0
  175. package/dist/types/src/utils/permission-scope.d.ts.map +1 -0
  176. package/dist/types/tests/core/records-grant-authorization.spec.d.ts +2 -0
  177. package/dist/types/tests/core/records-grant-authorization.spec.d.ts.map +1 -0
  178. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  179. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  180. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  181. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  182. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  183. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  184. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  185. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  186. package/dist/types/tests/sync/records-projection.spec.d.ts +2 -0
  187. package/dist/types/tests/sync/records-projection.spec.d.ts.map +1 -0
  188. package/dist/types/tests/test-suite.d.ts.map +1 -1
  189. package/dist/types/tests/utils/permission-scope.spec.d.ts +2 -0
  190. package/dist/types/tests/utils/permission-scope.spec.d.ts.map +1 -0
  191. package/dist/types/tests/utils/test-data-generator.d.ts +5 -2
  192. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  193. package/package.json +1 -1
  194. package/src/core/constants.ts +24 -0
  195. package/src/core/dwn-error.ts +24 -1
  196. package/src/core/grant-authorization.ts +7 -5
  197. package/src/core/message.ts +153 -6
  198. package/src/core/messages-grant-authorization.ts +282 -70
  199. package/src/core/protocol-authorization.ts +130 -0
  200. package/src/core/records-grant-authorization.ts +64 -21
  201. package/src/handlers/messages-read.ts +7 -5
  202. package/src/handlers/messages-subscribe.ts +149 -9
  203. package/src/handlers/messages-sync.ts +593 -102
  204. package/src/handlers/protocols-configure.ts +103 -2
  205. package/src/handlers/records-count.ts +33 -0
  206. package/src/handlers/records-delete.ts +3 -2
  207. package/src/handlers/records-query.ts +33 -0
  208. package/src/handlers/records-read.ts +3 -2
  209. package/src/handlers/records-subscribe.ts +34 -0
  210. package/src/handlers/records-write.ts +3 -2
  211. package/src/index.ts +7 -3
  212. package/src/interfaces/messages-read.ts +8 -5
  213. package/src/interfaces/messages-subscribe.ts +12 -9
  214. package/src/interfaces/messages-sync.ts +33 -12
  215. package/src/interfaces/protocols-configure.ts +8 -4
  216. package/src/interfaces/protocols-query.ts +13 -9
  217. package/src/interfaces/records-count.ts +7 -0
  218. package/src/interfaces/records-delete.ts +9 -5
  219. package/src/interfaces/records-query.ts +7 -0
  220. package/src/interfaces/records-read.ts +6 -3
  221. package/src/interfaces/records-subscribe.ts +7 -0
  222. package/src/interfaces/records-write.ts +25 -17
  223. package/src/protocols/permissions.ts +47 -9
  224. package/src/sync/records-projection.ts +328 -0
  225. package/src/types/message-types.ts +1 -0
  226. package/src/types/messages-types.ts +23 -3
  227. package/src/types/permission-types.ts +5 -1
  228. package/src/types/records-types.ts +5 -1
  229. package/src/types/subscriptions.ts +19 -3
  230. package/src/utils/permission-scope.ts +55 -0
@@ -2,11 +2,16 @@ import { authenticate } from '../core/auth.js';
2
2
  import { DwnConstant } from '../core/dwn-constant.js';
3
3
  import { Encoder } from '../utils/encoder.js';
4
4
  import { hashToHex } from '../smt/smt-utils.js';
5
+ import { Message } from '../core/message.js';
5
6
  import { messageReplyFromError } from '../core/message-reply.js';
6
7
  import { MessagesGrantAuthorization } from '../core/messages-grant-authorization.js';
7
8
  import { MessagesSync } from '../interfaces/messages-sync.js';
8
- import { PermissionsProtocol } from '../protocols/permissions.js';
9
+ import { Records } from '../utils/records.js';
10
+ import { RecordsProjection } from '../sync/records-projection.js';
11
+ import { RecordsWrite } from '../interfaces/records-write.js';
12
+ import { SortDirection } from '../types/query-types.js';
9
13
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
14
+ import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
10
15
  /**
11
16
  * Maximum inline data size for diff responses — aligned with the
12
17
  * {@link DwnConstant.maxDataSizeAllowedToBeEncoded} threshold (30 KB).
@@ -35,40 +40,21 @@ export class MessagesSyncHandler {
35
40
  catch (e) {
36
41
  return messageReplyFromError(e, 401);
37
42
  }
38
- const { action, protocol, prefix } = message.descriptor;
43
+ const { action } = message.descriptor;
44
+ const projectionScopes = MessagesSyncHandler.getProjectionScopes(message);
39
45
  try {
40
46
  switch (action) {
41
47
  case 'root': {
42
- const rootHash = protocol === undefined
43
- ? await this.deps.stateIndex.getRoot(tenant)
44
- : await this.deps.stateIndex.getProtocolRoot(tenant, protocol);
45
- return {
46
- status: { code: 200, detail: 'OK' },
47
- root: hashToHex(rootHash),
48
- };
48
+ return await this.handleRoot(tenant, message, projectionScopes);
49
49
  }
50
50
  case 'subtree': {
51
- const bitPath = MessagesSyncHandler.parseBitPrefix(prefix);
52
- const hash = protocol === undefined
53
- ? await this.deps.stateIndex.getSubtreeHash(tenant, bitPath)
54
- : await this.deps.stateIndex.getProtocolSubtreeHash(tenant, protocol, bitPath);
55
- return {
56
- status: { code: 200, detail: 'OK' },
57
- hash: hashToHex(hash),
58
- };
51
+ return await this.handleSubtree(tenant, message, projectionScopes);
59
52
  }
60
53
  case 'leaves': {
61
- const bitPath = MessagesSyncHandler.parseBitPrefix(prefix);
62
- const leaves = protocol === undefined
63
- ? await this.deps.stateIndex.getLeaves(tenant, bitPath)
64
- : await this.deps.stateIndex.getProtocolLeaves(tenant, protocol, bitPath);
65
- return {
66
- status: { code: 200, detail: 'OK' },
67
- entries: leaves,
68
- };
54
+ return await this.handleLeaves(tenant, message, projectionScopes);
69
55
  }
70
56
  case 'diff': {
71
- return this.handleDiff(tenant, message);
57
+ return await this.handleDiff(tenant, message);
72
58
  }
73
59
  default: {
74
60
  return {
@@ -81,6 +67,60 @@ export class MessagesSyncHandler {
81
67
  return messageReplyFromError(e, 500);
82
68
  }
83
69
  }
70
+ async handleRoot(tenant, message, projectionScopes) {
71
+ const root = await this.getRootHex(tenant, message.descriptor.protocol, projectionScopes);
72
+ return {
73
+ status: { code: 200, detail: 'OK' },
74
+ root: root,
75
+ };
76
+ }
77
+ async getRootHex(tenant, protocol, projectionScopes) {
78
+ if (projectionScopes === undefined) {
79
+ const rootHash = await this.getIndexedRootHash(tenant, protocol);
80
+ return hashToHex(rootHash);
81
+ }
82
+ return this.withProjectionSnapshot(tenant, projectionScopes, snapshot => snapshot.getRootHex());
83
+ }
84
+ async getIndexedRootHash(tenant, protocol) {
85
+ if (protocol === undefined) {
86
+ return this.deps.stateIndex.getRoot(tenant);
87
+ }
88
+ return this.deps.stateIndex.getProtocolRoot(tenant, protocol);
89
+ }
90
+ async handleSubtree(tenant, message, projectionScopes) {
91
+ const bitPath = MessagesSyncHandler.parseBitPrefix(message.descriptor.prefix);
92
+ const hash = await this.getSubtreeHash(tenant, message.descriptor.protocol, projectionScopes, bitPath);
93
+ return {
94
+ status: { code: 200, detail: 'OK' },
95
+ hash: hashToHex(hash),
96
+ };
97
+ }
98
+ async handleLeaves(tenant, message, projectionScopes) {
99
+ const bitPath = MessagesSyncHandler.parseBitPrefix(message.descriptor.prefix);
100
+ const leaves = await this.getLeaves(tenant, message.descriptor.protocol, projectionScopes, bitPath);
101
+ return {
102
+ status: { code: 200, detail: 'OK' },
103
+ entries: leaves,
104
+ };
105
+ }
106
+ async getSubtreeHash(tenant, protocol, projectionScopes, bitPath) {
107
+ if (projectionScopes === undefined) {
108
+ return this.getIndexedSubtreeHash(tenant, protocol, bitPath);
109
+ }
110
+ return this.withProjectionSnapshot(tenant, projectionScopes, snapshot => snapshot.getSubtreeHash(bitPath));
111
+ }
112
+ async getLeaves(tenant, protocol, projectionScopes, bitPath) {
113
+ if (projectionScopes === undefined) {
114
+ return this.getIndexedLeaves(tenant, protocol, bitPath);
115
+ }
116
+ return this.withProjectionSnapshot(tenant, projectionScopes, snapshot => snapshot.getLeaves(bitPath));
117
+ }
118
+ async getIndexedSubtreeHash(tenant, protocol, bitPath) {
119
+ return MessagesSyncHandler.getIndexedSubtreeHashFromStateIndex(this.deps.stateIndex, tenant, protocol, bitPath);
120
+ }
121
+ async getIndexedLeaves(tenant, protocol, bitPath) {
122
+ return MessagesSyncHandler.getIndexedLeavesFromStateIndex(this.deps.stateIndex, tenant, protocol, bitPath);
123
+ }
84
124
  /**
85
125
  * Handle the 'diff' action: the client sends its subtree hashes at a given
86
126
  * depth, and the server compares them against its own tree to compute the
@@ -94,88 +134,86 @@ export class MessagesSyncHandler {
94
134
  */
95
135
  async handleDiff(tenant, message) {
96
136
  const { protocol, hashes: clientHashes, depth } = message.descriptor;
137
+ const projectionScopes = MessagesSyncHandler.getProjectionScopes(message);
97
138
  if (!clientHashes || depth === undefined) {
98
139
  return {
99
140
  status: { code: 400, detail: 'diff action requires hashes and depth' },
100
141
  };
101
142
  }
102
143
  const stateIndex = this.deps.stateIndex;
144
+ const projectionSnapshot = await this.createProjectionSnapshot(tenant, projectionScopes);
103
145
  const onlyRemoteCids = [];
104
146
  const onlyLocalPrefixes = [];
105
- // Get the default (empty subtree) hash at the given depth so we can
106
- // filter out client entries that represent empty subtrees.
107
- const defaultHashHex = await this.getDefaultHashHex(depth);
108
- // Build the set of all prefixes at the given depth that either side has.
109
- // Filter out client prefixes whose hash equals the default (empty subtree)
110
- // hash these represent empty subtrees and should be treated the same as
111
- // omitted prefixes.
112
- const allPrefixes = new Set();
113
- for (const [pfx, hash] of Object.entries(clientHashes)) {
114
- if (hash !== defaultHashHex) {
115
- allPrefixes.add(pfx);
116
- }
117
- }
118
- // Enumerate server-side non-empty prefixes by walking the server's
119
- // tree to the given depth and collecting leaf prefixes.
120
- const serverHashes = await this.collectSubtreeHashes(tenant, protocol, depth);
121
- for (const prefix of Object.keys(serverHashes)) {
122
- allPrefixes.add(prefix);
123
- }
124
- // Compare each prefix's hash between client and server.
125
- for (const pfx of allPrefixes) {
126
- const clientHash = clientHashes[pfx]; // undefined if client has empty subtree
127
- const serverHash = serverHashes[pfx]; // undefined if server has empty subtree
128
- if (clientHash === serverHash) {
129
- // Identical subtree — skip.
130
- continue;
147
+ try {
148
+ // Get the default (empty subtree) hash at the given depth so we can
149
+ // filter out client entries that represent empty subtrees.
150
+ const defaultHashHex = await this.getDefaultHashHex(depth);
151
+ // Build the set of all prefixes at the given depth that either side has.
152
+ // Filter out client prefixes whose hash equals the default (empty subtree)
153
+ // hash — these represent empty subtrees and should be treated the same as
154
+ // omitted prefixes.
155
+ const allPrefixes = new Set();
156
+ for (const [pfx, hash] of Object.entries(clientHashes)) {
157
+ if (hash !== defaultHashHex) {
158
+ allPrefixes.add(pfx);
159
+ }
131
160
  }
132
- if (serverHash === undefined) {
133
- // Client has entries the server doesn't.
134
- onlyLocalPrefixes.push(pfx);
135
- continue;
161
+ // Enumerate server-side non-empty prefixes by walking the server's
162
+ // tree to the given depth and collecting leaf prefixes.
163
+ const serverHashes = await this.collectSubtreeHashes(tenant, protocol, projectionSnapshot, depth);
164
+ for (const prefix of Object.keys(serverHashes)) {
165
+ allPrefixes.add(prefix);
136
166
  }
137
- if (clientHash === undefined) {
138
- // Server has entries the client doesn't — enumerate server leaves.
167
+ // Compare each prefix's hash between client and server.
168
+ for (const pfx of allPrefixes) {
169
+ const clientHash = clientHashes[pfx]; // undefined if client has empty subtree
170
+ const serverHash = serverHashes[pfx]; // undefined if server has empty subtree
171
+ if (clientHash === serverHash) {
172
+ // Identical subtree — skip.
173
+ continue;
174
+ }
175
+ if (serverHash === undefined) {
176
+ // Client has entries the server doesn't.
177
+ onlyLocalPrefixes.push(pfx);
178
+ continue;
179
+ }
139
180
  const bitPath = MessagesSyncHandler.parseBitPrefix(pfx);
140
- const leaves = protocol === undefined
141
- ? await stateIndex.getLeaves(tenant, bitPath)
142
- : await stateIndex.getProtocolLeaves(tenant, protocol, bitPath);
143
- onlyRemoteCids.push(...leaves);
144
- continue;
181
+ const serverLeaves = await MessagesSyncHandler.getServerLeaves(stateIndex, tenant, protocol, projectionSnapshot, bitPath);
182
+ onlyRemoteCids.push(...serverLeaves);
183
+ if (clientHash !== undefined) {
184
+ // Both sides have entries but they differ. The client will enumerate
185
+ // its own leaves for this prefix and de-duplicate server leaves.
186
+ onlyLocalPrefixes.push(pfx);
187
+ }
145
188
  }
146
- // Both sides have entries but they differ — enumerate both and set-diff.
147
- const bitPath = MessagesSyncHandler.parseBitPrefix(pfx);
148
- const serverLeaves = protocol === undefined
149
- ? await stateIndex.getLeaves(tenant, bitPath)
150
- : await stateIndex.getProtocolLeaves(tenant, protocol, bitPath);
151
- // We don't have the client's leaves, so we report all server leaves
152
- // as onlyRemote (the client will de-duplicate locally). We also
153
- // report this prefix as onlyLocal so the client can check its own leaves.
154
- onlyRemoteCids.push(...serverLeaves);
155
- onlyLocalPrefixes.push(pfx);
189
+ }
190
+ finally {
191
+ await projectionSnapshot?.close();
156
192
  }
157
193
  // Build response entries with inline message data where possible.
158
194
  const onlyRemote = await this.buildDiffEntries(tenant, onlyRemoteCids);
195
+ const dependencies = projectionScopes === undefined
196
+ ? []
197
+ : await this.buildProjectedDependencyEntries(tenant, onlyRemote);
159
198
  return {
160
199
  status: { code: 200, detail: 'OK' },
161
200
  onlyRemote,
162
201
  onlyLocal: onlyLocalPrefixes,
202
+ ...(dependencies.length > 0 ? { dependencies } : {}),
163
203
  };
164
204
  }
165
205
  /**
166
206
  * Walk the server's SMT to the given depth and collect all non-empty
167
207
  * subtree hashes as a `{ prefix: hexHash }` map.
168
208
  */
169
- async collectSubtreeHashes(tenant, protocol, depth) {
209
+ async collectSubtreeHashes(tenant, protocol, projectionSnapshot, depth) {
170
210
  const stateIndex = this.deps.stateIndex;
171
211
  const result = {};
172
- const defaultHashHex = await this.getDefaultHashHex(depth);
173
212
  const walk = async (prefix, currentDepth) => {
174
213
  const bitPath = MessagesSyncHandler.parseBitPrefix(prefix);
175
- const hash = protocol === undefined
176
- ? await stateIndex.getSubtreeHash(tenant, bitPath)
177
- : await stateIndex.getProtocolSubtreeHash(tenant, protocol, bitPath);
214
+ const hash = await MessagesSyncHandler.getServerSubtreeHash(stateIndex, tenant, protocol, projectionSnapshot, bitPath);
178
215
  const hexHash = hashToHex(hash);
216
+ const defaultHashHex = await this.getDefaultHashHex(currentDepth);
179
217
  if (hexHash === defaultHashHex) {
180
218
  // Empty subtree — don't include in the result.
181
219
  return;
@@ -194,6 +232,40 @@ export class MessagesSyncHandler {
194
232
  await walk('', 0);
195
233
  return result;
196
234
  }
235
+ async createProjectionSnapshot(tenant, projectionScopes) {
236
+ if (projectionScopes === undefined) {
237
+ return undefined;
238
+ }
239
+ return RecordsProjection.createSnapshot({
240
+ tenant,
241
+ messageStore: this.deps.messageStore,
242
+ scopes: projectionScopes,
243
+ });
244
+ }
245
+ static async getServerLeaves(stateIndex, tenant, protocol, projectionSnapshot, bitPath) {
246
+ if (projectionSnapshot === undefined) {
247
+ return MessagesSyncHandler.getIndexedLeavesFromStateIndex(stateIndex, tenant, protocol, bitPath);
248
+ }
249
+ return projectionSnapshot.getLeaves(bitPath);
250
+ }
251
+ static async getServerSubtreeHash(stateIndex, tenant, protocol, projectionSnapshot, bitPath) {
252
+ if (projectionSnapshot === undefined) {
253
+ return MessagesSyncHandler.getIndexedSubtreeHashFromStateIndex(stateIndex, tenant, protocol, bitPath);
254
+ }
255
+ return projectionSnapshot.getSubtreeHash(bitPath);
256
+ }
257
+ static async getIndexedLeavesFromStateIndex(stateIndex, tenant, protocol, bitPath) {
258
+ if (protocol === undefined) {
259
+ return stateIndex.getLeaves(tenant, bitPath);
260
+ }
261
+ return stateIndex.getProtocolLeaves(tenant, protocol, bitPath);
262
+ }
263
+ static async getIndexedSubtreeHashFromStateIndex(stateIndex, tenant, protocol, bitPath) {
264
+ if (protocol === undefined) {
265
+ return stateIndex.getSubtreeHash(tenant, bitPath);
266
+ }
267
+ return stateIndex.getProtocolSubtreeHash(tenant, protocol, bitPath);
268
+ }
197
269
  /**
198
270
  * Get the hex-encoded default hash for a given depth. Lazily cached.
199
271
  */
@@ -239,6 +311,159 @@ export class MessagesSyncHandler {
239
311
  }
240
312
  return entries;
241
313
  }
314
+ async buildProjectedDependencyEntries(tenant, primaryEntries) {
315
+ const dependenciesByCid = new Map();
316
+ const configsByProtocol = new Map();
317
+ for (const primaryEntry of primaryEntries) {
318
+ const protocolMetadata = MessagesSyncHandler.recordsWriteProtocolMetadata(primaryEntry.message);
319
+ if (protocolMetadata !== undefined) {
320
+ await this.addProtocolConfigClosureDependencies(tenant, protocolMetadata.protocol, protocolMetadata.messageTimestamp, primaryEntry.messageCid, configsByProtocol, dependenciesByCid);
321
+ continue;
322
+ }
323
+ const initialWrite = await this.readRecordsDeleteInitialWrite(tenant, primaryEntry.message);
324
+ if (initialWrite === undefined) {
325
+ continue;
326
+ }
327
+ await MessagesSyncHandler.addRecordsInitialWriteDependency(primaryEntry.messageCid, initialWrite, dependenciesByCid);
328
+ const initialWriteMetadata = MessagesSyncHandler.recordsWriteProtocolMetadata(initialWrite);
329
+ if (initialWriteMetadata === undefined) {
330
+ continue;
331
+ }
332
+ await this.addProtocolConfigClosureDependencies(tenant, initialWriteMetadata.protocol, initialWriteMetadata.messageTimestamp, primaryEntry.messageCid, configsByProtocol, dependenciesByCid);
333
+ }
334
+ return [...dependenciesByCid.values()];
335
+ }
336
+ async readRecordsDeleteInitialWrite(tenant, message) {
337
+ const recordId = MessagesSyncHandler.recordsDeleteRecordId(message);
338
+ if (recordId === undefined) {
339
+ return undefined;
340
+ }
341
+ const { messages } = await this.deps.messageStore.query(tenant, [{
342
+ interface: DwnInterfaceName.Records,
343
+ method: DwnMethodName.Write,
344
+ recordId,
345
+ }]);
346
+ const initialWrite = await RecordsWrite.getInitialWrite(messages);
347
+ return initialWrite === undefined ? undefined : MessagesSyncHandler.toWireMessage(initialWrite);
348
+ }
349
+ static async addRecordsInitialWriteDependency(rootMessageCid, dependency, dependenciesByCid) {
350
+ const dependencyCid = await Message.getCid(dependency);
351
+ if (dependenciesByCid.has(dependencyCid)) {
352
+ return;
353
+ }
354
+ dependenciesByCid.set(dependencyCid, {
355
+ dependencyClass: 'recordsInitialWrite',
356
+ messageCid: dependencyCid,
357
+ message: dependency,
358
+ rootMessageCid,
359
+ });
360
+ }
361
+ async addProtocolConfigClosureDependencies(tenant, rootProtocol, rootMessageTimestamp, rootMessageCid, configsByProtocol, dependenciesByCid) {
362
+ // Dependency hints are not part of the projected root; they are advisory
363
+ // bootstrap data for the receiver. Bound each closure to the primary
364
+ // RecordsWrite timestamp because protocol authorization uses the definition
365
+ // active when that record was created, not whatever config is newest today.
366
+ const visitedProtocols = new Set();
367
+ const pendingProtocols = [rootProtocol];
368
+ for (let protocol = MessagesSyncHandler.takeNextUnvisitedProtocol(pendingProtocols, visitedProtocols); protocol !== undefined; protocol = MessagesSyncHandler.takeNextUnvisitedProtocol(pendingProtocols, visitedProtocols)) {
369
+ const configs = await this.getCachedGoverningProtocolsConfigure(tenant, protocol, rootMessageTimestamp, configsByProtocol);
370
+ await MessagesSyncHandler.addProtocolConfigDependencies({
371
+ configs,
372
+ rootMessageCid,
373
+ visitedProtocols,
374
+ pendingProtocols,
375
+ dependenciesByCid,
376
+ });
377
+ }
378
+ }
379
+ async getCachedGoverningProtocolsConfigure(tenant, protocol, messageTimestamp, configsByProtocol) {
380
+ const configCacheKey = JSON.stringify([protocol, messageTimestamp]);
381
+ const cachedConfigs = configsByProtocol.get(configCacheKey);
382
+ if (cachedConfigs !== undefined) {
383
+ return cachedConfigs;
384
+ }
385
+ const configs = await this.readGoverningProtocolsConfigure(tenant, protocol, messageTimestamp);
386
+ configsByProtocol.set(configCacheKey, configs);
387
+ return configs;
388
+ }
389
+ static async addProtocolConfigDependencies({ configs, rootMessageCid, visitedProtocols, pendingProtocols, dependenciesByCid, }) {
390
+ for (const dependency of configs) {
391
+ await MessagesSyncHandler.addProtocolConfigDependency(rootMessageCid, dependency, dependenciesByCid);
392
+ MessagesSyncHandler.queueUnvisitedProtocols(MessagesSyncHandler.protocolsConfigureUses(dependency), visitedProtocols, pendingProtocols);
393
+ }
394
+ }
395
+ static async addProtocolConfigDependency(rootMessageCid, dependency, dependenciesByCid) {
396
+ const dependencyCid = await Message.getCid(dependency);
397
+ if (dependenciesByCid.has(dependencyCid)) {
398
+ return;
399
+ }
400
+ dependenciesByCid.set(dependencyCid, {
401
+ dependencyClass: 'protocolsConfigure',
402
+ messageCid: dependencyCid,
403
+ message: dependency,
404
+ rootMessageCid,
405
+ });
406
+ }
407
+ static takeNextUnvisitedProtocol(pendingProtocols, visitedProtocols) {
408
+ while (pendingProtocols.length > 0) {
409
+ const protocol = pendingProtocols.shift();
410
+ if (visitedProtocols.has(protocol)) {
411
+ continue;
412
+ }
413
+ visitedProtocols.add(protocol);
414
+ return protocol;
415
+ }
416
+ return undefined;
417
+ }
418
+ static queueUnvisitedProtocols(protocols, visitedProtocols, pendingProtocols) {
419
+ for (const protocol of protocols) {
420
+ if (!visitedProtocols.has(protocol)) {
421
+ pendingProtocols.push(protocol);
422
+ }
423
+ }
424
+ }
425
+ static protocolsConfigureUses(message) {
426
+ if (message.descriptor.interface !== DwnInterfaceName.Protocols ||
427
+ message.descriptor.method !== DwnMethodName.Configure) {
428
+ return [];
429
+ }
430
+ const uses = message.descriptor.definition?.uses;
431
+ return uses === undefined
432
+ ? []
433
+ : Object.values(uses).filter((protocol) => typeof protocol === 'string');
434
+ }
435
+ async readGoverningProtocolsConfigure(tenant, protocol, messageTimestamp) {
436
+ const { messages } = await this.deps.messageStore.query(tenant, [{
437
+ interface: DwnInterfaceName.Protocols,
438
+ method: DwnMethodName.Configure,
439
+ protocol,
440
+ messageTimestamp: { lte: messageTimestamp },
441
+ }], { messageTimestamp: SortDirection.Descending });
442
+ const governingMessage = await Message.getNewestMessage(messages);
443
+ return governingMessage === undefined ? [] : [governingMessage];
444
+ }
445
+ static recordsWriteProtocolMetadata(message) {
446
+ if (message?.descriptor.interface !== DwnInterfaceName.Records ||
447
+ message.descriptor.method !== DwnMethodName.Write) {
448
+ return undefined;
449
+ }
450
+ const protocol = message.descriptor.protocol;
451
+ return typeof protocol === 'string'
452
+ ? { protocol, messageTimestamp: message.descriptor.messageTimestamp }
453
+ : undefined;
454
+ }
455
+ static recordsDeleteRecordId(message) {
456
+ if (message?.descriptor.interface !== DwnInterfaceName.Records ||
457
+ message.descriptor.method !== DwnMethodName.Delete) {
458
+ return undefined;
459
+ }
460
+ const recordId = message.descriptor.recordId;
461
+ return typeof recordId === 'string' ? recordId : undefined;
462
+ }
463
+ static toWireMessage(message) {
464
+ const { encodedData: _encodedData, initialWrite: _initialWrite, ...wireMessage } = message;
465
+ return wireMessage;
466
+ }
242
467
  /**
243
468
  * Read a message and its data from the MessageStore + DataStore by CID.
244
469
  */
@@ -253,32 +478,51 @@ export class MessagesSyncHandler {
253
478
  // It must not be included in the wire-format message (the recipient's
254
479
  // DWN would reject it as an unexpected top-level property).
255
480
  let inlineEncodedData;
256
- if ('encodedData' in storedMessage) {
481
+ if (MessagesSyncHandler.hasEncodedData(storedMessage)) {
257
482
  inlineEncodedData = storedMessage.encodedData;
258
483
  delete storedMessage.encodedData;
259
484
  }
260
485
  let data;
261
- // Check if this is a RecordsWrite with data.
262
- if (storedMessage.descriptor.interface === 'Records' &&
263
- storedMessage.descriptor.method === 'Write') {
264
- const dataCid = storedMessage.descriptor?.dataCid;
265
- if (dataCid) {
266
- // Try DataStore first (for large payloads stored externally).
486
+ // Check if this is a RecordsWrite with data that is small enough to inline.
487
+ if (inlineEncodedData === undefined && Records.isRecordsWrite(storedMessage)) {
488
+ const { dataCid, dataSize } = storedMessage.descriptor;
489
+ if (dataSize <= DEFAULT_MAX_INLINE_DATA_SIZE) {
490
+ // Some stores may have small payload bytes in DataStore instead of encodedData.
267
491
  if (this.deps.dataStore) {
268
- // DataStore uses recordId, not messageCid. For RecordsWrite, the
269
- // recordId is in the descriptor.
270
- const recordId = storedMessage.descriptor?.recordId;
271
- if (recordId) {
272
- const dataResult = await this.deps.dataStore.get(tenant, recordId, dataCid);
273
- if (dataResult?.dataStream) {
274
- data = dataResult.dataStream;
275
- }
492
+ // DataStore uses recordId, not messageCid. For RecordsWrite,
493
+ // recordId is a top-level message property.
494
+ const dataResult = await this.deps.dataStore.get(tenant, storedMessage.recordId, dataCid);
495
+ if (dataResult?.dataStream) {
496
+ data = dataResult.dataStream;
276
497
  }
277
498
  }
278
499
  }
279
500
  }
280
501
  return { message: storedMessage, encodedData: inlineEncodedData, data };
281
502
  }
503
+ static hasEncodedData(message) {
504
+ return 'encodedData' in message && typeof message.encodedData === 'string';
505
+ }
506
+ static getProjectionScopes(message) {
507
+ const { projectionScopes } = message.descriptor;
508
+ if (projectionScopes === undefined) {
509
+ return undefined;
510
+ }
511
+ return projectionScopes;
512
+ }
513
+ async withProjectionSnapshot(tenant, scopes, fn) {
514
+ const snapshot = await RecordsProjection.createSnapshot({
515
+ tenant: tenant,
516
+ messageStore: this.deps.messageStore,
517
+ scopes: scopes,
518
+ });
519
+ try {
520
+ return await fn(snapshot);
521
+ }
522
+ finally {
523
+ await snapshot.close();
524
+ }
525
+ }
282
526
  /**
283
527
  * Read a ReadableStream to completion and return the bytes.
284
528
  */
@@ -318,13 +562,14 @@ export class MessagesSyncHandler {
318
562
  if (messagesSync.author === tenant) {
319
563
  return;
320
564
  }
321
- else if (messagesSync.author !== undefined && messagesSync.signaturePayload.permissionGrantId !== undefined) {
322
- const permissionGrant = await PermissionsProtocol.fetchGrant(tenant, messageStore, messagesSync.signaturePayload.permissionGrantId);
565
+ const permissionGrantIds = Message.getPermissionGrantIds(messagesSync.signaturePayload);
566
+ if (messagesSync.author !== undefined && permissionGrantIds.length > 0) {
567
+ const permissionGrants = await MessagesGrantAuthorization.fetchPermissionGrants(tenant, messageStore, permissionGrantIds);
323
568
  await MessagesGrantAuthorization.authorizeSubscribeOrSync({
324
569
  incomingMessage: messagesSync.message,
325
570
  expectedGrantor: tenant,
326
571
  expectedGrantee: messagesSync.author,
327
- permissionGrant,
572
+ permissionGrants,
328
573
  messageStore
329
574
  });
330
575
  }
@@ -1 +1 @@
1
- {"version":3,"file":"messages-sync.js","sourceRoot":"","sources":["../../../../src/handlers/messages-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,4BAA4B,GAAG,WAAW,CAAC,6BAA6B,CAAC;AAG/E,MAAM,OAAO,mBAAmB;IAED;IAA7B,YAA6B,IAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;IAAI,CAAC;IAEpD,KAAK,CAAC,MAAM,CAAC,EAClB,MAAM,EACN,OAAO,EAC0C;QACjD,IAAI,YAA0B,CAAC;QAE/B,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,mBAAmB,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;QAExD,IAAI,CAAC;YACH,QAAQ,MAAM,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS;wBACrC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,OAAO,CAAC,MAAM,CAAC;wBAC7C,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAClE,OAAO;wBACL,MAAM,EAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;wBACpC,IAAI,EAAK,SAAS,CAAC,QAAQ,CAAC;qBAC7B,CAAC;gBACJ,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,MAAO,CAAC,CAAC;oBAC5D,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS;wBACjC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC;wBAC7D,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAClF,OAAO;wBACL,MAAM,EAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;wBACpC,IAAI,EAAK,SAAS,CAAC,IAAI,CAAC;qBACzB,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,MAAO,CAAC,CAAC;oBAC5D,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS;wBACnC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;wBACxD,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC7E,OAAO;wBACL,MAAM,EAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;wBACrC,OAAO,EAAG,MAAM;qBACjB,CAAC;gBACJ,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBAED,OAAO,CAAC,CAAC,CAAC;oBACR,OAAO;wBACL,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,MAAgB,EAAE,EAAE;qBACrE,CAAC;gBACJ,CAAC;YACD,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,UAAU,CACtB,MAAc,EACd,OAA4B;QAE5B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;QAErE,IAAI,CAAC,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO;gBACL,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,uCAAuC,EAAE;aACvE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC;QACzC,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,iBAAiB,GAAa,EAAE,CAAC;QAEvC,oEAAoE;QACpE,2DAA2D;QAC3D,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE3D,yEAAyE;QACzE,2EAA2E;QAC3E,0EAA0E;QAC1E,oBAAoB;QACpB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC5B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,wDAAwD;QACxD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9E,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,wDAAwD;QACxD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,wCAAwC;YAC9E,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,wCAAwC;YAE9E,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;gBAC9B,4BAA4B;gBAC5B,SAAS;YACX,CAAC;YAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,yCAAyC;gBACzC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,mEAAmE;gBACnE,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS;oBACnC,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC7C,CAAC,CAAC,MAAM,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAClE,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,yEAAyE;YACzE,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS;gBACzC,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC7C,CAAC,CAAC,MAAM,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAElE,oEAAoE;YACpE,gEAAgE;YAChE,0EAA0E;YAC1E,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YACrC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,kEAAkE;QAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAEvE,OAAO;YACL,MAAM,EAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;YACvC,UAAU;YACV,SAAS,EAAG,iBAAiB;SAC9B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,oBAAoB,CAChC,MAAc,EACd,QAA4B,EAC5B,KAAa;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC;QACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,KAAK,EAAE,MAAc,EAAE,YAAoB,EAAiB,EAAE;YACzE,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS;gBACjC,CAAC,CAAC,MAAM,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC;gBAClD,CAAC,CAAC,MAAM,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,+CAA+C;gBAC/C,OAAO;YACT,CAAC;YAED,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;gBAC1B,iDAAiD;gBACjD,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,yBAAyB;YACzB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,YAAY,GAAG,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,YAAY,GAAG,CAAC,CAAC;aACrC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAuB;IAC3C,KAAK,CAAC,iBAAiB,CAAC,KAAa;QAC3C,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAC5B,MAAc,EACd,WAAqB;QAErB,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,gEAAgE;gBAChE,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;YAE7D,uEAAuE;YACvE,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;YACjC,CAAC;iBAAM,IAAI,IAAI,EAAE,CAAC;gBAChB,wDAAwD;gBACxD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC5D,IAAI,KAAK,CAAC,UAAU,IAAI,4BAA4B,EAAE,CAAC;oBACrD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACtD,CAAC;gBACD,oEAAoE;YACtE,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,MAAc,EACd,UAAkB;QAElB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,2DAA2D;QAC3D,uEAAuE;QACvE,2EAA2E;QAC3E,sEAAsE;QACtE,4DAA4D;QAC5D,IAAI,iBAAqC,CAAC;QAC1C,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;YACnC,iBAAiB,GAAI,aAAqB,CAAC,WAAqB,CAAC;YACjE,OAAQ,aAAqB,CAAC,WAAW,CAAC;QAC5C,CAAC;QAED,IAAI,IAA4C,CAAC;QAEjD,6CAA6C;QAC7C,IAAI,aAAa,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS;YAChD,aAAa,CAAC,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChD,MAAM,OAAO,GAAI,aAAqB,CAAC,UAAU,EAAE,OAA6B,CAAC;YACjF,IAAI,OAAO,EAAE,CAAC;gBACZ,8DAA8D;gBAC9D,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACxB,iEAAiE;oBACjE,iCAAiC;oBACjC,MAAM,QAAQ,GAAI,aAAqB,CAAC,UAAU,EAAE,QAA8B,CAAC;oBACnF,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAC5E,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;4BAC3B,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAC1E,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAkC;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBAAC,MAAM;YAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,MAAc;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,yBAAyB,EACtC,kEAAkE,MAAM,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,yBAAyB,EACtC,+CAA+C,MAAM,CAAC,MAAM,EAAE,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAW,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;IACzD,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,qBAAqB,CACxC,MAAc,EACd,YAA0B,EAC1B,YAA0B;QAE1B,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;aAAM,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,gBAAiB,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC/G,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,gBAAiB,CAAC,iBAAiB,CAAC,CAAC;YACrI,MAAM,0BAA0B,CAAC,wBAAwB,CAAC;gBACxD,eAAe,EAAG,YAAY,CAAC,OAAO;gBACtC,eAAe,EAAG,MAAM;gBACxB,eAAe,EAAG,YAAY,CAAC,MAAM;gBACrC,eAAe;gBACf,YAAY;aACb,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,+BAA+B,EAAE,8BAA8B,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"messages-sync.js","sourceRoot":"","sources":["../../../../src/handlers/messages-sync.ts"],"names":[],"mappings":"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"}