@noy-db/hub 0.2.0-pre.26 → 0.2.0-pre.27

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 (147) hide show
  1. package/dist/attestation/index.cjs.map +1 -1
  2. package/dist/attestation/index.d.cts +1 -1
  3. package/dist/attestation/index.d.ts +1 -1
  4. package/dist/attestation/index.js +4 -4
  5. package/dist/blobs/index.cjs.map +1 -1
  6. package/dist/blobs/index.d.cts +3 -3
  7. package/dist/blobs/index.d.ts +3 -3
  8. package/dist/blobs/index.js +4 -4
  9. package/dist/bundle/index.cjs +320 -144
  10. package/dist/bundle/index.cjs.map +1 -1
  11. package/dist/bundle/index.d.cts +3 -3
  12. package/dist/bundle/index.d.ts +3 -3
  13. package/dist/bundle/index.js +8 -8
  14. package/dist/{chunk-HUXDQIVU.js → chunk-2NYVA6FW.js} +2 -2
  15. package/dist/{chunk-OCRDV3NU.js → chunk-5EITJMUJ.js} +3 -3
  16. package/dist/{chunk-EYZJULEN.js → chunk-6H4CAHMQ.js} +2 -2
  17. package/dist/{chunk-VGAN5RLD.js → chunk-6M5JKTUQ.js} +2 -2
  18. package/dist/{chunk-N4EXCKWP.js → chunk-6ZKXFMUG.js} +2 -2
  19. package/dist/{chunk-KJ37E3R5.js → chunk-7DDTFGXY.js} +2 -2
  20. package/dist/{chunk-LR7CODVN.js → chunk-AD6RNBAW.js} +1 -1
  21. package/dist/chunk-AD6RNBAW.js.map +1 -0
  22. package/dist/{chunk-TSUICI5N.js → chunk-BMDVFBCL.js} +2 -2
  23. package/dist/{chunk-FCIZXX56.js → chunk-BOMH3637.js} +2 -2
  24. package/dist/{chunk-RZOGD7IF.js → chunk-CVTPNW2Y.js} +6 -6
  25. package/dist/{chunk-GPZHHTJU.js → chunk-DONPLWRC.js} +2 -2
  26. package/dist/{chunk-GHXOVGTX.js → chunk-HAKEZTA7.js} +3 -3
  27. package/dist/{chunk-QYQRAOEF.js → chunk-I2RX62RX.js} +2 -2
  28. package/dist/{chunk-2RHBFCWQ.js → chunk-IWGVH2RR.js} +3 -3
  29. package/dist/{chunk-Y5CTT6K5.js → chunk-K6PCTYAH.js} +2 -2
  30. package/dist/{chunk-ANLOD6IS.js → chunk-KA5A5CSD.js} +3 -3
  31. package/dist/{chunk-56ENKU46.js → chunk-KSKKLVPA.js} +97 -144
  32. package/dist/chunk-KSKKLVPA.js.map +1 -0
  33. package/dist/{chunk-UNBX2HMA.js → chunk-LXA2E3VI.js} +2 -2
  34. package/dist/{chunk-JJKXJAH2.js → chunk-PFKAT4NT.js} +3 -3
  35. package/dist/{chunk-ZCBJIDT4.js → chunk-RRCRITDM.js} +2 -2
  36. package/dist/{chunk-YP2AYE5W.js → chunk-SID2NJNF.js} +2 -2
  37. package/dist/chunk-Z3BJF7SF.js +220 -0
  38. package/dist/chunk-Z3BJF7SF.js.map +1 -0
  39. package/dist/consent/index.d.cts +2 -2
  40. package/dist/consent/index.d.ts +2 -2
  41. package/dist/{decrypt-partition-CyyJUWLR.d.ts → decrypt-partition-CptDdcCx.d.ts} +1 -1
  42. package/dist/{decrypt-partition-C71vhnND.d.cts → decrypt-partition-DmkeOB4I.d.cts} +1 -1
  43. package/dist/derivations/index.d.cts +3 -3
  44. package/dist/derivations/index.d.ts +3 -3
  45. package/dist/{dev-unlock-BdrE0kbS.d.cts → dev-unlock-DUTLA3Sc.d.cts} +1 -1
  46. package/dist/{dev-unlock-ByBkl99-.d.ts → dev-unlock-Y9znMkQ2.d.ts} +1 -1
  47. package/dist/{fanout-sidecar-ZQT4Y7PF.js → fanout-sidecar-OC4QVTS2.js} +2 -2
  48. package/dist/forget/index.js +2 -2
  49. package/dist/guards/index.d.cts +3 -3
  50. package/dist/guards/index.d.ts +3 -3
  51. package/dist/{hash-CZxVv8RH.d.ts → hash-Btl9IvQS.d.ts} +1 -1
  52. package/dist/{hash-BUkDp_8Q.d.cts → hash-DFK7cGdo.d.cts} +1 -1
  53. package/dist/history/index.cjs.map +1 -1
  54. package/dist/history/index.d.cts +3 -3
  55. package/dist/history/index.d.ts +3 -3
  56. package/dist/history/index.js +3 -3
  57. package/dist/i18n/index.cjs.map +1 -1
  58. package/dist/i18n/index.d.cts +2 -2
  59. package/dist/i18n/index.d.ts +2 -2
  60. package/dist/i18n/index.js +3 -3
  61. package/dist/{index-CBUhOmrM.d.cts → index-CqzZml-D.d.cts} +1 -1
  62. package/dist/{index-DFhKV-6A.d.ts → index-wRwJVVJQ.d.ts} +1 -1
  63. package/dist/index.cjs +316 -140
  64. package/dist/index.cjs.map +1 -1
  65. package/dist/index.d.cts +11 -11
  66. package/dist/index.d.ts +11 -11
  67. package/dist/index.js +19 -18
  68. package/dist/index.js.map +1 -1
  69. package/dist/{issue-LEBPVF3Y.js → issue-ZZ2XPOGP.js} +4 -4
  70. package/dist/kernel/index.cjs +61 -0
  71. package/dist/kernel/index.cjs.map +1 -1
  72. package/dist/kernel/index.d.cts +2 -2
  73. package/dist/kernel/index.d.ts +2 -2
  74. package/dist/kernel/index.js +7 -0
  75. package/dist/{ledger-FLRTSOYH.js → ledger-XQ4KVFQ6.js} +3 -3
  76. package/dist/materialized-views/index.d.cts +3 -3
  77. package/dist/materialized-views/index.d.ts +3 -3
  78. package/dist/{mime-magic-BAhLjkHw.d.cts → mime-magic-Co4Pyj-O.d.cts} +1 -1
  79. package/dist/{mime-magic-C1UbcBxP.d.ts → mime-magic-OiPT1qed.d.ts} +1 -1
  80. package/dist/{noydb-6FA46A4M.js → noydb-EY52NVH4.js} +15 -14
  81. package/dist/overlay-views/index.d.cts +3 -3
  82. package/dist/overlay-views/index.d.ts +3 -3
  83. package/dist/periods/index.cjs.map +1 -1
  84. package/dist/periods/index.d.cts +2 -2
  85. package/dist/periods/index.d.ts +2 -2
  86. package/dist/periods/index.js +3 -3
  87. package/dist/{public-envelope-DBKJEBBF.js → public-envelope-O6X6AUUS.js} +3 -3
  88. package/dist/{revoke-P5D3UTRX.js → revoke-QJ2HUM4W.js} +4 -4
  89. package/dist/session/index.d.cts +3 -3
  90. package/dist/session/index.d.ts +3 -3
  91. package/dist/shadow/index.d.cts +2 -2
  92. package/dist/shadow/index.d.ts +2 -2
  93. package/dist/{signer-NEQPCHMW.js → signer-SCJ6C6HQ.js} +3 -3
  94. package/dist/snapshots/index.d.cts +2 -2
  95. package/dist/snapshots/index.d.ts +2 -2
  96. package/dist/snapshots/index.js +3 -3
  97. package/dist/store/index.d.cts +2 -2
  98. package/dist/store/index.d.ts +2 -2
  99. package/dist/sync/index.cjs.map +1 -1
  100. package/dist/sync/index.d.cts +1 -1
  101. package/dist/sync/index.d.ts +1 -1
  102. package/dist/sync/index.js +2 -2
  103. package/dist/team/index.cjs.map +1 -1
  104. package/dist/team/index.d.cts +2 -2
  105. package/dist/team/index.d.ts +2 -2
  106. package/dist/team/index.js +5 -5
  107. package/dist/{transition-guard-BSLdikC_.d.ts → transition-guard-CJmb8O8q.d.ts} +1 -1
  108. package/dist/{transition-guard-DPs6al8h.d.cts → transition-guard-Dzj68JWC.d.cts} +1 -1
  109. package/dist/tx/index.d.cts +2 -2
  110. package/dist/tx/index.d.ts +2 -2
  111. package/dist/{types-CCq0WHh9.d.ts → types-CkSWJt0H.d.ts} +137 -7
  112. package/dist/{types-BCYvhKzr.d.cts → types-CwrTuYFI.d.cts} +137 -7
  113. package/dist/{with-materialized-view-DiD41wQp.d.ts → with-materialized-view-BVfcPlaE.d.ts} +1 -1
  114. package/dist/{with-materialized-view-CTHe6uh9.d.cts → with-materialized-view-dPG213gd.d.cts} +1 -1
  115. package/dist/{with-overlayed-view-Dlz5hcM8.d.cts → with-overlayed-view-CJ2UDBol.d.cts} +1 -1
  116. package/dist/{with-overlayed-view-DlbsJMhF.d.ts → with-overlayed-view-zYPQzGGh.d.ts} +1 -1
  117. package/dist/{with-rollup-BBWdrCvu.d.cts → with-rollup-B_zbRi3f.d.cts} +1 -1
  118. package/dist/{with-rollup-mT4_CWaU.d.ts → with-rollup-BvaJefEs.d.ts} +1 -1
  119. package/package.json +3 -3
  120. package/dist/chunk-56ENKU46.js.map +0 -1
  121. package/dist/chunk-LR7CODVN.js.map +0 -1
  122. /package/dist/{chunk-HUXDQIVU.js.map → chunk-2NYVA6FW.js.map} +0 -0
  123. /package/dist/{chunk-OCRDV3NU.js.map → chunk-5EITJMUJ.js.map} +0 -0
  124. /package/dist/{chunk-EYZJULEN.js.map → chunk-6H4CAHMQ.js.map} +0 -0
  125. /package/dist/{chunk-VGAN5RLD.js.map → chunk-6M5JKTUQ.js.map} +0 -0
  126. /package/dist/{chunk-N4EXCKWP.js.map → chunk-6ZKXFMUG.js.map} +0 -0
  127. /package/dist/{chunk-KJ37E3R5.js.map → chunk-7DDTFGXY.js.map} +0 -0
  128. /package/dist/{chunk-TSUICI5N.js.map → chunk-BMDVFBCL.js.map} +0 -0
  129. /package/dist/{chunk-FCIZXX56.js.map → chunk-BOMH3637.js.map} +0 -0
  130. /package/dist/{chunk-RZOGD7IF.js.map → chunk-CVTPNW2Y.js.map} +0 -0
  131. /package/dist/{chunk-GPZHHTJU.js.map → chunk-DONPLWRC.js.map} +0 -0
  132. /package/dist/{chunk-GHXOVGTX.js.map → chunk-HAKEZTA7.js.map} +0 -0
  133. /package/dist/{chunk-QYQRAOEF.js.map → chunk-I2RX62RX.js.map} +0 -0
  134. /package/dist/{chunk-2RHBFCWQ.js.map → chunk-IWGVH2RR.js.map} +0 -0
  135. /package/dist/{chunk-Y5CTT6K5.js.map → chunk-K6PCTYAH.js.map} +0 -0
  136. /package/dist/{chunk-ANLOD6IS.js.map → chunk-KA5A5CSD.js.map} +0 -0
  137. /package/dist/{chunk-UNBX2HMA.js.map → chunk-LXA2E3VI.js.map} +0 -0
  138. /package/dist/{chunk-JJKXJAH2.js.map → chunk-PFKAT4NT.js.map} +0 -0
  139. /package/dist/{chunk-ZCBJIDT4.js.map → chunk-RRCRITDM.js.map} +0 -0
  140. /package/dist/{chunk-YP2AYE5W.js.map → chunk-SID2NJNF.js.map} +0 -0
  141. /package/dist/{fanout-sidecar-ZQT4Y7PF.js.map → fanout-sidecar-OC4QVTS2.js.map} +0 -0
  142. /package/dist/{issue-LEBPVF3Y.js.map → issue-ZZ2XPOGP.js.map} +0 -0
  143. /package/dist/{ledger-FLRTSOYH.js.map → ledger-XQ4KVFQ6.js.map} +0 -0
  144. /package/dist/{noydb-6FA46A4M.js.map → noydb-EY52NVH4.js.map} +0 -0
  145. /package/dist/{public-envelope-DBKJEBBF.js.map → public-envelope-O6X6AUUS.js.map} +0 -0
  146. /package/dist/{revoke-P5D3UTRX.js.map → revoke-QJ2HUM4W.js.map} +0 -0
  147. /package/dist/{signer-NEQPCHMW.js.map → signer-SCJ6C6HQ.js.map} +0 -0
