@sunfall/arc-db 0.1.0-alpha.0

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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/dist/change-feed-dispatcher.d.ts +21 -0
  3. package/dist/change-feed-dispatcher.d.ts.map +1 -0
  4. package/dist/change-feed-dispatcher.js +53 -0
  5. package/dist/change-feed-dispatcher.js.map +1 -0
  6. package/dist/collection-change-feed-runtime.d.ts +32 -0
  7. package/dist/collection-change-feed-runtime.d.ts.map +1 -0
  8. package/dist/collection-change-feed-runtime.js +50 -0
  9. package/dist/collection-change-feed-runtime.js.map +1 -0
  10. package/dist/collection-contract.d.ts +525 -0
  11. package/dist/collection-contract.d.ts.map +1 -0
  12. package/dist/collection-contract.js +4 -0
  13. package/dist/collection-contract.js.map +1 -0
  14. package/dist/collection-definition-snapshot.d.ts +64 -0
  15. package/dist/collection-definition-snapshot.d.ts.map +1 -0
  16. package/dist/collection-definition-snapshot.js +122 -0
  17. package/dist/collection-definition-snapshot.js.map +1 -0
  18. package/dist/collection-errors.d.ts +38 -0
  19. package/dist/collection-errors.d.ts.map +1 -0
  20. package/dist/collection-errors.js +17 -0
  21. package/dist/collection-errors.js.map +1 -0
  22. package/dist/collection-ids.d.ts +6 -0
  23. package/dist/collection-ids.d.ts.map +1 -0
  24. package/dist/collection-ids.js +6 -0
  25. package/dist/collection-ids.js.map +1 -0
  26. package/dist/collection-index-materialization.d.ts +29 -0
  27. package/dist/collection-index-materialization.d.ts.map +1 -0
  28. package/dist/collection-index-materialization.js +118 -0
  29. package/dist/collection-index-materialization.js.map +1 -0
  30. package/dist/collection-mutation-queue.d.ts +10 -0
  31. package/dist/collection-mutation-queue.d.ts.map +1 -0
  32. package/dist/collection-mutation-queue.js +46 -0
  33. package/dist/collection-mutation-queue.js.map +1 -0
  34. package/dist/collection-mutation-workflow.d.ts +18 -0
  35. package/dist/collection-mutation-workflow.d.ts.map +1 -0
  36. package/dist/collection-mutation-workflow.js +252 -0
  37. package/dist/collection-mutation-workflow.js.map +1 -0
  38. package/dist/collection-persistence.d.ts +48 -0
  39. package/dist/collection-persistence.d.ts.map +1 -0
  40. package/dist/collection-persistence.js +323 -0
  41. package/dist/collection-persistence.js.map +1 -0
  42. package/dist/collection-policy.d.ts +5 -0
  43. package/dist/collection-policy.d.ts.map +1 -0
  44. package/dist/collection-policy.js +7 -0
  45. package/dist/collection-policy.js.map +1 -0
  46. package/dist/collection-preload.d.ts +21 -0
  47. package/dist/collection-preload.d.ts.map +1 -0
  48. package/dist/collection-preload.js +4 -0
  49. package/dist/collection-preload.js.map +1 -0
  50. package/dist/collection-projection-callback-policy.d.ts +14 -0
  51. package/dist/collection-projection-callback-policy.d.ts.map +1 -0
  52. package/dist/collection-projection-callback-policy.js +25 -0
  53. package/dist/collection-projection-callback-policy.js.map +1 -0
  54. package/dist/collection-reactive-binding.d.ts +72 -0
  55. package/dist/collection-reactive-binding.d.ts.map +1 -0
  56. package/dist/collection-reactive-binding.js +95 -0
  57. package/dist/collection-reactive-binding.js.map +1 -0
  58. package/dist/collection-registry.d.ts +56 -0
  59. package/dist/collection-registry.d.ts.map +1 -0
  60. package/dist/collection-registry.js +123 -0
  61. package/dist/collection-registry.js.map +1 -0
  62. package/dist/collection-row-ingress.d.ts +16 -0
  63. package/dist/collection-row-ingress.d.ts.map +1 -0
  64. package/dist/collection-row-ingress.js +110 -0
  65. package/dist/collection-row-ingress.js.map +1 -0
  66. package/dist/collection-runtime.d.ts +20 -0
  67. package/dist/collection-runtime.d.ts.map +1 -0
  68. package/dist/collection-runtime.js +256 -0
  69. package/dist/collection-runtime.js.map +1 -0
  70. package/dist/collection-snapshot-codec.d.ts +62 -0
  71. package/dist/collection-snapshot-codec.d.ts.map +1 -0
  72. package/dist/collection-snapshot-codec.js +563 -0
  73. package/dist/collection-snapshot-codec.js.map +1 -0
  74. package/dist/collection-state.d.ts +72 -0
  75. package/dist/collection-state.d.ts.map +1 -0
  76. package/dist/collection-state.js +276 -0
  77. package/dist/collection-state.js.map +1 -0
  78. package/dist/collection-sync-load-policy.d.ts +17 -0
  79. package/dist/collection-sync-load-policy.d.ts.map +1 -0
  80. package/dist/collection-sync-load-policy.js +245 -0
  81. package/dist/collection-sync-load-policy.js.map +1 -0
  82. package/dist/collection-value-detachment.d.ts +34 -0
  83. package/dist/collection-value-detachment.d.ts.map +1 -0
  84. package/dist/collection-value-detachment.js +248 -0
  85. package/dist/collection-value-detachment.js.map +1 -0
  86. package/dist/collection-write-commit.d.ts +32 -0
  87. package/dist/collection-write-commit.d.ts.map +1 -0
  88. package/dist/collection-write-commit.js +51 -0
  89. package/dist/collection-write-commit.js.map +1 -0
  90. package/dist/flush-policy.d.ts +130 -0
  91. package/dist/flush-policy.d.ts.map +1 -0
  92. package/dist/flush-policy.js +96 -0
  93. package/dist/flush-policy.js.map +1 -0
  94. package/dist/index.d.ts +481 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +251 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/live-query-collection-materialization.d.ts +47 -0
  99. package/dist/live-query-collection-materialization.d.ts.map +1 -0
  100. package/dist/live-query-collection-materialization.js +231 -0
  101. package/dist/live-query-collection-materialization.js.map +1 -0
  102. package/dist/live-query-collection.d.ts +23 -0
  103. package/dist/live-query-collection.d.ts.map +1 -0
  104. package/dist/live-query-collection.js +94 -0
  105. package/dist/live-query-collection.js.map +1 -0
  106. package/dist/live-query-runtime.d.ts +8 -0
  107. package/dist/live-query-runtime.d.ts.map +1 -0
  108. package/dist/live-query-runtime.js +228 -0
  109. package/dist/live-query-runtime.js.map +1 -0
  110. package/dist/live-query-state.d.ts +11 -0
  111. package/dist/live-query-state.d.ts.map +1 -0
  112. package/dist/live-query-state.js +130 -0
  113. package/dist/live-query-state.js.map +1 -0
  114. package/dist/query-builder.d.ts +294 -0
  115. package/dist/query-builder.d.ts.map +1 -0
  116. package/dist/query-builder.js +373 -0
  117. package/dist/query-builder.js.map +1 -0
  118. package/dist/query-context-identity.d.ts +19 -0
  119. package/dist/query-context-identity.d.ts.map +1 -0
  120. package/dist/query-context-identity.js +41 -0
  121. package/dist/query-context-identity.js.map +1 -0
  122. package/dist/query-execution-plan.d.ts +27 -0
  123. package/dist/query-execution-plan.d.ts.map +1 -0
  124. package/dist/query-execution-plan.js +69 -0
  125. package/dist/query-execution-plan.js.map +1 -0
  126. package/dist/query-plan.d.ts +200 -0
  127. package/dist/query-plan.d.ts.map +1 -0
  128. package/dist/query-plan.js +524 -0
  129. package/dist/query-plan.js.map +1 -0
  130. package/dist/query-source-adapter.d.ts +25 -0
  131. package/dist/query-source-adapter.d.ts.map +1 -0
  132. package/dist/query-source-adapter.js +14 -0
  133. package/dist/query-source-adapter.js.map +1 -0
  134. package/dist/runtime-collection-store.d.ts +38 -0
  135. package/dist/runtime-collection-store.d.ts.map +1 -0
  136. package/dist/runtime-collection-store.js +149 -0
  137. package/dist/runtime-collection-store.js.map +1 -0
  138. package/dist/server-collection.d.ts +84 -0
  139. package/dist/server-collection.d.ts.map +1 -0
  140. package/dist/server-collection.js +84 -0
  141. package/dist/server-collection.js.map +1 -0
  142. package/dist/sqlite-persistence.d.ts +239 -0
  143. package/dist/sqlite-persistence.d.ts.map +1 -0
  144. package/dist/sqlite-persistence.js +345 -0
  145. package/dist/sqlite-persistence.js.map +1 -0
  146. package/dist/sync-adapter.d.ts +233 -0
  147. package/dist/sync-adapter.d.ts.map +1 -0
  148. package/dist/sync-adapter.js +226 -0
  149. package/dist/sync-adapter.js.map +1 -0
  150. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-sync-load-policy.js","sourceRoot":"","sources":["../src/collection-sync-load-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAoB,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAS9D,OAAO,EACL,2BAA2B,EAC3B,mCAAmC,EACnC,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,GAIzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAA+B,MAAM,+BAA+B,CAAC;AACnG,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAQnE,MAAM,iBAAiB,GAAG,CACxB,KAA6B,EAC7B,KAAuD,EAClC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE/C,MAAM,2BAA2B,GAAG,CAClC,KAA+B,EAC/B,IAAoC,EAC9B,EAAE;IACR,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChF,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAK,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAI,KAAqB,EAAW,EAAE,CAC/D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAE9C,MAAM,wBAAwB,GAAG,CAC/B,KAA6B,EAC7B,UAA4C,EAC5C,KAA+B,EAC/B,KAAY,EACiB,EAAE,CAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;QAClB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAkC;KAC1C,CAAC,CAAC;IACH,KAAK,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,KAAK;KACN,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,MAAM,0BAA0B,GAAG,CACjC,KAAmC,EACnC,KAAc,EAKd,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAA0B;QACrC,UAAU,EAAE,EAAE,KAAK,CAAC,cAAc;QAClC,KAAK;QACL,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAmC;KAClE,CAAC;IACF,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,MAAM,oBAAoB,GAAG,CAC3B,KAAmC,EACnC,OAA8B,EACrB,EAAE,CACX,KAAK,CAAC,cAAc,KAAK,OAAO,CAAC,UAAU;IAC3C,KAAK,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC;AAEtD,MAAM,6BAA6B,GAAG,CACpC,KAAmC,EACnC,OAA8B,EAC9B,IAAgD,EAC3B,EAAE,CACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;QACxD,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAClB,OAAO,CAAC,QAA8D,EACtE,IAAI,CACL,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,MAAM,yBAAyB,GAAG,CAChC,IAAgD,EACA,EAAE,CAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEpE,MAAM,uCAAuC,GAAG,CAC9C,UAAyB,EACzB,KAAqC,EACrC,OAA8B,EACJ,EAAE,CAC5B,IAAI,wBAAwB,CAAC;IAC3B,SAAS,EAAE,mBAAmB,UAAU,CAAC,IAAI,cAAc;IAC3D,KAAK,EAAE;QACL,iBAAiB,EAAE,OAAO,CAAC,UAAU;QACrC,iBAAiB,EAAE,KAAK,CAAC,cAAc;QACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI;KACtC;IACD,QAAQ,EACN,yIAAyI;CAC5I,CAAC,CAAC;AAEL,MAAM,6BAA6B,GAAG,CACpC,UAAyB,EACzB,KAAmC,EACnC,OAA8B,EACkB,EAAE,CAClD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACtC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;YAChC,OAAO,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;gBACvD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAA8D,CAAC;gBACvF,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,4BAA4B,GAAG,CACnC,UAAyB,EACzB,KAAmC,EACnC,OAA8B,EAC9B,IAAgD,EACA,EAAE,CAClD,KAAK,CAAC,cAAc,KAAK,OAAO,CAAC,UAAU;IACzC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC;IACjC,CAAC,CAAC,6BAA6B,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAEhE,MAAM,uBAAuB,GAAG,CAC9B,UAA4C,EAC5C,KAAc,EAC2C,EAAE,CAC3D,KAAK;IACH,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9D,MAAM,0BAA0B,GAAG,CACjC,UAA4C,EAC5C,KAA+B,EAC/B,KAA6B,EAC7B,OAA8B,EACwB,EAAE,CACxD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3C,OAAO,oCAAoC,CACzC,UAAU,EACV,KAAK,EACL,KAAK,EACL,qBAAqB,EACrB,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,cAAc,CACrF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,MAAM,iBAAiB,GAAG,CAAC,UAAyB,EAAW,EAAE;IAC/D,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACvD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,oCAAoC,GAAG,CAC3C,UAA4C,EAC5C,KAA+B,EAC/B,IAAoC,EACpC,SAAiB,EACkD,EAAE,CACrE,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,WAAW,GAAG,mBAAmB,EAAW,CAAC;QACnD,8BAA8B,CAAC,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,2BAA2B,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,2BAA2B,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,wBAAwB,CAAC;QAC3B,SAAS,EAAE,mBAAmB,UAAU,CAAC,IAAI,YAAY;QACzD,KAAK;QACL,QAAQ,EACN,yFAAyF;KAC5F,CAAC;CACL,CAAC,CAAC;AAEL,MAAM,yBAAyB,GAAG,CAChC,UAA4C,EAC5C,KAA6B,EAC7B,QAAkC,EACiB,EAAE,CACrD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,+BAA+B,CACpC,UAAU,EACV,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,OAAO,EACd,mCAAmC,CAAC,MAAM,CAAC,EAC3C,KAAK,CACN,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,MAAM,+BAA+B,GAAG,CACtC,KAA+B,EAC/B,OAA8B,EAC9B,SAAyD,EACpC,EAAE,CACvB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;IACf,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,gCAAgC,GAAG,CACvC,UAA4C,EAC5C,KAA+B,EAC/B,KAA6B,EAC7B,OAA8B,EAC9B,IAAoC,EACpC,iBAAiE,EACjE,SAAiB,EACkC,EAAE,CACrD,iCAAiC,CAC/B,KAAK,EACL,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,EAAE,CACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC;QAC5C,CAAC,CAAC,KAAK,CAAC,CAAC,oCAAoC,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,CAClF,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACrB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC;YAClC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;YAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CACvB,CACF;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,QAAQ,KAAK,SAAS;QAC/C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,CAAC,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC5E,CAAC;aAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,CAAC,wBAAwB,CAC7B,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK;gBACvD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAClC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,KAAK,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;QACtB,SAAS;KACV,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CACF,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,UAA4C,EAC5C,OAAwC,EACW,EAAE,CACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAC1B,SAAS,CAAC,OAAO,CAAC,QAA8D,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAClC,MAAM,eAAe,GAAG,CAAQ,KAAY,EAA+B,EAAE,CAC3E,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC;QAClC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;QAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,0BAA0B,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CACxF,MAAM,CAAC,KAAK,CAAC,CAAC,KAAgC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAC3E,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,sBAAsB,GAC1B,QAAQ;YACR,2BAA2B,CAAC,UAAU,CAAC,EAAE,gBAAgB,KAAK,IAAI;YAClE,SAAS,KAAK,SAAS,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACzC,OAAO,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACjD,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACpD,CAAC,CAAC,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC;YACpE,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,EACD,MAAM,CAAC,KAAK,CAAC,CAAC,KAAmC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAC9E,CAAC;QACF,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,gCAAgC,CAAC,UAAU,EAAE,MAAM,EAAE;gBACvE,SAAS,EAAE,MAAM;gBACjB,IAAI,EAAE,iBAAiB,UAAU,CAAC,IAAI,QAAQ;gBAC9C,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACjD,KAAK,CAAC,CAAC,gCAAgC,CACrC,UAAU,EACV,KAAK,EACL,KAAK,EACL,OAAO,EACP,IAAI,EACJ,iBAAiB,EACjB,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACpD,CAAC,CAAC,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC;YACpE,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvC,4BAA4B,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAC/D,CAAC;QACF,KAAK,CAAC,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC,CAAC,CACH,CACF,CAAC;IAEF,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,6BAA6B,CAC3B,KAAK,EACL,OAAO,EACP,IAAkD,CACnD;QACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { CollectionKey, CollectionMutation, CollectionOrigin, CollectionRow, CollectionTransaction, CollectionUpdate } from "./collection-contract.js";
