document-drive 4.0.1 → 4.1.0-dev.1

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 (254) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/prisma/schema.prisma +1 -2
  6. package/dist/src/drive-document-model/gen/document-model.js +3 -3
  7. package/dist/src/drive-document-model/gen/document-model.js.map +1 -1
  8. package/dist/src/drive-document-model/gen/node/creators.d.ts +6 -2
  9. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
  10. package/dist/src/drive-document-model/gen/node/creators.js +8 -1
  11. package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
  12. package/dist/src/drive-document-model/gen/schema/types.d.ts +1 -14
  13. package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -1
  14. package/dist/src/drive-document-model/gen/schema/zod.d.ts +1 -5
  15. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
  16. package/dist/src/drive-document-model/gen/schema/zod.js +0 -12
  17. package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
  18. package/dist/src/drive-document-model/gen/types.d.ts +13 -4
  19. package/dist/src/drive-document-model/gen/types.d.ts.map +1 -1
  20. package/dist/src/drive-document-model/gen/types.js.map +1 -1
  21. package/dist/src/drive-document-model/module.d.ts +2 -1
  22. package/dist/src/drive-document-model/module.d.ts.map +1 -1
  23. package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -1
  24. package/dist/src/drive-document-model/src/reducers/node.js +1 -25
  25. package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
  26. package/dist/src/drive-document-model/src/tests/actions.test.js +1 -23
  27. package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
  28. package/dist/src/drive-document-model/src/tests/base.test.js +0 -32
  29. package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
  30. package/dist/src/drive-document-model/src/tests/utils.test.js +7 -37
  31. package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
  32. package/dist/src/drive-document-model/src/utils.d.ts +2 -8
  33. package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
  34. package/dist/src/drive-document-model/src/utils.js +6 -55
  35. package/dist/src/drive-document-model/src/utils.js.map +1 -1
  36. package/dist/src/queue/base.d.ts +6 -27
  37. package/dist/src/queue/base.d.ts.map +1 -1
  38. package/dist/src/queue/base.js +15 -203
  39. package/dist/src/queue/base.js.map +1 -1
  40. package/dist/src/queue/event.d.ts +42 -0
  41. package/dist/src/queue/event.d.ts.map +1 -0
  42. package/dist/src/queue/event.js +222 -0
  43. package/dist/src/queue/event.js.map +1 -0
  44. package/dist/src/queue/redis.d.ts +1 -27
  45. package/dist/src/queue/redis.d.ts.map +1 -1
  46. package/dist/src/queue/redis.js +122 -110
  47. package/dist/src/queue/redis.js.map +1 -1
  48. package/dist/src/queue/types.d.ts +18 -12
  49. package/dist/src/queue/types.d.ts.map +1 -1
  50. package/dist/src/queue/types.js +3 -0
  51. package/dist/src/queue/types.js.map +1 -1
  52. package/dist/src/server/base-server.d.ts +87 -11
  53. package/dist/src/server/base-server.d.ts.map +1 -1
  54. package/dist/src/server/base-server.js +549 -250
  55. package/dist/src/server/base-server.js.map +1 -1
  56. package/dist/src/server/builder.js +2 -2
  57. package/dist/src/server/builder.js.map +1 -1
  58. package/dist/src/server/error.d.ts +3 -3
  59. package/dist/src/server/error.d.ts.map +1 -1
  60. package/dist/src/server/error.js +2 -2
  61. package/dist/src/server/error.js.map +1 -1
  62. package/dist/src/server/listener/listener-manager.d.ts +5 -6
  63. package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
  64. package/dist/src/server/listener/listener-manager.js +62 -79
  65. package/dist/src/server/listener/listener-manager.js.map +1 -1
  66. package/dist/src/server/listener/transmitter/internal.d.ts +1 -1
  67. package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
  68. package/dist/src/server/listener/transmitter/internal.js +14 -12
  69. package/dist/src/server/listener/transmitter/internal.js.map +1 -1
  70. package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
  71. package/dist/src/server/listener/transmitter/pull-responder.js +14 -8
  72. package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
  73. package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -1
  74. package/dist/src/server/listener/transmitter/switchboard-push.js +13 -8
  75. package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
  76. package/dist/src/server/sync-manager.d.ts +8 -10
  77. package/dist/src/server/sync-manager.d.ts.map +1 -1
  78. package/dist/src/server/sync-manager.js +62 -147
  79. package/dist/src/server/sync-manager.js.map +1 -1
  80. package/dist/src/server/sync-unit-map.d.ts +137 -0
  81. package/dist/src/server/sync-unit-map.d.ts.map +1 -0
  82. package/dist/src/server/sync-unit-map.js +234 -0
  83. package/dist/src/server/sync-unit-map.js.map +1 -0
  84. package/dist/src/server/types.d.ts +114 -31
  85. package/dist/src/server/types.d.ts.map +1 -1
  86. package/dist/src/server/types.js.map +1 -1
  87. package/dist/src/server/utils.d.ts +10 -1
  88. package/dist/src/server/utils.d.ts.map +1 -1
  89. package/dist/src/server/utils.js +41 -0
  90. package/dist/src/server/utils.js.map +1 -1
  91. package/dist/src/storage/browser.d.ts +7 -2
  92. package/dist/src/storage/browser.d.ts.map +1 -1
  93. package/dist/src/storage/browser.js +80 -22
  94. package/dist/src/storage/browser.js.map +1 -1
  95. package/dist/src/storage/filesystem.d.ts +7 -2
  96. package/dist/src/storage/filesystem.d.ts.map +1 -1
  97. package/dist/src/storage/filesystem.js +79 -22
  98. package/dist/src/storage/filesystem.js.map +1 -1
  99. package/dist/src/storage/memory.d.ts +7 -2
  100. package/dist/src/storage/memory.d.ts.map +1 -1
  101. package/dist/src/storage/memory.js +76 -22
  102. package/dist/src/storage/memory.js.map +1 -1
  103. package/dist/src/storage/prisma/client/edge.js +5 -4
  104. package/dist/src/storage/prisma/client/index-browser.js +2 -1
  105. package/dist/src/storage/prisma/client/index.d.ts +58 -249
  106. package/dist/src/storage/prisma/client/index.js +5 -4
  107. package/dist/src/storage/prisma/client/package.json +1 -1
  108. package/dist/src/storage/prisma/client/schema.prisma +2 -3
  109. package/dist/src/storage/prisma/client/wasm.js +2 -1
  110. package/dist/src/storage/prisma/prisma.d.ts +9 -4
  111. package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
  112. package/dist/src/storage/prisma/prisma.js +119 -51
  113. package/dist/src/storage/prisma/prisma.js.map +1 -1
  114. package/dist/src/storage/types.d.ts +43 -4
  115. package/dist/src/storage/types.d.ts.map +1 -1
  116. package/dist/src/storage/utils.d.ts +3 -0
  117. package/dist/src/storage/utils.d.ts.map +1 -1
  118. package/dist/src/storage/utils.js +14 -0
  119. package/dist/src/storage/utils.js.map +1 -1
  120. package/dist/src/utils/gql-transformations.d.ts +14 -5
  121. package/dist/src/utils/gql-transformations.d.ts.map +1 -1
  122. package/dist/src/utils/gql-transformations.js +1 -0
  123. package/dist/src/utils/gql-transformations.js.map +1 -1
  124. package/dist/src/utils/misc.d.ts +2 -0
  125. package/dist/src/utils/misc.d.ts.map +1 -1
  126. package/dist/src/utils/misc.js +4 -0
  127. package/dist/src/utils/misc.js.map +1 -1
  128. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  129. package/package.json +4 -4
  130. package/dist/test/cache.test.d.ts +0 -2
  131. package/dist/test/cache.test.d.ts.map +0 -1
  132. package/dist/test/cache.test.js +0 -281
  133. package/dist/test/cache.test.js.map +0 -1
  134. package/dist/test/default-remote-drives.test.d.ts +0 -2
  135. package/dist/test/default-remote-drives.test.d.ts.map +0 -1
  136. package/dist/test/default-remote-drives.test.js +0 -446
  137. package/dist/test/default-remote-drives.test.js.map +0 -1
  138. package/dist/test/document-helpers/addUndo.test.d.ts +0 -2
  139. package/dist/test/document-helpers/addUndo.test.d.ts.map +0 -1
  140. package/dist/test/document-helpers/addUndo.test.js +0 -120
  141. package/dist/test/document-helpers/addUndo.test.js.map +0 -1
  142. package/dist/test/document-helpers/attachBranch.test.d.ts +0 -2
  143. package/dist/test/document-helpers/attachBranch.test.d.ts.map +0 -1
  144. package/dist/test/document-helpers/attachBranch.test.js +0 -333
  145. package/dist/test/document-helpers/attachBranch.test.js.map +0 -1
  146. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
  147. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
  148. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +0 -252
  149. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +0 -1
  150. package/dist/test/document-helpers/garbageCollect.test.d.ts +0 -2
  151. package/dist/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
  152. package/dist/test/document-helpers/garbageCollect.test.js +0 -136
  153. package/dist/test/document-helpers/garbageCollect.test.js.map +0 -1
  154. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
  155. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
  156. package/dist/test/document-helpers/groupOperationsByScope.test.js +0 -98
  157. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +0 -1
  158. package/dist/test/document-helpers/merge.test.d.ts +0 -2
  159. package/dist/test/document-helpers/merge.test.d.ts.map +0 -1
  160. package/dist/test/document-helpers/merge.test.js +0 -757
  161. package/dist/test/document-helpers/merge.test.js.map +0 -1
  162. package/dist/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
  163. package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
  164. package/dist/test/document-helpers/nextSkipNumber.test.js +0 -123
  165. package/dist/test/document-helpers/nextSkipNumber.test.js.map +0 -1
  166. package/dist/test/document-helpers/prepareOperations.test.d.ts +0 -2
  167. package/dist/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
  168. package/dist/test/document-helpers/prepareOperations.test.js +0 -304
  169. package/dist/test/document-helpers/prepareOperations.test.js.map +0 -1
  170. package/dist/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
  171. package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
  172. package/dist/test/document-helpers/removeExistingOperations.test.js +0 -150
  173. package/dist/test/document-helpers/removeExistingOperations.test.js.map +0 -1
  174. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
  175. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
  176. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +0 -148
  177. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +0 -1
  178. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
  179. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
  180. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +0 -200
  181. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +0 -1
  182. package/dist/test/document-helpers/sortOperations.test.d.ts +0 -2
  183. package/dist/test/document-helpers/sortOperations.test.d.ts.map +0 -1
  184. package/dist/test/document-helpers/sortOperations.test.js +0 -101
  185. package/dist/test/document-helpers/sortOperations.test.js.map +0 -1
  186. package/dist/test/document-helpers/split.test.d.ts +0 -2
  187. package/dist/test/document-helpers/split.test.d.ts.map +0 -1
  188. package/dist/test/document-helpers/split.test.js +0 -121
  189. package/dist/test/document-helpers/split.test.js.map +0 -1
  190. package/dist/test/document-helpers/utils.d.ts +0 -8
  191. package/dist/test/document-helpers/utils.d.ts.map +0 -1
  192. package/dist/test/document-helpers/utils.js +0 -22
  193. package/dist/test/document-helpers/utils.js.map +0 -1
  194. package/dist/test/drive-operations.test.d.ts +0 -2
  195. package/dist/test/drive-operations.test.d.ts.map +0 -1
  196. package/dist/test/drive-operations.test.js +0 -145
  197. package/dist/test/drive-operations.test.js.map +0 -1
  198. package/dist/test/graphql.test.d.ts +0 -2
  199. package/dist/test/graphql.test.d.ts.map +0 -1
  200. package/dist/test/graphql.test.js +0 -10
  201. package/dist/test/graphql.test.js.map +0 -1
  202. package/dist/test/internal-listener.test.d.ts +0 -2
  203. package/dist/test/internal-listener.test.d.ts.map +0 -1
  204. package/dist/test/internal-listener.test.js +0 -277
  205. package/dist/test/internal-listener.test.js.map +0 -1
  206. package/dist/test/queue.test.d.ts +0 -2
  207. package/dist/test/queue.test.d.ts.map +0 -1
  208. package/dist/test/queue.test.js +0 -338
  209. package/dist/test/queue.test.js.map +0 -1
  210. package/dist/test/read-mode.test.d.ts +0 -2
  211. package/dist/test/read-mode.test.d.ts.map +0 -1
  212. package/dist/test/read-mode.test.js +0 -578
  213. package/dist/test/read-mode.test.js.map +0 -1
  214. package/dist/test/server/driveOperationsConflictResolution.test.d.ts +0 -2
  215. package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +0 -1
  216. package/dist/test/server/driveOperationsConflictResolution.test.js +0 -460
  217. package/dist/test/server/driveOperationsConflictResolution.test.js.map +0 -1
  218. package/dist/test/server/mergeOperations.test.d.ts +0 -2
  219. package/dist/test/server/mergeOperations.test.d.ts.map +0 -1
  220. package/dist/test/server/mergeOperations.test.js +0 -107
  221. package/dist/test/server/mergeOperations.test.js.map +0 -1
  222. package/dist/test/server/processOperations.test.d.ts +0 -2
  223. package/dist/test/server/processOperations.test.d.ts.map +0 -1
  224. package/dist/test/server/processOperations.test.js +0 -380
  225. package/dist/test/server/processOperations.test.js.map +0 -1
  226. package/dist/test/server.test.d.ts +0 -2
  227. package/dist/test/server.test.d.ts.map +0 -1
  228. package/dist/test/server.test.js +0 -899
  229. package/dist/test/server.test.js.map +0 -1
  230. package/dist/test/signature-migration.test.d.ts +0 -2
  231. package/dist/test/signature-migration.test.d.ts.map +0 -1
  232. package/dist/test/signature-migration.test.js +0 -239
  233. package/dist/test/signature-migration.test.js.map +0 -1
  234. package/dist/test/storage.test.d.ts +0 -2
  235. package/dist/test/storage.test.d.ts.map +0 -1
  236. package/dist/test/storage.test.js +0 -523
  237. package/dist/test/storage.test.js.map +0 -1
  238. package/dist/test/utils.d.ts +0 -48
  239. package/dist/test/utils.d.ts.map +0 -1
  240. package/dist/test/utils.js +0 -133
  241. package/dist/test/utils.js.map +0 -1
  242. package/dist/test/utils.test.d.ts +0 -2
  243. package/dist/test/utils.test.d.ts.map +0 -1
  244. package/dist/test/utils.test.js +0 -89
  245. package/dist/test/utils.test.js.map +0 -1
  246. package/dist/test/vitest-setup.d.ts +0 -2
  247. package/dist/test/vitest-setup.d.ts.map +0 -1
  248. package/dist/test/vitest-setup.js +0 -5
  249. package/dist/test/vitest-setup.js.map +0 -1
  250. package/dist/tsconfig.tsbuildinfo +0 -1
  251. package/dist/vitest.config.d.ts +0 -3
  252. package/dist/vitest.config.d.ts.map +0 -1
  253. package/dist/vitest.config.js +0 -27
  254. package/dist/vitest.config.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"switchboard-push.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/switchboard-push.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIxE,qBAAa,0BAA2B,YAAW,YAAY;IAC7D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,MAAM,CAGX;gBAES,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB;YAK3C,cAAc;YAkBd,eAAe;IAuBvB,QAAQ,CACZ,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAyF/B"}
