cojson 0.20.9 → 0.20.11

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 (179) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +29 -0
  3. package/dist/OngoingStorageReconciliationTracker.d.ts +16 -0
  4. package/dist/OngoingStorageReconciliationTracker.d.ts.map +1 -0
  5. package/dist/OngoingStorageReconciliationTracker.js +75 -0
  6. package/dist/OngoingStorageReconciliationTracker.js.map +1 -0
  7. package/dist/PeerState.d.ts +2 -2
  8. package/dist/PeerState.d.ts.map +1 -1
  9. package/dist/PeerState.js +3 -3
  10. package/dist/PeerState.js.map +1 -1
  11. package/dist/StorageReconciliationAckTracker.d.ts +14 -0
  12. package/dist/StorageReconciliationAckTracker.d.ts.map +1 -0
  13. package/dist/StorageReconciliationAckTracker.js +72 -0
  14. package/dist/StorageReconciliationAckTracker.js.map +1 -0
  15. package/dist/SyncStateManager.js +2 -2
  16. package/dist/SyncStateManager.js.map +1 -1
  17. package/dist/coValueCore/coValueCore.d.ts +2 -1
  18. package/dist/coValueCore/coValueCore.d.ts.map +1 -1
  19. package/dist/coValueCore/coValueCore.js +43 -10
  20. package/dist/coValueCore/coValueCore.js.map +1 -1
  21. package/dist/coValues/coList.d.ts +2 -0
  22. package/dist/coValues/coList.d.ts.map +1 -1
  23. package/dist/coValues/coList.js +28 -0
  24. package/dist/coValues/coList.js.map +1 -1
  25. package/dist/coValues/group.d.ts +4 -1
  26. package/dist/coValues/group.d.ts.map +1 -1
  27. package/dist/coValues/group.js +15 -1
  28. package/dist/coValues/group.js.map +1 -1
  29. package/dist/config.d.ts +8 -0
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +14 -0
  32. package/dist/config.js.map +1 -1
  33. package/dist/exports.d.ts +9 -1
  34. package/dist/exports.d.ts.map +1 -1
  35. package/dist/exports.js +5 -1
  36. package/dist/exports.js.map +1 -1
  37. package/dist/localNode.d.ts +7 -3
  38. package/dist/localNode.d.ts.map +1 -1
  39. package/dist/localNode.js +13 -5
  40. package/dist/localNode.js.map +1 -1
  41. package/dist/permissions.d.ts +1 -0
  42. package/dist/permissions.d.ts.map +1 -1
  43. package/dist/queue/LinkedList.d.ts +2 -0
  44. package/dist/queue/LinkedList.d.ts.map +1 -1
  45. package/dist/queue/LinkedList.js +7 -0
  46. package/dist/queue/LinkedList.js.map +1 -1
  47. package/dist/queue/OutgoingLoadQueue.d.ts +4 -1
  48. package/dist/queue/OutgoingLoadQueue.d.ts.map +1 -1
  49. package/dist/queue/OutgoingLoadQueue.js +41 -13
  50. package/dist/queue/OutgoingLoadQueue.js.map +1 -1
  51. package/dist/queue/PriorityBasedMessageQueue.d.ts +1 -0
  52. package/dist/queue/PriorityBasedMessageQueue.d.ts.map +1 -1
  53. package/dist/queue/PriorityBasedMessageQueue.js +11 -1
  54. package/dist/queue/PriorityBasedMessageQueue.js.map +1 -1
  55. package/dist/storage/knownState.d.ts +2 -0
  56. package/dist/storage/knownState.d.ts.map +1 -1
  57. package/dist/storage/knownState.js +11 -0
  58. package/dist/storage/knownState.js.map +1 -1
  59. package/dist/storage/sqlite/client.d.ts +10 -1
  60. package/dist/storage/sqlite/client.d.ts.map +1 -1
  61. package/dist/storage/sqlite/client.js +84 -0
  62. package/dist/storage/sqlite/client.js.map +1 -1
  63. package/dist/storage/sqlite/sqliteMigrations.d.ts.map +1 -1
  64. package/dist/storage/sqlite/sqliteMigrations.js +11 -0
  65. package/dist/storage/sqlite/sqliteMigrations.js.map +1 -1
  66. package/dist/storage/sqliteAsync/client.d.ts +10 -1
  67. package/dist/storage/sqliteAsync/client.d.ts.map +1 -1
  68. package/dist/storage/sqliteAsync/client.js +86 -0
  69. package/dist/storage/sqliteAsync/client.js.map +1 -1
  70. package/dist/storage/storageAsync.d.ts +9 -2
  71. package/dist/storage/storageAsync.d.ts.map +1 -1
  72. package/dist/storage/storageAsync.js +19 -0
  73. package/dist/storage/storageAsync.js.map +1 -1
  74. package/dist/storage/storageSync.d.ts +9 -2
  75. package/dist/storage/storageSync.d.ts.map +1 -1
  76. package/dist/storage/storageSync.js +20 -13
  77. package/dist/storage/storageSync.js.map +1 -1
  78. package/dist/storage/types.d.ts +64 -0
  79. package/dist/storage/types.d.ts.map +1 -1
  80. package/dist/storage/types.js.map +1 -1
  81. package/dist/sync.d.ts +53 -2
  82. package/dist/sync.d.ts.map +1 -1
  83. package/dist/sync.js +300 -44
  84. package/dist/sync.js.map +1 -1
  85. package/dist/tests/OngoingStorageReconciliationTracker.test.d.ts +2 -0
  86. package/dist/tests/OngoingStorageReconciliationTracker.test.d.ts.map +1 -0
  87. package/dist/tests/OngoingStorageReconciliationTracker.test.js +60 -0
  88. package/dist/tests/OngoingStorageReconciliationTracker.test.js.map +1 -0
  89. package/dist/tests/OutgoingLoadQueue.test.js +137 -39
  90. package/dist/tests/OutgoingLoadQueue.test.js.map +1 -1
  91. package/dist/tests/SQLiteClientAsync.test.js +1 -1
  92. package/dist/tests/SQLiteClientAsync.test.js.map +1 -1
  93. package/dist/tests/StorageApiAsync.test.js +138 -0
  94. package/dist/tests/StorageApiAsync.test.js.map +1 -1
  95. package/dist/tests/StorageApiSync.test.js +154 -0
  96. package/dist/tests/StorageApiSync.test.js.map +1 -1
  97. package/dist/tests/StorageReconciliationAckTracker.test.d.ts +2 -0
  98. package/dist/tests/StorageReconciliationAckTracker.test.d.ts.map +1 -0
  99. package/dist/tests/StorageReconciliationAckTracker.test.js +74 -0
  100. package/dist/tests/StorageReconciliationAckTracker.test.js.map +1 -0
  101. package/dist/tests/SyncStateManager.test.js +18 -0
  102. package/dist/tests/SyncStateManager.test.js.map +1 -1
  103. package/dist/tests/coList.test.js +112 -1
  104. package/dist/tests/coList.test.js.map +1 -1
  105. package/dist/tests/coValueCore.loadFromStorage.test.js +36 -0
  106. package/dist/tests/coValueCore.loadFromStorage.test.js.map +1 -1
  107. package/dist/tests/group.test.js +44 -0
  108. package/dist/tests/group.test.js.map +1 -1
  109. package/dist/tests/knownState.lazyLoading.test.js +6 -0
  110. package/dist/tests/knownState.lazyLoading.test.js.map +1 -1
  111. package/dist/tests/messagesTestUtils.d.ts.map +1 -1
  112. package/dist/tests/messagesTestUtils.js +4 -0
  113. package/dist/tests/messagesTestUtils.js.map +1 -1
  114. package/dist/tests/sync.concurrentLoad.test.js +333 -1
  115. package/dist/tests/sync.concurrentLoad.test.js.map +1 -1
  116. package/dist/tests/sync.garbageCollection.test.js +4 -0
  117. package/dist/tests/sync.garbageCollection.test.js.map +1 -1
  118. package/dist/tests/sync.load.test.js +19 -0
  119. package/dist/tests/sync.load.test.js.map +1 -1
  120. package/dist/tests/sync.mesh.test.js +1 -0
  121. package/dist/tests/sync.mesh.test.js.map +1 -1
  122. package/dist/tests/sync.multipleServers.test.js +41 -3
  123. package/dist/tests/sync.multipleServers.test.js.map +1 -1
  124. package/dist/tests/sync.storage.test.js +2 -0
  125. package/dist/tests/sync.storage.test.js.map +1 -1
  126. package/dist/tests/sync.storageAsync.test.js +1 -0
  127. package/dist/tests/sync.storageAsync.test.js.map +1 -1
  128. package/dist/tests/sync.storageReconciliation.test.d.ts +2 -0
  129. package/dist/tests/sync.storageReconciliation.test.d.ts.map +1 -0
  130. package/dist/tests/sync.storageReconciliation.test.js +502 -0
  131. package/dist/tests/sync.storageReconciliation.test.js.map +1 -0
  132. package/dist/tests/testUtils.d.ts +1 -0
  133. package/dist/tests/testUtils.d.ts.map +1 -1
  134. package/dist/tests/testUtils.js +3 -2
  135. package/dist/tests/testUtils.js.map +1 -1
  136. package/package.json +4 -4
  137. package/src/OngoingStorageReconciliationTracker.ts +97 -0
  138. package/src/PeerState.ts +10 -3
  139. package/src/StorageReconciliationAckTracker.ts +83 -0
  140. package/src/SyncStateManager.ts +3 -3
  141. package/src/coValueCore/coValueCore.ts +47 -16
  142. package/src/coValues/coList.ts +23 -0
  143. package/src/coValues/group.ts +18 -0
  144. package/src/config.ts +18 -0
  145. package/src/exports.ts +8 -0
  146. package/src/localNode.ts +18 -0
  147. package/src/permissions.ts +1 -1
  148. package/src/queue/LinkedList.ts +10 -0
  149. package/src/queue/OutgoingLoadQueue.ts +57 -15
  150. package/src/queue/PriorityBasedMessageQueue.ts +15 -1
  151. package/src/storage/knownState.ts +14 -0
  152. package/src/storage/sqlite/client.ts +128 -0
  153. package/src/storage/sqlite/sqliteMigrations.ts +11 -0
  154. package/src/storage/sqliteAsync/client.ts +139 -0
  155. package/src/storage/storageAsync.ts +37 -0
  156. package/src/storage/storageSync.ts +41 -16
  157. package/src/storage/types.ts +110 -0
  158. package/src/sync.ts +359 -14
  159. package/src/tests/OngoingStorageReconciliationTracker.test.ts +85 -0
  160. package/src/tests/OutgoingLoadQueue.test.ts +226 -59
  161. package/src/tests/SQLiteClientAsync.test.ts +1 -1
  162. package/src/tests/StorageApiAsync.test.ts +161 -1
  163. package/src/tests/StorageApiSync.test.ts +176 -0
  164. package/src/tests/StorageReconciliationAckTracker.test.ts +99 -0
  165. package/src/tests/SyncStateManager.test.ts +25 -0
  166. package/src/tests/coList.test.ts +138 -0
  167. package/src/tests/coValueCore.loadFromStorage.test.ts +72 -1
  168. package/src/tests/group.test.ts +87 -0
  169. package/src/tests/knownState.lazyLoading.test.ts +36 -1
  170. package/src/tests/messagesTestUtils.ts +4 -0
  171. package/src/tests/sync.concurrentLoad.test.ts +491 -0
  172. package/src/tests/sync.garbageCollection.test.ts +4 -0
  173. package/src/tests/sync.load.test.ts +26 -0
  174. package/src/tests/sync.mesh.test.ts +1 -0
  175. package/src/tests/sync.multipleServers.test.ts +60 -2
  176. package/src/tests/sync.storage.test.ts +2 -0
  177. package/src/tests/sync.storageAsync.test.ts +1 -0
  178. package/src/tests/sync.storageReconciliation.test.ts +696 -0
  179. package/src/tests/testUtils.ts +10 -1
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
@@ -289,7 +289,7 @@ export function setupTestNode(opts = {}) {
289
289
  const [admin, session] = opts.secret
290
290
  ? agentAndSessionIDFromSecret(opts.secret)
291
291
  : randomAgentAndSessionID();
292
- let node = new LocalNode(admin.agentSecret, session, Crypto, opts.syncWhen);
292
+ let node = new LocalNode(admin.agentSecret, session, Crypto, opts.syncWhen, opts.enableFullStorageReconciliation);
293
293
  if (opts.isSyncServer) {
294
294
  syncServer.current = node;
295
295
  }
@@ -340,7 +340,7 @@ export function setupTestNode(opts = {}) {
340
340
  addAsyncStorage,
341
341
  restart: async () => {
342
342
  await node.gracefulShutdown();
343
- ctx.node = node = new LocalNode(admin.agentSecret, session, Crypto, opts.syncWhen);
343
+ ctx.node = node = new LocalNode(admin.agentSecret, session, Crypto, opts.syncWhen, opts.enableFullStorageReconciliation);
344
344
  if (opts.isSyncServer) {
345
345
  syncServer.current = node;
346
346
  }
@@ -351,6 +351,7 @@ export function setupTestNode(opts = {}) {
351
351
  secret: node.agentSecret,
352
352
  connected: opts.connected,
353
353
  isSyncServer: opts.isSyncServer,
354
+ enableFullStorageReconciliation: opts.enableFullStorageReconciliation,
354
355
  });
355
356
  },
356
357
  disconnect: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAerD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;AAEvC,MAAM,UAAU,4BAA4B,CAAC,MAAkB;IAC7D,MAAM,GAAG,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,GAEZ;IACF,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAElD,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5E,OAAO,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAmB;IAEnB,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,OAAO,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,uBAAuB,EAAE,CAAC;IACnD,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,uBAAuB,EAAE,CAAC;IACnD,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAuB,EACvB,SAAuB;IAEvB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEzE,OAAO;QACL,KAAK,EAAE,KAAM;QACb,KAAK,EAAE,KAAM;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAuB,EACvB,SAAuB,EACvB,SAAuB;IAEvB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,qBAAqB,CACvD,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,KAAM;QACb,KAAK,EAAE,KAAM;QACb,KAAK,EAAE,KAAM;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAG,SAAyB;IACtE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtD,OAAO,SAAS,CAAC,uBAAuB,CAAC;YACvC,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;SACzC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,eAAe,CACb,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EACd,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EACd,SAAS,CAAC,CAAC,CAAE,EACb,SAAS,CAAC,CAAC,CAAE,CACd,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,CAAY,EACZ,CAAY,EACZ,KAA0B,EAC1B,KAA0B;IAE1B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,cAAc,CACvC,OAAO,GAAG,CAAC,CAAC,gBAAgB,EAC5B,OAAO,GAAG,CAAC,CAAC,gBAAgB,EAC5B;QACE,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,KAAK;KACjB,CACF,CAAC;IAEF,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,uBAAuB,EAAE,CAAC;IAErD,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE;QACnE,IAAI,EAAE,IAAI;QACV,GAAG,MAAM,CAAC,gBAAgB,EAAE;KAC7B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEzD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE9C,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEzD,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,uBAAuB,EAAE,CAAC;IAErD,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,cAAc,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEnD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE7C,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAErC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAmB,EACnB,GAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO;aACJ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,MAAM,CACJ,IAAI,KAAK,CACP,4CAA4C,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CACjE,CACF,CACF;aACA,KAAK,CAAC,MAAM,CAAC,CAAC;QACjB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,QAAwD;IAExD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACtC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;YAE1C,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC;gBACnB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAe,EACf,EAAW,EACX,SAAmB;IAEnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,IAAU,EACV,WAAkC,EAClC,IAIC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAEhC,MAAM,eAAe,GAAkB,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE;QACjC,IACE,OAAO,GAAG,KAAK,QAAQ;YACvB,GAAG,CAAC,MAAM,KAAK,WAAW;YAC1B,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EACpC,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,eAAe;QACf,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC9B,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;YACD,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC;QAChC,eAAe;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,gBAAiB,SAAQ,YAAY;IAA3C;;QACU,cAAS,GAAG,IAAI,sBAAsB,CAC5C,sBAAsB,CAAC,UAAU,CAClC,CAAC;IAuCJ,CAAC;IArCW,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACS,YAAY;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,IAAY,EACZ,aAAiD,EAAE;QAEnD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;aAC1B,UAAU,EAAE,CAAC,CAAC,CAAC;YAChB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAErE,MAAM,EAAE,GAAG,MAAM,EAAE,UAAU,CAAC,IAAI,CAChC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CACrE,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,OAAO,EAAE,EAAE,KAAK,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;gBACvD,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;oBACzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAC5C,IAAI,aAAa,CAAC;QAChB,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,CAAC,OAAO,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,eAAe;IAG1B,MAAM,CAAC,GAAG,CAAC,OAAwB;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,cAA8C;QAC/D,OAAO,oBAAoB,CAAC,cAAc,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,cAA8C;QACjE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3D,CAAC;;AAhBM,wBAAQ,GAAsB,EAAE,CAAC;AAmB1C,MAAM,UAAU,0BAA0B,CAAC,IAM1C;IACC,MAAM,iBAAiB,GAAG,IAAI,EAAE,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC;IAEjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,iBAAiB,CAAC,eAAe,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,kCAAkC,CAAC;QAC1D,KAAK,EAAE;YACL,EAAE,EAAE,iBAAiB,CAAC,gBAAgB;YACtC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,cAAc;SAC1B;QACD,KAAK,EAAE;YACL,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,OAAO;SACnB;QACD,UAAU,EAAE,IAAI,EAAE,UAAU;KAC7B,CAAC,CAAC;IAEH,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,KAAK;QACX,iBAAiB,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAE;QACjE,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,OAMI,EAAE;IAEN,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM;QAClC,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAE9B,IAAI,IAAI,GAAG,IAAI,SAAS,CACtB,KAAK,CAAC,WAAW,EACjB,OAAO,EACP,MAAM,EACN,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,+BAA+B,CACrC,CAAC;IAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,SAAS,mBAAmB,CAAC,IAM5B;QACC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAC7C,0BAA0B,CAAC;YACzB,MAAM,EAAE,OAAO;YACf,cAAc,EAAE,IAAI,EAAE,cAAc;YACpC,OAAO,EAAE,IAAI,EAAE,OAAO;YACtB,UAAU,EAAE,IAAI,EAAE,UAAU;YAC5B,UAAU,EAAE,IAAI,EAAE,UAAU;SAC7B,CAAC,CAAC;QAEL,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAEzD,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAE;YAC3C,IAAI,EAAE,IAAI;YACV,iBAAiB,EAAE,iBAAiB;YACpC,YAAY,EAAE,YAAY;SAC3B,CAAC;IACJ,CAAC;IAED,SAAS,UAAU,CAAC,OAAmD,EAAE;QACvE,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;YACZ,iBAAiB,CAAC;gBAChB,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ;gBAClC,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;QACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEzB,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,UAAU,eAAe,CAC5B,OAAsE,EAAE;QAExE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ;YAClC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;YAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEzB,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,mBAAmB,EAAE,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG;QACV,IAAI;QACJ,mBAAmB;QACnB,UAAU;QACV,eAAe;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,SAAS,CAC7B,KAAK,CAAC,WAAW,EACjB,OAAO,EACP,MAAM,EACN,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,+BAA+B,CACrC,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC5B,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QACD,eAAe,EAAE,GAAG,EAAE;YACpB,OAAO,aAAa,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,+BAA+B,EAAE,IAAI,CAAC,+BAA+B;aACtE,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;QAC9B,CAAC;KACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAMI,EAAE;IAEN,MAAM,GAAG,GACP,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS;QAClC,CAAC,CAAC;YACE,IAAI,EAAE,MAAM,SAAS,CAAC,iBAAiB,CAAC;gBACtC,KAAK,EAAE;oBACL,0BAA0B,CAAC;wBACzB,MAAM,EAAE,IAAI,CAAC,SAAS;qBACvB,CAAC,CAAC,IAAI;iBACR;gBACD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;aACrD,CAAC;YACF,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC;QACH,CAAC,CAAC,MAAM,SAAS,CAAC,uBAAuB,CAAC;YACtC,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IAET,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,SAAS,mBAAmB,CAAC,IAI5B;QACC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAC7C,0BAA0B,CAAC;YACzB,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB;YACjC,cAAc,EAAE,IAAI,EAAE,cAAc;YACpC,OAAO,EAAE,IAAI,EAAE,OAAO;YACtB,UAAU,EAAE,IAAI,EAAE,UAAU;SAC7B,CAAC,CAAC;QAEL,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,SAAS,mBAAmB;YAC1B,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;QAC9C,CAAC;QAED,OAAO;YACL,SAAS,EAAE,mBAAmB,EAAE;YAChC,IAAI;YACJ,iBAAiB,EAAE,iBAAiB;YACpC,YAAY,EAAE,YAAY;YAC1B,mBAAmB;SACpB,CAAC;IACJ,CAAC;IAED,SAAS,UAAU,CAAC,OAAmD,EAAE;QACvE,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;YACZ,iBAAiB,CAAC;gBAChB,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ;gBAClC,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;QACL,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,UAAU,eAAe,CAC5B,OAAmD,EAAE;QAErD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ;YAClC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;SAC3C,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,mBAAmB,EAAE,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI;SACrB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;SACzB,iBAAiB,EAAgB,CAAC;IAErC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO;QACP,mBAAmB;QACnB,UAAU;QACV,eAAe;QACf,eAAe,EAAE,GAAG,EAAE;YACpB,OAAO,gBAAgB,CAAC;gBACtB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9D,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAoBD,MAAM,UAAU,kCAAkC,CAAC,IAIlD;IACC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;QAClE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QAC1B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IAEH,uGAAuG;IACvG,6DAA6D;IAC7D,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QAEhD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IAClD,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE;QAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,eAAe,CAAC,GAAG,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;gBACxC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;gBACtC,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE;QAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,eAAe,CAAC,GAAG,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;gBACxC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;gBACtC,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,CAAC;QACxD,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAE/D,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;IAExE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAErD,OAAO,IAAI,iBAAiB,CAC1B,gBAAgB,CAAC,iBAAiB,EAAgB,EAClD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,OAA8B,OAAO;IAErC,MAAM,MAAM,GAAG;QACb,IAAI;QACJ,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,EAAE;QAC3E,IAAI,EAAE,IAAI;QACV,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;KACjB,CAAC;IAEnB,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAElC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAa;IAClD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,aAAa;IACrC,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAoB,EACpB,IAAe,EACf,MAAe;IAEf,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,CAAC,OAAO,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,QAAQ,IAAI,GAAG;QACf,OAAQ,GAA2B,CAAC,MAAM,KAAK,QAAQ,CACxD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAG3C;IACC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC;IAE5C,yCAAyC;IACzC,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,KAAK,CAAC,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QACxC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,eAAe,CAAC,GAAG,CAAC;gBAClB,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,yCAAyC;IACzC,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,KAAK,CAAC,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QACxC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,eAAe,CAAC,GAAG,CAAC;gBAClB,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,cAAwD;IAExD,OAAO;QACL,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YACzD,IAAI,IAAI,EAAE,IAAI,KAAK,WAAW,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAoB,CAAC;gBAC5C,4DAA4D;gBAC5D,cAAc,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "type": "module",
31
31
  "license": "MIT",
32
- "version": "0.20.9",
32
+ "version": "0.20.11",
33
33
  "devDependencies": {
34
34
  "@opentelemetry/sdk-metrics": "^2.0.0",
35
35
  "libsql": "^0.5.13",
@@ -42,9 +42,9 @@
42
42
  "@opentelemetry/api": "^1.9.0",
43
43
  "@scure/base": "1.2.1",
44
44
  "unicode-segmenter": "^0.12.0",
45
- "cojson-core-wasm": "0.20.9",
46
- "cojson-core-napi": "0.20.9",
47
- "cojson-core-rn": "0.20.9"
45
+ "cojson-core-wasm": "0.20.11",
46
+ "cojson-core-napi": "0.20.11",
47
+ "cojson-core-rn": "0.20.11"
48
48
  },
49
49
  "gitHead": "33c27053293b4801b968c61d5c4c989f93a67d13",
50
50
  "scripts": {
@@ -0,0 +1,97 @@
1
+ import { RawCoID } from "./ids.js";
2
+ import { PeerID, ReconcileBatchID } from "./sync.js";
3
+
4
+ /**
5
+ * Tracks ongoing storage reconciliation batches in a server.
6
+ */
7
+ export class OngoingStorageReconciliationTracker {
8
+ private reconcileBatches: Map<PeerID, Map<ReconcileBatchID, Set<RawCoID>>> =
9
+ new Map();
10
+ private reconcileBatchesByCoValue: Map<
11
+ PeerID,
12
+ Map<RawCoID, Set<ReconcileBatchID>>
13
+ > = new Map();
14
+
15
+ trackBatch(
16
+ peerId: PeerID,
17
+ batchId: ReconcileBatchID,
18
+ pendingCoValues: Set<RawCoID>,
19
+ ): void {
20
+ if (pendingCoValues.size === 0) {
21
+ return;
22
+ }
23
+
24
+ let batchesForPeer = this.reconcileBatches.get(peerId);
25
+ if (!batchesForPeer) {
26
+ batchesForPeer = new Map();
27
+ this.reconcileBatches.set(peerId, batchesForPeer);
28
+ }
29
+
30
+ batchesForPeer.set(batchId, pendingCoValues);
31
+
32
+ let coValuesToBatches = this.reconcileBatchesByCoValue.get(peerId);
33
+ if (!coValuesToBatches) {
34
+ coValuesToBatches = new Map();
35
+ this.reconcileBatchesByCoValue.set(peerId, coValuesToBatches);
36
+ }
37
+
38
+ for (const coValueId of pendingCoValues) {
39
+ let batchIds = coValuesToBatches.get(coValueId);
40
+ if (!batchIds) {
41
+ batchIds = new Set();
42
+ coValuesToBatches.set(coValueId, batchIds);
43
+ }
44
+ batchIds.add(batchId);
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Marks a coValue as reconciled and returns the batch IDs that completed syncing.
50
+ */
51
+ markItemComplete(peerId: PeerID, coValueId: RawCoID): ReconcileBatchID[] {
52
+ const coValuesToBatches = this.reconcileBatchesByCoValue.get(peerId);
53
+ const batchesForPeer = this.reconcileBatches.get(peerId);
54
+
55
+ if (!coValuesToBatches || !batchesForPeer) {
56
+ return [];
57
+ }
58
+
59
+ const batchIdsForCoValue = coValuesToBatches.get(coValueId);
60
+ if (!batchIdsForCoValue || batchIdsForCoValue.size === 0) {
61
+ return [];
62
+ }
63
+
64
+ const completedBatchIds: ReconcileBatchID[] = [];
65
+
66
+ for (const batchId of batchIdsForCoValue) {
67
+ const batch = batchesForPeer.get(batchId);
68
+ if (!batch) {
69
+ continue;
70
+ }
71
+ batch.delete(coValueId);
72
+ if (batch.size === 0) {
73
+ completedBatchIds.push(batchId);
74
+ }
75
+ }
76
+
77
+ // This coValue was just completed, so it is no longer pending in any batch.
78
+ coValuesToBatches.delete(coValueId);
79
+ for (const batchId of completedBatchIds) {
80
+ batchesForPeer.delete(batchId);
81
+ }
82
+
83
+ if (coValuesToBatches.size === 0) {
84
+ this.reconcileBatchesByCoValue.delete(peerId);
85
+ }
86
+ if (batchesForPeer.size === 0) {
87
+ this.reconcileBatches.delete(peerId);
88
+ }
89
+
90
+ return completedBatchIds;
91
+ }
92
+
93
+ clearPeer(peerId: PeerID): void {
94
+ this.reconcileBatches.delete(peerId);
95
+ this.reconcileBatchesByCoValue.delete(peerId);
96
+ }
97
+ }
package/src/PeerState.ts CHANGED
@@ -3,7 +3,11 @@ import { CoValueCore } from "./exports.js";
3
3
  import { RawCoID } from "./ids.js";
4
4
  import { CoValueKnownState } from "./knownState.js";
5
5
  import { logger } from "./logger.js";
6
- import { type LoadMode, OutgoingLoadQueue } from "./queue/OutgoingLoadQueue.js";
6
+ import {
7
+ type LoadCompletionSource,
8
+ type LoadMode,
9
+ OutgoingLoadQueue,
10
+ } from "./queue/OutgoingLoadQueue.js";
7
11
  import { Peer, SyncMessage } from "./sync.js";
8
12
 
9
13
  export class PeerState {
@@ -78,8 +82,11 @@ export class PeerState {
78
82
  this.loadQueue.trackUpdate(coValue);
79
83
  }
80
84
 
81
- trackLoadRequestComplete(coValue: CoValueCore) {
82
- this.loadQueue.trackComplete(coValue);
85
+ trackLoadRequestComplete(
86
+ coValue: CoValueCore,
87
+ source: LoadCompletionSource = "content",
88
+ ) {
89
+ this.loadQueue.trackComplete(coValue, source);
83
90
  }
84
91
 
85
92
  trackToldKnownState(id: RawCoID) {
@@ -0,0 +1,83 @@
1
+ import { PeerState } from "./PeerState.js";
2
+
3
+ export class StorageReconciliationServerAckTracker {
4
+ /**
5
+ * Tracks pending reconcile acks from the server: "batchId#peerId->offset".
6
+ * Cleared in handleAck.
7
+ */
8
+ pendingReconciliationAck: Map<string, number> = new Map();
9
+ private batchAckListeners: Map<string, Set<() => void>> = new Map();
10
+
11
+ trackBatch(batchId: string, peerId: string, nextOffset: number): void {
12
+ const key = this.key(batchId, peerId);
13
+ this.pendingReconciliationAck.set(key, nextOffset);
14
+ if (!this.batchAckListeners.has(key)) {
15
+ this.batchAckListeners.set(key, new Set());
16
+ }
17
+ }
18
+
19
+ handleAck(batchId: string, peerId: string): number | undefined {
20
+ const key = this.key(batchId, peerId);
21
+ const nextOffset = this.pendingReconciliationAck.get(key);
22
+
23
+ this.pendingReconciliationAck.delete(key);
24
+
25
+ const listeners = this.batchAckListeners.get(key);
26
+ if (listeners) {
27
+ for (const listener of listeners) {
28
+ listener();
29
+ }
30
+ this.batchAckListeners.delete(key);
31
+ }
32
+
33
+ return nextOffset;
34
+ }
35
+
36
+ waitForAck(batchId: string, peer: PeerState, callback: () => void): void {
37
+ const key = this.key(batchId, peer.id);
38
+ const listeners = this.batchAckListeners.get(key);
39
+ if (!this.pendingReconciliationAck.has(key) || !listeners) {
40
+ callback();
41
+ return;
42
+ }
43
+
44
+ let finished = false;
45
+ let unsubscribeCloseListener: () => void = () => {};
46
+
47
+ const finish = () => {
48
+ if (finished) {
49
+ return false;
50
+ }
51
+ finished = true;
52
+ unsubscribeCloseListener();
53
+ return true;
54
+ };
55
+
56
+ const onAck = () => {
57
+ if (!finish()) {
58
+ return;
59
+ }
60
+ callback();
61
+ };
62
+
63
+ const onPeerClose = () => {
64
+ if (!finish()) {
65
+ return;
66
+ }
67
+ listeners.delete(onAck);
68
+ this.pendingReconciliationAck.delete(key);
69
+ if (listeners.size === 0) {
70
+ this.batchAckListeners.delete(key);
71
+ }
72
+ // The `callback` is never invoked, so the reconciliation process for this peer
73
+ // is interrupted. Once the peer reconnects, the reconciliation process will resume.
74
+ };
75
+
76
+ listeners.add(onAck);
77
+ unsubscribeCloseListener = peer.addCloseListener(onPeerClose);
78
+ }
79
+
80
+ private key(batchId: string, peerId: string): string {
81
+ return `${batchId}#${peerId}`;
82
+ }
83
+ }
@@ -143,12 +143,12 @@ export class SyncStateManager {
143
143
  ) {
144
144
  const entry = this.syncManager.local.getCoValue(id);
145
145
 
146
- if (!entry.hasVerifiedContent()) {
146
+ const knownState = entry.knownState();
147
+
148
+ if (!knownState.header) {
147
149
  return false;
148
150
  }
149
151
 
150
- const knownState = entry.verified.knownState();
151
-
152
152
  return areCurrentSessionsInSyncWith(
153
153
  knownState.sessions,
154
154
  peerKnownState.sessions,
@@ -36,12 +36,7 @@ import {
36
36
  getDependenciesFromGroupRawTransactions,
37
37
  getDependenciesFromHeader,
38
38
  } from "./utils.js";
39
- import {
40
- CoValueHeader,
41
- Transaction,
42
- Uniqueness,
43
- VerifiedState,
44
- } from "./verifiedState.js";
39
+ import { CoValueHeader, Transaction, VerifiedState } from "./verifiedState.js";
45
40
  import {
46
41
  MergeCommit,
47
42
  BranchPointerCommit,
@@ -312,6 +307,11 @@ export class CoValueCore {
312
307
  return "available";
313
308
  }
314
309
 
310
+ // Check for lastKnownStateSource (garbageCollected or onlyKnownState)
311
+ if (this.#lastKnownStateSource) {
312
+ return this.#lastKnownStateSource;
313
+ }
314
+
315
315
  // Check for pending peers FIRST - loading takes priority over other states
316
316
  for (const peer of this.loadingStatuses.values()) {
317
317
  if (peer.type === "pending") {
@@ -319,11 +319,6 @@ export class CoValueCore {
319
319
  }
320
320
  }
321
321
 
322
- // Check for lastKnownStateSource (garbageCollected or onlyKnownState)
323
- if (this.#lastKnownStateSource) {
324
- return this.#lastKnownStateSource;
325
- }
326
-
327
322
  if (this.loadingStatuses.size === 0) {
328
323
  return "unknown";
329
324
  }
@@ -345,6 +340,14 @@ export class CoValueCore {
345
340
  return this.hasVerifiedContent();
346
341
  }
347
342
 
343
+ isKnownStateAvailable(): boolean {
344
+ return (
345
+ this.loadingState === "available" ||
346
+ this.loadingState === "onlyKnownState" ||
347
+ this.loadingState === "garbageCollected"
348
+ );
349
+ }
350
+
348
351
  isCompletelyDownloaded(): boolean {
349
352
  if (!this.hasVerifiedContent()) {
350
353
  return false;
@@ -2091,6 +2094,7 @@ export class CoValueCore {
2091
2094
  return;
2092
2095
  }
2093
2096
 
2097
+ let persistentCloseTimer: ReturnType<typeof setTimeout> | undefined;
2094
2098
  const markNotFound = () => {
2095
2099
  if (this.getLoadingStateForPeer(peer.id) === "pending") {
2096
2100
  logger.warn("Timeout waiting for peer to load coValue", {
@@ -2101,10 +2105,34 @@ export class CoValueCore {
2101
2105
  }
2102
2106
  };
2103
2107
 
2104
- // Close listener for non-persistent peers
2105
- const removeCloseListener = peer.persistent
2106
- ? undefined
2107
- : peer.addCloseListener(markNotFound);
2108
+ const clearPersistentCloseTimer = () => {
2109
+ if (persistentCloseTimer) {
2110
+ clearTimeout(persistentCloseTimer);
2111
+ persistentCloseTimer = undefined;
2112
+ }
2113
+ };
2114
+
2115
+ const schedulePersistentPeerGraceTimeout = () => {
2116
+ clearPersistentCloseTimer();
2117
+ persistentCloseTimer = setTimeout(() => {
2118
+ // If the peer with the same id reconnected, avoid marking it as unavailable.
2119
+ const currentPeer = this.node.syncManager.peers[peer.id];
2120
+ if (currentPeer && !currentPeer.closed) {
2121
+ return;
2122
+ }
2123
+ markNotFound();
2124
+ }, CO_VALUE_LOADING_CONFIG.TIMEOUT);
2125
+ };
2126
+
2127
+ // Non-persistent peers are considered unavailable immediately on close.
2128
+ // Persistent peers get a grace period to reconnect before being marked unavailable.
2129
+ const removeCloseListener = peer.addCloseListener(() => {
2130
+ if (!peer.persistent) {
2131
+ markNotFound();
2132
+ return;
2133
+ }
2134
+ schedulePersistentPeerGraceTimeout();
2135
+ });
2108
2136
 
2109
2137
  /**
2110
2138
  * On reconnection persistent peers will automatically fire the load request
@@ -2112,6 +2140,8 @@ export class CoValueCore {
2112
2140
  */
2113
2141
  if (!peer.closed) {
2114
2142
  peer.sendLoadRequest(this, mode);
2143
+ } else if (peer.persistent) {
2144
+ schedulePersistentPeerGraceTimeout();
2115
2145
  }
2116
2146
 
2117
2147
  this.subscribe((state, unsubscribe) => {
@@ -2123,7 +2153,8 @@ export class CoValueCore {
2123
2153
  peerState === "unavailable"
2124
2154
  ) {
2125
2155
  unsubscribe();
2126
- removeCloseListener?.();
2156
+ removeCloseListener();
2157
+ clearPersistentCloseTimer();
2127
2158
  }
2128
2159
  }, true);
2129
2160
  }
@@ -92,6 +92,8 @@ export class RawCoList<
92
92
  lastValidTransaction: number | undefined;
93
93
  totalValidTransactions: number = 0;
94
94
 
95
+ #isDeletionRestricted: boolean;
96
+
95
97
  private resetInternalState() {
96
98
  this.afterStart = [];
97
99
  this.beforeEnd = [];
@@ -115,6 +117,10 @@ export class RawCoList<
115
117
  this.knownTransactions = { [core.id]: 0 };
116
118
  this.atTimeFilter = atTimeFilter;
117
119
 
120
+ const ruleset = this.core.verified.header.ruleset;
121
+ this.#isDeletionRestricted =
122
+ ruleset.type === "ownedByGroup" && ruleset.restrictDeletion === true;
123
+
118
124
  this._processNewTransactions();
119
125
  }
120
126
 
@@ -208,6 +214,10 @@ export class RawCoList<
208
214
  this._processNewTransactions();
209
215
  }
210
216
 
217
+ private transactionContainsDeletion(changes: ListOpPayload<Item>[]) {
218
+ return changes.some((change) => change.op === "del");
219
+ }
220
+
211
221
  private _processNewTransactions() {
212
222
  // Get all transactions including invalid ones, so that items referencing
213
223
  // entries from invalid init transactions can still find their references.
@@ -230,6 +240,19 @@ export class RawCoList<
230
240
  continue;
231
241
  }
232
242
 
243
+ if (
244
+ isValid &&
245
+ this.#isDeletionRestricted &&
246
+ this.transactionContainsDeletion(changes as ListOpPayload<Item>[])
247
+ ) {
248
+ const author = accountOrAgentIDfromSessionID(txID.sessionID);
249
+ const role = this.group.atTime(madeAt).roleOfInternal(author);
250
+
251
+ if (role !== "admin" && role !== "manager") {
252
+ continue;
253
+ }
254
+ }
255
+
233
256
  // Only track valid transactions for the lastValidTransaction/oldestValidTransaction
234
257
  if (isValid) {
235
258
  lastValidTransaction = Math.max(lastValidTransaction ?? 0, madeAt);
@@ -1499,6 +1499,15 @@ export class RawGroup<
1499
1499
  return inviteSecretFromSecretSeed(secretSeed);
1500
1500
  }
1501
1501
 
1502
+ private assertCanWrite(): void {
1503
+ const role = this.myRole();
1504
+ if (role === undefined || role === "reader" || role === "revoked") {
1505
+ throw new Error(
1506
+ `Cannot create content: current user does not have write permissions`,
1507
+ );
1508
+ }
1509
+ }
1510
+
1502
1511
  /**
1503
1512
  * Creates a new `CoMap` within this group, with the specified specialized
1504
1513
  * `CoMap` type `M` and optional static metadata.
@@ -1512,6 +1521,7 @@ export class RawGroup<
1512
1521
  uniqueness: CoValueUniqueness = this.crypto.createdNowUnique(),
1513
1522
  initMeta?: JsonObject,
1514
1523
  ): M {
1524
+ this.assertCanWrite();
1515
1525
  const map = this.core.node
1516
1526
  .createCoValue({
1517
1527
  type: "comap",
@@ -1549,13 +1559,18 @@ export class RawGroup<
1549
1559
  initPrivacy: "trusting" | "private" = "private",
1550
1560
  uniqueness: CoValueUniqueness = this.crypto.createdNowUnique(),
1551
1561
  initMeta?: JsonObject,
1562
+ options?: { restrictDeletion?: boolean },
1552
1563
  ): L {
1564
+ this.assertCanWrite();
1553
1565
  const list = this.core.node
1554
1566
  .createCoValue({
1555
1567
  type: "colist",
1556
1568
  ruleset: {
1557
1569
  type: "ownedByGroup",
1558
1570
  group: this.id,
1571
+ ...(options?.restrictDeletion === true
1572
+ ? { restrictDeletion: true }
1573
+ : {}),
1559
1574
  },
1560
1575
  meta: meta || null,
1561
1576
  ...(uniqueness.createdAt !== undefined
@@ -1586,6 +1601,7 @@ export class RawGroup<
1586
1601
  meta?: T["headerMeta"],
1587
1602
  initPrivacy: "trusting" | "private" = "private",
1588
1603
  ): T {
1604
+ this.assertCanWrite();
1589
1605
  const text = this.core.node
1590
1606
  .createCoValue({
1591
1607
  type: "coplaintext",
@@ -1613,6 +1629,7 @@ export class RawGroup<
1613
1629
  uniqueness: CoValueUniqueness = this.crypto.createdNowUnique(),
1614
1630
  initMeta?: JsonObject,
1615
1631
  ): C {
1632
+ this.assertCanWrite();
1616
1633
  const stream = this.core.node
1617
1634
  .createCoValue({
1618
1635
  type: "costream",
@@ -1643,6 +1660,7 @@ export class RawGroup<
1643
1660
  meta: C["headerMeta"] = { type: "binary" },
1644
1661
  uniqueness: CoValueUniqueness = this.crypto.createdNowUnique(),
1645
1662
  ): C {
1663
+ this.assertCanWrite();
1646
1664
  return this.core.node
1647
1665
  .createCoValue({
1648
1666
  type: "costream",
package/src/config.ts CHANGED
@@ -64,3 +64,21 @@ export function setMaxOutgoingMessagesChunkBytes(bytes: number) {
64
64
  export function setMaxInFlightLoadsPerPeer(limit: number) {
65
65
  CO_VALUE_LOADING_CONFIG.MAX_IN_FLIGHT_LOADS_PER_PEER = limit;
66
66
  }
67
+
68
+ export const STORAGE_RECONCILIATION_CONFIG = {
69
+ BATCH_SIZE: 100,
70
+ LOCK_TTL_MS: 24 * 60 * 60 * 1000, // 1 day
71
+ RECONCILIATION_INTERVAL_MS: 30 * 24 * 60 * 60 * 1000, // 30 days
72
+ };
73
+
74
+ export function setStorageReconciliationBatchSize(size: number) {
75
+ STORAGE_RECONCILIATION_CONFIG.BATCH_SIZE = size;
76
+ }
77
+
78
+ export function setStorageReconciliationLockTTL(ttl: number) {
79
+ STORAGE_RECONCILIATION_CONFIG.LOCK_TTL_MS = ttl;
80
+ }
81
+
82
+ export function setStorageReconciliationInterval(interval: number) {
83
+ STORAGE_RECONCILIATION_CONFIG.RECONCILIATION_INTERVAL_MS = interval;
84
+ }