2
+ export interface CollectionExecutableValuePath {
3
+ readonly path: string;
4
+ readonly reason: "PromiseLikeValue" | "EffectLikeValue";
5
+ }
6
+ declare const CollectionValueReadError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
7
+ readonly _tag: "CollectionValueReadError";
8
+ } & Readonly<A>;
9
+ export declare class CollectionValueReadError extends CollectionValueReadError_base<{
10
+ readonly path: string;
11
+ readonly cause: unknown;
12
+ }> {
13
+ }
14
+ export declare const collectionExecutableValuePath: (value: unknown, path?: string, active?: WeakSet<object>) => CollectionExecutableValuePath | undefined;
15
+ export declare const cloneCollectionValue: <A>(value: A, seen?: WeakMap<object, unknown>, path?: string) => A;
16
+ export declare const freezeCollectionValue: <A>(value: A, seen?: WeakSet<object>) => A;
17
+ export declare const cloneFrozenCollectionValue: <A>(value: A) => A;
18
+ export declare const cloneCollectionMutation: <A extends object, K extends CollectionKey>(mutation: CollectionMutation<A, K>) => CollectionMutation<A, K>;
19
+ export declare const cloneCollectionTransaction: <A extends object, K extends CollectionKey>(transaction: CollectionTransaction<A, K>) => CollectionTransaction<A, K>;
20
+ export declare const cloneFrozenCollectionTransaction: <A extends object, K extends CollectionKey>(transaction: CollectionTransaction<A, K>) => CollectionTransaction<A, K>;
21
+ export declare const detachCollectionRow: <A extends object, K extends CollectionKey>(options: {
22
+ readonly collection: string;
23
+ readonly key: K;
24
+ readonly value: A;
25
+ readonly synced: boolean;
26
+ readonly origin: CollectionOrigin;
27
+ }) => CollectionRow<A, K>;
28
+ export declare const collectionValueChanges: <A extends object>(previous: A, value: A) => Partial<A>;
29
+ export declare const applyCollectionUpdate: <A extends object>(previous: A, update: CollectionUpdate<A>) => {
30
+ readonly value: A;
31
+ readonly changes: Partial<A>;
32
+ };
33
+ export {};
34
+ //# sourceMappingURL=collection-value-detachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-value-detachment.d.ts","sourceRoot":"","sources":["../src/collection-value-detachment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,CAAC;CACzD;;;;AAED,qBAAa,wBAAyB,SAAQ,8BAA6C;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG;AAgBL,eAAO,MAAM,6BAA6B,UACjC,OAAO,8CAGb,6BAA6B,GAAG,SA+ElC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAC7B,CAAC,qDAGP,CAsFF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,CAAC,6BAAiC,CAiCjF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,CAAC,KAAG,CACL,CAAC;AAErD,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,YACrE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,KACjC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CA8BzB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,eACrE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,KACvC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAI3B,CAAC;AAEH,eAAO,MAAM,gCAAgC,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,eAC3E,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,KACvC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CACwC,CAAC;AAEtE,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,WAAW;IACtF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC,KAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAMK,CAAC;AAE5B,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,YAAY,CAAC,SAAS,CAAC,KAAG,OAAO,CAAC,CAAC,CAQzF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,YAC1C,CAAC,UACH,gBAAgB,CAAC,CAAC,CAAC,KAC1B;IACD,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAgB9B,CAAC"}
@@ -0,0 +1,248 @@
1
+ import { isEffectLike, isPromiseLikeValue } from "@sunfall/arc-core";
2
+ import { Data } from "effect";
3
+ export class CollectionValueReadError extends Data.TaggedError("CollectionValueReadError") {
4
+ }
5
+ const collectionValuePathSegment = (key) => /^[A-Za-z_$][\w$]*$/.test(key) ? `.${key}` : `[${JSON.stringify(key)}]`;
6
+ const readCollectionValue = (path, evaluate) => {
7
+ try {
8
+ return evaluate();
9
+ }
10
+ catch (cause) {
11
+ throw new CollectionValueReadError({ path, cause });
12
+ }
13
+ };
14
+ const isEffectLikeCollectionValue = (value) => value instanceof Error ? false : isEffectLike(value);
15
+ export const collectionExecutableValuePath = (value, path = "$", active = new WeakSet()) => {
16
+ if (isPromiseLikeValue(value)) {
17
+ return { path, reason: "PromiseLikeValue" };
18
+ }
19
+ if (isEffectLikeCollectionValue(value)) {
20
+ return { path, reason: "EffectLikeValue" };
21
+ }
22
+ if (value === null || typeof value !== "object") {
23
+ return undefined;
24
+ }
25
+ if (value instanceof Date ||
26
+ value instanceof URL ||
27
+ value instanceof ArrayBuffer ||
28
+ value instanceof DataView ||
29
+ ArrayBuffer.isView(value)) {
30
+ return undefined;
31
+ }
32
+ if (active.has(value)) {
33
+ return undefined;
34
+ }
35
+ active.add(value);
36
+ try {
37
+ if (Array.isArray(value)) {
38
+ for (let index = 0; index < value.length; index++) {
39
+ const entryPath = `${path}[${index}]`;
40
+ const found = collectionExecutableValuePath(readCollectionValue(entryPath, () => value[index]), entryPath, active);
41
+ if (found !== undefined) {
42
+ return found;
43
+ }
44
+ }
45
+ return undefined;
46
+ }
47
+ if (value instanceof Map) {
48
+ let index = 0;
49
+ for (const [key, entry] of readCollectionValue(path, () => Array.from(value.entries()))) {
50
+ const keyPath = collectionExecutableValuePath(key, `${path}.<key:${index}>`, active);
51
+ if (keyPath !== undefined) {
52
+ return keyPath;
53
+ }
54
+ const valuePath = collectionExecutableValuePath(entry, `${path}.<value:${index}>`, active);
55
+ if (valuePath !== undefined) {
56
+ return valuePath;
57
+ }
58
+ index++;
59
+ }
60
+ return undefined;
61
+ }
62
+ if (value instanceof Set) {
63
+ let index = 0;
64
+ for (const entry of readCollectionValue(path, () => Array.from(value.values()))) {
65
+ const found = collectionExecutableValuePath(entry, `${path}.<value:${index}>`, active);
66
+ if (found !== undefined) {
67
+ return found;
68
+ }
69
+ index++;
70
+ }
71
+ return undefined;
72
+ }
73
+ for (const [key, entry] of readCollectionValue(path, () => Object.entries(value))) {
74
+ const found = collectionExecutableValuePath(entry, `${path}${collectionValuePathSegment(key)}`, active);
75
+ if (found !== undefined) {
76
+ return found;
77
+ }
78
+ }
79
+ return undefined;
80
+ }
81
+ finally {
82
+ active.delete(value);
83
+ }
84
+ };
85
+ export const cloneCollectionValue = (value, seen = new WeakMap(), path = "$") => {
86
+ if (typeof value !== "object" || value === null) {
87
+ return value;
88
+ }
89
+ if (value instanceof Date) {
90
+ return new Date(value.getTime());
91
+ }
92
+ if (value instanceof ArrayBuffer) {
93
+ return value.slice(0);
94
+ }
95
+ const existing = seen.get(value);
96
+ if (existing) {
97
+ return existing;
98
+ }
99
+ if (Array.isArray(value)) {
100
+ const output = [];
101
+ seen.set(value, output);
102
+ for (let index = 0; index < value.length; index++) {
103
+ const entryPath = `${path}[${index}]`;
104
+ output.push(cloneCollectionValue(readCollectionValue(entryPath, () => value[index]), seen, entryPath));
105
+ }
106
+ return output;
107
+ }
108
+ if (value instanceof Map) {
109
+ const output = new Map();
110
+ seen.set(value, output);
111
+ let index = 0;
112
+ for (const [key, entry] of readCollectionValue(path, () => Array.from(value))) {
113
+ output.set(cloneCollectionValue(key, seen, `${path}.<key:${index}>`), cloneCollectionValue(entry, seen, `${path}.<value:${index}>`));
114
+ index++;
115
+ }
116
+ return output;
117
+ }
118
+ if (value instanceof Set) {
119
+ const output = new Set();
120
+ seen.set(value, output);
121
+ let index = 0;
122
+ for (const entry of readCollectionValue(path, () => Array.from(value))) {
123
+ output.add(cloneCollectionValue(entry, seen, `${path}.<value:${index}>`));
124
+ index++;
125
+ }
126
+ return output;
127
+ }
128
+ if (value instanceof DataView) {
129
+ const bytes = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
130
+ return new DataView(new Uint8Array(bytes).buffer);
131
+ }
132
+ if (ArrayBuffer.isView(value)) {
133
+ const view = value;
134
+ const bytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
135
+ const copiedBytes = new Uint8Array(bytes);
136
+ const buffer = copiedBytes.buffer.slice(copiedBytes.byteOffset, copiedBytes.byteOffset + copiedBytes.byteLength);
137
+ const constructor = value.constructor;
138
+ return new constructor(buffer);
139
+ }
140
+ const prototype = readCollectionValue(path, () => Object.getPrototypeOf(value));
141
+ const output = {};
142
+ seen.set(value, output);
143
+ for (const [key, entry] of readCollectionValue(path, () => Object.entries(value))) {
144
+ output[key] = cloneCollectionValue(entry, seen, `${path}${collectionValuePathSegment(key)}`);
145
+ }
146
+ if (prototype !== Object.prototype && prototype !== null) {
147
+ return Object.assign(Object.create(prototype), output);
148
+ }
149
+ return output;
150
+ };
151
+ export const freezeCollectionValue = (value, seen = new WeakSet()) => {
152
+ if (typeof value !== "object" || value === null) {
153
+ return value;
154
+ }
155
+ if (seen.has(value)) {
156
+ return value;
157
+ }
158
+ seen.add(value);
159
+ if (value instanceof Date || value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
160
+ return value;
161
+ }
162
+ if (value instanceof Map) {
163
+ for (const [key, entry] of value) {
164
+ freezeCollectionValue(key, seen);
165
+ freezeCollectionValue(entry, seen);
166
+ }
167
+ return Object.freeze(value);
168
+ }
169
+ if (value instanceof Set) {
170
+ for (const entry of value) {
171
+ freezeCollectionValue(entry, seen);
172
+ }
173
+ return Object.freeze(value);
174
+ }
175
+ for (const entry of Object.values(value)) {
176
+ freezeCollectionValue(entry, seen);
177
+ }
178
+ return Object.freeze(value);
179
+ };
180
+ export const cloneFrozenCollectionValue = (value) => freezeCollectionValue(cloneCollectionValue(value));
181
+ export const cloneCollectionMutation = (mutation) => {
182
+ switch (mutation._tag) {
183
+ case "Insert":
184
+ return mutation.previous === undefined
185
+ ? {
186
+ _tag: "Insert",
187
+ key: mutation.key,
188
+ value: cloneCollectionValue(mutation.value),
189
+ }
190
+ : {
191
+ _tag: "Insert",
192
+ key: mutation.key,
193
+ value: cloneCollectionValue(mutation.value),
194
+ previous: cloneCollectionValue(mutation.previous),
195
+ };
196
+ case "Update":
197
+ return {
198
+ _tag: "Update",
199
+ key: mutation.key,
200
+ previous: cloneCollectionValue(mutation.previous),
201
+ value: cloneCollectionValue(mutation.value),
202
+ changes: cloneCollectionValue(mutation.changes),
203
+ };
204
+ case "Delete":
205
+ return {
206
+ _tag: "Delete",
207
+ key: mutation.key,
208
+ previous: cloneCollectionValue(mutation.previous),
209
+ };
210
+ }
211
+ };
212
+ export const cloneCollectionTransaction = (transaction) => ({
213
+ id: transaction.id,
214
+ collection: transaction.collection,
215
+ mutations: transaction.mutations.map(cloneCollectionMutation),
216
+ });
217
+ export const cloneFrozenCollectionTransaction = (transaction) => cloneFrozenCollectionValue(cloneCollectionTransaction(transaction));
218
+ export const detachCollectionRow = (options) => Object.assign(cloneCollectionValue(options.value), {
219
+ $key: options.key,
220
+ $collection: options.collection,
221
+ $synced: options.synced,
222
+ $origin: options.origin,
223
+ });
224
+ export const collectionValueChanges = (previous, value) => {
225
+ const changes = {};
226
+ for (const key of Object.keys(value)) {
227
+ if (!Object.is(previous[key], value[key])) {
228
+ changes[key] = value[key];
229
+ }
230
+ }
231
+ return changes;
232
+ };
233
+ export const applyCollectionUpdate = (previous, update) => {
234
+ if (typeof update === "function") {
235
+ const draft = cloneCollectionValue(previous);
236
+ const result = update(draft);
237
+ const value = cloneCollectionValue(result === undefined ? draft : result);
238
+ return {
239
+ value,
240
+ changes: collectionValueChanges(previous, value),
241
+ };
242
+ }
243
+ return {
244
+ value: cloneCollectionValue({ ...previous, ...update }),
245
+ changes: cloneCollectionValue(update),
246
+ };
247
+ };
248
+ //# sourceMappingURL=collection-value-detachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-value-detachment.js","sourceRoot":"","sources":["../src/collection-value-detachment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Effect } from "effect";
2
+ import type { CollectionKey, CollectionRuntimeError, CollectionStoreEvent } from "./collection-contract.js";
3
+ import { type CollectionState, type OptimisticRowStack, type PendingMutationEntry, type StoredRow } from "./collection-state.js";
4
+ export interface CollectionStateSnapshot<A extends object, K extends CollectionKey> {
5
+ readonly rows: ReadonlyMap<K, StoredRow<A, K>>;
6
+ readonly pendingMutations: ReadonlyMap<string, PendingMutationEntry<A, K>>;
7
+ readonly optimisticRows: ReadonlyMap<K, OptimisticRowStack<A, K>>;
8
+ readonly version: number;
9
+ }
10
+ export declare const snapshotCollectionState: <A extends object, K extends CollectionKey>(state: CollectionState<A, K, any>) => CollectionStateSnapshot<A, K>;
11
+ export declare const restoreCollectionStateSnapshot: <A extends object, K extends CollectionKey>(state: CollectionState<A, K, any>, snapshot: CollectionStateSnapshot<A, K>) => void;
12
+ interface CollectionWriteCommitOptions<A extends object, K extends CollectionKey, E, R> {
13
+ readonly collection: string;
14
+ readonly state: CollectionState<A, K, E>;
15
+ readonly mutations: number;
16
+ readonly apply: () => void;
17
+ readonly persistEffect: Effect.Effect<void, CollectionRuntimeError<E>, R>;
18
+ readonly publishEffect: (event: CollectionStoreEvent) => Effect.Effect<void>;
19
+ }
20
+ export declare const withCollectionDurableCommitPermit: <A, E, R>(state: CollectionState<any, any, any>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
21
+ /**
22
+ * Atomically apply a direct collection write around persistence and event
23
+ * publication.
24
+ *
25
+ * Callers own validation and row ingress. This Module owns the shared commit
26
+ * sequence: capture state, apply row changes, persist the resulting snapshot,
27
+ * restore on persistence failure, and publish one `CollectionWritten` fact on
28
+ * success.
29
+ */
30
+ export declare const commitCollectionWriteEffect: <A extends object, K extends CollectionKey, E, R>(options: CollectionWriteCommitOptions<A, K, E, R>) => Effect.Effect<void, CollectionRuntimeError<E>, R>;
31
+ export {};
32
+ //# sourceMappingURL=collection-write-commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-write-commit.d.ts","sourceRoot":"","sources":["../src/collection-write-commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa;IAChF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,SACxE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAChC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAY7B,CAAC;AAEH,eAAO,MAAM,8BAA8B,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,SAC/E,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,YACvB,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,KACtC,IAIF,CAAC;AAEF,UAAU,4BAA4B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC;IACpF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC9E;AAeD,eAAO,MAAM,iCAAiC,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAChD,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,UAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAgE,CAAC;AAEzF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,WAChF,4BAA4B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAChD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAmBhD,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { Effect, Exit, Semaphore } from "effect";
2
+ import { cloneOptimisticRowStack, clonePendingMutationEntry, cloneStoredRow, restoreOptimisticState, } from "./collection-state.js";
3
+ export const snapshotCollectionState = (state) => ({
4
+ rows: new Map(Array.from(state.rows, ([key, row]) => [key, cloneStoredRow(row)])),
5
+ pendingMutations: new Map(Array.from(state.pendingMutations, ([id, entry]) => [
6
+ id,
7
+ clonePendingMutationEntry(entry, { preserveActiveAttempt: true }),
8
+ ])),
9
+ optimisticRows: new Map(Array.from(state.optimisticRows, ([key, stack]) => [key, cloneOptimisticRowStack(stack)])),
10
+ version: state.version.get(),
11
+ });
12
+ export const restoreCollectionStateSnapshot = (state, snapshot) => {
13
+ restoreOptimisticState(state, snapshot.rows, snapshot.pendingMutations, snapshot.optimisticRows);
14
+ state.indexCache.clear();
15
+ state.version.set(snapshot.version);
16
+ };
17
+ const durableCommitSemaphores = new WeakMap();
18
+ const durableCommitSemaphore = (state) => {
19
+ const existing = durableCommitSemaphores.get(state);
20
+ if (existing) {
21
+ return existing;
22
+ }
23
+ const semaphore = Semaphore.makeUnsafe(1);
24
+ durableCommitSemaphores.set(state, semaphore);
25
+ return semaphore;
26
+ };
27
+ export const withCollectionDurableCommitPermit = (state, effect) => Semaphore.withPermit(durableCommitSemaphore(state), effect);
28
+ /**
29
+ * Atomically apply a direct collection write around persistence and event
30
+ * publication.
31
+ *
32
+ * Callers own validation and row ingress. This Module owns the shared commit
33
+ * sequence: capture state, apply row changes, persist the resulting snapshot,
34
+ * restore on persistence failure, and publish one `CollectionWritten` fact on
35
+ * success.
36
+ */
37
+ export const commitCollectionWriteEffect = (options) => withCollectionDurableCommitPermit(options.state, Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
38
+ const previousState = snapshotCollectionState(options.state);
39
+ options.apply();
40
+ const persistExit = yield* restore(options.persistEffect).pipe(Effect.exit);
41
+ if (Exit.isFailure(persistExit)) {
42
+ restoreCollectionStateSnapshot(options.state, previousState);
43
+ return yield* Effect.failCause(persistExit.cause);
44
+ }
45
+ yield* options.publishEffect({
46
+ _tag: "CollectionWritten",
47
+ collection: options.collection,
48
+ mutations: options.mutations,
49
+ });
50
+ })));
51
+ //# sourceMappingURL=collection-write-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-write-commit.js","sourceRoot":"","sources":["../src/collection-write-commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { type EffectInput, type EffectInputCallbackError } from "@sunfall/arc-core";
2
+ import { Effect } from "effect";
3
+ import type { AnyCollection, CollectionError, CollectionRuntimeError, CollectionRequirements, CollectionTransaction } from "./collection-contract.js";
4
+ type IterableCollection<Collections> = Collections extends Iterable<infer Collection> ? Extract<Collection, AnyCollection> : never;
5
+ /**
6
+ * Per-collection context passed to a flush skip predicate.
7
+ */
8
+ export interface FlushCollectionPendingMutationsContext {
9
+ readonly collection: AnyCollection;
10
+ readonly index: number;
11
+ }
12
+ /**
13
+ * Static or per-collection predicate that skips flushing.
14
+ *
15
+ * The predicate is Effect-aware; its error and requirement channels are unioned
16
+ * into the flush result Effect.
17
+ */
18
+ export type FlushCollectionPendingMutationsSkip<SkipError = never, SkipRequirements = never> = EffectInput<boolean, SkipError, SkipRequirements> | ((context: FlushCollectionPendingMutationsContext) => EffectInput<boolean, SkipError, SkipRequirements>);
19
+ /**
20
+ * Options for flushing pending mutations across collections.
21
+ */
22
+ export interface FlushCollectionsPendingMutationsOptions<SkipError = never, SkipRequirements = never> {
23
+ readonly skip?: FlushCollectionPendingMutationsSkip<SkipError, SkipRequirements>;
24
+ }
25
+ type AnyCollectionTransaction = CollectionTransaction<any, any>;
26
+ /** Result entry for a collection whose queued mutations were flushed. */
27
+ export interface FlushCollectionPendingMutationsFlushedResult {
28
+ readonly _tag: "Flushed";
29
+ readonly collection: string;
30
+ readonly transactions: ReadonlyArray<AnyCollectionTransaction>;
31
+ }
32
+ /** Result entry for a collection skipped by the flush policy. */
33
+ export interface FlushCollectionPendingMutationsSkippedResult {
34
+ readonly _tag: "Skipped";
35
+ readonly collection: string;
36
+ readonly transactions: ReadonlyArray<never>;
37
+ }
38
+ /**
39
+ * Result for one collection in a multi-collection flush.
40
+ */
41
+ export type FlushCollectionPendingMutationsResult = FlushCollectionPendingMutationsFlushedResult | FlushCollectionPendingMutationsSkippedResult;
42
+ /** Error channel for flushing pending mutations across a collection iterable. */
43
+ export type FlushCollectionsPendingMutationsError<Collections extends Iterable<AnyCollection>, SkipError = never> = CollectionRuntimeError<CollectionError<IterableCollection<Collections>>> | SkipError | EffectInputCallbackError;
44
+ /** Requirement channel for flushing pending mutations across a collection iterable. */
45
+ export type FlushCollectionsPendingMutationsRequirements<Collections extends Iterable<AnyCollection>, SkipRequirements = never> = CollectionRequirements<IterableCollection<Collections>> | SkipRequirements;
46
+ /**
47
+ * Reason a background sync decision is being evaluated.
48
+ */
49
+ export type CollectionBackgroundSyncTrigger = "manual" | "online" | "visibility" | "mutation" | "restore" | (string & {});
50
+ /**
51
+ * Pending mutation summary used for background sync decisions.
52
+ */
53
+ export interface CollectionBackgroundSyncPending {
54
+ readonly collection: string;
55
+ readonly transactions: ReadonlyArray<AnyCollectionTransaction>;
56
+ }
57
+ /**
58
+ * Context passed to a background sync adapter.
59
+ */
60
+ export interface CollectionBackgroundSyncAdapterContext {
61
+ readonly trigger: CollectionBackgroundSyncTrigger;
62
+ readonly collections: ReadonlyArray<string>;
63
+ readonly pending: ReadonlyArray<CollectionBackgroundSyncPending>;
64
+ }
65
+ /**
66
+ * Policy adapter that decides whether pending mutations should flush now.
67
+ *
68
+ * Use this to gate sync on connectivity, visibility, metering, auth state, or a
69
+ * custom scheduler. Adapter errors and requirements are preserved in Effect.
70
+ */
71
+ export interface CollectionBackgroundSyncAdapter<AdapterError = never, AdapterRequirements = never> {
72
+ readonly name: string;
73
+ readonly shouldFlush: (context: CollectionBackgroundSyncAdapterContext) => EffectInput<boolean, AdapterError, AdapterRequirements>;
74
+ }
75
+ /**
76
+ * Options for background sync pending mutation flushing.
77
+ */
78
+ export interface CollectionBackgroundSyncOptions<AdapterError = never, AdapterRequirements = never, SkipError = never, SkipRequirements = never> extends FlushCollectionsPendingMutationsOptions<SkipError, SkipRequirements> {
79
+ readonly adapter?: CollectionBackgroundSyncAdapter<AdapterError, AdapterRequirements>;
80
+ readonly trigger?: CollectionBackgroundSyncTrigger;
81
+ readonly flushEmpty?: boolean;
82
+ }
83
+ /** Background sync decision when there are no pending mutations to flush. */
84
+ export interface CollectionBackgroundSyncIdleResult {
85
+ readonly _tag: "Idle";
86
+ readonly trigger: CollectionBackgroundSyncTrigger;
87
+ readonly pending: ReadonlyArray<CollectionBackgroundSyncPending>;
88
+ readonly results: ReadonlyArray<never>;
89
+ }
90
+ /** Background sync decision when an adapter chose not to flush yet. */
91
+ export interface CollectionBackgroundSyncDeferredResult {
92
+ readonly _tag: "Deferred";
93
+ readonly trigger: CollectionBackgroundSyncTrigger;
94
+ readonly adapter: string;
95
+ readonly pending: ReadonlyArray<CollectionBackgroundSyncPending>;
96
+ readonly results: ReadonlyArray<never>;
97
+ }
98
+ /** Background sync decision after pending mutations were flushed. */
99
+ export interface CollectionBackgroundSyncFlushedResult {
100
+ readonly _tag: "Flushed";
101
+ readonly trigger: CollectionBackgroundSyncTrigger;
102
+ readonly adapter?: string;
103
+ readonly pending: ReadonlyArray<CollectionBackgroundSyncPending>;
104
+ readonly results: ReadonlyArray<FlushCollectionPendingMutationsResult>;
105
+ }
106
+ /** Union result for background sync pending-mutation evaluation. */
107
+ export type CollectionBackgroundSyncResult = CollectionBackgroundSyncIdleResult | CollectionBackgroundSyncDeferredResult | CollectionBackgroundSyncFlushedResult;
108
+ /** Error channel for background sync pending-mutation evaluation. */
109
+ export type CollectionBackgroundSyncError<Collections extends Iterable<AnyCollection>, AdapterError = never, SkipError = never> = FlushCollectionsPendingMutationsError<Collections, SkipError> | AdapterError | EffectInputCallbackError;
110
+ /** Requirement channel for background sync pending-mutation evaluation. */
111
+ export type CollectionBackgroundSyncRequirements<Collections extends Iterable<AnyCollection>, AdapterRequirements = never, SkipRequirements = never> = FlushCollectionsPendingMutationsRequirements<Collections, SkipRequirements> | AdapterRequirements;
112
+ /**
113
+ * Flush queued optimistic mutations for each collection in order.
114
+ *
115
+ * Collection handler errors, requirements, and optional skip predicate channels
116
+ * are reflected in the returned Effect.
117
+ *
118
+ * @example
119
+ * yield* flushCollectionsPendingMutationsEffect([todos, projects])
120
+ */
121
+ export declare const flushCollectionsPendingMutationsEffect: <const Collections extends Iterable<AnyCollection>, SkipError = never, SkipRequirements = never>(collections: Collections, options?: FlushCollectionsPendingMutationsOptions<SkipError, SkipRequirements>) => Effect.Effect<ReadonlyArray<FlushCollectionPendingMutationsResult>, FlushCollectionsPendingMutationsError<Collections, SkipError>, FlushCollectionsPendingMutationsRequirements<Collections, SkipRequirements>>;
122
+ /**
123
+ * Decide whether to flush pending mutations for a background sync trigger.
124
+ *
125
+ * Returns `Idle` when nothing is pending, `Deferred` when the adapter declines
126
+ * the flush, or `Flushed` with per-collection results.
127
+ */
128
+ export declare const backgroundSyncCollectionsPendingMutationsEffect: <const Collections extends Iterable<AnyCollection>, AdapterError = never, AdapterRequirements = never, SkipError = never, SkipRequirements = never>(collections: Collections, options?: CollectionBackgroundSyncOptions<AdapterError, AdapterRequirements, SkipError, SkipRequirements>) => Effect.Effect<CollectionBackgroundSyncResult, CollectionBackgroundSyncError<Collections, AdapterError, SkipError>, CollectionBackgroundSyncRequirements<Collections, AdapterRequirements, SkipRequirements>>;
129
+ export {};
130
+ //# sourceMappingURL=flush-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flush-policy.d.ts","sourceRoot":"","sources":["../src/flush-policy.ts"],"names":[],"mappings":"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"}