1
+ {"version":3,"file":"switchboard-push.d.ts","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/switchboard-push.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIxE,qBAAa,0BAA2B,YAAW,YAAY;IAC7D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,MAAM,CAGX;gBAES,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB;YAK3C,cAAc;YAkBd,eAAe;IAuBvB,QAAQ,CACZ,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,gBAAgB,EAAE,CAAC;CA6F/B"}
@@ -1,5 +1,6 @@
1
1
  import { gql, requestGraphql } from "#utils/graphql";
2
2
  import { childLogger } from "#utils/logger";
3
+ import { operationsToRevision } from "#utils/misc";
3
4
  import stringify from "json-stringify-deterministic";
4
5
  const SYNC_OPS_BATCH_LIMIT = 10;
5
6
  export class SwitchboardPushTransmitter {
@@ -47,14 +48,17 @@ export class SwitchboardPushTransmitter {
47
48
  if (source.type === "trigger" &&
48
49
  source.trigger.data?.url === this.targetURL) {
49
50
  this.logger.verbose(`Cutting trigger loop from ${this.targetURL}.`);
50
- return strands.map((strand) => ({
51
- driveId: strand.driveId,
52
- documentId: strand.documentId,
53
- scope: strand.scope,
54
- branch: strand.branch,
55
- status: "SUCCESS",
56
- revision: strand.operations.at(-1)?.index ?? -1,
57
- }));
51
+ return strands.map((strand) => {
52
+ return {
53
+ driveId: strand.driveId,
54
+ documentId: strand.documentId,
55
+ documentType: strand.documentType,
56
+ scope: strand.scope,
57
+ branch: strand.branch,
58
+ status: "SUCCESS",
59
+ revision: operationsToRevision(strand.operations),
60
+ };
61
+ });
58
62
  }
59
63
  const culledStrands = [];
60
64
  let opsCounter = 0;
@@ -79,6 +83,7 @@ export class SwitchboardPushTransmitter {
79
83
  pushUpdates(strands: $strands) {
80
84
  driveId
81
85
  documentId
86
+ documentType
82
87
  scope
83
88
  branch
84
89
  status
@@ -1 +1 @@
1
- {"version":3,"file":"switchboard-push.js","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/switchboard-push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"switchboard-push.js","sourceRoot":"","sources":["../../../../../src/server/listener/transmitter/switchboard-push.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { type DocumentDriveDocument } from "#drive-document-model/gen/types";
3
3
  import { type IDocumentStorage, type IDriveOperationStorage } from "#storage/types";
4
4
  import { type DocumentModelModule } from "document-model";
5
5
  import { SynchronizationUnitNotFoundError } from "./error.js";
6
- import { type GetStrandsOptions, type IEventEmitter, type ISynchronizationManager, type OperationUpdate, type SyncStatus, type SyncUnitStatusObject, type SynchronizationUnit, type SynchronizationUnitQuery } from "./types.js";
6
+ import { type GetStrandsOptions, type IEventEmitter, type ISynchronizationManager, type OperationUpdate, type SyncStatus, type SyncUnitStatusObject, type SynchronizationUnit, type SynchronizationUnitId, type SynchronizationUnitQuery } from "./types.js";
7
7
  export default class SynchronizationManager implements ISynchronizationManager {
8
8
  private readonly storage;
9
9
  private readonly documentStorage;
@@ -13,20 +13,18 @@ export default class SynchronizationManager implements ISynchronizationManager {
13
13
  private syncStatus;
14
14
  private logger;
15
15
  constructor(storage: IDriveOperationStorage, documentStorage: IDocumentStorage, cache: ICache, documentModelModules: DocumentModelModule[], eventEmitter?: IEventEmitter | undefined);
16
- getSynchronizationUnits(driveId: string, documentId?: string[], scope?: string[], branch?: string[], documentType?: string[]): Promise<SynchronizationUnit[]>;
17
- getSynchronizationUnitsRevision(driveId: string, syncUnitsQuery: SynchronizationUnitQuery[]): Promise<SynchronizationUnit[]>;
18
- getSynchronizationUnitsIds(driveId: string, documentId?: string[], scope?: string[], branch?: string[], documentType?: string[]): Promise<SynchronizationUnitQuery[]>;
19
- getSynchronizationUnitIdInfo(driveId: string, syncId: string): Promise<SynchronizationUnitQuery | undefined>;
20
- getSynchronizationUnit(driveId: string, syncId: string): Promise<SynchronizationUnit | undefined>;
21
- getOperationData(driveId: string, syncId: string, filter: GetStrandsOptions): Promise<OperationUpdate[]>;
22
- private getDrive;
16
+ getSynchronizationUnits(parentId: string, documentId?: string[], scope?: string[], branch?: string[], documentType?: string[]): Promise<SynchronizationUnit[]>;
17
+ private getSynchronizationUnitsRevision;
18
+ getSynchronizationUnitsIds(parentId?: string, documentId?: string[], scope?: string[], branch?: string[], documentType?: string[]): Promise<SynchronizationUnitQuery[]>;
19
+ getSynchronizationUnit(syncId: SynchronizationUnitId): Promise<SynchronizationUnit | undefined>;
20
+ getOperationData(syncId: SynchronizationUnitId, filter: GetStrandsOptions): Promise<OperationUpdate[]>;
23
21
  private getDocument;
24
22
  private _buildDocument;
25
23
  setDocumentModelModules(modules: DocumentModelModule[]): void;
26
24
  private getDocumentModelModule;
27
25
  getCombinedSyncUnitStatus(syncUnitStatus: SyncUnitStatusObject): SyncStatus;
28
- getSyncStatus(syncUnitId: string): SyncStatus | SynchronizationUnitNotFoundError;
29
- updateSyncStatus(syncUnitId: string, status: Partial<SyncUnitStatusObject> | null, error?: Error): void;
26
+ getSyncStatus(input: string | SynchronizationUnitId, scope?: string, branch?: string): SyncStatus | SynchronizationUnitNotFoundError;
27
+ updateSyncStatus(input: string | SynchronizationUnitId, status: Partial<SyncUnitStatusObject> | null, error?: Error, scope?: string, branch?: string): void;
30
28
  private initSyncStatus;
31
29
  initializeDriveSyncStatus(driveId: string, drive: DocumentDriveDocument): Promise<void>;
32
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE5B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,KAAK,mBAAmB,EAKzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,uBAAuB;IAM1E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAThC,OAAO,CAAC,UAAU,CAA2C;IAE7D,OAAO,CAAC,MAAM,CAA2C;gBAGtC,OAAO,EAAE,sBAAsB,EAC/B,eAAe,EAAE,gBAAgB,EACjC,KAAK,EAAE,MAAM,EACtB,oBAAoB,EAAE,mBAAmB,EAAE,EAClC,YAAY,CAAC,EAAE,aAAa,YAAA;IAGzC,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAmBnB,+BAA+B;IAoBvC,0BAA0B,CAC9B,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC;IA2BhC,sBAAsB,CAC1B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAuBrC,gBAAgB,CACpB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC;YAiEf,WAAW;IAazB,OAAO,CAAC,cAAc;IAuBtB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE;IAItD,OAAO,CAAC,sBAAsB;IAU9B,yBAAyB,CAAC,cAAc,EAAE,oBAAoB,GAAG,UAAU;IAoB3E,aAAa,CACX,KAAK,EAAE,MAAM,GAAG,qBAAqB,EACrC,KAAK,SAAW,EAChB,MAAM,SAAS,GACd,UAAU,GAAG,gCAAgC;IAWhD,gBAAgB,CACd,KAAK,EAAE,MAAM,GAAG,qBAAqB,EACrC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAC5C,KAAK,CAAC,EAAE,KAAK,EACb,KAAK,SAAW,EAChB,MAAM,SAAS,GACd,IAAI;IAsDP,OAAO,CAAC,cAAc;IA2BhB,yBAAyB,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAkBjB"}
@@ -1,15 +1,15 @@
1
- import { isFileNode } from "#drive-document-model/src/utils";
2
1
  import { childLogger } from "#utils/logger";
3
- import { isBefore, isDocumentDrive } from "#utils/misc";
2
+ import { isBefore, operationsToRevision } from "#utils/misc";
4
3
  import { garbageCollectDocumentOperations, replayDocument, } from "document-model";
5
4
  import { SynchronizationUnitNotFoundError } from "./error.js";
5
+ import { SyncUnitMap } from "./sync-unit-map.js";
6
6
  export default class SynchronizationManager {
7
7
  storage;
8
8
  documentStorage;
9
9
  cache;
10
10
  documentModelModules;
11
11
  eventEmitter;
12
- syncStatus = new Map();
12
+ syncStatus = new SyncUnitMap();
13
13
  logger = childLogger(["SynchronizationManager"]);
14
14
  constructor(storage, documentStorage, cache, documentModelModules, eventEmitter) {
15
15
  this.storage = storage;
@@ -18,141 +18,67 @@ export default class SynchronizationManager {
18
18
  this.documentModelModules = documentModelModules;
19
19
  this.eventEmitter = eventEmitter;
20
20
  }
21
- async getSynchronizationUnits(driveId, documentId, scope, branch, documentType) {
22
- const synchronizationUnitsQuery = await this.getSynchronizationUnitsIds(driveId, documentId, scope, branch, documentType);
21
+ async getSynchronizationUnits(parentId, documentId, scope, branch, documentType) {
22
+ const synchronizationUnitsQuery = await this.getSynchronizationUnitsIds(parentId, documentId, scope, branch, documentType);
23
23
  this.logger.verbose(`getSynchronizationUnits query: ${JSON.stringify(synchronizationUnitsQuery)}`);
24
- return this.getSynchronizationUnitsRevision(driveId, synchronizationUnitsQuery);
24
+ const result = await this.getSynchronizationUnitsRevision(synchronizationUnitsQuery);
25
+ return result.filter((s) => typeof s !== "undefined");
25
26
  }
26
- async getSynchronizationUnitsRevision(driveId, syncUnitsQuery) {
27
- const drive = await this.getDrive(driveId);
27
+ async getSynchronizationUnitsRevision(syncUnitsQuery) {
28
28
  const revisions = await this.storage.getSynchronizationUnitsRevision(syncUnitsQuery);
29
29
  this.logger.verbose(`getSynchronizationUnitsRevision: ${JSON.stringify(revisions)}`);
30
- const synchronizationUnits = syncUnitsQuery.map((s) => ({
31
- ...s,
32
- lastUpdated: drive.header.createdAtUtcIso,
33
- revision: -1,
34
- }));
35
- for (const revision of revisions) {
36
- const syncUnit = synchronizationUnits.find((s) => revision.documentId === s.documentId &&
37
- revision.scope === s.scope &&
38
- revision.branch === s.branch);
39
- if (syncUnit) {
40
- syncUnit.revision = revision.revision;
41
- syncUnit.lastUpdated = revision.lastUpdated;
42
- }
43
- }
44
- return synchronizationUnits;
45
- }
46
- async getSynchronizationUnitsIds(driveId, documentId, scope, branch, documentType) {
47
- const drive = await this.getDrive(driveId);
48
- const nodes = drive.state.global.nodes.filter((node) => isFileNode(node) &&
49
- (!documentId?.length ||
50
- documentId.includes(node.id) ||
51
- documentId.includes("*")) &&
52
- (!documentType?.length ||
53
- documentType.includes(node.documentType) ||
54
- documentType.includes("*")));
55
- // checks if document drive synchronization unit should be added
56
- if ((!documentId || documentId.includes("*") || documentId.includes("")) &&
57
- (!documentType?.length ||
58
- documentType.includes("powerhouse/document-drive") ||
59
- documentType.includes("*"))) {
60
- nodes.unshift({
61
- id: driveId,
62
- documentType: "powerhouse/document-drive",
63
- synchronizationUnits: [
64
- {
65
- syncId: "0",
66
- scope: "global",
67
- branch: "main",
68
- },
69
- ],
70
- });
71
- }
72
- const synchronizationUnitsQuery = [];
73
- for (const node of nodes) {
74
- const nodeUnits = scope?.length || branch?.length
75
- ? node.synchronizationUnits.filter((unit) => (!scope?.length ||
76
- scope.includes(unit.scope) ||
77
- scope.includes("*")) &&
78
- (!branch?.length ||
79
- branch.includes(unit.branch) ||
80
- branch.includes("*")))
81
- : node.synchronizationUnits;
82
- if (!nodeUnits.length) {
83
- continue;
84
- }
85
- synchronizationUnitsQuery.push(...nodeUnits.map((n) => ({
86
- driveId,
87
- documentId: node.id,
88
- syncId: n.syncId,
89
- documentType: node.documentType,
90
- scope: n.scope,
91
- branch: n.branch,
92
- })));
93
- }
94
- return synchronizationUnitsQuery;
95
- }
96
- async getSynchronizationUnitIdInfo(driveId, syncId) {
97
- const drive = await this.getDrive(driveId);
98
- const node = drive.state.global.nodes.find((node) => isFileNode(node) &&
99
- node.synchronizationUnits.find((unit) => unit.syncId === syncId));
100
- if (!node || !isFileNode(node)) {
101
- return undefined;
102
- }
103
- const syncUnit = node.synchronizationUnits.find((unit) => unit.syncId === syncId);
104
- if (!syncUnit) {
105
- return undefined;
106
- }
107
- return {
108
- syncId,
109
- scope: syncUnit.scope,
110
- branch: syncUnit.branch,
111
- documentId: node.id,
112
- documentType: node.documentType,
30
+ return syncUnitsQuery.map((query) => revisions.find((revision) => revision.documentId === query.documentId &&
31
+ revision.scope === query.scope &&
32
+ revision.branch === query.branch));
33
+ }
34
+ async getSynchronizationUnitsIds(parentId, documentId, scope, branch, documentType) {
35
+ const filter = {
36
+ parentId: parentId ? [parentId] : undefined,
37
+ documentId: documentId,
38
+ documentModelType: documentType,
39
+ scope,
40
+ branch,
113
41
  };
114
- }
115
- async getSynchronizationUnit(driveId, syncId) {
116
- const syncUnit = await this.getSynchronizationUnitIdInfo(driveId, syncId);
117
- if (!syncUnit) {
42
+ let cursor;
43
+ const units = [];
44
+ do {
45
+ const { units: newUnits, nextCursor } = await this.documentStorage.findStorageUnitsBy(filter, 100, cursor);
46
+ units.push(...newUnits);
47
+ cursor = nextCursor;
48
+ } while (cursor);
49
+ return units.reduce((acc, { documentModelType, ...u }) => u.scope === "local"
50
+ ? acc
51
+ : acc.concat([{ ...u, documentType: documentModelType }]), new Array());
52
+ }
53
+ async getSynchronizationUnit(syncId) {
54
+ const { scope, branch, documentId } = syncId;
55
+ // TODO: REPLACE WITH GET DOCUMENT OPERATIONS
56
+ const document = await this.getDocument(documentId);
57
+ if (!Object.keys(document.state).includes(scope)) {
118
58
  return undefined;
119
59
  }
120
- const { scope, branch, documentId, documentType } = syncUnit;
121
- // TODO: REPLACE WITH GET DOCUMENT OPERATIONS
122
- const document = await this.getDocument(driveId, documentId);
123
60
  const operations = document.operations[scope] ?? [];
124
- const lastOperation = operations[operations.length - 1];
61
+ const lastOperation = operations.at(-1);
125
62
  return {
126
- syncId,
127
63
  scope,
128
64
  branch,
129
65
  documentId,
130
- documentType,
131
- lastUpdated: lastOperation.timestamp ?? document.header.lastModifiedAtUtcIso,
132
- revision: lastOperation.index ?? 0,
66
+ documentType: document.header.documentType,
67
+ lastUpdated: lastOperation?.timestamp ?? document.header.lastModifiedAtUtcIso,
68
+ revision: operationsToRevision(operations),
133
69
  };
134
70
  }
135
- async getOperationData(driveId, syncId, filter) {
136
- this.logger.verbose(`[SYNC DEBUG] SynchronizationManager.getOperationData called for drive: ${driveId}, syncId: ${syncId}, filter: ${JSON.stringify(filter)}`);
137
- const syncUnit = syncId === "0"
138
- ? { documentId: "", scope: "global" }
139
- : await this.getSynchronizationUnitIdInfo(driveId, syncId);
140
- if (!syncUnit) {
141
- this.logger.error(`SYNC DEBUG] Invalid Sync Id ${syncId} in drive ${driveId}`);
142
- throw new Error(`Invalid Sync Id ${syncId} in drive ${driveId}`);
143
- }
144
- this.logger.verbose(`[SYNC DEBUG] Found sync unit: documentId: ${syncUnit.documentId}, scope: ${syncUnit.scope}`);
145
- const document = syncId === "0"
146
- ? await this.getDrive(driveId)
147
- : await this.getDocument(driveId, syncUnit.documentId); // TODO replace with getDocumentOperations
148
- this.logger.verbose(`[SYNC DEBUG] Retrieved document ${syncUnit.documentId} with type: ${document.header.documentType}`);
149
- const operations = document.operations[syncUnit.scope] ?? []; // TODO filter by branch also
150
- this.logger.verbose(`[SYNC DEBUG] Found ${operations.length} total operations in scope ${syncUnit.scope}`);
71
+ async getOperationData(syncId, filter) {
72
+ this.logger.verbose(`[SYNC DEBUG] SynchronizationManager.getOperationData called for syncId: ${JSON.stringify(syncId)}, filter: ${JSON.stringify(filter)}`);
73
+ const document = await this.getDocument(syncId.documentId);
74
+ this.logger.verbose(`[SYNC DEBUG] Retrieved document ${document.header.id} with type: ${document.header.documentType}`);
75
+ const operations = document.operations[syncId.scope] ?? []; // TODO filter by branch also
76
+ this.logger.verbose(`[SYNC DEBUG] Found ${operations.length} total operations in scope ${syncId.scope}`);
151
77
  const filteredOperations = operations.filter((operation) => Object.keys(filter).length === 0 ||
152
78
  ((filter.since === undefined ||
153
79
  isBefore(filter.since, operation.timestamp)) &&
154
80
  (filter.fromRevision === undefined ||
155
- operation.index > filter.fromRevision)));
81
+ operation.index >= filter.fromRevision)));
156
82
  this.logger.verbose(`[SYNC DEBUG] Filtered to ${filteredOperations.length} operations based on filter criteria` +
157
83
  (filter.fromRevision !== undefined
158
84
  ? ` (fromRevision: ${filter.fromRevision})`
@@ -178,24 +104,7 @@ export default class SynchronizationManager {
178
104
  id: operation.id,
179
105
  }));
180
106
  }
181
- async getDrive(driveId) {
182
- try {
183
- const cachedDocument = await this.cache.getDrive(driveId);
184
- if (cachedDocument && isDocumentDrive(cachedDocument)) {
185
- return cachedDocument;
186
- }
187
- }
188
- catch (e) {
189
- this.logger.error("Error getting drive from cache", e);
190
- }
191
- const driveStorage = await this.documentStorage.get(driveId);
192
- const result = this._buildDocument(driveStorage);
193
- if (!isDocumentDrive(result)) {
194
- throw new Error(`Document with id ${driveId} is not a Document Drive`);
195
- }
196
- return result;
197
- }
198
- async getDocument(driveId, documentId) {
107
+ async getDocument(documentId) {
199
108
  try {
200
109
  const cachedDocument = await this.cache.getDocument(documentId);
201
110
  if (cachedDocument) {
@@ -243,14 +152,16 @@ export default class SynchronizationManager {
243
152
  const sortedStatus = Object.values(syncUnitStatus).sort((a, b) => order.indexOf(a) - order.indexOf(b));
244
153
  return sortedStatus[0];
245
154
  }
246
- getSyncStatus(syncUnitId) {
155
+ getSyncStatus(input, scope = "global", branch = "main") {
156
+ const syncUnitId = typeof input === "string" ? { documentId: input, scope, branch } : input;
247
157
  const status = this.syncStatus.get(syncUnitId);
248
158
  if (!status) {
249
- return new SynchronizationUnitNotFoundError(`Sync status not found for syncUnitId: ${syncUnitId}`, syncUnitId);
159
+ return new SynchronizationUnitNotFoundError(syncUnitId);
250
160
  }
251
161
  return this.getCombinedSyncUnitStatus(status);
252
162
  }
253
- updateSyncStatus(syncUnitId, status, error) {
163
+ updateSyncStatus(input, status, error, scope = "global", branch = "main") {
164
+ const syncUnitId = typeof input === "string" ? { documentId: input, scope, branch } : input;
254
165
  if (status === null) {
255
166
  this.syncStatus.delete(syncUnitId);
256
167
  return;
@@ -262,7 +173,7 @@ export default class SynchronizationManager {
262
173
  }
263
174
  const shouldUpdateStatus = Object.entries(status).some(([key, _status]) => syncUnitStatus[key] !== _status);
264
175
  if (shouldUpdateStatus) {
265
- const newstatus = Object.entries(status).reduce((acc, [key, _status]) => {
176
+ const newStatus = Object.entries(status).reduce((acc, [key, _status]) => {
266
177
  return {
267
178
  ...acc,
268
179
  // do not replace initial_syncing if it has not finished yet
@@ -273,10 +184,10 @@ export default class SynchronizationManager {
273
184
  };
274
185
  }, syncUnitStatus);
275
186
  const previousCombinedStatus = this.getCombinedSyncUnitStatus(syncUnitStatus);
276
- const newCombinedStatus = this.getCombinedSyncUnitStatus(newstatus);
277
- this.syncStatus.set(syncUnitId, newstatus);
187
+ const newCombinedStatus = this.getCombinedSyncUnitStatus(newStatus);
188
+ this.syncStatus.set(syncUnitId, newStatus);
278
189
  if (previousCombinedStatus !== newCombinedStatus && this.eventEmitter) {
279
- this.eventEmitter.emit("syncStatus", syncUnitId, this.getCombinedSyncUnitStatus(newstatus), error, newstatus);
190
+ this.eventEmitter.emit("syncStatus", syncUnitId.documentId, this.getCombinedSyncUnitStatus(newStatus), error, newStatus, syncUnitId.scope, syncUnitId.branch);
280
191
  }
281
192
  }
282
193
  }
@@ -289,7 +200,8 @@ export default class SynchronizationManager {
289
200
  }, {});
290
201
  this.syncStatus.set(syncUnitId, defaultSyncUnitStatus);
291
202
  if (this.eventEmitter) {
292
- this.eventEmitter.emit("syncStatus", syncUnitId, this.getCombinedSyncUnitStatus(defaultSyncUnitStatus), undefined, defaultSyncUnitStatus);
203
+ this.eventEmitter.emit("syncStatus", syncUnitId.documentId, // TODO also emit scope and branch
204
+ this.getCombinedSyncUnitStatus(defaultSyncUnitStatus), undefined, defaultSyncUnitStatus, syncUnitId.scope, syncUnitId.branch);
293
205
  }
294
206
  }
295
207
  async initializeDriveSyncStatus(driveId, drive) {
@@ -300,7 +212,10 @@ export default class SynchronizationManager {
300
212
  };
301
213
  if (!syncStatus.pull && !syncStatus.push)
302
214
  return;
303
- const syncUnitsIds = [driveId, ...syncUnits.map((s) => s.syncId)];
215
+ const syncUnitsIds = [
216
+ { documentId: driveId, scope: "global", branch: "main" },
217
+ ...syncUnits,
218
+ ];
304
219
  for (const syncUnitId of syncUnitsIds) {
305
220
  this.initSyncStatus(syncUnitId, syncStatus);
306
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAK7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAIL,gCAAgC,EAChC,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAY9D,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAMtB;IACA;IACA;IACT;IACS;IATX,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAC;IAErD,MAAM,GAAG,WAAW,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAEzD,YACmB,OAA+B,EAC/B,eAAiC,EACjC,KAAa,EACtB,oBAA2C,EAClC,YAA4B;QAJ5B,YAAO,GAAP,OAAO,CAAwB;QAC/B,oBAAe,GAAf,eAAe,CAAkB;QACjC,UAAK,GAAL,KAAK,CAAQ;QACtB,yBAAoB,GAApB,oBAAoB,CAAuB;QAClC,iBAAY,GAAZ,YAAY,CAAgB;IAC5C,CAAC;IAEJ,KAAK,CAAC,uBAAuB,CAC3B,OAAe,EACf,UAAqB,EACrB,KAAgB,EAChB,MAAiB,EACjB,YAAuB;QAEvB,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CACrE,OAAO,EACP,UAAU,EACV,KAAK,EACL,MAAM,EACN,YAAY,CACb,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,kCAAkC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,CAC9E,CAAC;QAEF,OAAO,IAAI,CAAC,+BAA+B,CACzC,OAAO,EACP,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,+BAA+B,CACnC,OAAe,EACf,cAA0C;QAE1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,SAAS,GACb,MAAM,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,oCAAoC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAChE,CAAC;QAEF,MAAM,oBAAoB,GAA0B,cAAc,CAAC,GAAG,CACpE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACN,GAAG,CAAC;YACJ,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;YACzC,QAAQ,EAAE,CAAC,CAAC;SACb,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CACJ,QAAQ,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;gBACpC,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;gBAC1B,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAC/B,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAEtC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,OAAe,EACf,UAAqB,EACrB,KAAgB,EAChB,MAAiB,EACjB,YAAuB;QAEvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAC3C,CAAC,IAAI,EAAE,EAAE,CACP,UAAU,CAAC,IAAI,CAAC;YAChB,CAAC,CAAC,UAAU,EAAE,MAAM;gBAClB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,YAAY,EAAE,MAAM;gBACpB,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;gBACxC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACoC,CAAC;QAEtE,gEAAgE;QAChE,IACE,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,YAAY,EAAE,MAAM;gBACpB,YAAY,CAAC,QAAQ,CAAC,2BAA2B,CAAC;gBAClD,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC7B,CAAC;YACD,KAAK,CAAC,OAAO,CAAC;gBACZ,EAAE,EAAE,OAAO;gBACX,YAAY,EAAE,2BAA2B;gBACzC,oBAAoB,EAAE;oBACpB;wBACE,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,QAAQ;wBACf,MAAM,EAAE,MAAM;qBACf;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,yBAAyB,GAGzB,EAAE,CAAC;QACT,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GACb,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM;gBAC7B,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAC9B,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,CAAC,KAAK,EAAE,MAAM;oBACb,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC1B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC,CAAC,MAAM,EAAE,MAAM;wBACd,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;wBAC5B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAC1B;gBACH,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,yBAAyB,CAAC,IAAI,CAC5B,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,OAAe,EACf,MAAc;QAEd,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CACxC,CAAC,IAAI,EAAE,EAAE,CACP,UAAU,CAAC,IAAI,CAAC;YAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CACnE,CAAC;QAEF,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC7C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CACjC,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,MAAM;YACN,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,OAAe,EACf,MAAc;QAEd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE1E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QAE7D,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAuB,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAExD,OAAO;YACL,MAAM;YACN,KAAK;YACL,MAAM;YACN,UAAU;YACV,YAAY;YACZ,WAAW,EACT,aAAa,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,oBAAoB;YACjE,QAAQ,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,OAAe,EACf,MAAc,EACd,MAAyB;QAEzB,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,0EAA0E,OAAO,aAAa,MAAM,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAC1I,CAAC;QAEF,MAAM,QAAQ,GACZ,MAAM,KAAK,GAAG;YACZ,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;YACrC,CAAC,CAAC,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,+BAA+B,MAAM,aAAa,OAAO,EAAE,CAC5D,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,aAAa,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,6CAA6C,QAAQ,CAAC,UAAU,YAAY,QAAQ,CAAC,KAAK,EAAE,CAC7F,CAAC;QAEF,MAAM,QAAQ,GACZ,MAAM,KAAK,GAAG;YACZ,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9B,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,0CAA0C;QAEtG,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,mCAAmC,QAAQ,CAAC,UAAU,eAAe,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,CACpG,CAAC;QAEF,MAAM,UAAU,GACd,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,6BAA6B;QAE5F,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,sBAAsB,UAAU,CAAC,MAAM,8BAA8B,QAAQ,CAAC,KAAK,EAAE,CACtF,CAAC;QAEF,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAC1C,CAAC,SAAS,EAAE,EAAE,CACZ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;gBAC1B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC5C,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;oBAChC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAC9C,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,4BAA4B,kBAAkB,CAAC,MAAM,sCAAsC;YACzF,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;gBAChC,CAAC,CAAC,mBAAmB,MAAM,CAAC,YAAY,GAAG;gBAC3C,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK;YACpC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,kBAAkB,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,0BAA0B,iBAAiB,CAAC,MAAM,kCAAkC,CACrF,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,uCAAuC,OAAO,CAAC,KAAK,UAAU,OAAO,CAAC,IAAI,EAAE,CAC7E,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,sCAAsC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,EAAE,CAC1E,CAAC;QACJ,CAAC;QAED,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,SAAS,CAAC,KAAe;YAChC,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,EAAE,EAAE,SAAS,CAAC,EAAE;SACjB,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAe;QACpC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,cAAc,IAAI,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtD,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAwB,OAAO,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,0BAA0B,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAAe,EACf,UAAkB;QAElB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAEO,cAAc,CAAC,eAA2B;QAChD,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACrD,eAAe,CAAC,MAAM,CAAC,YAAY,CACpC,CAAC;QAEF,MAAM,UAAU,GAAG,gCAAgC,CACjD,eAAe,CAAC,UAAU,CAC3B,CAAC;QAEF,OAAO,cAAc,CACnB,eAAe,CAAC,YAAY,EAC5B,UAAU,EACV,mBAAmB,CAAC,OAAO,EAC3B,SAAS,EACT,eAAe,CAAC,MAAM,EACtB,SAAS,EACT;YACE,WAAW,EAAE,IAAI;YACjB,4BAA4B,EAAE,IAAI;SACnC,CACF,CAAC;IACJ,CAAC;IAED,uBAAuB,CAAC,OAA8B;QACpD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;IACtC,CAAC;IAEO,sBAAsB,CAAY,YAAoB;QAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,YAAY,CAC3C,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,YAAY,gBAAgB,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,cAAoC;QAC5D,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI;YAAE,OAAO,cAAc,CAAC;QACxE,IAAI,cAAc,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO,cAAc,CAAC;QAClE,IAAI,cAAc,CAAC,IAAI,KAAK,cAAc;YACxC,OAAO,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC;QAE/C,MAAM,KAAK,GAAsB;YAC/B,OAAO;YACP,SAAS;YACT,UAAU;YACV,SAAS;YACT,SAAS;SACV,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAC9C,CAAC;QAEF,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,aAAa,CACX,UAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,gCAAgC,CACzC,yCAAyC,UAAU,EAAE,EACrD,UAAU,CACX,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CACd,UAAkB,EAClB,MAA4C,EAC5C,KAAa;QAEb,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CACpD,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CACjB,cAAc,CAAC,GAAiC,CAAC,KAAK,OAAO,CAChE,CAAC;QAEF,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBACtE,OAAO;oBACL,GAAG,GAAG;oBACN,4DAA4D;oBAC5D,CAAC,GAAG,CAAC,EACH,GAAG,CAAC,GAAiC,CAAC,KAAK,cAAc;wBACzD,OAAO,KAAK,SAAS;wBACnB,CAAC,CAAC,cAAc;wBAChB,CAAC,CAAC,OAAO;iBACd,CAAC;YACJ,CAAC,EAAE,cAAc,CAAC,CAAC;YAEnB,MAAM,sBAAsB,GAC1B,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YAEpE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAE3C,IAAI,sBAAsB,KAAK,iBAAiB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,YAAY,EACZ,UAAU,EACV,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EACzC,KAAK,EACL,SAAS,CACV,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CACpB,UAAkB,EAClB,MAAqC;QAErC,MAAM,qBAAqB,GAAyB,MAAM,CAAC,OAAO,CAChE,MAAM,CACP,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;YAC/B,OAAO;gBACL,GAAG,GAAG;gBACN,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;aACxD,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,YAAY,EACZ,UAAU,EACV,IAAI,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,EACrD,SAAS,EACT,qBAAqB,CACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,OAAe,EACf,KAA4B;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,UAAU,GAAyB;YACvC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YACxE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI;YAAE,OAAO;QAEjD,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAElE,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { type SynchronizationUnitId } from "./types.js";
2
+ /**
3
+ * Interface for a specialized Map implementation that manages synchronization units.
4
+ * Each unit is identified by a SynchronizationUnitId which consists of documentId, scope, and branch.
5
+ */
6
+ export interface ISyncUnitMap<Value> {
7
+ set(id: SynchronizationUnitId, state: Value): this;
8
+ get(id: SynchronizationUnitId): Value | undefined;
9
+ has(id: SynchronizationUnitId): boolean;
10
+ delete(id: SynchronizationUnitId): boolean;
11
+ clear(): void;
12
+ get size(): number;
13
+ keys(): IterableIterator<SynchronizationUnitId>;
14
+ values(): IterableIterator<Value>;
15
+ entries(): IterableIterator<[SynchronizationUnitId, Value]>;
16
+ [Symbol.iterator](): IterableIterator<[SynchronizationUnitId, Value]>;
17
+ forEach(callbackfn: (value: Value, key: SynchronizationUnitId, map: ISyncUnitMap<Value>) => void, thisArg?: any): void;
18
+ deleteByDocumentId(documentId: string): void;
19
+ deleteByDocumentIdAndScope(documentId: string, scope: string): void;
20
+ getAllByDocumentId(documentId: string): [SynchronizationUnitId, Value][];
21
+ getAllByDocumentIdAndScope(documentId: string, scope: string): [SynchronizationUnitId, Value][];
22
+ }
23
+ /** Separator character used to join synchronization unit key parts */
24
+ type SyncUnitKeySeparator = "|";
25
+ /**
26
+ * Internal key format used to store synchronization units.
27
+ * Composed of documentId, scope, and branch joined by the separator.
28
+ */
29
+ type SyncUnitKey = `${SynchronizationUnitId["documentId"]}${SyncUnitKeySeparator}${SynchronizationUnitId["scope"]}${SyncUnitKeySeparator}${SynchronizationUnitId["branch"]}`;
30
+ /**
31
+ * A specialized Map implementation for managing synchronization units that uses a "documentId - scope - branch" tuple as key.
32
+ * It provides methods to store, retrieve, and delete synchronization units of a certain documentId, optionally a scope and a branch.
33
+ * The implementation uses an internal Map with string keys created by combining documentId, scope, and branch with a separator character.
34
+ */
35
+ export declare class SyncUnitMap<Value> implements ISyncUnitMap<Value> {
36
+ /** Internal storage using concatenated string keys */
37
+ private internalMap;
38
+ /** Character used to separate key components */
39
+ static keySeparator: SyncUnitKeySeparator;
40
+ /**
41
+ * Escapes the separator character in a string by prefixing it with a backslash
42
+ * @param str String to escape
43
+ */
44
+ private static escape;
45
+ /**
46
+ * Unescapes the separator character in a string by removing the prefix backslash
47
+ * @param str String to unescape
48
+ */
49
+ private static unescape;
50
+ /**
51
+ * Creates a composite key from a SynchronizationUnitId
52
+ * Escapes any separator characters in the components
53
+ * @param id The synchronization unit identifier
54
+ * @returns A string key combining documentId, scope, and branch
55
+ */
56
+ static buildKey(id: SynchronizationUnitId): SyncUnitKey;
57
+ /**
58
+ * Parses a composite key back into a SynchronizationUnitId
59
+ * Unescapes any separator characters in the components
60
+ * @param key The composite key string
61
+ * @returns The parsed synchronization unit identifier
62
+ */
63
+ static parseKey(key: SyncUnitKey): SynchronizationUnitId;
64
+ /**
65
+ * Stores a value with the given synchronization unit identifier
66
+ * @throws Error if any part of the id contains the separator character
67
+ */
68
+ set(id: SynchronizationUnitId, state: Value): this;
69
+ /** Retrieves a value by its synchronization unit identifier */
70
+ get(id: SynchronizationUnitId): Value | undefined;
71
+ /** Checks if a value exists for the given synchronization unit identifier */
72
+ has(id: SynchronizationUnitId): boolean;
73
+ /** Removes a value by its synchronization unit identifier */
74
+ delete(id: SynchronizationUnitId): boolean;
75
+ /** Removes all entries from the map */
76
+ clear(): void;
77
+ /** Returns the number of entries in the map */
78
+ get size(): number;
79
+ /**
80
+ * Returns an iterator of synchronization unit identifiers
81
+ * @param filter Optional filter by documentId and scope
82
+ */
83
+ keys(filter?: {
84
+ documentId: string;
85
+ scope?: string;
86
+ } | undefined): IterableIterator<SynchronizationUnitId>;
87
+ /**
88
+ * Returns an iterator of stored values
89
+ * @param filter Optional filter by documentId and scope
90
+ */
91
+ values(filter?: {
92
+ documentId: string;
93
+ scope?: string;
94
+ } | undefined): IterableIterator<Value>;
95
+ /**
96
+ * Returns an iterator of [id, value] pairs
97
+ * @param filter Optional filter by documentId and scope
98
+ */
99
+ entries(filter?: {
100
+ documentId: string;
101
+ scope?: string;
102
+ } | undefined): IterableIterator<[SynchronizationUnitId, Value]>;
103
+ /** Makes the map iterable */
104
+ [Symbol.iterator](): IterableIterator<[SynchronizationUnitId, Value]>;
105
+ /**
106
+ * Executes a callback for each entry in the map
107
+ * @param callbackfn Function to execute for each entry
108
+ * @param thisArg Value to use as 'this' in the callback
109
+ */
110
+ forEach(callbackfn: (value: Value, key: SynchronizationUnitId, map: ISyncUnitMap<Value>) => void, thisArg?: any): void;
111
+ /**
112
+ * Removes all entries associated with a specific document
113
+ * @param documentId The document identifier
114
+ */
115
+ deleteByDocumentId(documentId: string): void;
116
+ /**
117
+ * Removes all entries for a specific document and scope combination
118
+ * @param documentId The document identifier
119
+ * @param scope The scope identifier
120
+ */
121
+ deleteByDocumentIdAndScope(documentId: string, scope: string): void;
122
+ /**
123
+ * Retrieves all entries associated with a specific document
124
+ * @param documentId The document identifier
125
+ * @returns Array of [id, value] pairs
126
+ */
127
+ getAllByDocumentId(documentId: string): [SynchronizationUnitId, Value][];
128
+ /**
129
+ * Retrieves all entries for a specific document and scope combination
130
+ * @param documentId The document identifier
131
+ * @param scope The scope identifier
132
+ * @returns Array of [id, value] pairs
133
+ */
134
+ getAllByDocumentIdAndScope(documentId: string, scope: string): [SynchronizationUnitId, Value][];
135
+ }
136
+ export {};
137
+ //# sourceMappingURL=sync-unit-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-unit-map.d.ts","sourceRoot":"","sources":["../../../src/server/sync-unit-map.ts"],"names":[],"mappings":"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"}