@noy-db/hub 0.6.0-pre.15 → 0.6.0-pre.17
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.
- package/dist/{api-VRTBOCY7.js → api-AEIN3KAQ.js} +6 -6
- package/dist/attestation/index.js +12 -12
- package/dist/{backup-BXS6GNCA.js → backup-7X3PFTSI.js} +13 -15
- package/dist/backup-7X3PFTSI.js.map +1 -0
- package/dist/blobs/index.js +5 -5
- package/dist/broker/index.js +6 -6
- package/dist/cargo/index.js +20 -20
- package/dist/{chunk-4FNR5YZI.js → chunk-2RGQNFJB.js} +10 -10
- package/dist/chunk-2RGQNFJB.js.map +1 -0
- package/dist/{chunk-ESABIXMQ.js → chunk-3JQVA527.js} +2 -2
- package/dist/{chunk-SX7MAZ5U.js → chunk-4GR422R5.js} +3 -3
- package/dist/{chunk-SFY6NT7D.js → chunk-5UGEGEIJ.js} +1 -1
- package/dist/chunk-5UGEGEIJ.js.map +1 -0
- package/dist/{chunk-6UAVKAG6.js → chunk-5VVBZ6E4.js} +2 -2
- package/dist/{chunk-GWJNBTZA.js → chunk-67XA44HH.js} +2 -2
- package/dist/{chunk-FINIMZ55.js → chunk-6JRIYG2C.js} +3 -3
- package/dist/{chunk-A5BGC3GR.js → chunk-6VAM5THN.js} +21 -19
- package/dist/chunk-6VAM5THN.js.map +1 -0
- package/dist/{chunk-SZZEDEIU.js → chunk-7LLKPODL.js} +1 -1
- package/dist/chunk-7LLKPODL.js.map +1 -0
- package/dist/{chunk-AIR3LSJH.js → chunk-7TZTQS4H.js} +13 -19
- package/dist/chunk-7TZTQS4H.js.map +1 -0
- package/dist/{chunk-FBG62BUQ.js → chunk-AKFNLRA2.js} +8 -14
- package/dist/chunk-AKFNLRA2.js.map +1 -0
- package/dist/{chunk-6O3PVUYJ.js → chunk-APUP2J5M.js} +6 -6
- package/dist/{chunk-PWJSO7HH.js → chunk-BKYQNNO3.js} +67 -37
- package/dist/chunk-BKYQNNO3.js.map +1 -0
- package/dist/{chunk-JZVXGOJE.js → chunk-BMDF4TLU.js} +2 -2
- package/dist/{chunk-DU27P4LO.js → chunk-C3YP5KKS.js} +3 -3
- package/dist/{chunk-4VRZDYRE.js → chunk-C52CJDFO.js} +2 -2
- package/dist/{chunk-6R4QXE43.js → chunk-D6E5N2O3.js} +3 -3
- package/dist/{chunk-5CK7VSSK.js → chunk-DEP24EE3.js} +3 -3
- package/dist/chunk-DEP24EE3.js.map +1 -0
- package/dist/{chunk-QVDK5AR7.js → chunk-EEBMKMA7.js} +5 -5
- package/dist/{chunk-X24QHSG5.js → chunk-EMFFWSAD.js} +3 -3
- package/dist/{chunk-BPT4W6CI.js → chunk-ES36R3U2.js} +3 -3
- package/dist/{chunk-TEJILTMY.js → chunk-FHFMWYGM.js} +4 -4
- package/dist/{chunk-PJ5TGJ7U.js → chunk-FZ2SSI5R.js} +2 -2
- package/dist/{chunk-CJ4KXDD4.js → chunk-GWI65NDQ.js} +2 -2
- package/dist/{chunk-TWSFSH32.js → chunk-I7JF5TNL.js} +2 -2
- package/dist/{chunk-RQ5G2YER.js → chunk-IEA3TZJE.js} +4 -4
- package/dist/{chunk-RLK57SMS.js → chunk-IRHOQFA7.js} +2 -2
- package/dist/{chunk-55B3KHZW.js → chunk-JAHIL6WO.js} +2 -2
- package/dist/{chunk-KNAZGJFG.js → chunk-JHYISAID.js} +9 -9
- package/dist/{chunk-YZGKXIYY.js → chunk-JV2CNEX2.js} +73 -74
- package/dist/chunk-JV2CNEX2.js.map +1 -0
- package/dist/{chunk-ELA2THEC.js → chunk-LUFZPROB.js} +4 -4
- package/dist/{chunk-62KVBIBU.js → chunk-N4GAJSRQ.js} +2 -2
- package/dist/{chunk-I5OLA3H6.js → chunk-N7HOHWKF.js} +2 -2
- package/dist/{chunk-HAN2PHLM.js → chunk-NWPR2V5W.js} +2 -2
- package/dist/{chunk-U26JILS3.js → chunk-OAWVM5L6.js} +6 -6
- package/dist/{chunk-PE6R44GS.js → chunk-OXRPH6AR.js} +5 -5
- package/dist/chunk-OXRPH6AR.js.map +1 -0
- package/dist/{chunk-WVCOS4XA.js → chunk-P5ARVLNW.js} +3 -3
- package/dist/{chunk-LAVPHX2V.js → chunk-QC2HGYFX.js} +3 -3
- package/dist/{chunk-PNEV2TBR.js → chunk-QJBXB4WU.js} +3 -3
- package/dist/{chunk-6N5PZ6G5.js → chunk-QKRJUPAC.js} +5 -5
- package/dist/chunk-RGPB25DB.js +60 -0
- package/dist/chunk-RGPB25DB.js.map +1 -0
- package/dist/{chunk-T7XUDZ7N.js → chunk-SDEHNGWW.js} +3 -3
- package/dist/{chunk-UZ2J7OKF.js → chunk-SJOK23XT.js} +3 -3
- package/dist/{chunk-WMUN7ZUD.js → chunk-UKKBKEUI.js} +2 -2
- package/dist/{chunk-ELHNLDXB.js → chunk-UNR6G3EJ.js} +15 -17
- package/dist/chunk-UNR6G3EJ.js.map +1 -0
- package/dist/{chunk-KIZOCPHS.js → chunk-URVL4EKU.js} +3 -3
- package/dist/{chunk-5AV6FENP.js → chunk-V3OLO4TK.js} +3 -3
- package/dist/{chunk-WVS62P45.js → chunk-VEA35MQP.js} +4 -4
- package/dist/{chunk-MMXMJXAE.js → chunk-VQQUOEON.js} +4 -4
- package/dist/{chunk-5LKPMDBC.js → chunk-VUQZYVYX.js} +4 -4
- package/dist/{chunk-RERAMZK5.js → chunk-WBHQX6ME.js} +34 -16
- package/dist/chunk-WBHQX6ME.js.map +1 -0
- package/dist/{chunk-PF3E6ABL.js → chunk-X2FXEEQT.js} +5 -5
- package/dist/{chunk-7F4TMKXC.js → chunk-XTC5EKST.js} +2 -2
- package/dist/{chunk-LGGLPURL.js → chunk-Z2OFE6IX.js} +2 -2
- package/dist/classified/index.js +3 -3
- package/dist/{classified-marker-BCYBGITH.js → classified-marker-W2PUYC3K.js} +3 -3
- package/dist/{collection-facade-YCJHWX64.js → collection-facade-CRXN72DU.js} +10 -10
- package/dist/consent/index.js +4 -4
- package/dist/cover/index.js +2 -2
- package/dist/custody/index.js +6 -6
- package/dist/{dead-filter-5ROD2DCQ.js → dead-filter-MVFQCLXY.js} +2 -2
- package/dist/{delegation-IULC56LW.js → delegation-I7XXO5LL.js} +4 -4
- package/dist/derivations/index.js +3 -3
- package/dist/{derive-AP2NXZDC.js → derive-NL7X2EFT.js} +4 -4
- package/dist/directory/index.js +5 -5
- package/dist/{dispatch-Z6C35BGM.js → dispatch-K3MDLCXG.js} +5 -5
- package/dist/{dispatch-4KKOMKWJ.js → dispatch-PY5RUHJF.js} +10 -10
- package/dist/{enclave-KJID436X.js → enclave-77K7UDLS.js} +10 -4
- package/dist/{executor-GD32BQQK.js → executor-FNGVGDW3.js} +10 -10
- package/dist/{export-accessible-H4Y2RTTD.js → export-accessible-QWUYY2OY.js} +7 -7
- package/dist/{extract-partition-PIJZX4G4.js → extract-partition-CGCURVS4.js} +10 -10
- package/dist/{fanout-sidecar-6QGMG5MA.js → fanout-sidecar-JI3MUPQV.js} +4 -4
- package/dist/forget/index.js +4 -4
- package/dist/history/index.js +6 -6
- package/dist/i18n/index.js +8 -8
- package/dist/index.js +56 -58
- package/dist/index.js.map +1 -1
- package/dist/introspection/index.js +5 -5
- package/dist/{issue-Q6STVPV5.js → issue-7IPUNAFA.js} +6 -6
- package/dist/kernel/enclave/index.d.ts +3 -0
- package/dist/kernel/enclave/record-envelope.d.ts +29 -0
- package/dist/kernel/enclave/record-keys/rekey.d.ts +62 -0
- package/dist/kernel/enclave/record-keys/tombstone.d.ts +3 -2
- package/dist/kernel/types.d.ts +15 -0
- package/dist/{ledger-HLINHILR.js → ledger-3RDSSMGD.js} +6 -6
- package/dist/liberate-2DNJ7AJ7.js +24 -0
- package/dist/{link-set-S47JZWHV.js → link-set-VJIWWUZO.js} +5 -5
- package/dist/{managed-secret-IDAOXSSX.js → managed-secret-XGGJ3BC3.js} +3 -3
- package/dist/materialized-views/index.js +10 -10
- package/dist/{noydb-HT56GCTQ.js → noydb-CLQP36JR.js} +27 -27
- package/dist/periods/index.js +6 -6
- package/dist/pod/index.js +30 -30
- package/dist/{pod-handle-N6HQMAAV.js → pod-handle-7BVSWP5B.js} +15 -10
- package/dist/pod-handle-7BVSWP5B.js.map +1 -0
- package/dist/policy/index.js +3 -3
- package/dist/port/with/i18n-strategy.d.ts +4 -1
- package/dist/port/with/lookup-strategy.d.ts +4 -1
- package/dist/portability/index.js +6 -6
- package/dist/{post-register-KW557BUZ.js → post-register-W3T4U57K.js} +4 -4
- package/dist/reduce/index.js +2 -2
- package/dist/{register-OMH3WVVL.js → register-YUVC4G27.js} +10 -10
- package/dist/{registry-SAEOPHFF.js → registry-BPKJX562.js} +4 -4
- package/dist/{registry-ZE2OG4TN.js → registry-HRFRBFDV.js} +4 -4
- package/dist/{request-withdrawal-HTSROWCL.js → request-withdrawal-CXTQLMJK.js} +9 -9
- package/dist/{reveal-T4N65GUG.js → reveal-G7W7N3AZ.js} +3 -3
- package/dist/{revoke-NE4CU2T3.js → revoke-ZX3TZUI6.js} +6 -6
- package/dist/sealed-record/index.js +6 -6
- package/dist/search/index.js +2 -2
- package/dist/{seed-TC42KFUK.js → seed-2FUULTQV.js} +6 -6
- package/dist/sequence/index.js +4 -4
- package/dist/session/index.js +3 -3
- package/dist/{signer-W2LX2FPA.js → signer-FPUIX63Z.js} +5 -5
- package/dist/snapshots/index.js +5 -5
- package/dist/{stale-WSC6Z7SB.js → stale-42FPALK2.js} +5 -5
- package/dist/{storage-EWT5HIX5.js → storage-6QODT6K5.js} +5 -5
- package/dist/{store-coordination-provider-RGHCIRWV.js → store-coordination-provider-Y3VXBHPL.js} +3 -3
- package/dist/sync/index.js +4 -4
- package/dist/team/index.js +8 -8
- package/dist/tiers/index.js +4 -4
- package/dist/via/lookup/handle.d.ts +4 -1
- package/dist/{walk-OLQC4JFV.js → walk-5PGJI3ND.js} +6 -6
- package/dist/with-commit/numbering/index.d.ts +0 -5
- package/dist/with-party/team/keyring.d.ts +5 -0
- package/dist/with-pod/pod-handle.d.ts +10 -0
- package/dist/{withdraw-accessible-Y7OEPWXM.js → withdraw-accessible-PFCQQGNP.js} +8 -8
- package/package.json +3 -3
- package/dist/backup-BXS6GNCA.js.map +0 -1
- package/dist/chunk-4FNR5YZI.js.map +0 -1
- package/dist/chunk-5CK7VSSK.js.map +0 -1
- package/dist/chunk-A5BGC3GR.js.map +0 -1
- package/dist/chunk-AIR3LSJH.js.map +0 -1
- package/dist/chunk-ELHNLDXB.js.map +0 -1
- package/dist/chunk-FBG62BUQ.js.map +0 -1
- package/dist/chunk-P3AFV6EA.js +0 -45
- package/dist/chunk-P3AFV6EA.js.map +0 -1
- package/dist/chunk-PE6R44GS.js.map +0 -1
- package/dist/chunk-PWJSO7HH.js.map +0 -1
- package/dist/chunk-RERAMZK5.js.map +0 -1
- package/dist/chunk-SFY6NT7D.js.map +0 -1
- package/dist/chunk-SZZEDEIU.js.map +0 -1
- package/dist/chunk-YZGKXIYY.js.map +0 -1
- package/dist/liberate-C3XBBLYM.js +0 -24
- package/dist/pod-handle-N6HQMAAV.js.map +0 -1
- /package/dist/{api-VRTBOCY7.js.map → api-AEIN3KAQ.js.map} +0 -0
- /package/dist/{chunk-ESABIXMQ.js.map → chunk-3JQVA527.js.map} +0 -0
- /package/dist/{chunk-SX7MAZ5U.js.map → chunk-4GR422R5.js.map} +0 -0
- /package/dist/{chunk-6UAVKAG6.js.map → chunk-5VVBZ6E4.js.map} +0 -0
- /package/dist/{chunk-GWJNBTZA.js.map → chunk-67XA44HH.js.map} +0 -0
- /package/dist/{chunk-FINIMZ55.js.map → chunk-6JRIYG2C.js.map} +0 -0
- /package/dist/{chunk-6O3PVUYJ.js.map → chunk-APUP2J5M.js.map} +0 -0
- /package/dist/{chunk-JZVXGOJE.js.map → chunk-BMDF4TLU.js.map} +0 -0
- /package/dist/{chunk-DU27P4LO.js.map → chunk-C3YP5KKS.js.map} +0 -0
- /package/dist/{chunk-4VRZDYRE.js.map → chunk-C52CJDFO.js.map} +0 -0
- /package/dist/{chunk-6R4QXE43.js.map → chunk-D6E5N2O3.js.map} +0 -0
- /package/dist/{chunk-QVDK5AR7.js.map → chunk-EEBMKMA7.js.map} +0 -0
- /package/dist/{chunk-X24QHSG5.js.map → chunk-EMFFWSAD.js.map} +0 -0
- /package/dist/{chunk-BPT4W6CI.js.map → chunk-ES36R3U2.js.map} +0 -0
- /package/dist/{chunk-TEJILTMY.js.map → chunk-FHFMWYGM.js.map} +0 -0
- /package/dist/{chunk-PJ5TGJ7U.js.map → chunk-FZ2SSI5R.js.map} +0 -0
- /package/dist/{chunk-CJ4KXDD4.js.map → chunk-GWI65NDQ.js.map} +0 -0
- /package/dist/{chunk-TWSFSH32.js.map → chunk-I7JF5TNL.js.map} +0 -0
- /package/dist/{chunk-RQ5G2YER.js.map → chunk-IEA3TZJE.js.map} +0 -0
- /package/dist/{chunk-RLK57SMS.js.map → chunk-IRHOQFA7.js.map} +0 -0
- /package/dist/{chunk-55B3KHZW.js.map → chunk-JAHIL6WO.js.map} +0 -0
- /package/dist/{chunk-KNAZGJFG.js.map → chunk-JHYISAID.js.map} +0 -0
- /package/dist/{chunk-ELA2THEC.js.map → chunk-LUFZPROB.js.map} +0 -0
- /package/dist/{chunk-62KVBIBU.js.map → chunk-N4GAJSRQ.js.map} +0 -0
- /package/dist/{chunk-I5OLA3H6.js.map → chunk-N7HOHWKF.js.map} +0 -0
- /package/dist/{chunk-HAN2PHLM.js.map → chunk-NWPR2V5W.js.map} +0 -0
- /package/dist/{chunk-U26JILS3.js.map → chunk-OAWVM5L6.js.map} +0 -0
- /package/dist/{chunk-WVCOS4XA.js.map → chunk-P5ARVLNW.js.map} +0 -0
- /package/dist/{chunk-LAVPHX2V.js.map → chunk-QC2HGYFX.js.map} +0 -0
- /package/dist/{chunk-PNEV2TBR.js.map → chunk-QJBXB4WU.js.map} +0 -0
- /package/dist/{chunk-6N5PZ6G5.js.map → chunk-QKRJUPAC.js.map} +0 -0
- /package/dist/{chunk-T7XUDZ7N.js.map → chunk-SDEHNGWW.js.map} +0 -0
- /package/dist/{chunk-UZ2J7OKF.js.map → chunk-SJOK23XT.js.map} +0 -0
- /package/dist/{chunk-WMUN7ZUD.js.map → chunk-UKKBKEUI.js.map} +0 -0
- /package/dist/{chunk-KIZOCPHS.js.map → chunk-URVL4EKU.js.map} +0 -0
- /package/dist/{chunk-5AV6FENP.js.map → chunk-V3OLO4TK.js.map} +0 -0
- /package/dist/{chunk-WVS62P45.js.map → chunk-VEA35MQP.js.map} +0 -0
- /package/dist/{chunk-MMXMJXAE.js.map → chunk-VQQUOEON.js.map} +0 -0
- /package/dist/{chunk-5LKPMDBC.js.map → chunk-VUQZYVYX.js.map} +0 -0
- /package/dist/{chunk-PF3E6ABL.js.map → chunk-X2FXEEQT.js.map} +0 -0
- /package/dist/{chunk-7F4TMKXC.js.map → chunk-XTC5EKST.js.map} +0 -0
- /package/dist/{chunk-LGGLPURL.js.map → chunk-Z2OFE6IX.js.map} +0 -0
- /package/dist/{classified-marker-BCYBGITH.js.map → classified-marker-W2PUYC3K.js.map} +0 -0
- /package/dist/{collection-facade-YCJHWX64.js.map → collection-facade-CRXN72DU.js.map} +0 -0
- /package/dist/{dead-filter-5ROD2DCQ.js.map → dead-filter-MVFQCLXY.js.map} +0 -0
- /package/dist/{delegation-IULC56LW.js.map → delegation-I7XXO5LL.js.map} +0 -0
- /package/dist/{derive-AP2NXZDC.js.map → derive-NL7X2EFT.js.map} +0 -0
- /package/dist/{dispatch-Z6C35BGM.js.map → dispatch-K3MDLCXG.js.map} +0 -0
- /package/dist/{dispatch-4KKOMKWJ.js.map → dispatch-PY5RUHJF.js.map} +0 -0
- /package/dist/{enclave-KJID436X.js.map → enclave-77K7UDLS.js.map} +0 -0
- /package/dist/{executor-GD32BQQK.js.map → executor-FNGVGDW3.js.map} +0 -0
- /package/dist/{export-accessible-H4Y2RTTD.js.map → export-accessible-QWUYY2OY.js.map} +0 -0
- /package/dist/{extract-partition-PIJZX4G4.js.map → extract-partition-CGCURVS4.js.map} +0 -0
- /package/dist/{fanout-sidecar-6QGMG5MA.js.map → fanout-sidecar-JI3MUPQV.js.map} +0 -0
- /package/dist/{issue-Q6STVPV5.js.map → issue-7IPUNAFA.js.map} +0 -0
- /package/dist/{ledger-HLINHILR.js.map → ledger-3RDSSMGD.js.map} +0 -0
- /package/dist/{liberate-C3XBBLYM.js.map → liberate-2DNJ7AJ7.js.map} +0 -0
- /package/dist/{link-set-S47JZWHV.js.map → link-set-VJIWWUZO.js.map} +0 -0
- /package/dist/{managed-secret-IDAOXSSX.js.map → managed-secret-XGGJ3BC3.js.map} +0 -0
- /package/dist/{noydb-HT56GCTQ.js.map → noydb-CLQP36JR.js.map} +0 -0
- /package/dist/{post-register-KW557BUZ.js.map → post-register-W3T4U57K.js.map} +0 -0
- /package/dist/{register-OMH3WVVL.js.map → register-YUVC4G27.js.map} +0 -0
- /package/dist/{registry-SAEOPHFF.js.map → registry-BPKJX562.js.map} +0 -0
- /package/dist/{registry-ZE2OG4TN.js.map → registry-HRFRBFDV.js.map} +0 -0
- /package/dist/{request-withdrawal-HTSROWCL.js.map → request-withdrawal-CXTQLMJK.js.map} +0 -0
- /package/dist/{reveal-T4N65GUG.js.map → reveal-G7W7N3AZ.js.map} +0 -0
- /package/dist/{revoke-NE4CU2T3.js.map → revoke-ZX3TZUI6.js.map} +0 -0
- /package/dist/{seed-TC42KFUK.js.map → seed-2FUULTQV.js.map} +0 -0
- /package/dist/{signer-W2LX2FPA.js.map → signer-FPUIX63Z.js.map} +0 -0
- /package/dist/{stale-WSC6Z7SB.js.map → stale-42FPALK2.js.map} +0 -0
- /package/dist/{storage-EWT5HIX5.js.map → storage-6QODT6K5.js.map} +0 -0
- /package/dist/{store-coordination-provider-RGHCIRWV.js.map → store-coordination-provider-Y3VXBHPL.js.map} +0 -0
- /package/dist/{walk-OLQC4JFV.js.map → walk-5PGJI3ND.js.map} +0 -0
- /package/dist/{withdraw-accessible-Y7OEPWXM.js.map → withdraw-accessible-PFCQQGNP.js.map} +0 -0
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UserApi,
|
|
3
3
|
createUserApi
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-67XA44HH.js";
|
|
5
|
+
import "./chunk-QJBXB4WU.js";
|
|
6
|
+
import "./chunk-BKYQNNO3.js";
|
|
7
|
+
import "./chunk-RGPB25DB.js";
|
|
8
8
|
import "./chunk-FSZPQCDR.js";
|
|
9
9
|
import "./chunk-HVR74IBG.js";
|
|
10
10
|
import "./chunk-RBTZLXZJ.js";
|
|
11
11
|
import "./chunk-LP7BEXCT.js";
|
|
12
12
|
import "./chunk-QTDAPDDV.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-5UGEGEIJ.js";
|
|
14
14
|
import "./chunk-I64WQSN3.js";
|
|
15
15
|
import "./chunk-PZ5AY32C.js";
|
|
16
16
|
export {
|
|
17
17
|
UserApi,
|
|
18
18
|
createUserApi
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=api-
|
|
20
|
+
//# sourceMappingURL=api-AEIN3KAQ.js.map
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
issueAttestationCore
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-4GR422R5.js";
|
|
4
4
|
import {
|
|
5
5
|
getRevokedDocIdsCore,
|
|
6
6
|
publishRevocationListCore,
|
|
7
7
|
revokeDocCore,
|
|
8
8
|
unrevokeDocCore
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-LUFZPROB.js";
|
|
10
10
|
import {
|
|
11
11
|
ATTESTATIONS_COLLECTION
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-C3YP5KKS.js";
|
|
13
13
|
import {
|
|
14
14
|
NO_ATTESTATION
|
|
15
15
|
} from "../chunk-TQLYMYOK.js";
|
|
16
16
|
import "../chunk-4AOERLTV.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-BKYQNNO3.js";
|
|
18
|
+
import "../chunk-RGPB25DB.js";
|
|
19
19
|
import "../chunk-FSZPQCDR.js";
|
|
20
20
|
import "../chunk-HVR74IBG.js";
|
|
21
21
|
import "../chunk-RBTZLXZJ.js";
|
|
22
22
|
import "../chunk-LP7BEXCT.js";
|
|
23
23
|
import "../chunk-QTDAPDDV.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-5UGEGEIJ.js";
|
|
25
25
|
import {
|
|
26
26
|
AttestationError,
|
|
27
27
|
AttestationNotEnabledError
|
|
@@ -32,11 +32,11 @@ import "../chunk-PZ5AY32C.js";
|
|
|
32
32
|
function withAttestation() {
|
|
33
33
|
return {
|
|
34
34
|
async issueAttestation(ctx, args) {
|
|
35
|
-
const { issueAttestationCore: issueAttestationCore2 } = await import("../issue-
|
|
35
|
+
const { issueAttestationCore: issueAttestationCore2 } = await import("../issue-7IPUNAFA.js");
|
|
36
36
|
return issueAttestationCore2(ctx, args);
|
|
37
37
|
},
|
|
38
38
|
async getDocumentSigningPublicKey(deps) {
|
|
39
|
-
const { loadSigner, loadOrCreateSigner } = await import("../signer-
|
|
39
|
+
const { loadSigner, loadOrCreateSigner } = await import("../signer-FPUIX63Z.js");
|
|
40
40
|
const existing = await loadSigner(deps.adapter, deps.vault, deps.getDEK);
|
|
41
41
|
if (existing) return { keyId: existing.keyId, publicKeyB64: existing.publicKeyB64 };
|
|
42
42
|
if (deps.role !== "owner") {
|
|
@@ -46,19 +46,19 @@ function withAttestation() {
|
|
|
46
46
|
return { keyId: signer.keyId, publicKeyB64: signer.publicKeyB64 };
|
|
47
47
|
},
|
|
48
48
|
async revokeAttestation(ctx, docId) {
|
|
49
|
-
const { revokeDocCore: revokeDocCore2 } = await import("../revoke-
|
|
49
|
+
const { revokeDocCore: revokeDocCore2 } = await import("../revoke-ZX3TZUI6.js");
|
|
50
50
|
return revokeDocCore2(ctx, docId);
|
|
51
51
|
},
|
|
52
52
|
async unrevokeAttestation(ctx, docId) {
|
|
53
|
-
const { unrevokeDocCore: unrevokeDocCore2 } = await import("../revoke-
|
|
53
|
+
const { unrevokeDocCore: unrevokeDocCore2 } = await import("../revoke-ZX3TZUI6.js");
|
|
54
54
|
return unrevokeDocCore2(ctx, docId);
|
|
55
55
|
},
|
|
56
56
|
async getRevokedDocIds(ctx) {
|
|
57
|
-
const { getRevokedDocIdsCore: getRevokedDocIdsCore2 } = await import("../revoke-
|
|
57
|
+
const { getRevokedDocIdsCore: getRevokedDocIdsCore2 } = await import("../revoke-ZX3TZUI6.js");
|
|
58
58
|
return getRevokedDocIdsCore2(ctx);
|
|
59
59
|
},
|
|
60
60
|
async publishRevocationList(ctx) {
|
|
61
|
-
const { publishRevocationListCore: publishRevocationListCore2 } = await import("../revoke-
|
|
61
|
+
const { publishRevocationListCore: publishRevocationListCore2 } = await import("../revoke-ZX3TZUI6.js");
|
|
62
62
|
return publishRevocationListCore2(ctx);
|
|
63
63
|
}
|
|
64
64
|
};
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-EPFF7LOX.js";
|
|
4
4
|
import {
|
|
5
5
|
SCHEMAS_COLLECTION
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6JRIYG2C.js";
|
|
7
7
|
import {
|
|
8
8
|
PERIODS_COLLECTION,
|
|
9
9
|
PERIOD_ARCHIVES_COLLECTION,
|
|
@@ -13,22 +13,23 @@ import {
|
|
|
13
13
|
} from "./chunk-V4M4BZNW.js";
|
|
14
14
|
import {
|
|
15
15
|
SEQUENCE_COLLECTION
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-2RGQNFJB.js";
|
|
17
17
|
import {
|
|
18
18
|
LEDGER_COLLECTION,
|
|
19
19
|
LEDGER_DELTAS_COLLECTION
|
|
20
20
|
} from "./chunk-I7FD46FF.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import
|
|
21
|
+
import "./chunk-BKYQNNO3.js";
|
|
22
|
+
import {
|
|
23
|
+
buildRecordEnvelope
|
|
24
|
+
} from "./chunk-RGPB25DB.js";
|
|
23
25
|
import "./chunk-FSZPQCDR.js";
|
|
24
26
|
import "./chunk-HVR74IBG.js";
|
|
25
27
|
import "./chunk-RBTZLXZJ.js";
|
|
26
28
|
import "./chunk-LP7BEXCT.js";
|
|
27
29
|
import "./chunk-QTDAPDDV.js";
|
|
28
30
|
import {
|
|
29
|
-
NOYDB_BACKUP_VERSION
|
|
30
|
-
|
|
31
|
-
} from "./chunk-SFY6NT7D.js";
|
|
31
|
+
NOYDB_BACKUP_VERSION
|
|
32
|
+
} from "./chunk-5UGEGEIJ.js";
|
|
32
33
|
import {
|
|
33
34
|
BackupCorruptedError,
|
|
34
35
|
BackupLedgerError
|
|
@@ -124,13 +125,10 @@ async function loadVault(ctx, backupJson) {
|
|
|
124
125
|
const backup = JSON.parse(backupJson);
|
|
125
126
|
await ctx.adapter.saveAll(ctx.vault, backup.collections);
|
|
126
127
|
for (const [userId, keyringFile] of Object.entries(backup.keyrings)) {
|
|
127
|
-
const envelope =
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
_iv: "",
|
|
132
|
-
_data: JSON.stringify(keyringFile)
|
|
133
|
-
};
|
|
128
|
+
const envelope = buildRecordEnvelope(
|
|
129
|
+
{ collection: "_keyring", id: userId },
|
|
130
|
+
{ version: 1, iv: "", data: JSON.stringify(keyringFile) }
|
|
131
|
+
);
|
|
134
132
|
await ctx.adapter.put(ctx.vault, "_keyring", userId, envelope);
|
|
135
133
|
}
|
|
136
134
|
if (backup._internal) {
|
|
@@ -264,4 +262,4 @@ export {
|
|
|
264
262
|
loadVault,
|
|
265
263
|
verifyBackupIntegrity
|
|
266
264
|
};
|
|
267
|
-
//# sourceMappingURL=backup-
|
|
265
|
+
//# sourceMappingURL=backup-7X3PFTSI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/with-pod/backup.ts"],"sourcesContent":["/**\n * Vault backup / restore / integrity.\n *\n * Holds `dump()` (verifiable encrypted JSON backup, including the blob\n * collections so blob \"covers\" travel in the bundle), `load()` (restore +\n * post-load integrity gate), `verifyBackupIntegrity()` (chain + data-envelope\n * cross-check), and `exportJSON()` (plaintext per-collection export, built on\n * the vault's `exportStream`). Behaviour is byte-identical to the inline\n * `Vault` methods these functions replaced — every dependency the moving code\n * touched on `this.*` arrives via {@link BackupContext}. `Vault` keeps the\n * public methods as thin delegators.\n *\n * Internal — reached through `vault.dump()` / `vault.load()` / etc.\n */\nimport { NOYDB_BACKUP_VERSION } from '../kernel/types.js'\nimport { BackupLedgerError, BackupCorruptedError } from '../kernel/errors.js'\nimport { LEDGER_COLLECTION, LEDGER_DELTAS_COLLECTION } from '../with-commit/history/ledger/constants.js'\nimport { SCHEMAS_COLLECTION } from '../with-shape/persisted-schemas/storage.js'\nimport { SEQUENCE_COLLECTION } from '../with-commit/sequence/index.js'\nimport { MANIFEST_COLLECTION } from '../with-shape/manifest/reserved-collections.js'\n// #1025 — imported from the dependency-light `window.ts`, not `periods.ts`: that\n// module exists precisely so a consumer can name the period collections without\n// dragging the ledger hash-chain machinery (`sha256Hex`/`canonicalJson`) into a\n// bundle that opted out of the periods service. Same reason the sync engine's\n// period-scoped pull imports it.\nimport {\n PERIODS_COLLECTION,\n PERIOD_FREEZES_COLLECTION,\n PERIOD_ARCHIVES_COLLECTION,\n PERIOD_TARGET_PURGES_COLLECTION,\n PERIOD_REOPENS_COLLECTION,\n} from '../with-audit/periods/window.js'\nimport type {\n NoydbStore,\n EncryptedEnvelope,\n VaultBackup,\n VaultSnapshot,\n ExportStreamOptions,\n ExportChunk,\n} from '../kernel/types.js'\nimport type { LedgerStore } from '../with-commit/history/ledger/store.js'\nimport { buildRecordEnvelope } from '../kernel/enclave/index.js'\n\n/** Everything the moving backup methods touched on the vault's `this.*`. */\nexport interface BackupContext {\n /** The ciphertext store. */\n readonly adapter: NoydbStore\n /** Vault namespace name. */\n readonly vault: string\n /** The invoking keyring's user id (read fresh per call). */\n userId(): string\n /** The vault's ledger store, or null when history is off. */\n getLedgerOrNull(): LedgerStore | null\n /** Recompute an envelope's `payloadHash` (bound `historyStrategy.envelopePayloadHash`). */\n envelopePayloadHash(envelope: EncryptedEnvelope): Promise<string>\n /**\n * Refresh the in-memory keyring from the freshly-loaded keyring file and\n * rebuild the DEK resolver. No-op when the vault has no `reloadKeyring`\n * callback (plaintext vaults / test constructions).\n */\n reloadKeyringAndRebuildDEK(): Promise<void>\n /** Clear the vault's collection cache (post-load). */\n clearCollectionCache(): void\n /** Reset the ledger store so the next `ledger()` rebuilds its head cache. */\n resetLedgerStore(): void\n /** The vault's decrypt+ACL export stream (used by `exportJSON`). */\n exportStream(opts: ExportStreamOptions): AsyncIterableIterator<ExportChunk>\n}\n\n/** Result of {@link verifyBackupIntegrity}. */\nexport type VerifyBackupResult =\n | { readonly ok: true; readonly head: string; readonly length: number }\n | {\n readonly ok: false\n readonly kind: 'chain'\n readonly divergedAt: number\n readonly message: string\n }\n | {\n readonly ok: false\n readonly kind: 'data'\n readonly collection: string\n readonly id: string\n readonly message: string\n }\n\n/**\n * Dump vault as a verifiable encrypted JSON backup string.\n *\n * backups embed the current ledger head and the full `_ledger` +\n * `_ledger_deltas` internal collections so the receiver can run\n * `verifyBackupIntegrity()` after `load()` and detect any tampering between\n * dump and restore. Backups produced without a ledger skip the integrity check\n * with a warning — both modes round-trip cleanly.\n */\nexport async function dumpVault(ctx: BackupContext): Promise<string> {\n const snapshot = await ctx.adapter.loadAll(ctx.vault)\n\n // Load keyrings (separate path because loadAll filters them out\n // along with all other underscore-prefixed internal collections).\n const keyringIds = await ctx.adapter.list(ctx.vault, '_keyring')\n const keyrings: Record<string, unknown> = {}\n for (const keyringId of keyringIds) {\n const envelope = await ctx.adapter.get(ctx.vault, '_keyring', keyringId)\n if (envelope) {\n keyrings[keyringId] = JSON.parse(envelope._data)\n }\n }\n\n // Load the ledger entries + deltas so the receiver can replay\n // the chain after restore. Without this, `load()` would have an\n // empty ledger and `verifyBackupIntegrity()` would have nothing\n // to compare against.\n //\n // Also enumerate the blob collections so blob content (\"covers\")\n // travels in the bundle (the blob DEK already travels in `_keyring`).\n // Literals are inlined (not imported from blobs/blob-set.ts) to keep\n // the blob runtime out of this kernel hot path — they mirror\n // BLOB_INDEX/CHUNKS/EVICTION_AUDIT_COLLECTION and SLOTS/VERSIONS_PREFIX.\n // The collect-loop skips empty ids, so this no-ops without blobs.\n const internalSnapshot: VaultSnapshot = {}\n const internalNames = [\n LEDGER_COLLECTION, LEDGER_DELTAS_COLLECTION, SCHEMAS_COLLECTION, SEQUENCE_COLLECTION,\n MANIFEST_COLLECTION, // #941: the pod's manifest-set record(s) travel in the bundle too\n // #1025: the accounting-period close state + its companions. The bundle is\n // the backup/restore path, so without these a restore discarded the\n // hash-chained evidence that a month was ever closed — the artifact\n // `closePeriod` exists to produce — and dropped the write gate with it, so\n // the restored vault silently accepted back-dated writes into a sealed\n // month. The companions matter as much as the close: a bounded reopen\n // window (`reopenPeriod({ until })`) is state a restore must not lose.\n PERIODS_COLLECTION,\n PERIOD_REOPENS_COLLECTION,\n PERIOD_FREEZES_COLLECTION,\n PERIOD_ARCHIVES_COLLECTION,\n PERIOD_TARGET_PURGES_COLLECTION,\n '_history', // full-snapshot version history — so history()/getVersion()/diff() survive the bundle\n '_blob_index', '_blob_chunks', '_blob_eviction_audit',\n // #753 spec §7 Q3: `_blob_intent` markers travel too — restoring mid-op\n // state (a blob row without its marker) would reproduce the ambiguity\n // the journal exists to prevent. Note: `_mv_stale` does NOT travel\n // today (a pre-existing, separate gap) — observed here, tracked on\n // #761, not fixed in this pass.\n '_blob_intent',\n // #769: `_blob_slots_<c>` envelopes travel verbatim (raw ciphertext,\n // same DEK, same vault) — including any `SlotRecord.pendingRelease`\n // resume breadcrumb they carry. This is INTENTIONALLY the opposite of\n // `extract-partition`'s `reKeyBlobs`, which STRIPS `pendingRelease`:\n // a full-vault backup restores into the SAME vault it was taken from,\n // so a breadcrumb taken mid-rehome (together with its `_blob_intent`\n // marker, carried above) is resumable on restore — carry-and-resume is\n // correct here. A partition extraction crosses vaults: the breadcrumb's\n // old eTag may not exist in the destination, so it must be stripped\n // there instead. Asymmetry: backup = same-vault-resumable = carry;\n // partition = cross-vault = strip-breadcrumb-carry-marker.\n ...Object.keys(snapshot).flatMap((c) => [`_blob_slots_${c}`, `_blob_versions_${c}`]),\n ]\n for (const internalName of internalNames) {\n const ids = await ctx.adapter.list(ctx.vault, internalName)\n if (ids.length === 0) continue\n const records: Record<string, EncryptedEnvelope> = {}\n for (const id of ids) {\n const envelope = await ctx.adapter.get(ctx.vault, internalName, id)\n if (envelope) records[id] = envelope\n }\n internalSnapshot[internalName] = records\n }\n\n // Embed the ledger head if there's a chain. An empty ledger\n // (fresh vault) leaves `ledgerHead` undefined, which\n // load() treats the same as a legacy backup (no integrity\n // check, console warning). If history is not opted in,\n // `getLedgerOrNull` returns null and we skip embedding entirely\n // — the backup is still valid, just without the integrity head.\n const ledgerForHead = ctx.getLedgerOrNull()\n const head = ledgerForHead ? await ledgerForHead.head() : null\n const backup: VaultBackup = {\n _noydb_backup: NOYDB_BACKUP_VERSION,\n _compartment: ctx.vault,\n _exported_at: new Date().toISOString(),\n _exported_by: ctx.userId(),\n keyrings: keyrings as VaultBackup['keyrings'],\n collections: snapshot,\n ...(Object.keys(internalSnapshot).length > 0\n ? { _internal: internalSnapshot }\n : {}),\n ...(head\n ? {\n ledgerHead: {\n hash: head.hash,\n index: head.entry.index,\n ts: head.entry.ts,\n },\n }\n : {}),\n }\n\n return JSON.stringify(backup)\n}\n\n/**\n * Restore a vault from a verifiable backup. After loading, runs\n * `verifyBackupIntegrity()` to confirm the hash chain, the embedded head, and\n * every data envelope's payload hash. Legacy backups (no `ledgerHead`) load\n * with a console warning and skip the integrity check.\n */\nexport async function loadVault(ctx: BackupContext, backupJson: string): Promise<void> {\n const backup = JSON.parse(backupJson) as VaultBackup\n\n // 1. Restore data collections.\n await ctx.adapter.saveAll(ctx.vault, backup.collections)\n\n // 2. Restore keyrings.\n for (const [userId, keyringFile] of Object.entries(backup.keyrings)) {\n const envelope = buildRecordEnvelope({ collection: '_keyring', id: userId },\n { version: 1, iv: '', data: JSON.stringify(keyringFile) })\n await ctx.adapter.put(ctx.vault, '_keyring', userId, envelope)\n }\n\n // 3. Restore internal collections (`_ledger`, `_ledger_deltas`).\n // Required so verifyBackupIntegrity has the chain to walk.\n if (backup._internal) {\n for (const [internalName, records] of Object.entries(backup._internal)) {\n for (const [id, envelope] of Object.entries(records)) {\n await ctx.adapter.put(ctx.vault, internalName, id, envelope)\n }\n }\n }\n\n // 4. Refresh the in-memory keyring from the freshly-loaded\n // keyring file. Without this, the Vault's getDEK\n // closure still holds the OLD session's DEKs, and every\n // decrypt of a loaded ledger entry / data envelope fails\n // with TamperedError because the DEK doesn't match the\n // ciphertext that was encrypted with the SOURCE user's DEK.\n // Skipped for plaintext vaults and for tests that\n // construct Vault without a reloadKeyring callback.\n await ctx.reloadKeyringAndRebuildDEK()\n\n // 5. Clear collection cache + reset the ledger store so the\n // next ledger() call rebuilds its head cache from the\n // freshly-loaded entries.\n ctx.clearCollectionCache()\n ctx.resetLedgerStore()\n\n // 5. Run the verification gate. Legacy backups (no ledgerHead)\n // skip this with a one-line warning so existing consumers can\n // still read them while migrating.\n if (!backup.ledgerHead) {\n console.warn(\n `[noy-db] Loaded a legacy backup with no ledgerHead — ` +\n `verifiable-backup integrity check skipped. ` +\n `Re-export with a ledger-aware build to get tamper detection.`,\n )\n return\n }\n\n const result = await verifyBackupIntegrity(ctx)\n if (!result.ok) {\n // Surface the most specific error class we can. The result\n // shape carries enough info for callers to inspect.\n if (result.kind === 'data') {\n throw new BackupCorruptedError(\n result.collection,\n result.id,\n result.message,\n )\n }\n throw new BackupLedgerError(result.message, result.divergedAt)\n }\n\n // 6. Cross-check: the freshly-verified head must match the\n // value embedded at dump time. A mismatch means someone\n // truncated or extended the chain after dump.\n if (result.head !== backup.ledgerHead.hash) {\n throw new BackupLedgerError(\n `Backup ledger head mismatch: embedded \"${backup.ledgerHead.hash}\" ` +\n `but reconstructed \"${result.head}\".`,\n )\n }\n}\n\n/**\n * End-to-end backup integrity check: `ledger.verify()` (hash chain) plus a data\n * envelope cross-check (every current record's `_data` hash must match the\n * latest `put` entry's `payloadHash`). Returns a discriminated union so callers\n * can distinguish chain vs data failures.\n */\nexport async function verifyBackupIntegrity(ctx: BackupContext): Promise<VerifyBackupResult> {\n // Step 1: chain verification. Without the history strategy there\n // is no ledger; an unaudited backup verifies trivially as `ok`\n // because there's nothing to diverge from.\n const ledgerForVerify = ctx.getLedgerOrNull()\n if (!ledgerForVerify) {\n return { ok: true, head: '', length: 0 }\n }\n const chainResult = await ledgerForVerify.verify()\n if (!chainResult.ok) {\n return {\n ok: false,\n kind: 'chain',\n divergedAt: chainResult.divergedAt,\n message:\n `Ledger chain diverged at index ${chainResult.divergedAt}: ` +\n `expected prevHash \"${chainResult.expected}\" but found \"${chainResult.actual}\".`,\n }\n }\n\n // Step 2: data envelope cross-check. Walk every entry in the\n // ledger and, for the LATEST `put` per (collection, id), recompute\n // the data envelope's payloadHash and compare. Earlier puts of the\n // same id are skipped because the data collection only holds the\n // current version — historical envelopes live in the deltas\n // collection (which is itself protected by the chain).\n // Reuse the ledger we already resolved in step 1.\n const allEntries = await ledgerForVerify.loadAllEntries()\n\n // Find the latest non-delete entry per (collection, id). Walk\n // the entries in reverse so we hit the latest first; mark each\n // (collection, id) as seen and skip subsequent entries.\n const seen = new Set<string>()\n const latest = new Map<\n string,\n { collection: string; id: string; expectedHash: string }\n >()\n for (let i = allEntries.length - 1; i >= 0; i--) {\n const entry = allEntries[i]\n if (!entry) continue\n // Amendment entries are multi-record audit entries whose\n // `collection` and `id` are empty strings — building a `\"/\"`\n // key here would mark that synthetic slot as seen and falsely\n // trip the data check on a record that never existed. Skip\n // them BEFORE the key/seen bookkeeping so they neither\n // tombstone real entries nor enter the latest map.\n if (entry.op === 'amendment' || entry.op === 'lifecycle') continue\n const key = `${entry.collection}/${entry.id}`\n if (seen.has(key)) continue\n seen.add(key)\n // For deletes the data collection should NOT have the record,\n // so we skip — there's nothing to cross-check. Marking the key\n // as seen above ensures any earlier `put` of the same id is\n // also skipped (the record was subsequently deleted).\n if (entry.op === 'delete') continue\n latest.set(key, {\n collection: entry.collection,\n id: entry.id,\n expectedHash: entry.payloadHash,\n })\n }\n\n for (const { collection, id, expectedHash } of latest.values()) {\n const envelope = await ctx.adapter.get(ctx.vault, collection, id)\n if (!envelope) {\n return {\n ok: false,\n kind: 'data',\n collection,\n id,\n message:\n `Ledger expects data record \"${collection}/${id}\" to exist, ` +\n `but the adapter has no envelope for it.`,\n }\n }\n const actualHash = await ctx.envelopePayloadHash(envelope)\n if (actualHash !== expectedHash) {\n return {\n ok: false,\n kind: 'data',\n collection,\n id,\n message:\n `Data envelope \"${collection}/${id}\" has been tampered with: ` +\n `expected payloadHash \"${expectedHash}\", got \"${actualHash}\".`,\n }\n }\n }\n\n return {\n ok: true,\n head: chainResult.head,\n length: chainResult.length,\n }\n}\n\n/**\n * Plaintext per-collection export, built on the vault's `exportStream`. Forces\n * collection granularity (record-by-record output makes no sense in a single\n * string) and merges dictionary snapshots across collections.\n */\nexport async function exportVaultJSON(ctx: BackupContext, opts: ExportStreamOptions = {}): Promise<string> {\n // Force per-collection granularity regardless of caller setting:\n // record-by-record output doesn't make sense in a single string.\n const collections: Record<\n string,\n {\n schema: null\n refs: Record<string, { target: string; mode: 'strict' | 'warn' | 'cascade' }>\n records: unknown[]\n }\n > = {}\n let ledgerHead: ExportChunk['ledgerHead'] | undefined\n // Merged dictionary snapshot across all collections.\n // Only populated when `resolveLabels` is not set.\n const allDictionaries: Record<\n string, // collection name\n Record<string, Record<string, Record<string, string>>>\n > = {}\n\n for await (const chunk of ctx.exportStream({\n granularity: 'collection',\n withLedgerHead: opts.withLedgerHead === true,\n // Thread the export locale so records are read at the\n // `export` layer (i18nText collapsed + dictKey/staticDict labels resolved).\n ...(opts.resolveLabels !== undefined ? { resolveLabels: opts.resolveLabels } : {}),\n })) {\n collections[chunk.collection] = {\n schema: null, // Standard Schema validators are not JSON-serializable\n refs: chunk.refs,\n records: chunk.records,\n }\n if (chunk.ledgerHead) ledgerHead = chunk.ledgerHead\n // Collect dictionary snapshots unless resolveLabels is set\n if (!opts.resolveLabels && chunk.dictionaries) {\n allDictionaries[chunk.collection] = chunk.dictionaries\n }\n }\n\n const hasDictionaries = Object.keys(allDictionaries).length > 0\n return JSON.stringify({\n _noydb_export: 1,\n _compartment: ctx.vault,\n _exported_at: new Date().toISOString(),\n _exported_by: ctx.userId(),\n collections,\n ...(hasDictionaries ? { _dictionaries: allDictionaries } : {}),\n ...(ledgerHead ? { ledgerHead } : {}),\n })\n}\n"],"mappings":"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","names":[]}
|
package/dist/blobs/index.js
CHANGED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
detectMimeType,
|
|
17
17
|
isPreCompressed,
|
|
18
18
|
memoryBlobPinStore
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-ES36R3U2.js";
|
|
20
20
|
import {
|
|
21
21
|
BLOB_EVICTION_AUDIT_COLLECTION,
|
|
22
22
|
EXPORT_AUDIT_COLLECTION,
|
|
@@ -24,18 +24,18 @@ import {
|
|
|
24
24
|
NO_BLOBS,
|
|
25
25
|
createExportBlobsHandle,
|
|
26
26
|
runCompaction
|
|
27
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-Z2OFE6IX.js";
|
|
28
28
|
import "../chunk-RVTOCAHQ.js";
|
|
29
29
|
import "../chunk-YVOW35HH.js";
|
|
30
30
|
import "../chunk-AMKCY454.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-BKYQNNO3.js";
|
|
32
|
+
import "../chunk-RGPB25DB.js";
|
|
33
33
|
import "../chunk-FSZPQCDR.js";
|
|
34
34
|
import "../chunk-HVR74IBG.js";
|
|
35
35
|
import "../chunk-RBTZLXZJ.js";
|
|
36
36
|
import "../chunk-LP7BEXCT.js";
|
|
37
37
|
import "../chunk-QTDAPDDV.js";
|
|
38
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-5UGEGEIJ.js";
|
|
39
39
|
import {
|
|
40
40
|
BlobOfflineError
|
|
41
41
|
} from "../chunk-I64WQSN3.js";
|
package/dist/broker/index.js
CHANGED
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
issueChallenge,
|
|
6
6
|
verifyBrokerProof
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-BKYQNNO3.js";
|
|
8
|
+
import "../chunk-RGPB25DB.js";
|
|
9
9
|
import "../chunk-FSZPQCDR.js";
|
|
10
10
|
import "../chunk-HVR74IBG.js";
|
|
11
11
|
import "../chunk-RBTZLXZJ.js";
|
|
12
12
|
import "../chunk-LP7BEXCT.js";
|
|
13
13
|
import "../chunk-QTDAPDDV.js";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-5UGEGEIJ.js";
|
|
15
15
|
import {
|
|
16
16
|
BrokerEnrolmentError,
|
|
17
17
|
BrokerNotEnabledError,
|
|
@@ -30,7 +30,7 @@ function withBroker(config) {
|
|
|
30
30
|
const cache = /* @__PURE__ */ new Map();
|
|
31
31
|
return {
|
|
32
32
|
async enroll(ctx) {
|
|
33
|
-
const { enrollSeed } = await import("../seed-
|
|
33
|
+
const { enrollSeed } = await import("../seed-2FUULTQV.js");
|
|
34
34
|
return enrollSeed({ ...ctx, config });
|
|
35
35
|
},
|
|
36
36
|
async rotate(ctx) {
|
|
@@ -39,7 +39,7 @@ function withBroker(config) {
|
|
|
39
39
|
const inFlight = scoped.map(([, e]) => e.inFlight).filter((p) => p !== void 0);
|
|
40
40
|
await Promise.allSettled(inFlight);
|
|
41
41
|
for (const [key] of scoped) cache.delete(key);
|
|
42
|
-
const { rotateSeed } = await import("../seed-
|
|
42
|
+
const { rotateSeed } = await import("../seed-2FUULTQV.js");
|
|
43
43
|
return rotateSeed({ ...ctx, config });
|
|
44
44
|
},
|
|
45
45
|
credentialSource(ctx, profile) {
|
|
@@ -56,7 +56,7 @@ function withBroker(config) {
|
|
|
56
56
|
const skewMs = config.skewMs ?? DEFAULT_SKEW_MS;
|
|
57
57
|
const capturedEntry = entry;
|
|
58
58
|
const inFlight = (async () => {
|
|
59
|
-
const { mintStoreCredentials } = await import("../seed-
|
|
59
|
+
const { mintStoreCredentials } = await import("../seed-2FUULTQV.js");
|
|
60
60
|
const creds = await mintStoreCredentials({ ...ctx, config }, profile);
|
|
61
61
|
capturedEntry.cached = { creds, validUntil: cacheFloor(creds, skewMs) };
|
|
62
62
|
return creds;
|
package/dist/cargo/index.js
CHANGED
|
@@ -6,36 +6,36 @@ import {
|
|
|
6
6
|
diffVault,
|
|
7
7
|
unsealDeks,
|
|
8
8
|
withCargo
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-6VAM5THN.js";
|
|
10
10
|
import {
|
|
11
11
|
extractPartition,
|
|
12
12
|
walkClosure
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-UNR6G3EJ.js";
|
|
14
14
|
import {
|
|
15
15
|
createDeedOwner,
|
|
16
16
|
isDeedVault,
|
|
17
17
|
liberateVault,
|
|
18
18
|
loadDeedMarker
|
|
19
|
-
} from "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
19
|
+
} from "../chunk-QKRJUPAC.js";
|
|
20
|
+
import "../chunk-P5ARVLNW.js";
|
|
21
|
+
import "../chunk-NWPR2V5W.js";
|
|
22
|
+
import "../chunk-ES36R3U2.js";
|
|
23
23
|
import {
|
|
24
24
|
groupAndReduce,
|
|
25
25
|
reduceRecords
|
|
26
|
-
} from "../chunk-
|
|
26
|
+
} from "../chunk-3JQVA527.js";
|
|
27
27
|
import {
|
|
28
28
|
NO_CARGO,
|
|
29
29
|
isQuorum,
|
|
30
30
|
runDrainBarrier
|
|
31
31
|
} from "../chunk-42IDLU5V.js";
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
32
|
+
import "../chunk-JAHIL6WO.js";
|
|
33
|
+
import "../chunk-6JRIYG2C.js";
|
|
34
34
|
import {
|
|
35
35
|
CustodyApi
|
|
36
|
-
} from "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
36
|
+
} from "../chunk-QC2HGYFX.js";
|
|
37
|
+
import "../chunk-SDEHNGWW.js";
|
|
38
|
+
import "../chunk-N7HOHWKF.js";
|
|
39
39
|
import {
|
|
40
40
|
fuseRetrieval
|
|
41
41
|
} from "../chunk-AURFOK3D.js";
|
|
@@ -44,21 +44,21 @@ import "../chunk-CADUYBQD.js";
|
|
|
44
44
|
import {
|
|
45
45
|
readPath
|
|
46
46
|
} from "../chunk-IGJCYUT5.js";
|
|
47
|
-
import "../chunk-
|
|
47
|
+
import "../chunk-7LLKPODL.js";
|
|
48
48
|
import "../chunk-RVTOCAHQ.js";
|
|
49
|
-
import "../chunk-
|
|
50
|
-
import "../chunk-
|
|
49
|
+
import "../chunk-WBHQX6ME.js";
|
|
50
|
+
import "../chunk-QJBXB4WU.js";
|
|
51
51
|
import "../chunk-YVOW35HH.js";
|
|
52
52
|
import {
|
|
53
53
|
generateULID
|
|
54
54
|
} from "../chunk-4AOERLTV.js";
|
|
55
55
|
import "../chunk-SVLR4POP.js";
|
|
56
|
-
import "../chunk-
|
|
56
|
+
import "../chunk-IEA3TZJE.js";
|
|
57
57
|
import "../chunk-I7FD46FF.js";
|
|
58
58
|
import "../chunk-AMKCY454.js";
|
|
59
|
-
import "../chunk-
|
|
60
|
-
import "../chunk-
|
|
61
|
-
import "../chunk-
|
|
59
|
+
import "../chunk-N4GAJSRQ.js";
|
|
60
|
+
import "../chunk-BKYQNNO3.js";
|
|
61
|
+
import "../chunk-RGPB25DB.js";
|
|
62
62
|
import "../chunk-FSZPQCDR.js";
|
|
63
63
|
import "../chunk-HVR74IBG.js";
|
|
64
64
|
import "../chunk-RBTZLXZJ.js";
|
|
@@ -66,7 +66,7 @@ import "../chunk-LP7BEXCT.js";
|
|
|
66
66
|
import {
|
|
67
67
|
sha256Hex
|
|
68
68
|
} from "../chunk-QTDAPDDV.js";
|
|
69
|
-
import "../chunk-
|
|
69
|
+
import "../chunk-5UGEGEIJ.js";
|
|
70
70
|
import {
|
|
71
71
|
AdoptionStateError,
|
|
72
72
|
CargoNotEnabledError,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
openEnvelopeJson
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BKYQNNO3.js";
|
|
4
|
+
import {
|
|
5
|
+
buildRecordEnvelope
|
|
6
|
+
} from "./chunk-RGPB25DB.js";
|
|
4
7
|
import {
|
|
5
8
|
encrypt
|
|
6
9
|
} from "./chunk-QTDAPDDV.js";
|
|
7
|
-
import {
|
|
8
|
-
NOYDB_FORMAT_VERSION
|
|
9
|
-
} from "./chunk-SFY6NT7D.js";
|
|
10
10
|
import {
|
|
11
11
|
SequenceContentionError,
|
|
12
12
|
SequenceNotEnabledError,
|
|
@@ -131,13 +131,13 @@ var SequenceStore = class {
|
|
|
131
131
|
const state = JSON.parse(json);
|
|
132
132
|
return { env, value: state.value };
|
|
133
133
|
}
|
|
134
|
-
async encryptState(state, version) {
|
|
134
|
+
async encryptState(name, state, version) {
|
|
135
135
|
const json = JSON.stringify(state);
|
|
136
136
|
if (!this.encrypted) {
|
|
137
|
-
return {
|
|
137
|
+
return buildRecordEnvelope({ collection: SEQUENCE_COLLECTION, id: name }, { version, iv: "", data: json, by: this.actor });
|
|
138
138
|
}
|
|
139
139
|
const { iv, data } = await encrypt(json, await this.dek());
|
|
140
|
-
return {
|
|
140
|
+
return buildRecordEnvelope({ collection: SEQUENCE_COLLECTION, id: name }, { version, iv, data, by: this.actor });
|
|
141
141
|
}
|
|
142
142
|
async peek(name) {
|
|
143
143
|
return (await this.read(name)).value;
|
|
@@ -149,7 +149,7 @@ var SequenceStore = class {
|
|
|
149
149
|
const { env, value } = await this.read(name);
|
|
150
150
|
const nextValue = value + 1;
|
|
151
151
|
const expectedVersion = env?._v ?? 0;
|
|
152
|
-
const envelope = await this.encryptState({ value: nextValue }, expectedVersion + 1);
|
|
152
|
+
const envelope = await this.encryptState(name, { value: nextValue }, expectedVersion + 1);
|
|
153
153
|
try {
|
|
154
154
|
await this.adapter.put(this.vault, SEQUENCE_COLLECTION, name, envelope, expectedVersion);
|
|
155
155
|
return nextValue;
|
|
@@ -173,7 +173,7 @@ var SequenceStore = class {
|
|
|
173
173
|
const { env, value } = await this.read(name);
|
|
174
174
|
if (value >= n) return;
|
|
175
175
|
const expectedVersion = env?._v ?? 0;
|
|
176
|
-
const envelope = await this.encryptState({ value: n }, expectedVersion + 1);
|
|
176
|
+
const envelope = await this.encryptState(name, { value: n }, expectedVersion + 1);
|
|
177
177
|
try {
|
|
178
178
|
await this.adapter.put(this.vault, SEQUENCE_COLLECTION, name, envelope, expectedVersion);
|
|
179
179
|
return;
|
|
@@ -199,4 +199,4 @@ export {
|
|
|
199
199
|
resolveSequenceKey,
|
|
200
200
|
SequenceStore
|
|
201
201
|
};
|
|
202
|
-
//# sourceMappingURL=chunk-
|
|
202
|
+
//# sourceMappingURL=chunk-2RGQNFJB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/with-commit/sequence/active.ts","../src/with-commit/sequence/strategy.ts","../src/with-commit/sequence/index.ts"],"sourcesContent":["/**\n * Enable the atomic-sequence capability.\n * Pass to `createNoydb({ sequenceStrategy: withSequence() })` to make\n * `vault.sequence('name').next()` / `.peek()` / `.seedTo()` live. The\n * {@link SequenceStore} CAS engine is statically imported here, so it is pulled\n * into the bundle only when `withSequence()` is referenced (the floor never\n * imports it).\n */\nimport type { SequenceStrategy } from './strategy.js'\nimport { SequenceStore } from './index.js'\n\nexport function withSequence(): SequenceStrategy {\n return {\n createStore(opts) {\n return new SequenceStore(opts)\n },\n }\n}\n","/**\n * Sequence capability strategy — the single on-demand factory the vault routes\n * `vault.sequence()` through to build its atomic-CAS {@link SequenceStore}. The\n * active engine ({@link withSequence}) constructs the real store (kept out of\n * the floor bundle — the store class is reached only via the opt-in\n * `active.ts` chunk); {@link NO_SEQUENCE} throws. The vault always assembles the\n * per-call {@link SequenceStoreOptions} and delegates here, so an un-opted-in\n * caller hits `NO_SEQUENCE`'s throw at `vault.sequence()`.\n *\n * Note: `vault.sequence()` is synchronous, so the factory is a plain (sync)\n * constructor — the engine is tree-shaken by reachability (only `withSequence()`\n * pulls `active.ts`, which statically imports the store), not by a dynamic\n * import. Deferred-numbering series (`withDeferredNumbering`) are a distinct\n * capability and are NOT routed through this strategy.\n * @internal\n */\nimport type { SequenceStore, SequenceStoreOptions } from './index.js'\nimport { SequenceNotEnabledError } from '../../kernel/errors.js'\n\nexport interface SequenceStrategy {\n createStore(opts: SequenceStoreOptions): SequenceStore\n}\n\n/**\n * No-op stub — the floor default. The capability factory throws\n * {@link SequenceNotEnabledError}; opt in with `sequenceStrategy: withSequence()`\n * in createNoydb. @internal\n */\nexport const NO_SEQUENCE: SequenceStrategy = {\n createStore(): SequenceStore {\n throw new SequenceNotEnabledError()\n },\n}\n","/**\n * Atomic sequence primitive — online-coordinated gap-free numbering.\n *\n * `vault.sequence('invoice-2026').next()` returns 1, 2, 3, … with no\n * gaps and no duplicates, even under concurrent callers. Each named\n * sequence is an independent counter record at `_sequences/<name>`,\n * incremented with an optimistic compare-and-swap retry loop — the same\n * proven pattern as the ledger head (`history/ledger/store.ts`).\n *\n * **Explicitly online-only.** Gap-free numbering requires single-authority\n * serialization, which an offline / non-CAS store cannot provide. `next()`\n * throws {@link SequenceOfflineError} unless the backing store advertises\n * `capabilities.casAtomic`. This is a deliberate, honest wall — an offline\n * writer cannot safely allocate a global sequence number.\n *\n * Note on \"gap-free\": the *sequence* is gap-free (each `next()` yields a\n * unique, +1 value). If a caller discards a value without using it, that\n * is a gap in *usage*, not in the sequence — assign each `next()` result\n * to its record in the same operation.\n */\n\nimport { buildRecordEnvelope } from '../../kernel/enclave/index.js'\nimport type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js'\nimport { encrypt, openEnvelopeJson, type EnclaveKey } from '../../kernel/enclave/index.js'\nimport type { ConflictError} from '../../kernel/errors.js';\nimport { isConflictError, SequenceContentionError, SequenceOfflineError, ValidationError } from '../../kernel/errors.js'\n\n// Capability opt-in seam (S4): `vault.sequence()` builds its CAS store through\n// the sequenceStrategy, so it throws SequenceNotEnabledError unless opted in.\nexport { withSequence } from './active.js'\nexport { NO_SEQUENCE, type SequenceStrategy } from './strategy.js'\nexport { SequenceNotEnabledError } from '../../kernel/errors.js'\n\nexport const SEQUENCE_COLLECTION = '_sequences'\n// A sequence is a single hot CAS row — higher contention than a ledger\n// append. A larger budget + jittered backoff absorbs moderate concurrency;\n// a genuine burst beyond this surfaces SequenceContentionError so the\n// caller can retry / queue (the honest online-only contract).\nconst MAX_NEXT_ATTEMPTS = 16\n\ninterface SequenceState {\n value: number\n}\n\n/** Options for `SequenceHandle.next`. Deferred-numbering series use `for`; the CAS counter ignores all of these. */\nexport interface NextOptions {\n /** Deferred mode: the record id to number. Ignored by the CAS counter. */\n readonly for?: string\n /** Deferred mode: reject after this many ms if still unsealed (reserved; not yet enforced in this slice). */\n readonly timeoutMs?: number\n}\n\n/**\n * Partitioning for a CAS sequence. A partitioned sequence is an\n * independent counter scoped to one tuple of values — e.g.\n * `sequence('invoice', { partition: [2026, 'EU'] })` numbers EU-2026 invoices\n * separately from `[2026, 'US']` and from the bare `invoice` series.\n *\n * Partition components are URI-encoded (so `/`, null bytes and other\n * separators in a value can never collide with the structural separators) and\n * `'/'`-joined, then appended to the series with a null-byte (`\\x00`)\n * separator. The null byte is illegal in a plain series name, which guarantees\n * a partitioned key is always disjoint from any unpartitioned series.\n */\nexport interface SequenceOptions {\n /** Partition tuple. Each component is URI-encoded and `'/'`-joined. */\n readonly partition?: readonly (string | number)[]\n /**\n * Render template for the serial string. When set, `vault.sequence`\n * returns a {@link FormattedSequenceHandle} whose `next()` resolves to\n * `{ serial, formatted }`. Tokens:\n * - `{seq}` — the allocated integer\n * - `{seq:0N}` — zero-padded to width N (e.g. `{seq:04}` → `0001`)\n * - `{partition.i}` — the i-th `partition` component (original value)\n *\n * Any other token, or a `{partition.i}` index beyond the supplied\n * `partition`, throws `ValidationError` at `vault.sequence()` construction.\n * Per-partition reset is inherent: a new partition tuple starts at 1.\n */\n readonly format?: string\n}\n\n/**\n * A formatted sequence handle. Identical to {@link SequenceHandle}\n * except `next()` also returns the rendered `formatted` string. `peek()` /\n * `seedTo()` operate on the underlying integer counter, unchanged.\n */\nexport interface FormattedSequenceHandle {\n /** Allocate the next value and return it with its rendered serial string. */\n next(opts?: NextOptions): Promise<{ serial: number; formatted: string }>\n /** Read the current integer value without allocating. Returns 0 if never used. */\n peek(): Promise<number>\n /** Set-if-greater on the underlying integer counter. See {@link SequenceHandle.seedTo}. */\n seedTo(n: number): Promise<void>\n}\n\n// Matches a single `{...}` token with no nested braces.\nconst SEQ_FORMAT_TOKEN = /\\{([^{}]*)\\}/g\nconst SEQ_PAD_TOKEN = /^seq:0(\\d+)$/\nconst SEQ_PARTITION_TOKEN = /^partition\\.(\\d+)$/\n\n/**\n * Validate a sequence `format` against the supplied partition and return a\n * pure `(serial) => string` renderer. Eager validation: every token is\n * checked now, so a bad pattern throws `ValidationError` at construction —\n * never at `next()` time.\n */\nexport function compileSequenceFormat(\n format: string,\n series: string,\n partition: readonly (string | number)[] | undefined,\n): (serial: number) => string {\n const parts = partition ?? []\n for (const m of format.matchAll(SEQ_FORMAT_TOKEN)) {\n const token = m[1] ?? ''\n if (token === 'seq') continue\n if (SEQ_PAD_TOKEN.test(token)) continue\n const partMatch = SEQ_PARTITION_TOKEN.exec(token)\n if (partMatch) {\n const idx = Number(partMatch[1])\n if (idx >= parts.length) {\n throw new ValidationError(\n `sequence(\"${series}\"): format token \"{${token}}\" references partition index ${idx}, ` +\n `but only ${parts.length} partition component(s) were supplied.`,\n )\n }\n continue\n }\n throw new ValidationError(\n `sequence(\"${series}\"): format contains unknown token \"{${token}}\". ` +\n `Accepted tokens: {seq}, {seq:0N}, {partition.i}.`,\n )\n }\n return (serial: number): string =>\n format.replace(SEQ_FORMAT_TOKEN, (full, token: string) => {\n if (token === 'seq') return String(serial)\n const padMatch = SEQ_PAD_TOKEN.exec(token)\n if (padMatch) return String(serial).padStart(Number(padMatch[1]), '0')\n const partMatch = SEQ_PARTITION_TOKEN.exec(token)\n if (partMatch) return String(parts[Number(partMatch[1])])\n return full // unreachable — validated above\n })\n}\n\n/**\n * Resolve the CAS storage key for a (series, partition) pair.\n *\n * With no partition the key is `series` verbatim. With a partition the key is\n * `${series}\\x00${parts}` where `parts` is each component passed through\n * `encodeURIComponent(String(part))` and `'/'`-joined. The null-byte separator\n * is illegal in a plain series name, so partitioned keys never collide with\n * unpartitioned ones; URI-encoding keeps any component containing `/` distinct\n * from a multi-component partition.\n *\n * @throws {ValidationError} if any partition component is empty after `String()`\n * or is a non-finite number (`NaN`, `±Infinity`).\n */\nexport function resolveSequenceKey(series: string, opts?: SequenceOptions): string {\n const partition = opts?.partition\n if (!partition || partition.length === 0) return series\n const parts = partition.map((p) => {\n if (typeof p === 'number' && !Number.isFinite(p)) {\n throw new ValidationError(`sequence partition component must be a finite number, got ${p}`)\n }\n const s = String(p)\n if (s === '') {\n throw new ValidationError('sequence partition component must not be empty')\n }\n return encodeURIComponent(s)\n })\n return `${series}\\x00${parts.join('/')}`\n}\n\nexport interface SequenceHandle {\n /** Atomically allocate and return the next value (1, 2, 3, …). Deferred series resolve at the next pass. */\n next(opts?: NextOptions): Promise<number>\n /** Read the current value without allocating. Returns 0 if never used. */\n peek(): Promise<number>\n /**\n * Set-if-greater: advance the counter to at least `n`. A no-op if the\n * current value is already `>= n` (so it never rewinds), and `seedTo(0)` is\n * a no-op. Idempotent and CAS-safe under concurrent `next()` / `seedTo()`.\n *\n * Use after a bundle / CSV import to fast-forward the counter past the\n * highest imported serial, so subsequent `next()` calls cannot re-use a\n * number that is already on a record.\n *\n * Online-only: throws {@link SequenceOfflineError} on a non-CAS store.\n */\n seedTo(n: number): Promise<void>\n}\n\nasync function sleepBackoff(attempt: number): Promise<void> {\n // Exponential backoff with full jitter to break the thundering herd\n // when many writers contend on the same counter row.\n const ceil = Math.min(2 ** attempt, 32)\n const ms = Math.floor(Math.random() * ceil)\n await new Promise((r) => setTimeout(r, ms))\n}\n\n/** Per-call context the vault assembles to build a {@link SequenceStore}. */\nexport interface SequenceStoreOptions {\n adapter: NoydbStore\n vault: string\n encrypted: boolean\n getDEK: (collectionName: string) => Promise<EnclaveKey>\n actor: string\n}\n\nexport class SequenceStore {\n private readonly adapter: NoydbStore\n private readonly vault: string\n private readonly encrypted: boolean\n private readonly getDEK: (collectionName: string) => Promise<EnclaveKey>\n private readonly actor: string\n /**\n * Memoized DEK promise. The `_sequences` collection DEK is created on\n * first access; without sharing one promise, a burst of concurrent\n * `next()` calls would each trigger DEK creation and diverge (one\n * writer's ciphertext unreadable by another). One shared promise → one\n * DEK.\n */\n private dekPromise: Promise<EnclaveKey> | null = null\n\n constructor(opts: SequenceStoreOptions) {\n this.adapter = opts.adapter\n this.vault = opts.vault\n this.encrypted = opts.encrypted\n this.getDEK = opts.getDEK\n this.actor = opts.actor\n }\n\n /** A handle bound to one sequence name. */\n handle(name: string): SequenceHandle {\n return {\n next: () => this.next(name),\n peek: () => this.peek(name),\n seedTo: (n) => this.seedTo(name, n),\n }\n }\n\n private assertOnline(): void {\n if (this.adapter.capabilities?.casAtomic !== true) {\n throw new SequenceOfflineError()\n }\n }\n\n private dek(): Promise<EnclaveKey> {\n if (!this.dekPromise) this.dekPromise = this.getDEK(SEQUENCE_COLLECTION)\n return this.dekPromise\n }\n\n private async read(name: string): Promise<{ env: EncryptedEnvelope | null; value: number }> {\n const env = await this.adapter.get(this.vault, SEQUENCE_COLLECTION, name)\n if (!env) return { env: null, value: 0 }\n const json = this.encrypted ? await openEnvelopeJson(env, await this.dek()) : env._data\n const state = JSON.parse(json) as SequenceState\n return { env, value: state.value }\n }\n\n private async encryptState(name: string, state: SequenceState, version: number): Promise<EncryptedEnvelope> {\n const json = JSON.stringify(state)\n if (!this.encrypted) {\n return buildRecordEnvelope({ collection: SEQUENCE_COLLECTION, id: name }, { version, iv: '', data: json, by: this.actor })\n }\n const { iv, data } = await encrypt(json, await this.dek())\n return buildRecordEnvelope({ collection: SEQUENCE_COLLECTION, id: name }, { version, iv, data, by: this.actor })\n }\n\n async peek(name: string): Promise<number> {\n return (await this.read(name)).value\n }\n\n async next(name: string): Promise<number> {\n this.assertOnline()\n let lastConflict: ConflictError | undefined\n for (let attempt = 0; attempt < MAX_NEXT_ATTEMPTS; attempt++) {\n const { env, value } = await this.read(name)\n const nextValue = value + 1\n const expectedVersion = env?._v ?? 0 // 0 ≡ \"must not yet exist\" (create)\n const envelope = await this.encryptState(name, { value: nextValue }, expectedVersion + 1)\n try {\n await this.adapter.put(this.vault, SEQUENCE_COLLECTION, name, envelope, expectedVersion)\n return nextValue\n } catch (err) {\n if (isConflictError(err)) {\n lastConflict = err\n if (attempt < MAX_NEXT_ATTEMPTS - 1) await sleepBackoff(attempt)\n continue\n }\n throw err\n }\n }\n void lastConflict\n throw new SequenceContentionError(name, MAX_NEXT_ATTEMPTS)\n }\n\n async seedTo(name: string, n: number): Promise<void> {\n this.assertOnline()\n if (n <= 0) return // set-if-greater: 0 (and any non-positive seed) is a no-op\n let lastConflict: ConflictError | undefined\n for (let attempt = 0; attempt < MAX_NEXT_ATTEMPTS; attempt++) {\n const { env, value } = await this.read(name)\n if (value >= n) return // already at or past the floor — no write, idempotent\n const expectedVersion = env?._v ?? 0 // 0 ≡ \"must not yet exist\" (create)\n const envelope = await this.encryptState(name, { value: n }, expectedVersion + 1)\n try {\n await this.adapter.put(this.vault, SEQUENCE_COLLECTION, name, envelope, expectedVersion)\n return\n } catch (err) {\n if (isConflictError(err)) {\n lastConflict = err\n if (attempt < MAX_NEXT_ATTEMPTS - 1) await sleepBackoff(attempt)\n continue\n }\n throw err\n }\n }\n void lastConflict\n throw new SequenceContentionError(name, MAX_NEXT_ATTEMPTS)\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-IGJCYUT5.js";
|
|
10
10
|
import {
|
|
11
11
|
applyI18nLocale
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7LLKPODL.js";
|
|
13
13
|
import {
|
|
14
14
|
viaBinder
|
|
15
15
|
} from "./chunk-RVTOCAHQ.js";
|
|
@@ -361,4 +361,4 @@ export {
|
|
|
361
361
|
groupAndReduce,
|
|
362
362
|
GroupedReduction
|
|
363
363
|
};
|
|
364
|
-
//# sourceMappingURL=chunk-
|
|
364
|
+
//# sourceMappingURL=chunk-3JQVA527.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ATTESTATIONS_COLLECTION,
|
|
3
3
|
loadOrCreateSigner
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-C3YP5KKS.js";
|
|
5
5
|
import {
|
|
6
6
|
generateULID
|
|
7
7
|
} from "./chunk-4AOERLTV.js";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from "./chunk-QTDAPDDV.js";
|
|
11
11
|
import {
|
|
12
12
|
NOYDB_FORMAT_VERSION
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5UGEGEIJ.js";
|
|
14
14
|
import {
|
|
15
15
|
AttestationError
|
|
16
16
|
} from "./chunk-I64WQSN3.js";
|
|
@@ -56,4 +56,4 @@ async function issueAttestationCore(ctx, args) {
|
|
|
56
56
|
export {
|
|
57
57
|
issueAttestationCore
|
|
58
58
|
};
|
|
59
|
-
//# sourceMappingURL=chunk-
|
|
59
|
+
//# sourceMappingURL=chunk-4GR422R5.js.map
|