@@ -30,8 +30,10 @@ __export(kernel_exports, {
30
30
  VaultTemplateNotFoundError: () => VaultTemplateNotFoundError,
31
31
  generateULID: () => generateULID,
32
32
  groupAndReduce: () => groupAndReduce,
33
+ isQuorum: () => isQuorum,
33
34
  readPath: () => readPath,
34
35
  reduceRecords: () => reduceRecords,
36
+ runDrainBarrier: () => runDrainBarrier,
35
37
  sha256Hex: () => sha256Hex
36
38
  });
37
39
  module.exports = __toCommonJS(kernel_exports);
@@ -222,6 +224,18 @@ var ValidationError = class extends NoydbError {
222
224
  this.name = "ValidationError";
223
225
  }
224
226
  };
227
+ var SchemaUpdateError = class extends NoydbError {
228
+ constructor(code, message) {
229
+ super(code, message);
230
+ this.name = "SchemaUpdateError";
231
+ }
232
+ };
233
+ var QuiesceTimeoutError = class extends SchemaUpdateError {
234
+ constructor(message) {
235
+ super("QUIESCE_TIMEOUT", message);
236
+ this.name = "QuiesceTimeoutError";
237
+ }
238
+ };
225
239
  var GroupCardinalityError = class extends NoydbError {
226
240
  /** The field being grouped on. */
227
241
  field;
@@ -638,6 +652,51 @@ async function sha256Hex(data) {
638
652
  const hash = await subtle.digest("SHA-256", data);
639
653
  return Array.from(new Uint8Array(hash)).map((b) => b.toString(16).padStart(2, "0")).join("");
640
654
  }
655
+
656
+ // src/coordination/types.ts
657
+ function isQuorum(writers, generation, excludeWriterId) {
658
+ return writers.filter((w) => w.writerId !== excludeWriterId).every((w) => w.quiescedAtVersion === generation);
659
+ }
660
+ async function runDrainBarrier(provider, o, run) {
661
+ await provider.setFence(o.vault, { currentSchemaVersion: o.generation, fenceState: "draining" });
662
+ await o.onFlush();
663
+ const deadline = o.now() + o.quiesceTimeoutMs;
664
+ const seeded = await provider.reachableWriters(o.vault, { staleMs: o.staleMs, now: o.now() });
665
+ if (!isQuorum(seeded, o.generation, o.writerId)) {
666
+ await new Promise((resolve, reject) => {
667
+ let settled = false;
668
+ const finish = (fn) => {
669
+ if (!settled) {
670
+ settled = true;
671
+ unsub();
672
+ fn();
673
+ }
674
+ };
675
+ const unsub = provider.observePresence(o.vault, (writers) => {
676
+ if (isQuorum(writers, o.generation, o.writerId)) finish(resolve);
677
+ });
678
+ const tick = async () => {
679
+ if (settled) return;
680
+ if (o.now() >= deadline) {
681
+ finish(
682
+ () => reject(
683
+ new QuiesceTimeoutError(
684
+ `Cutover of vault "${o.vault}" to generation ${o.generation} timed out after ${o.quiesceTimeoutMs}ms waiting for active writers to quiesce.`
685
+ )
686
+ )
687
+ );
688
+ return;
689
+ }
690
+ if (o.onPoll) await o.onPoll();
691
+ const w = await provider.reachableWriters(o.vault, { staleMs: o.staleMs, now: o.now() });
692
+ if (isQuorum(w, o.generation, o.writerId)) finish(resolve);
693
+ else setTimeout(() => void tick(), 25);
694
+ };
695
+ void tick();
696
+ });
697
+ }
698
+ await run();
699
+ }
641
700
  // Annotate the CommonJS export names for ESM import in node:
642
701
  0 && (module.exports = {
643
702
  CrossShardJoinError,
@@ -650,8 +709,10 @@ async function sha256Hex(data) {
650
709
  VaultTemplateNotFoundError,
651
710
  generateULID,
652
711
  groupAndReduce,
712
+ isQuorum,
653
713
  readPath,
654
714
  reduceRecords,
715
+ runDrainBarrier,
655
716
  sha256Hex
656
717
  });
657
718
  //# sourceMappingURL=index.cjs.map