@noy-db/hub 0.2.0-pre.1 → 0.2.0-pre.10
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/aggregate/index.cjs +9 -0
- package/dist/aggregate/index.cjs.map +1 -1
- package/dist/aggregate/index.d.cts +2 -2
- package/dist/aggregate/index.d.ts +2 -2
- package/dist/aggregate/index.js +4 -4
- package/dist/attestation/index.cjs +305 -0
- package/dist/attestation/index.cjs.map +1 -0
- package/dist/attestation/index.d.cts +52 -0
- package/dist/attestation/index.d.ts +52 -0
- package/dist/attestation/index.js +36 -0
- package/dist/attestation/index.js.map +1 -0
- package/dist/blobs/index.cjs.map +1 -1
- package/dist/blobs/index.d.cts +7 -6
- package/dist/blobs/index.d.ts +7 -6
- package/dist/blobs/index.js +10 -8
- package/dist/blobs/index.js.map +1 -1
- package/dist/bundle/index.cjs +18899 -129
- package/dist/bundle/index.cjs.map +1 -1
- package/dist/bundle/index.d.cts +175 -6
- package/dist/bundle/index.d.ts +175 -6
- package/dist/bundle/index.js +533 -5
- package/dist/bundle/index.js.map +1 -1
- package/dist/{chunk-6HPZY4ON.js → chunk-26NK23DZ.js} +9 -4
- package/dist/chunk-26NK23DZ.js.map +1 -0
- package/dist/{chunk-XGSOTWYX.js → chunk-2LPPNWF6.js} +3 -3
- package/dist/{chunk-5SCJ5UEF.js → chunk-2N62W5YP.js} +3 -3
- package/dist/{chunk-537VFZTR.js → chunk-3LPV6BXR.js} +4 -4
- package/dist/{chunk-UA4RI7OT.js → chunk-4CLICFEY.js} +5 -5
- package/dist/chunk-4CLICFEY.js.map +1 -0
- package/dist/chunk-4USCAEDT.js +10529 -0
- package/dist/chunk-4USCAEDT.js.map +1 -0
- package/dist/chunk-5IXJGFF2.js +83 -0
- package/dist/chunk-5IXJGFF2.js.map +1 -0
- package/dist/{chunk-HB3Z2GCR.js → chunk-5OEJ6GOT.js} +2 -2
- package/dist/chunk-5OEJ6GOT.js.map +1 -0
- package/dist/chunk-5OX6XVNS.js +79 -0
- package/dist/chunk-5OX6XVNS.js.map +1 -0
- package/dist/{chunk-VMIO4IXG.js → chunk-6EOXTJS2.js} +6 -229
- package/dist/chunk-6EOXTJS2.js.map +1 -0
- package/dist/{chunk-UZXLQCHP.js → chunk-6T2UDBKG.js} +2 -2
- package/dist/chunk-6T2UDBKG.js.map +1 -0
- package/dist/{chunk-23TTQXVO.js → chunk-6YLPHBKR.js} +214 -9
- package/dist/chunk-6YLPHBKR.js.map +1 -0
- package/dist/{chunk-Z72JH4KG.js → chunk-7CEGU63S.js} +5 -35
- package/dist/chunk-7CEGU63S.js.map +1 -0
- package/dist/{chunk-PEULZC6M.js → chunk-A3JMGXPG.js} +8 -1
- package/dist/chunk-A3JMGXPG.js.map +1 -0
- package/dist/{chunk-7H6DOO3E.js → chunk-BB27JMWB.js} +211 -36
- package/dist/chunk-BB27JMWB.js.map +1 -0
- package/dist/{chunk-I6MX32UC.js → chunk-BDV7INMP.js} +4 -4
- package/dist/{chunk-MKSA2V7A.js → chunk-C3WE6UJY.js} +2 -2
- package/dist/{chunk-FCXOFQAJ.js → chunk-CH22FZHT.js} +19 -2
- package/dist/chunk-CH22FZHT.js.map +1 -0
- package/dist/{chunk-DYBQG5PQ.js → chunk-CXFOITNS.js} +2 -2
- package/dist/{chunk-5ZGZ6HIZ.js → chunk-CXJG63MA.js} +11 -2
- package/dist/chunk-CXJG63MA.js.map +1 -0
- package/dist/{chunk-EGQYGYIU.js → chunk-DAP2XL7Q.js} +3 -3
- package/dist/chunk-DAP2XL7Q.js.map +1 -0
- package/dist/{chunk-4TFSM22V.js → chunk-DJRWA3Q5.js} +4 -4
- package/dist/chunk-DRXIZOFV.js +233 -0
- package/dist/chunk-DRXIZOFV.js.map +1 -0
- package/dist/{chunk-DPMFBCV6.js → chunk-FO3UEG4S.js} +20 -3
- package/dist/chunk-FO3UEG4S.js.map +1 -0
- package/dist/{chunk-SIZWEV2Y.js → chunk-GAUEWM7D.js} +7 -5
- package/dist/chunk-GAUEWM7D.js.map +1 -0
- package/dist/{chunk-NIOHFJPJ.js → chunk-GNHAC43Q.js} +218 -119
- package/dist/chunk-GNHAC43Q.js.map +1 -0
- package/dist/chunk-HHOO7HGH.js +57 -0
- package/dist/chunk-HHOO7HGH.js.map +1 -0
- package/dist/{chunk-PA6R5ZCI.js → chunk-HQSQC2XL.js} +5 -5
- package/dist/chunk-HQSQC2XL.js.map +1 -0
- package/dist/chunk-IMYKDWB4.js +139 -0
- package/dist/chunk-IMYKDWB4.js.map +1 -0
- package/dist/{chunk-5DWL3JBF.js → chunk-LSTBFLL2.js} +2 -2
- package/dist/{chunk-ADQ5MQ54.js → chunk-O6EJ6WTI.js} +163 -2
- package/dist/chunk-O6EJ6WTI.js.map +1 -0
- package/dist/{chunk-OMLIZL2P.js → chunk-PC6ZEDRL.js} +12 -2
- package/dist/{chunk-OMLIZL2P.js.map → chunk-PC6ZEDRL.js.map} +1 -1
- package/dist/chunk-PM3QYWUU.js +251 -0
- package/dist/chunk-PM3QYWUU.js.map +1 -0
- package/dist/{chunk-34YSDCDP.js → chunk-PVUUIWHY.js} +2 -2
- package/dist/{chunk-CBAHB2BF.js → chunk-PXTQPZO4.js} +7 -70
- package/dist/chunk-PXTQPZO4.js.map +1 -0
- package/dist/{chunk-DYECX3IX.js → chunk-QSOYKKMD.js} +4 -4
- package/dist/chunk-QSOYKKMD.js.map +1 -0
- package/dist/{chunk-WCA2NROQ.js → chunk-R233SLY3.js} +2 -2
- package/dist/chunk-RC6SU5NO.js +36 -0
- package/dist/chunk-RC6SU5NO.js.map +1 -0
- package/dist/{chunk-P7EQ2S5O.js → chunk-RRNA5GKT.js} +2 -2
- package/dist/{chunk-ZNOEIM6Y.js → chunk-RYIL3PI2.js} +2 -2
- package/dist/chunk-STNPB3UM.js +9 -0
- package/dist/chunk-STNPB3UM.js.map +1 -0
- package/dist/{chunk-MRIBLZL3.js → chunk-TV3YZ35S.js} +5 -1
- package/dist/chunk-TV3YZ35S.js.map +1 -0
- package/dist/chunk-TY32C732.js +59 -0
- package/dist/chunk-TY32C732.js.map +1 -0
- package/dist/{chunk-YMYK7US4.js → chunk-WIBHRONM.js} +2 -2
- package/dist/chunk-WIBHRONM.js.map +1 -0
- package/dist/{chunk-YS3POABP.js → chunk-WIRRPTFH.js} +1 -1
- package/dist/chunk-WIRRPTFH.js.map +1 -0
- package/dist/{chunk-KESP7GOK.js → chunk-Y26YV5R3.js} +3 -3
- package/dist/{chunk-MIQHZESA.js → chunk-YM7LFCG7.js} +5 -5
- package/dist/{chunk-MIQHZESA.js.map → chunk-YM7LFCG7.js.map} +1 -1
- package/dist/{chunk-2AXFIYHT.js → chunk-Z6FNBOTC.js} +1 -1
- package/dist/chunk-Z6FNBOTC.js.map +1 -0
- package/dist/{chunk-RD5LYKD6.js → chunk-ZROPXHJY.js} +2 -2
- package/dist/chunk-ZROPXHJY.js.map +1 -0
- package/dist/consent/index.cjs.map +1 -1
- package/dist/consent/index.d.cts +7 -6
- package/dist/consent/index.d.ts +7 -6
- package/dist/consent/index.js +3 -3
- package/dist/{crypto-A7FRXYHC.js → crypto-2CRLG4F4.js} +3 -3
- package/dist/{delegation-YBA4X4JN.js → delegation-ZTRT2PRV.js} +5 -5
- package/dist/derivations/index.cjs +18 -1
- package/dist/derivations/index.cjs.map +1 -1
- package/dist/derivations/index.d.cts +10 -9
- package/dist/derivations/index.d.ts +10 -9
- package/dist/derivations/index.js +4 -4
- package/dist/{dev-unlock-DRwVSy2S.d.cts → dev-unlock-AglVnkPY.d.cts} +1 -1
- package/dist/{dev-unlock-D9s-loPr.d.ts → dev-unlock-BOEYl1xl.d.ts} +1 -1
- package/dist/discriminant-BN9REW3o.d.cts +60 -0
- package/dist/discriminant-BN9REW3o.d.ts +60 -0
- package/dist/executor-S76VN45G.js +8 -0
- package/dist/executor-UCXLIGLW.js +11 -0
- package/dist/executor-ZCNZJMGR.js +8 -0
- package/dist/{fanout-sidecar-VJ52RIEY.js → fanout-sidecar-OKPMMPLG.js} +2 -2
- package/dist/fanout-sidecar-OKPMMPLG.js.map +1 -0
- package/dist/guards/index.cjs +7 -0
- package/dist/guards/index.cjs.map +1 -1
- package/dist/guards/index.d.cts +8 -7
- package/dist/guards/index.d.ts +8 -7
- package/dist/guards/index.js +4 -4
- package/dist/{hash-DXXXusyk.d.ts → hash-B9m3_fhj.d.ts} +1 -1
- package/dist/{hash-DtRih9MQ.d.cts → hash-RVqz2zi8.d.cts} +1 -1
- package/dist/history/index.cjs +2 -2
- package/dist/history/index.cjs.map +1 -1
- package/dist/history/index.d.cts +8 -7
- package/dist/history/index.d.ts +8 -7
- package/dist/history/index.js +6 -6
- package/dist/i18n/index.cjs +287 -27
- package/dist/i18n/index.cjs.map +1 -1
- package/dist/i18n/index.d.cts +7 -6
- package/dist/i18n/index.d.ts +7 -6
- package/dist/i18n/index.js +21 -6
- package/dist/i18n/index.js.map +1 -1
- package/dist/{index-CmVgTkqk.d.cts → index-B8bjExET.d.cts} +214 -18
- package/dist/{index-CNwA-B6-.d.ts → index-DfUbNad8.d.ts} +214 -18
- package/dist/index.cjs +3329 -446
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +43 -22
- package/dist/index.d.ts +43 -22
- package/dist/index.js +179 -8799
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.cjs +5 -1
- package/dist/indexing/index.cjs.map +1 -1
- package/dist/indexing/index.d.cts +3 -3
- package/dist/indexing/index.d.ts +3 -3
- package/dist/indexing/index.js +4 -4
- package/dist/issue-3W6IVLKH.js +12 -0
- package/dist/{lazy-builder-Rpd-V3jP.d.ts → lazy-builder-Ci5_YG73.d.cts} +2 -2
- package/dist/{lazy-builder-C-rPfWG0.d.cts → lazy-builder-D5GU14TS.d.ts} +2 -2
- package/dist/{ledger-3TXNP47J.js → ledger-O7FXOG3D.js} +6 -6
- package/dist/materialized-views/index.cjs +21 -2
- package/dist/materialized-views/index.cjs.map +1 -1
- package/dist/materialized-views/index.d.cts +23 -20
- package/dist/materialized-views/index.d.ts +23 -20
- package/dist/materialized-views/index.js +12 -12
- package/dist/noydb-YAZNH5TI.js +34 -0
- package/dist/overlay-views/index.cjs +11 -1
- package/dist/overlay-views/index.cjs.map +1 -1
- package/dist/overlay-views/index.d.cts +10 -9
- package/dist/overlay-views/index.d.ts +10 -9
- package/dist/overlay-views/index.js +6 -4
- package/dist/periods/index.cjs.map +1 -1
- package/dist/periods/index.d.cts +7 -6
- package/dist/periods/index.d.ts +7 -6
- package/dist/periods/index.js +6 -6
- package/dist/{predicate-Dnu81tsS.d.cts → predicate-Bt5ft-9c.d.cts} +28 -3
- package/dist/{predicate-Dnu81tsS.d.ts → predicate-Bt5ft-9c.d.ts} +28 -3
- package/dist/{public-envelope-PY6NKFLI.js → public-envelope-HMYHZIRH.js} +4 -4
- package/dist/query/index.cjs +255 -6
- package/dist/query/index.cjs.map +1 -1
- package/dist/query/index.d.cts +3 -3
- package/dist/query/index.d.ts +3 -3
- package/dist/query/index.js +12 -6
- package/dist/registry-DKEXOJVO.js +7 -0
- package/dist/{registry-3L3N3PTG.js → registry-ST2VNFZC.js} +3 -3
- package/dist/registry-UFIK7CSR.js +8 -0
- package/dist/registry-ZGYYSM5I.js +8 -0
- package/dist/registry-ZGYYSM5I.js.map +1 -0
- package/dist/revoke-S6JMSLUN.js +17 -0
- package/dist/revoke-S6JMSLUN.js.map +1 -0
- package/dist/session/index.cjs.map +1 -1
- package/dist/session/index.d.cts +8 -7
- package/dist/session/index.d.ts +8 -7
- package/dist/session/index.js +3 -3
- package/dist/shadow/index.cjs.map +1 -1
- package/dist/shadow/index.d.cts +7 -6
- package/dist/shadow/index.d.ts +7 -6
- package/dist/shadow/index.js +2 -2
- package/dist/signer-7NPTB3SQ.js +18 -0
- package/dist/signer-7NPTB3SQ.js.map +1 -0
- package/dist/snapshots/index.cjs +937 -0
- package/dist/snapshots/index.cjs.map +1 -0
- package/dist/snapshots/index.d.cts +28 -0
- package/dist/snapshots/index.d.ts +28 -0
- package/dist/snapshots/index.js +152 -0
- package/dist/snapshots/index.js.map +1 -0
- package/dist/{stale-HSC5YO2O.js → stale-VKXSXJF4.js} +2 -2
- package/dist/stale-VKXSXJF4.js.map +1 -0
- package/dist/store/index.cjs.map +1 -1
- package/dist/store/index.d.cts +7 -6
- package/dist/store/index.d.ts +7 -6
- package/dist/store/index.js +2 -2
- package/dist/{strategy-DSTrsZ8t.d.cts → strategy-CT2LCKAX.d.cts} +12 -0
- package/dist/{strategy-DSTrsZ8t.d.ts → strategy-CT2LCKAX.d.ts} +12 -0
- package/dist/sync/index.cjs.map +1 -1
- package/dist/sync/index.d.cts +6 -5
- package/dist/sync/index.d.ts +6 -5
- package/dist/sync/index.js +4 -4
- package/dist/team/index.cjs +1 -1
- package/dist/team/index.cjs.map +1 -1
- package/dist/team/index.d.cts +7 -6
- package/dist/team/index.d.ts +7 -6
- package/dist/team/index.js +13 -11
- package/dist/tx/index.cjs +82 -2
- package/dist/tx/index.cjs.map +1 -1
- package/dist/tx/index.d.cts +8 -7
- package/dist/tx/index.d.ts +8 -7
- package/dist/tx/index.js +56 -3
- package/dist/tx/index.js.map +1 -1
- package/dist/{types-DW9RGSSs.d.ts → types-CaNQm4i8.d.ts} +1270 -259
- package/dist/{types-C4lwMKKF.d.cts → types-n2_IfwlQ.d.cts} +1270 -259
- package/dist/{index-4agOpzqd.d.ts → ulid-B9SMWj5i.d.ts} +64 -46
- package/dist/{index-hdFvZkBP.d.cts → ulid-CLMjmyhG.d.cts} +64 -46
- package/dist/util/index.cjs +7 -0
- package/dist/util/index.cjs.map +1 -1
- package/dist/util/index.d.cts +2 -0
- package/dist/util/index.d.ts +2 -0
- package/dist/util/index.js +5 -1
- package/dist/util/index.js.map +1 -1
- package/dist/{with-derivation-g-pGoMzL.d.ts → with-derivation-CVIOPTUf.d.ts} +1 -1
- package/dist/{with-derivation-C8LDlV7t.d.cts → with-derivation-aKrtS7Jj.d.cts} +1 -1
- package/dist/{with-guard-jI1x9Z3k.d.cts → with-guard-DZQbPzoP.d.cts} +1 -1
- package/dist/{with-guard-DWOCK4Ca.d.ts → with-guard-DseETUrF.d.ts} +1 -1
- package/dist/{with-materialized-view-DaKR-N6J.d.ts → with-materialized-view-C1eA1_T_.d.cts} +2 -2
- package/dist/{with-materialized-view-DcTx4H3j.d.cts → with-materialized-view-DaYaE8-Q.d.ts} +2 -2
- package/dist/{with-overlayed-view-N7jYuNOS.d.ts → with-overlayed-view-DQsh2p8H.d.ts} +2 -2
- package/dist/{with-overlayed-view-D-6oWAgM.d.cts → with-overlayed-view-DleJfKcV.d.cts} +2 -2
- package/package.json +27 -4
- package/dist/chunk-23TTQXVO.js.map +0 -1
- package/dist/chunk-2AXFIYHT.js.map +0 -1
- package/dist/chunk-5ZGZ6HIZ.js.map +0 -1
- package/dist/chunk-6HPZY4ON.js.map +0 -1
- package/dist/chunk-7H6DOO3E.js.map +0 -1
- package/dist/chunk-ADQ5MQ54.js.map +0 -1
- package/dist/chunk-CBAHB2BF.js.map +0 -1
- package/dist/chunk-DPMFBCV6.js.map +0 -1
- package/dist/chunk-DYECX3IX.js.map +0 -1
- package/dist/chunk-EGQYGYIU.js.map +0 -1
- package/dist/chunk-FCXOFQAJ.js.map +0 -1
- package/dist/chunk-HB3Z2GCR.js.map +0 -1
- package/dist/chunk-MRIBLZL3.js.map +0 -1
- package/dist/chunk-NIOHFJPJ.js.map +0 -1
- package/dist/chunk-PA6R5ZCI.js.map +0 -1
- package/dist/chunk-PEULZC6M.js.map +0 -1
- package/dist/chunk-RD5LYKD6.js.map +0 -1
- package/dist/chunk-SIZWEV2Y.js.map +0 -1
- package/dist/chunk-UA4RI7OT.js.map +0 -1
- package/dist/chunk-UZXLQCHP.js.map +0 -1
- package/dist/chunk-VMIO4IXG.js.map +0 -1
- package/dist/chunk-YMYK7US4.js.map +0 -1
- package/dist/chunk-YS3POABP.js.map +0 -1
- package/dist/chunk-Z72JH4KG.js.map +0 -1
- package/dist/executor-7E3VFGW7.js +0 -11
- package/dist/executor-CEWX2FQI.js +0 -8
- package/dist/executor-X4SQ3ZLC.js +0 -8
- package/dist/fanout-sidecar-VJ52RIEY.js.map +0 -1
- package/dist/registry-O47PUPSY.js +0 -8
- package/dist/registry-RFGGMVNJ.js +0 -7
- package/dist/registry-WLLMODKN.js +0 -8
- /package/dist/{chunk-XGSOTWYX.js.map → chunk-2LPPNWF6.js.map} +0 -0
- /package/dist/{chunk-5SCJ5UEF.js.map → chunk-2N62W5YP.js.map} +0 -0
- /package/dist/{chunk-537VFZTR.js.map → chunk-3LPV6BXR.js.map} +0 -0
- /package/dist/{chunk-I6MX32UC.js.map → chunk-BDV7INMP.js.map} +0 -0
- /package/dist/{chunk-MKSA2V7A.js.map → chunk-C3WE6UJY.js.map} +0 -0
- /package/dist/{chunk-DYBQG5PQ.js.map → chunk-CXFOITNS.js.map} +0 -0
- /package/dist/{chunk-4TFSM22V.js.map → chunk-DJRWA3Q5.js.map} +0 -0
- /package/dist/{chunk-5DWL3JBF.js.map → chunk-LSTBFLL2.js.map} +0 -0
- /package/dist/{chunk-34YSDCDP.js.map → chunk-PVUUIWHY.js.map} +0 -0
- /package/dist/{chunk-WCA2NROQ.js.map → chunk-R233SLY3.js.map} +0 -0
- /package/dist/{chunk-P7EQ2S5O.js.map → chunk-RRNA5GKT.js.map} +0 -0
- /package/dist/{chunk-ZNOEIM6Y.js.map → chunk-RYIL3PI2.js.map} +0 -0
- /package/dist/{chunk-KESP7GOK.js.map → chunk-Y26YV5R3.js.map} +0 -0
- /package/dist/{crypto-A7FRXYHC.js.map → crypto-2CRLG4F4.js.map} +0 -0
- /package/dist/{delegation-YBA4X4JN.js.map → delegation-ZTRT2PRV.js.map} +0 -0
- /package/dist/{executor-7E3VFGW7.js.map → executor-S76VN45G.js.map} +0 -0
- /package/dist/{executor-CEWX2FQI.js.map → executor-UCXLIGLW.js.map} +0 -0
- /package/dist/{executor-X4SQ3ZLC.js.map → executor-ZCNZJMGR.js.map} +0 -0
- /package/dist/{ledger-3TXNP47J.js.map → issue-3W6IVLKH.js.map} +0 -0
- /package/dist/{public-envelope-PY6NKFLI.js.map → ledger-O7FXOG3D.js.map} +0 -0
- /package/dist/{registry-3L3N3PTG.js.map → noydb-YAZNH5TI.js.map} +0 -0
- /package/dist/{registry-O47PUPSY.js.map → public-envelope-HMYHZIRH.js.map} +0 -0
- /package/dist/{registry-RFGGMVNJ.js.map → registry-DKEXOJVO.js.map} +0 -0
- /package/dist/{registry-WLLMODKN.js.map → registry-ST2VNFZC.js.map} +0 -0
- /package/dist/{stale-HSC5YO2O.js.map → registry-UFIK7CSR.js.map} +0 -0
package/dist/tx/index.js
CHANGED
|
@@ -3,12 +3,65 @@ import {
|
|
|
3
3
|
TxContext,
|
|
4
4
|
TxVault,
|
|
5
5
|
runTransaction
|
|
6
|
-
} from "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
} from "../chunk-26NK23DZ.js";
|
|
7
|
+
import "../chunk-FZU343FL.js";
|
|
8
|
+
import "../chunk-O6EJ6WTI.js";
|
|
9
|
+
|
|
10
|
+
// src/tx/dry-run.ts
|
|
11
|
+
var SEP = " ";
|
|
12
|
+
var keyOf = (op) => `${op.vaultName}${SEP}${op.collectionName}${SEP}${op.id}`;
|
|
13
|
+
async function runDryRun(db, fn) {
|
|
14
|
+
const ctx = new TxContext(db);
|
|
15
|
+
await fn(ctx);
|
|
16
|
+
const lastOp = /* @__PURE__ */ new Map();
|
|
17
|
+
for (const op of ctx._ops) lastOp.set(keyOf(op), op);
|
|
18
|
+
const affected = [];
|
|
19
|
+
const guardViolations = [];
|
|
20
|
+
for (const op of lastOp.values()) {
|
|
21
|
+
const v = db.vault(op.vaultName);
|
|
22
|
+
const coll = v.collection(op.collectionName);
|
|
23
|
+
const before = await coll.get(op.id);
|
|
24
|
+
if (op.type === "delete") {
|
|
25
|
+
affected.push({ vault: op.vaultName, op: "delete", collection: op.collectionName, docId: op.id, before, after: null });
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const after = op.record ?? null;
|
|
29
|
+
affected.push({
|
|
30
|
+
vault: op.vaultName,
|
|
31
|
+
op: before === null ? "create" : "update",
|
|
32
|
+
collection: op.collectionName,
|
|
33
|
+
docId: op.id,
|
|
34
|
+
before,
|
|
35
|
+
after
|
|
36
|
+
});
|
|
37
|
+
const registry = v._getGuardRegistry();
|
|
38
|
+
if (!registry) continue;
|
|
39
|
+
const guards = registry.guardsFor(op.collectionName);
|
|
40
|
+
if (guards.length === 0) continue;
|
|
41
|
+
const facade = v._getReadOnlyFacade();
|
|
42
|
+
if (!facade) continue;
|
|
43
|
+
const gctx = { existing: before, vault: facade, userId: v.userId, role: v.role };
|
|
44
|
+
try {
|
|
45
|
+
await registry.runChecks(op.collectionName, after, gctx);
|
|
46
|
+
const { GuardExecutor } = await import("../executor-ZCNZJMGR.js");
|
|
47
|
+
for (const g of guards) {
|
|
48
|
+
await GuardExecutor.checkFrozenFields(g, op.id, before, after);
|
|
49
|
+
}
|
|
50
|
+
} catch (err) {
|
|
51
|
+
guardViolations.push({
|
|
52
|
+
vault: op.vaultName,
|
|
53
|
+
collection: op.collectionName,
|
|
54
|
+
docId: op.id,
|
|
55
|
+
message: err instanceof Error ? err.message : String(err)
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { affected, guardViolations };
|
|
60
|
+
}
|
|
8
61
|
|
|
9
62
|
// src/tx/active.ts
|
|
10
63
|
function withTransactions() {
|
|
11
|
-
return { runTransaction };
|
|
64
|
+
return { runTransaction, runDryRun };
|
|
12
65
|
}
|
|
13
66
|
export {
|
|
14
67
|
TxCollection,
|
package/dist/tx/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tx/active.ts"],"sourcesContent":["/**\n * Active transactions strategy. Only reachable via `@noy-db/hub/tx`.\n */\n\nimport { runTransaction } from './transaction.js'\nimport type { TxStrategy } from './strategy.js'\n\n/**\n * Build the default transactions strategy. Pass into\n * `createNoydb({ txStrategy: withTransactions() })` to enable\n * `db.transaction(fn)
|
|
1
|
+
{"version":3,"sources":["../../src/tx/dry-run.ts","../../src/tx/active.ts"],"sourcesContent":["/**\n * Dry-run transactions. Runs the tx body to STAGE ops, then builds\n * the directly-affected diff (before = current committed via collection.get,\n * after = staged record) and collects guard violations — without executing\n * phase 2. No adapter writes, no write-hooks, no commit. MV/derivation\n * cascade is NOT simulated (v2). Mirrors the guard loop in\n * `Collection.putInternal` — keep the two in sync.\n */\nimport type { Noydb } from '../noydb.js'\nimport { TxContext, type StagedOp } from './transaction.js'\nimport type { GuardExecutor as GuardExecutorType } from '../guards/executor.js'\n\nexport interface AffectedDocument {\n readonly vault: string\n readonly op: 'create' | 'update' | 'delete'\n readonly collection: string\n readonly docId: string\n readonly before: unknown // current committed record; null when creating\n readonly after: unknown // staged record; null when deleting\n}\n\nexport interface GuardViolation {\n readonly vault: string\n readonly collection: string\n readonly docId: string\n readonly message: string\n}\n\nexport interface DryRunResult {\n readonly affected: ReadonlyArray<AffectedDocument>\n readonly guardViolations: ReadonlyArray<GuardViolation>\n}\n\nconst SEP = ' '\nconst keyOf = (op: StagedOp) => `${op.vaultName}${SEP}${op.collectionName}${SEP}${op.id}`\n\nexport async function runDryRun(\n db: Noydb,\n fn: (tx: TxContext) => unknown,\n): Promise<DryRunResult> {\n const ctx = new TxContext(db)\n await fn(ctx) // stage ops (reads see staged writes via TxCollection); nothing committed\n\n // Dedup by (vault, collection, id) — last staged op wins.\n const lastOp = new Map<string, StagedOp>()\n for (const op of ctx._ops) lastOp.set(keyOf(op), op)\n\n const affected: AffectedDocument[] = []\n const guardViolations: GuardViolation[] = []\n\n for (const op of lastOp.values()) {\n const v = db.vault(op.vaultName)\n const coll = v.collection(op.collectionName)\n const before = await coll.get(op.id)\n\n if (op.type === 'delete') {\n affected.push({ vault: op.vaultName, op: 'delete', collection: op.collectionName, docId: op.id, before, after: null })\n continue\n }\n\n const after = op.record ?? null\n affected.push({\n vault: op.vaultName,\n op: before === null ? 'create' : 'update',\n collection: op.collectionName,\n docId: op.id,\n before,\n after,\n })\n\n // Guard violations — run the SAME checks Collection.putInternal does,\n // with the SAME ctx (existing + read-only facade + userId + role), but\n // collect the first thrown error instead of aborting.\n const registry = v._getGuardRegistry()\n if (!registry) continue\n const guards = registry.guardsFor(op.collectionName)\n if (guards.length === 0) continue\n const facade = v._getReadOnlyFacade()\n if (!facade) continue\n const gctx = { existing: before as Record<string, unknown> | null, vault: facade, userId: v.userId, role: v.role }\n try {\n await registry.runChecks(op.collectionName, after as Record<string, unknown>, gctx)\n const { GuardExecutor } = (await import('../guards/executor.js')) as { GuardExecutor: typeof GuardExecutorType }\n for (const g of guards) {\n await GuardExecutor.checkFrozenFields(g, op.id, before as Record<string, unknown> | null, after as Record<string, unknown>)\n }\n } catch (err) {\n guardViolations.push({\n vault: op.vaultName,\n collection: op.collectionName,\n docId: op.id,\n message: err instanceof Error ? err.message : String(err),\n })\n }\n }\n\n return { affected, guardViolations }\n}\n","/**\n * Active transactions strategy. Only reachable via `@noy-db/hub/tx`.\n */\n\nimport { runTransaction } from './transaction.js'\nimport { runDryRun } from './dry-run.js'\nimport type { TxStrategy } from './strategy.js'\n\n/**\n * Build the default transactions strategy. Pass into\n * `createNoydb({ txStrategy: withTransactions() })` to enable\n * `db.transaction(fn)` (and `db.transaction({ dryRun: true }, fn)`).\n */\nexport function withTransactions(): TxStrategy {\n return { runTransaction, runDryRun }\n}\n"],"mappings":";;;;;;;;;;AAiCA,IAAM,MAAM;AACZ,IAAM,QAAQ,CAAC,OAAiB,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,GAAG,EAAE;AAEvF,eAAsB,UACpB,IACA,IACuB;AACvB,QAAM,MAAM,IAAI,UAAU,EAAE;AAC5B,QAAM,GAAG,GAAG;AAGZ,QAAM,SAAS,oBAAI,IAAsB;AACzC,aAAW,MAAM,IAAI,KAAM,QAAO,IAAI,MAAM,EAAE,GAAG,EAAE;AAEnD,QAAM,WAA+B,CAAC;AACtC,QAAM,kBAAoC,CAAC;AAE3C,aAAW,MAAM,OAAO,OAAO,GAAG;AAChC,UAAM,IAAI,GAAG,MAAM,GAAG,SAAS;AAC/B,UAAM,OAAO,EAAE,WAAW,GAAG,cAAc;AAC3C,UAAM,SAAS,MAAM,KAAK,IAAI,GAAG,EAAE;AAEnC,QAAI,GAAG,SAAS,UAAU;AACxB,eAAS,KAAK,EAAE,OAAO,GAAG,WAAW,IAAI,UAAU,YAAY,GAAG,gBAAgB,OAAO,GAAG,IAAI,QAAQ,OAAO,KAAK,CAAC;AACrH;AAAA,IACF;AAEA,UAAM,QAAQ,GAAG,UAAU;AAC3B,aAAS,KAAK;AAAA,MACZ,OAAO,GAAG;AAAA,MACV,IAAI,WAAW,OAAO,WAAW;AAAA,MACjC,YAAY,GAAG;AAAA,MACf,OAAO,GAAG;AAAA,MACV;AAAA,MACA;AAAA,IACF,CAAC;AAKD,UAAM,WAAW,EAAE,kBAAkB;AACrC,QAAI,CAAC,SAAU;AACf,UAAM,SAAS,SAAS,UAAU,GAAG,cAAc;AACnD,QAAI,OAAO,WAAW,EAAG;AACzB,UAAM,SAAS,EAAE,mBAAmB;AACpC,QAAI,CAAC,OAAQ;AACb,UAAM,OAAO,EAAE,UAAU,QAA0C,OAAO,QAAQ,QAAQ,EAAE,QAAQ,MAAM,EAAE,KAAK;AACjH,QAAI;AACF,YAAM,SAAS,UAAU,GAAG,gBAAgB,OAAkC,IAAI;AAClF,YAAM,EAAE,cAAc,IAAK,MAAM,OAAO,yBAAuB;AAC/D,iBAAW,KAAK,QAAQ;AACtB,cAAM,cAAc,kBAAkB,GAAG,GAAG,IAAI,QAA0C,KAAgC;AAAA,MAC5H;AAAA,IACF,SAAS,KAAK;AACZ,sBAAgB,KAAK;AAAA,QACnB,OAAO,GAAG;AAAA,QACV,YAAY,GAAG;AAAA,QACf,OAAO,GAAG;AAAA,QACV,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,EAAE,UAAU,gBAAgB;AACrC;;;ACpFO,SAAS,mBAA+B;AAC7C,SAAO,EAAE,gBAAgB,UAAU;AACrC;","names":[]}
|