@earendil-works/chord 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +129 -10
- package/dist/cell.d.ts +7 -7
- package/dist/cell.d.ts.map +1 -1
- package/dist/cell.js.map +1 -1
- package/dist/context/index.d.ts +8 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +15 -0
- package/dist/context/index.js.map +1 -1
- package/dist/contract.d.ts +51 -52
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +19 -24
- package/dist/contract.js.map +1 -1
- package/dist/delta/apply-immutable-trusted.js +3 -4
- package/dist/delta/apply-immutable-trusted.js.map +1 -1
- package/dist/delta/diff.d.ts.map +1 -1
- package/dist/delta/diff.js +5 -3
- package/dist/delta/diff.js.map +1 -1
- package/dist/delta/index.d.ts +9 -1
- package/dist/delta/index.d.ts.map +1 -1
- package/dist/delta/index.js +15 -11
- package/dist/delta/index.js.map +1 -1
- package/dist/delta/pending.d.ts +36 -0
- package/dist/delta/pending.d.ts.map +1 -0
- package/dist/delta/pending.js +143 -0
- package/dist/delta/pending.js.map +1 -0
- package/dist/delta/tracker.d.ts +12 -0
- package/dist/delta/tracker.d.ts.map +1 -1
- package/dist/delta/tracker.js +109 -39
- package/dist/delta/tracker.js.map +1 -1
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +9 -7
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/next/contracts/accepts.d.ts +81 -0
- package/dist/next/contracts/accepts.d.ts.map +1 -0
- package/dist/next/contracts/accepts.js +123 -0
- package/dist/next/contracts/accepts.js.map +1 -0
- package/dist/next/contracts/contract.d.ts +121 -0
- package/dist/next/contracts/contract.d.ts.map +1 -0
- package/dist/next/contracts/contract.js +50 -0
- package/dist/next/contracts/contract.js.map +1 -0
- package/dist/next/contracts/declare.d.ts +107 -0
- package/dist/next/contracts/declare.d.ts.map +1 -0
- package/dist/next/contracts/declare.js +136 -0
- package/dist/next/contracts/declare.js.map +1 -0
- package/dist/next/contracts/evolve.d.ts +92 -0
- package/dist/next/contracts/evolve.d.ts.map +1 -0
- package/dist/next/contracts/evolve.js +179 -0
- package/dist/next/contracts/evolve.js.map +1 -0
- package/dist/next/contracts/fingerprint.d.ts +16 -0
- package/dist/next/contracts/fingerprint.d.ts.map +1 -0
- package/dist/next/contracts/fingerprint.js +50 -0
- package/dist/next/contracts/fingerprint.js.map +1 -0
- package/dist/next/contracts/history.d.ts +71 -0
- package/dist/next/contracts/history.d.ts.map +1 -0
- package/dist/next/contracts/history.js +3 -0
- package/dist/next/contracts/history.js.map +1 -0
- package/dist/next/contracts/host-kind.d.ts +40 -0
- package/dist/next/contracts/host-kind.d.ts.map +1 -0
- package/dist/next/contracts/host-kind.js +37 -0
- package/dist/next/contracts/host-kind.js.map +1 -0
- package/dist/next/contracts/index.d.ts +7 -0
- package/dist/next/contracts/index.d.ts.map +1 -0
- package/dist/next/contracts/index.js +6 -0
- package/dist/next/contracts/index.js.map +1 -0
- package/dist/next/contracts/internal.d.ts +10 -0
- package/dist/next/contracts/internal.d.ts.map +1 -0
- package/dist/next/contracts/internal.js +9 -0
- package/dist/next/contracts/internal.js.map +1 -0
- package/dist/next/contracts/names.d.ts +3 -0
- package/dist/next/contracts/names.d.ts.map +1 -0
- package/dist/next/contracts/names.js +13 -0
- package/dist/next/contracts/names.js.map +1 -0
- package/dist/next/contracts/params.d.ts +28 -0
- package/dist/next/contracts/params.d.ts.map +1 -0
- package/dist/next/contracts/params.js +50 -0
- package/dist/next/contracts/params.js.map +1 -0
- package/dist/next/contracts/schema.d.ts +102 -0
- package/dist/next/contracts/schema.d.ts.map +1 -0
- package/dist/next/contracts/schema.js +103 -0
- package/dist/next/contracts/schema.js.map +1 -0
- package/dist/next/contracts/snapshot.d.ts +16 -0
- package/dist/next/contracts/snapshot.d.ts.map +1 -0
- package/dist/next/contracts/snapshot.js +167 -0
- package/dist/next/contracts/snapshot.js.map +1 -0
- package/dist/next/data/args.d.ts +50 -0
- package/dist/next/data/args.d.ts.map +1 -0
- package/dist/next/data/args.js +83 -0
- package/dist/next/data/args.js.map +1 -0
- package/dist/next/data/errors.d.ts +73 -0
- package/dist/next/data/errors.d.ts.map +1 -0
- package/dist/next/data/errors.js +107 -0
- package/dist/next/data/errors.js.map +1 -0
- package/dist/next/data/failure.d.ts +26 -0
- package/dist/next/data/failure.d.ts.map +1 -0
- package/dist/next/data/failure.js +72 -0
- package/dist/next/data/failure.js.map +1 -0
- package/dist/next/data/index.d.ts +4 -0
- package/dist/next/data/index.d.ts.map +1 -0
- package/dist/next/data/index.js +4 -0
- package/dist/next/data/index.js.map +1 -0
- package/dist/next/data/internal.d.ts +7 -0
- package/dist/next/data/internal.d.ts.map +1 -0
- package/dist/next/data/internal.js +8 -0
- package/dist/next/data/internal.js.map +1 -0
- package/dist/next/data/params.d.ts +20 -0
- package/dist/next/data/params.d.ts.map +1 -0
- package/dist/next/data/params.js +31 -0
- package/dist/next/data/params.js.map +1 -0
- package/dist/next/data/principal.d.ts +17 -0
- package/dist/next/data/principal.d.ts.map +1 -0
- package/dist/next/data/principal.js +41 -0
- package/dist/next/data/principal.js.map +1 -0
- package/dist/next/data/validator.d.ts +12 -0
- package/dist/next/data/validator.d.ts.map +1 -0
- package/dist/next/data/validator.js +34 -0
- package/dist/next/data/validator.js.map +1 -0
- package/dist/next/documents/address-source.d.ts +20 -0
- package/dist/next/documents/address-source.d.ts.map +1 -0
- package/dist/next/documents/address-source.js +44 -0
- package/dist/next/documents/address-source.js.map +1 -0
- package/dist/next/documents/definition.d.ts +84 -0
- package/dist/next/documents/definition.d.ts.map +1 -0
- package/dist/next/documents/definition.js +73 -0
- package/dist/next/documents/definition.js.map +1 -0
- package/dist/next/documents/documents.d.ts +106 -0
- package/dist/next/documents/documents.d.ts.map +1 -0
- package/dist/next/documents/documents.js +224 -0
- package/dist/next/documents/documents.js.map +1 -0
- package/dist/next/documents/fence.d.ts +9 -0
- package/dist/next/documents/fence.d.ts.map +1 -0
- package/dist/next/documents/fence.js +15 -0
- package/dist/next/documents/fence.js.map +1 -0
- package/dist/next/documents/handles.d.ts +76 -0
- package/dist/next/documents/handles.d.ts.map +1 -0
- package/dist/next/documents/handles.js +66 -0
- package/dist/next/documents/handles.js.map +1 -0
- package/dist/next/documents/index.d.ts +4 -0
- package/dist/next/documents/index.d.ts.map +1 -0
- package/dist/next/documents/index.js +3 -0
- package/dist/next/documents/index.js.map +1 -0
- package/dist/next/documents/internal.d.ts +9 -0
- package/dist/next/documents/internal.d.ts.map +1 -0
- package/dist/next/documents/internal.js +9 -0
- package/dist/next/documents/internal.js.map +1 -0
- package/dist/next/documents/keyed-slot.d.ts +103 -0
- package/dist/next/documents/keyed-slot.d.ts.map +1 -0
- package/dist/next/documents/keyed-slot.js +395 -0
- package/dist/next/documents/keyed-slot.js.map +1 -0
- package/dist/next/documents/line.d.ts +7 -0
- package/dist/next/documents/line.d.ts.map +1 -0
- package/dist/next/documents/line.js +14 -0
- package/dist/next/documents/line.js.map +1 -0
- package/dist/next/documents/persistence.d.ts +104 -0
- package/dist/next/documents/persistence.d.ts.map +1 -0
- package/dist/next/documents/persistence.js +128 -0
- package/dist/next/documents/persistence.js.map +1 -0
- package/dist/next/documents/residency.d.ts +31 -0
- package/dist/next/documents/residency.d.ts.map +1 -0
- package/dist/next/documents/residency.js +93 -0
- package/dist/next/documents/residency.js.map +1 -0
- package/dist/next/documents/slot.d.ts +109 -0
- package/dist/next/documents/slot.d.ts.map +1 -0
- package/dist/next/documents/slot.js +181 -0
- package/dist/next/documents/slot.js.map +1 -0
- package/dist/next/documents/transaction.d.ts +133 -0
- package/dist/next/documents/transaction.d.ts.map +1 -0
- package/dist/next/documents/transaction.js +409 -0
- package/dist/next/documents/transaction.js.map +1 -0
- package/dist/next/host/activity.d.ts +31 -0
- package/dist/next/host/activity.d.ts.map +1 -0
- package/dist/next/host/activity.js +40 -0
- package/dist/next/host/activity.js.map +1 -0
- package/dist/next/host/adapted.d.ts +49 -0
- package/dist/next/host/adapted.d.ts.map +1 -0
- package/dist/next/host/adapted.js +214 -0
- package/dist/next/host/adapted.js.map +1 -0
- package/dist/next/host/attempt.d.ts +278 -0
- package/dist/next/host/attempt.d.ts.map +1 -0
- package/dist/next/host/attempt.js +1072 -0
- package/dist/next/host/attempt.js.map +1 -0
- package/dist/next/host/backoff.d.ts +29 -0
- package/dist/next/host/backoff.d.ts.map +1 -0
- package/dist/next/host/backoff.js +69 -0
- package/dist/next/host/backoff.js.map +1 -0
- package/dist/next/host/ctx.d.ts +47 -0
- package/dist/next/host/ctx.d.ts.map +1 -0
- package/dist/next/host/ctx.js +108 -0
- package/dist/next/host/ctx.js.map +1 -0
- package/dist/next/host/deadline.d.ts +12 -0
- package/dist/next/host/deadline.d.ts.map +1 -0
- package/dist/next/host/deadline.js +40 -0
- package/dist/next/host/deadline.js.map +1 -0
- package/dist/next/host/dependencies.d.ts +65 -0
- package/dist/next/host/dependencies.d.ts.map +1 -0
- package/dist/next/host/dependencies.js +115 -0
- package/dist/next/host/dependencies.js.map +1 -0
- package/dist/next/host/destination.d.ts +48 -0
- package/dist/next/host/destination.d.ts.map +1 -0
- package/dist/next/host/destination.js +101 -0
- package/dist/next/host/destination.js.map +1 -0
- package/dist/next/host/facet.d.ts +79 -0
- package/dist/next/host/facet.d.ts.map +1 -0
- package/dist/next/host/facet.js +55 -0
- package/dist/next/host/facet.js.map +1 -0
- package/dist/next/host/follow.d.ts +52 -0
- package/dist/next/host/follow.d.ts.map +1 -0
- package/dist/next/host/follow.js +207 -0
- package/dist/next/host/follow.js.map +1 -0
- package/dist/next/host/host.d.ts +495 -0
- package/dist/next/host/host.d.ts.map +1 -0
- package/dist/next/host/host.js +1075 -0
- package/dist/next/host/host.js.map +1 -0
- package/dist/next/host/index.d.ts +17 -0
- package/dist/next/host/index.d.ts.map +1 -0
- package/dist/next/host/index.js +6 -0
- package/dist/next/host/index.js.map +1 -0
- package/dist/next/host/internal.d.ts +10 -0
- package/dist/next/host/internal.d.ts.map +1 -0
- package/dist/next/host/internal.js +8 -0
- package/dist/next/host/internal.js.map +1 -0
- package/dist/next/host/members.d.ts +50 -0
- package/dist/next/host/members.d.ts.map +1 -0
- package/dist/next/host/members.js +107 -0
- package/dist/next/host/members.js.map +1 -0
- package/dist/next/host/native.d.ts +55 -0
- package/dist/next/host/native.d.ts.map +1 -0
- package/dist/next/host/native.js +92 -0
- package/dist/next/host/native.js.map +1 -0
- package/dist/next/host/object.d.ts +290 -0
- package/dist/next/host/object.d.ts.map +1 -0
- package/dist/next/host/object.js +1127 -0
- package/dist/next/host/object.js.map +1 -0
- package/dist/next/host/parked.d.ts +23 -0
- package/dist/next/host/parked.d.ts.map +1 -0
- package/dist/next/host/parked.js +79 -0
- package/dist/next/host/parked.js.map +1 -0
- package/dist/next/host/presence.d.ts +34 -0
- package/dist/next/host/presence.d.ts.map +1 -0
- package/dist/next/host/presence.js +117 -0
- package/dist/next/host/presence.js.map +1 -0
- package/dist/next/host/ref-state.d.ts +53 -0
- package/dist/next/host/ref-state.d.ts.map +1 -0
- package/dist/next/host/ref-state.js +83 -0
- package/dist/next/host/ref-state.js.map +1 -0
- package/dist/next/host/reference-keys.d.ts +36 -0
- package/dist/next/host/reference-keys.d.ts.map +1 -0
- package/dist/next/host/reference-keys.js +168 -0
- package/dist/next/host/reference-keys.js.map +1 -0
- package/dist/next/host/reference-source.d.ts +65 -0
- package/dist/next/host/reference-source.d.ts.map +1 -0
- package/dist/next/host/reference-source.js +285 -0
- package/dist/next/host/reference-source.js.map +1 -0
- package/dist/next/host/reference.d.ts +308 -0
- package/dist/next/host/reference.d.ts.map +1 -0
- package/dist/next/host/reference.js +775 -0
- package/dist/next/host/reference.js.map +1 -0
- package/dist/next/host/retry-on.d.ts +28 -0
- package/dist/next/host/retry-on.d.ts.map +1 -0
- package/dist/next/host/retry-on.js +52 -0
- package/dist/next/host/retry-on.js.map +1 -0
- package/dist/next/host/revocation.d.ts +16 -0
- package/dist/next/host/revocation.d.ts.map +1 -0
- package/dist/next/host/revocation.js +27 -0
- package/dist/next/host/revocation.js.map +1 -0
- package/dist/next/host/root.d.ts +27 -0
- package/dist/next/host/root.d.ts.map +1 -0
- package/dist/next/host/root.js +68 -0
- package/dist/next/host/root.js.map +1 -0
- package/dist/next/host/route.d.ts +64 -0
- package/dist/next/host/route.d.ts.map +1 -0
- package/dist/next/host/route.js +190 -0
- package/dist/next/host/route.js.map +1 -0
- package/dist/next/host/routines.d.ts +76 -0
- package/dist/next/host/routines.d.ts.map +1 -0
- package/dist/next/host/routines.js +350 -0
- package/dist/next/host/routines.js.map +1 -0
- package/dist/next/host/sleep.d.ts +9 -0
- package/dist/next/host/sleep.d.ts.map +1 -0
- package/dist/next/host/sleep.js +40 -0
- package/dist/next/host/sleep.js.map +1 -0
- package/dist/next/host/staging.d.ts +94 -0
- package/dist/next/host/staging.d.ts.map +1 -0
- package/dist/next/host/staging.js +302 -0
- package/dist/next/host/staging.js.map +1 -0
- package/dist/next/host/unbound.d.ts +30 -0
- package/dist/next/host/unbound.d.ts.map +1 -0
- package/dist/next/host/unbound.js +67 -0
- package/dist/next/host/unbound.js.map +1 -0
- package/dist/next/host/uuid.d.ts +3 -0
- package/dist/next/host/uuid.d.ts.map +1 -0
- package/dist/next/host/uuid.js +38 -0
- package/dist/next/host/uuid.js.map +1 -0
- package/dist/next/index.d.ts +28 -0
- package/dist/next/index.d.ts.map +1 -0
- package/dist/next/index.js +18 -0
- package/dist/next/index.js.map +1 -0
- package/dist/next/jobs/definition.d.ts +96 -0
- package/dist/next/jobs/definition.d.ts.map +1 -0
- package/dist/next/jobs/definition.js +83 -0
- package/dist/next/jobs/definition.js.map +1 -0
- package/dist/next/jobs/index.d.ts +5 -0
- package/dist/next/jobs/index.d.ts.map +1 -0
- package/dist/next/jobs/index.js +3 -0
- package/dist/next/jobs/index.js.map +1 -0
- package/dist/next/jobs/internal.d.ts +3 -0
- package/dist/next/jobs/internal.d.ts.map +1 -0
- package/dist/next/jobs/internal.js +4 -0
- package/dist/next/jobs/internal.js.map +1 -0
- package/dist/next/jobs/job.d.ts +152 -0
- package/dist/next/jobs/job.d.ts.map +1 -0
- package/dist/next/jobs/job.js +320 -0
- package/dist/next/jobs/job.js.map +1 -0
- package/dist/next/jobs/persisted.d.ts +38 -0
- package/dist/next/jobs/persisted.d.ts.map +1 -0
- package/dist/next/jobs/persisted.js +95 -0
- package/dist/next/jobs/persisted.js.map +1 -0
- package/dist/next/jobs/records.d.ts +231 -0
- package/dist/next/jobs/records.d.ts.map +1 -0
- package/dist/next/jobs/records.js +869 -0
- package/dist/next/jobs/records.js.map +1 -0
- package/dist/next/jobs/run-states.d.ts +69 -0
- package/dist/next/jobs/run-states.d.ts.map +1 -0
- package/dist/next/jobs/run-states.js +228 -0
- package/dist/next/jobs/run-states.js.map +1 -0
- package/dist/next/jobs/run.d.ts +113 -0
- package/dist/next/jobs/run.d.ts.map +1 -0
- package/dist/next/jobs/run.js +200 -0
- package/dist/next/jobs/run.js.map +1 -0
- package/dist/next/jobs/running.d.ts +44 -0
- package/dist/next/jobs/running.d.ts.map +1 -0
- package/dist/next/jobs/running.js +117 -0
- package/dist/next/jobs/running.js.map +1 -0
- package/dist/next/jobs/stored.d.ts +63 -0
- package/dist/next/jobs/stored.d.ts.map +1 -0
- package/dist/next/jobs/stored.js +55 -0
- package/dist/next/jobs/stored.js.map +1 -0
- package/dist/next/link/binary.d.ts +4 -0
- package/dist/next/link/binary.d.ts.map +1 -0
- package/dist/next/link/binary.js +534 -0
- package/dist/next/link/binary.js.map +1 -0
- package/dist/next/link/channel.d.ts +63 -0
- package/dist/next/link/channel.d.ts.map +1 -0
- package/dist/next/link/channel.js +202 -0
- package/dist/next/link/channel.js.map +1 -0
- package/dist/next/link/errors.d.ts +7 -0
- package/dist/next/link/errors.d.ts.map +1 -0
- package/dist/next/link/errors.js +21 -0
- package/dist/next/link/errors.js.map +1 -0
- package/dist/next/link/index.d.ts +8 -0
- package/dist/next/link/index.d.ts.map +1 -0
- package/dist/next/link/index.js +8 -0
- package/dist/next/link/index.js.map +1 -0
- package/dist/next/link/internal.d.ts +9 -0
- package/dist/next/link/internal.d.ts.map +1 -0
- package/dist/next/link/internal.js +10 -0
- package/dist/next/link/internal.js.map +1 -0
- package/dist/next/link/ipc.d.ts +22 -0
- package/dist/next/link/ipc.d.ts.map +1 -0
- package/dist/next/link/ipc.js +64 -0
- package/dist/next/link/ipc.js.map +1 -0
- package/dist/next/link/link.d.ts +34 -0
- package/dist/next/link/link.d.ts.map +1 -0
- package/dist/next/link/link.js +87 -0
- package/dist/next/link/link.js.map +1 -0
- package/dist/next/link/message.d.ts +249 -0
- package/dist/next/link/message.d.ts.map +1 -0
- package/dist/next/link/message.js +123 -0
- package/dist/next/link/message.js.map +1 -0
- package/dist/next/link/part.d.ts +80 -0
- package/dist/next/link/part.d.ts.map +1 -0
- package/dist/next/link/part.js +164 -0
- package/dist/next/link/part.js.map +1 -0
- package/dist/next/link/text.d.ts +6 -0
- package/dist/next/link/text.d.ts.map +1 -0
- package/dist/next/link/text.js +335 -0
- package/dist/next/link/text.js.map +1 -0
- package/dist/next/link/values.d.ts +40 -0
- package/dist/next/link/values.d.ts.map +1 -0
- package/dist/next/link/values.js +117 -0
- package/dist/next/link/values.js.map +1 -0
- package/dist/next/link/websocket.d.ts +26 -0
- package/dist/next/link/websocket.d.ts.map +1 -0
- package/dist/next/link/websocket.js +91 -0
- package/dist/next/link/websocket.js.map +1 -0
- package/dist/next/registries/contribution.d.ts +50 -0
- package/dist/next/registries/contribution.d.ts.map +1 -0
- package/dist/next/registries/contribution.js +129 -0
- package/dist/next/registries/contribution.js.map +1 -0
- package/dist/next/registries/entries.d.ts +18 -0
- package/dist/next/registries/entries.d.ts.map +1 -0
- package/dist/next/registries/entries.js +42 -0
- package/dist/next/registries/entries.js.map +1 -0
- package/dist/next/registries/index.d.ts +3 -0
- package/dist/next/registries/index.d.ts.map +1 -0
- package/dist/next/registries/index.js +5 -0
- package/dist/next/registries/index.js.map +1 -0
- package/dist/next/registries/internal.d.ts +4 -0
- package/dist/next/registries/internal.d.ts.map +1 -0
- package/dist/next/registries/internal.js +5 -0
- package/dist/next/registries/internal.js.map +1 -0
- package/dist/next/registries/record.d.ts +94 -0
- package/dist/next/registries/record.d.ts.map +1 -0
- package/dist/next/registries/record.js +253 -0
- package/dist/next/registries/record.js.map +1 -0
- package/dist/next/registries/registry.d.ts +74 -0
- package/dist/next/registries/registry.d.ts.map +1 -0
- package/dist/next/registries/registry.js +14 -0
- package/dist/next/registries/registry.js.map +1 -0
- package/dist/next/registries/value.d.ts +48 -0
- package/dist/next/registries/value.d.ts.map +1 -0
- package/dist/next/registries/value.js +199 -0
- package/dist/next/registries/value.js.map +1 -0
- package/dist/next/remote/calls.d.ts +25 -0
- package/dist/next/remote/calls.d.ts.map +1 -0
- package/dist/next/remote/calls.js +62 -0
- package/dist/next/remote/calls.js.map +1 -0
- package/dist/next/remote/consumer.d.ts +42 -0
- package/dist/next/remote/consumer.d.ts.map +1 -0
- package/dist/next/remote/consumer.js +343 -0
- package/dist/next/remote/consumer.js.map +1 -0
- package/dist/next/remote/hold.d.ts +130 -0
- package/dist/next/remote/hold.d.ts.map +1 -0
- package/dist/next/remote/hold.js +537 -0
- package/dist/next/remote/hold.js.map +1 -0
- package/dist/next/remote/host-link.d.ts +77 -0
- package/dist/next/remote/host-link.d.ts.map +1 -0
- package/dist/next/remote/host-link.js +182 -0
- package/dist/next/remote/host-link.js.map +1 -0
- package/dist/next/remote/internal.d.ts +6 -0
- package/dist/next/remote/internal.d.ts.map +1 -0
- package/dist/next/remote/internal.js +6 -0
- package/dist/next/remote/internal.js.map +1 -0
- package/dist/next/remote/path.d.ts +46 -0
- package/dist/next/remote/path.d.ts.map +1 -0
- package/dist/next/remote/path.js +73 -0
- package/dist/next/remote/path.js.map +1 -0
- package/dist/next/remote/provider.d.ts +76 -0
- package/dist/next/remote/provider.d.ts.map +1 -0
- package/dist/next/remote/provider.js +506 -0
- package/dist/next/remote/provider.js.map +1 -0
- package/dist/next/remote/relay.d.ts +58 -0
- package/dist/next/remote/relay.d.ts.map +1 -0
- package/dist/next/remote/relay.js +117 -0
- package/dist/next/remote/relay.js.map +1 -0
- package/dist/next/remote/remote-object.d.ts +133 -0
- package/dist/next/remote/remote-object.d.ts.map +1 -0
- package/dist/next/remote/remote-object.js +411 -0
- package/dist/next/remote/remote-object.js.map +1 -0
- package/dist/next/remote/replica.d.ts +59 -0
- package/dist/next/remote/replica.d.ts.map +1 -0
- package/dist/next/remote/replica.js +125 -0
- package/dist/next/remote/replica.js.map +1 -0
- package/dist/next/state/batch.d.ts +64 -0
- package/dist/next/state/batch.d.ts.map +1 -0
- package/dist/next/state/batch.js +163 -0
- package/dist/next/state/batch.js.map +1 -0
- package/dist/next/state/derive.d.ts +52 -0
- package/dist/next/state/derive.d.ts.map +1 -0
- package/dist/next/state/derive.js +182 -0
- package/dist/next/state/derive.js.map +1 -0
- package/dist/next/state/index.d.ts +6 -0
- package/dist/next/state/index.d.ts.map +1 -0
- package/dist/next/state/index.js +4 -0
- package/dist/next/state/index.js.map +1 -0
- package/dist/next/state/internal.d.ts +6 -0
- package/dist/next/state/internal.d.ts.map +1 -0
- package/dist/next/state/internal.js +8 -0
- package/dist/next/state/internal.js.map +1 -0
- package/dist/next/state/native-source.d.ts +106 -0
- package/dist/next/state/native-source.d.ts.map +1 -0
- package/dist/next/state/native-source.js +240 -0
- package/dist/next/state/native-source.js.map +1 -0
- package/dist/next/state/watchable.d.ts +114 -0
- package/dist/next/state/watchable.d.ts.map +1 -0
- package/dist/next/state/watchable.js +156 -0
- package/dist/next/state/watchable.js.map +1 -0
- package/dist/next/state/writable.d.ts +32 -0
- package/dist/next/state/writable.d.ts.map +1 -0
- package/dist/next/state/writable.js +49 -0
- package/dist/next/state/writable.js.map +1 -0
- package/dist/next/store/adapter.d.ts +67 -0
- package/dist/next/store/adapter.d.ts.map +1 -0
- package/dist/next/store/adapter.js +118 -0
- package/dist/next/store/adapter.js.map +1 -0
- package/dist/next/store/allocator.d.ts +17 -0
- package/dist/next/store/allocator.d.ts.map +1 -0
- package/dist/next/store/allocator.js +30 -0
- package/dist/next/store/allocator.js.map +1 -0
- package/dist/next/store/applier.d.ts +8 -0
- package/dist/next/store/applier.d.ts.map +1 -0
- package/dist/next/store/applier.js +375 -0
- package/dist/next/store/applier.js.map +1 -0
- package/dist/next/store/apply-batch.d.ts +12 -0
- package/dist/next/store/apply-batch.d.ts.map +1 -0
- package/dist/next/store/apply-batch.js +83 -0
- package/dist/next/store/apply-batch.js.map +1 -0
- package/dist/next/store/archive.d.ts +32 -0
- package/dist/next/store/archive.d.ts.map +1 -0
- package/dist/next/store/archive.js +129 -0
- package/dist/next/store/archive.js.map +1 -0
- package/dist/next/store/backend.d.ts +10 -0
- package/dist/next/store/backend.d.ts.map +1 -0
- package/dist/next/store/backend.js +15 -0
- package/dist/next/store/backend.js.map +1 -0
- package/dist/next/store/catalog.d.ts +24 -0
- package/dist/next/store/catalog.d.ts.map +1 -0
- package/dist/next/store/catalog.js +17 -0
- package/dist/next/store/catalog.js.map +1 -0
- package/dist/next/store/claims.d.ts +23 -0
- package/dist/next/store/claims.d.ts.map +1 -0
- package/dist/next/store/claims.js +65 -0
- package/dist/next/store/claims.js.map +1 -0
- package/dist/next/store/columns.d.ts +77 -0
- package/dist/next/store/columns.d.ts.map +1 -0
- package/dist/next/store/columns.js +77 -0
- package/dist/next/store/columns.js.map +1 -0
- package/dist/next/store/engine.d.ts +176 -0
- package/dist/next/store/engine.d.ts.map +1 -0
- package/dist/next/store/engine.js +283 -0
- package/dist/next/store/engine.js.map +1 -0
- package/dist/next/store/evaluate.d.ts +17 -0
- package/dist/next/store/evaluate.d.ts.map +1 -0
- package/dist/next/store/evaluate.js +128 -0
- package/dist/next/store/evaluate.js.map +1 -0
- package/dist/next/store/export.d.ts +17 -0
- package/dist/next/store/export.d.ts.map +1 -0
- package/dist/next/store/export.js +200 -0
- package/dist/next/store/export.js.map +1 -0
- package/dist/next/store/expression.d.ts +150 -0
- package/dist/next/store/expression.d.ts.map +1 -0
- package/dist/next/store/expression.js +268 -0
- package/dist/next/store/expression.js.map +1 -0
- package/dist/next/store/import.d.ts +10 -0
- package/dist/next/store/import.d.ts.map +1 -0
- package/dist/next/store/import.js +276 -0
- package/dist/next/store/import.js.map +1 -0
- package/dist/next/store/index.d.ts +16 -0
- package/dist/next/store/index.d.ts.map +1 -0
- package/dist/next/store/index.js +13 -0
- package/dist/next/store/index.js.map +1 -0
- package/dist/next/store/json-column.d.ts +33 -0
- package/dist/next/store/json-column.d.ts.map +1 -0
- package/dist/next/store/json-column.js +61 -0
- package/dist/next/store/json-column.js.map +1 -0
- package/dist/next/store/jsonl.d.ts +9 -0
- package/dist/next/store/jsonl.d.ts.map +1 -0
- package/dist/next/store/jsonl.js +61 -0
- package/dist/next/store/jsonl.js.map +1 -0
- package/dist/next/store/outbox.d.ts +26 -0
- package/dist/next/store/outbox.d.ts.map +1 -0
- package/dist/next/store/outbox.js +80 -0
- package/dist/next/store/outbox.js.map +1 -0
- package/dist/next/store/query.d.ts +39 -0
- package/dist/next/store/query.d.ts.map +1 -0
- package/dist/next/store/query.js +97 -0
- package/dist/next/store/query.js.map +1 -0
- package/dist/next/store/refusal.d.ts +15 -0
- package/dist/next/store/refusal.d.ts.map +1 -0
- package/dist/next/store/refusal.js +36 -0
- package/dist/next/store/refusal.js.map +1 -0
- package/dist/next/store/rows.d.ts +80 -0
- package/dist/next/store/rows.d.ts.map +1 -0
- package/dist/next/store/rows.js +183 -0
- package/dist/next/store/rows.js.map +1 -0
- package/dist/next/store/schema.d.ts +25 -0
- package/dist/next/store/schema.d.ts.map +1 -0
- package/dist/next/store/schema.js +115 -0
- package/dist/next/store/schema.js.map +1 -0
- package/dist/next/store/sql.d.ts +73 -0
- package/dist/next/store/sql.d.ts.map +1 -0
- package/dist/next/store/sql.js +234 -0
- package/dist/next/store/sql.js.map +1 -0
- package/dist/next/store/step.d.ts +48 -0
- package/dist/next/store/step.d.ts.map +1 -0
- package/dist/next/store/step.js +50 -0
- package/dist/next/store/step.js.map +1 -0
- package/dist/next/store/store.d.ts +161 -0
- package/dist/next/store/store.d.ts.map +1 -0
- package/dist/next/store/store.js +627 -0
- package/dist/next/store/store.js.map +1 -0
- package/dist/next/store/table-changes.d.ts +29 -0
- package/dist/next/store/table-changes.d.ts.map +1 -0
- package/dist/next/store/table-changes.js +102 -0
- package/dist/next/store/table-changes.js.map +1 -0
- package/dist/next/store/table-evolve.d.ts +74 -0
- package/dist/next/store/table-evolve.d.ts.map +1 -0
- package/dist/next/store/table-evolve.js +201 -0
- package/dist/next/store/table-evolve.js.map +1 -0
- package/dist/next/store/table-handle.d.ts +67 -0
- package/dist/next/store/table-handle.d.ts.map +1 -0
- package/dist/next/store/table-handle.js +101 -0
- package/dist/next/store/table-handle.js.map +1 -0
- package/dist/next/store/table-history.d.ts +75 -0
- package/dist/next/store/table-history.d.ts.map +1 -0
- package/dist/next/store/table-history.js +42 -0
- package/dist/next/store/table-history.js.map +1 -0
- package/dist/next/store/table-migration.d.ts +16 -0
- package/dist/next/store/table-migration.d.ts.map +1 -0
- package/dist/next/store/table-migration.js +202 -0
- package/dist/next/store/table-migration.js.map +1 -0
- package/dist/next/store/table-writes.d.ts +125 -0
- package/dist/next/store/table-writes.d.ts.map +1 -0
- package/dist/next/store/table-writes.js +165 -0
- package/dist/next/store/table-writes.js.map +1 -0
- package/dist/next/store/table.d.ts +80 -0
- package/dist/next/store/table.d.ts.map +1 -0
- package/dist/next/store/table.js +103 -0
- package/dist/next/store/table.js.map +1 -0
- package/dist/next/store/text.d.ts +14 -0
- package/dist/next/store/text.d.ts.map +1 -0
- package/dist/next/store/text.js +51 -0
- package/dist/next/store/text.js.map +1 -0
- package/dist/next/store/writes.d.ts +5 -0
- package/dist/next/store/writes.d.ts.map +1 -0
- package/dist/next/store/writes.js +4 -0
- package/dist/next/store/writes.js.map +1 -0
- package/dist/next-node/compression.d.ts +7 -0
- package/dist/next-node/compression.d.ts.map +1 -0
- package/dist/next-node/compression.js +24 -0
- package/dist/next-node/compression.js.map +1 -0
- package/dist/next-node/http/admission.d.ts +63 -0
- package/dist/next-node/http/admission.d.ts.map +1 -0
- package/dist/next-node/http/admission.js +134 -0
- package/dist/next-node/http/admission.js.map +1 -0
- package/dist/next-node/http/authenticate.d.ts +21 -0
- package/dist/next-node/http/authenticate.d.ts.map +1 -0
- package/dist/next-node/http/authenticate.js +34 -0
- package/dist/next-node/http/authenticate.js.map +1 -0
- package/dist/next-node/http/cookies.d.ts +24 -0
- package/dist/next-node/http/cookies.d.ts.map +1 -0
- package/dist/next-node/http/cookies.js +62 -0
- package/dist/next-node/http/cookies.js.map +1 -0
- package/dist/next-node/http/file.d.ts +23 -0
- package/dist/next-node/http/file.d.ts.map +1 -0
- package/dist/next-node/http/file.js +94 -0
- package/dist/next-node/http/file.js.map +1 -0
- package/dist/next-node/http/headers.d.ts +37 -0
- package/dist/next-node/http/headers.d.ts.map +1 -0
- package/dist/next-node/http/headers.js +129 -0
- package/dist/next-node/http/headers.js.map +1 -0
- package/dist/next-node/http/http.d.ts +100 -0
- package/dist/next-node/http/http.d.ts.map +1 -0
- package/dist/next-node/http/http.js +462 -0
- package/dist/next-node/http/http.js.map +1 -0
- package/dist/next-node/http/incoming.d.ts +19 -0
- package/dist/next-node/http/incoming.d.ts.map +1 -0
- package/dist/next-node/http/incoming.js +31 -0
- package/dist/next-node/http/incoming.js.map +1 -0
- package/dist/next-node/http/index.d.ts +11 -0
- package/dist/next-node/http/index.d.ts.map +1 -0
- package/dist/next-node/http/index.js +12 -0
- package/dist/next-node/http/index.js.map +1 -0
- package/dist/next-node/http/node.d.ts +78 -0
- package/dist/next-node/http/node.d.ts.map +1 -0
- package/dist/next-node/http/node.js +291 -0
- package/dist/next-node/http/node.js.map +1 -0
- package/dist/next-node/http/request.d.ts +54 -0
- package/dist/next-node/http/request.d.ts.map +1 -0
- package/dist/next-node/http/request.js +116 -0
- package/dist/next-node/http/request.js.map +1 -0
- package/dist/next-node/http/response.d.ts +63 -0
- package/dist/next-node/http/response.d.ts.map +1 -0
- package/dist/next-node/http/response.js +202 -0
- package/dist/next-node/http/response.js.map +1 -0
- package/dist/next-node/http/router.d.ts +114 -0
- package/dist/next-node/http/router.d.ts.map +1 -0
- package/dist/next-node/http/router.js +261 -0
- package/dist/next-node/http/router.js.map +1 -0
- package/dist/next-node/http/upgrades.d.ts +58 -0
- package/dist/next-node/http/upgrades.d.ts.map +1 -0
- package/dist/next-node/http/upgrades.js +184 -0
- package/dist/next-node/http/upgrades.js.map +1 -0
- package/dist/next-node/plugins/build.d.ts +57 -0
- package/dist/next-node/plugins/build.d.ts.map +1 -0
- package/dist/next-node/plugins/build.js +334 -0
- package/dist/next-node/plugins/build.js.map +1 -0
- package/dist/next-node/plugins/discover.d.ts +36 -0
- package/dist/next-node/plugins/discover.d.ts.map +1 -0
- package/dist/next-node/plugins/discover.js +91 -0
- package/dist/next-node/plugins/discover.js.map +1 -0
- package/dist/next-node/plugins/evaluate.d.ts +33 -0
- package/dist/next-node/plugins/evaluate.d.ts.map +1 -0
- package/dist/next-node/plugins/evaluate.js +98 -0
- package/dist/next-node/plugins/evaluate.js.map +1 -0
- package/dist/next-node/plugins/index.d.ts +9 -0
- package/dist/next-node/plugins/index.d.ts.map +1 -0
- package/dist/next-node/plugins/index.js +11 -0
- package/dist/next-node/plugins/index.js.map +1 -0
- package/dist/next-node/plugins/install.d.ts +13 -0
- package/dist/next-node/plugins/install.d.ts.map +1 -0
- package/dist/next-node/plugins/install.js +37 -0
- package/dist/next-node/plugins/install.js.map +1 -0
- package/dist/next-node/plugins/plugins.d.ts +135 -0
- package/dist/next-node/plugins/plugins.d.ts.map +1 -0
- package/dist/next-node/plugins/plugins.js +206 -0
- package/dist/next-node/plugins/plugins.js.map +1 -0
- package/dist/next-node/plugins/runtime.d.ts +41 -0
- package/dist/next-node/plugins/runtime.d.ts.map +1 -0
- package/dist/next-node/plugins/runtime.js +136 -0
- package/dist/next-node/plugins/runtime.js.map +1 -0
- package/dist/next-node/plugins/stack.d.ts +16 -0
- package/dist/next-node/plugins/stack.d.ts.map +1 -0
- package/dist/next-node/plugins/stack.js +61 -0
- package/dist/next-node/plugins/stack.js.map +1 -0
- package/dist/next-node/plugins/watcher.d.ts +58 -0
- package/dist/next-node/plugins/watcher.d.ts.map +1 -0
- package/dist/next-node/plugins/watcher.js +281 -0
- package/dist/next-node/plugins/watcher.js.map +1 -0
- package/dist/next-node/workers/control.d.ts +83 -0
- package/dist/next-node/workers/control.d.ts.map +1 -0
- package/dist/next-node/workers/control.js +77 -0
- package/dist/next-node/workers/control.js.map +1 -0
- package/dist/next-node/workers/index.d.ts +5 -0
- package/dist/next-node/workers/index.d.ts.map +1 -0
- package/dist/next-node/workers/index.js +7 -0
- package/dist/next-node/workers/index.js.map +1 -0
- package/dist/next-node/workers/lock.d.ts +21 -0
- package/dist/next-node/workers/lock.d.ts.map +1 -0
- package/dist/next-node/workers/lock.js +137 -0
- package/dist/next-node/workers/lock.js.map +1 -0
- package/dist/next-node/workers/main.d.ts +46 -0
- package/dist/next-node/workers/main.d.ts.map +1 -0
- package/dist/next-node/workers/main.js +230 -0
- package/dist/next-node/workers/main.js.map +1 -0
- package/dist/next-node/workers/process.d.ts +42 -0
- package/dist/next-node/workers/process.d.ts.map +1 -0
- package/dist/next-node/workers/process.js +125 -0
- package/dist/next-node/workers/process.js.map +1 -0
- package/dist/next-node/workers/workers.d.ts +80 -0
- package/dist/next-node/workers/workers.d.ts.map +1 -0
- package/dist/next-node/workers/workers.js +572 -0
- package/dist/next-node/workers/workers.js.map +1 -0
- package/dist/object.d.ts +4 -4
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +3 -4
- package/dist/object.js.map +1 -1
- package/dist/output.d.ts +9 -3
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +21 -9
- package/dist/output.js.map +1 -1
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +2 -2
- package/dist/remote.js.map +1 -1
- package/dist/schema.d.ts +8 -4
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +180 -5
- package/dist/schema.js.map +1 -1
- package/dist/sqlite/cloudflare.d.ts +54 -0
- package/dist/sqlite/cloudflare.d.ts.map +1 -0
- package/dist/sqlite/cloudflare.js +144 -0
- package/dist/sqlite/cloudflare.js.map +1 -0
- package/dist/sqlite/database.d.ts +40 -0
- package/dist/sqlite/database.d.ts.map +1 -0
- package/dist/sqlite/database.js +2 -0
- package/dist/sqlite/database.js.map +1 -0
- package/dist/sqlite/index.d.ts +4 -0
- package/dist/sqlite/index.d.ts.map +1 -0
- package/dist/sqlite/index.js +3 -0
- package/dist/sqlite/index.js.map +1 -0
- package/dist/sqlite/migrations.d.ts +10 -0
- package/dist/sqlite/migrations.d.ts.map +1 -0
- package/dist/sqlite/migrations.js +33 -0
- package/dist/sqlite/migrations.js.map +1 -0
- package/dist/sqlite/node.d.ts +41 -0
- package/dist/sqlite/node.d.ts.map +1 -0
- package/dist/sqlite/node.js +191 -0
- package/dist/sqlite/node.js.map +1 -0
- package/dist/sqlite/schema.d.ts +3 -0
- package/dist/sqlite/schema.d.ts.map +1 -0
- package/dist/sqlite/schema.js +10 -0
- package/dist/sqlite/schema.js.map +1 -0
- package/dist/telemetry-sqlite/index.d.ts +24 -0
- package/dist/telemetry-sqlite/index.d.ts.map +1 -0
- package/dist/telemetry-sqlite/index.js +273 -0
- package/dist/telemetry-sqlite/index.js.map +1 -0
- package/dist/telemetry-sqlite/store.d.ts +9 -0
- package/dist/telemetry-sqlite/store.d.ts.map +1 -0
- package/dist/telemetry-sqlite/store.js +110 -0
- package/dist/telemetry-sqlite/store.js.map +1 -0
- package/dist/watch.d.ts +194 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +383 -0
- package/dist/watch.js.map +1 -0
- package/dist/wire.d.ts +174 -193
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +81 -80
- package/dist/wire.js.map +1 -1
- package/docs/guide.md +15 -15
- package/docs/next/benchmarks.md +959 -0
- package/docs/next/decisions.md +2957 -0
- package/docs/next/dependencies/book.md +1671 -0
- package/docs/next/dependencies/index.html +2641 -0
- package/docs/next/dependencies/model.md +330 -0
- package/docs/next/design.md +2554 -0
- package/docs/next/durable-observers/book.md +432 -0
- package/docs/next/durable-observers/index.html +517 -0
- package/docs/next/flow-control/book.md +333 -0
- package/docs/next/flow-control/fold/index.html +265 -0
- package/docs/next/flow-control/index.html +548 -0
- package/docs/next/flow-control/window/index.html +228 -0
- package/docs/next/guide-plugins-hosts/book.md +607 -0
- package/docs/next/guide-plugins-hosts/index.html +652 -0
- package/docs/next/http-workers/book.md +378 -0
- package/docs/next/http-workers/index.html +515 -0
- package/docs/next/layer-1.md +311 -0
- package/docs/next/layer-2.md +216 -0
- package/docs/next/plugin-model/book.md +186 -0
- package/docs/next/plugin-model/index.html +310 -0
- package/docs/next/plugin-primer/book.md +273 -0
- package/docs/next/plugin-primer/index.html +430 -0
- package/docs/next/slice-1.md +236 -0
- package/docs/next/slice-10.md +285 -0
- package/docs/next/slice-11.md +93 -0
- package/docs/next/slice-2.md +174 -0
- package/docs/next/slice-3a.md +296 -0
- package/docs/next/slice-3b.md +197 -0
- package/docs/next/slice-4.md +146 -0
- package/docs/next/slice-4a.md +418 -0
- package/docs/next/slice-4b.md +208 -0
- package/docs/next/slice-5.md +281 -0
- package/docs/next/slice-6a.md +676 -0
- package/docs/next/slice-6b.md +332 -0
- package/docs/next/slice-7a.md +130 -0
- package/docs/next/slice-7b/book.md +608 -0
- package/docs/next/slice-7b/index.html +842 -0
- package/docs/next/slice-7b.md +255 -0
- package/docs/next/slice-7c.md +165 -0
- package/docs/next/slice-8.md +194 -0
- package/docs/next/slices.md +230 -0
- package/docs/next/store/book.md +665 -0
- package/docs/next/store/index.html +861 -0
- package/docs/next/store/walkthrough.md +193 -0
- package/docs/spec.md +9 -9
- package/docs/tutorial.md +26 -25
- package/package.json +42 -5
- package/src/delta/README.md +69 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { Context } from "../../context/index.ts";
|
|
2
|
+
import { type Prepared, type Tracker } from "../../delta/index.ts";
|
|
3
|
+
import type { StagedWrite } from "../store/step.ts";
|
|
4
|
+
import { AddressSource } from "./address-source.ts";
|
|
5
|
+
import type { CommitPersistence, JsonObject, StateDefinition } from "./definition.ts";
|
|
6
|
+
import type { Documents } from "./documents.ts";
|
|
7
|
+
import type { SealToken } from "./fence.ts";
|
|
8
|
+
import { type DocumentChange, type Persistence, type Stored, type StoredChange } from "./persistence.ts";
|
|
9
|
+
/** A document definition, whatever its value and keyedness. */
|
|
10
|
+
export type AnyDefinition = StateDefinition<JsonObject, boolean, boolean>;
|
|
11
|
+
/**
|
|
12
|
+
* What a transaction drafts and adopts: documents of one object by key (a singleton ignores the key). The slots of
|
|
13
|
+
* `self.state`, and Chord's own (a job's run state documents).
|
|
14
|
+
*/
|
|
15
|
+
export interface DocumentSlot {
|
|
16
|
+
readonly owner: Documents;
|
|
17
|
+
/** The tracker of the document at `key`, `undefined` while absent. */
|
|
18
|
+
current(key: string): Tracker<JsonObject> | undefined;
|
|
19
|
+
/** The value a draft of an absent document starts from. */
|
|
20
|
+
initial(context: Context): JsonObject;
|
|
21
|
+
/** The persisted slot's store side; `undefined` for documents in memory only. */
|
|
22
|
+
readonly persisted: PersistedSlot | undefined;
|
|
23
|
+
/** Adopts a commit of the document at `key` (inside the batch), with what the commit stored of it. */
|
|
24
|
+
adopt(key: string, tracker: Tracker<JsonObject>, prepared: Prepared<JsonObject>, stored: StoredChange | undefined): void;
|
|
25
|
+
/** Retires the document at `key` (inside the batch). */
|
|
26
|
+
retire(key: string): void;
|
|
27
|
+
}
|
|
28
|
+
/** What a transaction needs of a persisted slot (slice 6a §4, §10). */
|
|
29
|
+
export interface PersistedSlot {
|
|
30
|
+
readonly persistence: Persistence;
|
|
31
|
+
readonly definition: SlotDefinition;
|
|
32
|
+
/** Whether the document at `key` may be stored without being in memory (a persisted keyed document not loaded). */
|
|
33
|
+
cold(key: string): boolean;
|
|
34
|
+
/** What is stored of the document at `key` as memory knows it; `undefined` when absent or cold. */
|
|
35
|
+
stored(key: string): Stored | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Stages one commit's writes of the document at `key` into `writes` (`was`: what is stored of it, a cold one's as
|
|
38
|
+
* the transaction found it); `persistence` is the transaction's (a deferred change of a run's state is held, D8).
|
|
39
|
+
*/
|
|
40
|
+
stage(key: string, change: DocumentChange, was: Stored | undefined, writes: StagedWrite[], persistence: CommitPersistence): StoredChange;
|
|
41
|
+
/**
|
|
42
|
+
* Loads the document at `key` (its caller holds the line): installed when present and still absent from memory,
|
|
43
|
+
* and, for a transaction's load (`token`), while the token is not sealed (a cut transaction released the line, so
|
|
44
|
+
* a successor may have changed or retired the key meanwhile).
|
|
45
|
+
*/
|
|
46
|
+
load(key: string, context: Context, token?: SealToken): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The definition a slot's values are of (the one that hydrated it last; the first declaration until then): the checks
|
|
50
|
+
* of a new attempt's declaration and the old handles' version fence (R15).
|
|
51
|
+
*/
|
|
52
|
+
export declare class SlotDefinition {
|
|
53
|
+
#private;
|
|
54
|
+
constructor(definition: AnyDefinition);
|
|
55
|
+
/** The definition the values are of. */
|
|
56
|
+
get current(): AnyDefinition;
|
|
57
|
+
/** The definition the values were hydrated with, `undefined` before the first hydration. */
|
|
58
|
+
get hydrated(): AnyDefinition | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Checks a declaration of this name by a new attempt: a flipped `keyed` or `persist`, a version older than the values (old code)
|
|
61
|
+
* or the same version with another fingerprint (a schema changed without a bump) throw (the attempt fails broken).
|
|
62
|
+
*/
|
|
63
|
+
check(definition: AnyDefinition): void;
|
|
64
|
+
/** Records the hydration with `definition`. */
|
|
65
|
+
hydrate(definition: AnyDefinition): void;
|
|
66
|
+
/**
|
|
67
|
+
* Throws `released` for a handle of `version` once the values migrated past it (old code reads no new shape), and
|
|
68
|
+
* `not_ready` for a handle of a newer version until its activation migrated them (new code reads no old shape: a
|
|
69
|
+
* retry's factory).
|
|
70
|
+
*/
|
|
71
|
+
assertVersion(version: number): void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A singleton's slot: one tracker while written, `initial()` while absent; the source its handles and members watch.
|
|
75
|
+
* Persisted, it loads once per object (again after a failed load) and stays in memory while the object lives.
|
|
76
|
+
*/
|
|
77
|
+
export declare class SingletonSlot extends AddressSource implements DocumentSlot, PersistedSlot {
|
|
78
|
+
#private;
|
|
79
|
+
readonly owner: Documents;
|
|
80
|
+
readonly definition: SlotDefinition;
|
|
81
|
+
readonly persisted: PersistedSlot | undefined;
|
|
82
|
+
constructor(owner: Documents, definition: AnyDefinition, persistence: Persistence | undefined);
|
|
83
|
+
get persistence(): Persistence;
|
|
84
|
+
get value(): JsonObject;
|
|
85
|
+
/**
|
|
86
|
+
* Takes the attempt's declaration `definition` (`check` accepted it): the first takes `initial()`; a newer version
|
|
87
|
+
* migrates the value in memory (a persisted one stores a base with its next change) and takes `initial()` again,
|
|
88
|
+
* and a value that changed reaches watches as a root replacement; the same version keeps everything.
|
|
89
|
+
*/
|
|
90
|
+
hydrate(definition: AnyDefinition, context: Context): void;
|
|
91
|
+
/** Loads the persisted document unless it is loaded already (the caller holds the line). */
|
|
92
|
+
load(_key: string, context: Context): Promise<void>;
|
|
93
|
+
/** Loads the persisted document unless it is loaded already (activation, holding the line). */
|
|
94
|
+
loadDeclared(context: Context): Promise<void>;
|
|
95
|
+
/** A singleton has one document: its key is always `""`. */
|
|
96
|
+
key(_key: string): string;
|
|
97
|
+
cold(_key: string): boolean;
|
|
98
|
+
stored(_key: string): Stored | undefined;
|
|
99
|
+
stage(key: string, change: DocumentChange, was: Stored | undefined, writes: StagedWrite[]): StoredChange;
|
|
100
|
+
current(_key: string): Tracker<JsonObject> | undefined;
|
|
101
|
+
/** The value a draft of the absent document starts from: the `initial()` taken at hydration. */
|
|
102
|
+
initial(_context: Context): JsonObject;
|
|
103
|
+
adopt(_key: string, tracker: Tracker<JsonObject>, prepared: Prepared<JsonObject>, stored: StoredChange | undefined): void;
|
|
104
|
+
/** Retires the document: it reads `initial()` again, and the frame says it was retired. */
|
|
105
|
+
retire(_key: string): void;
|
|
106
|
+
/** Its object ended or no attempt declares it any more: the document goes and its watches end. */
|
|
107
|
+
drop(): void;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=slot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../../src/next/documents/slot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// Document slots (slice 6a §1.2): one per declared document name on its object, across the object's attempts. A slot
|
|
2
|
+
// holds the documents' trackers, the version and definition its values are of, what is stored of persisted ones, and
|
|
3
|
+
// the watches; each attempt's handles are thin views of it. This file: what every slot is, and the singleton's slot
|
|
4
|
+
// (the keyed one is `keyed-slot.ts`).
|
|
5
|
+
import { track } from "../../delta/index.js";
|
|
6
|
+
import { ChordError } from "../data/index.js";
|
|
7
|
+
import { AddressSource } from "./address-source.js";
|
|
8
|
+
import { storedAfter } from "./persistence.js";
|
|
9
|
+
/**
|
|
10
|
+
* The definition a slot's values are of (the one that hydrated it last; the first declaration until then): the checks
|
|
11
|
+
* of a new attempt's declaration and the old handles' version fence (R15).
|
|
12
|
+
*/
|
|
13
|
+
export class SlotDefinition {
|
|
14
|
+
#current;
|
|
15
|
+
#hydrated = false;
|
|
16
|
+
constructor(definition) {
|
|
17
|
+
this.#current = definition;
|
|
18
|
+
}
|
|
19
|
+
/** The definition the values are of. */
|
|
20
|
+
get current() {
|
|
21
|
+
return this.#current;
|
|
22
|
+
}
|
|
23
|
+
/** The definition the values were hydrated with, `undefined` before the first hydration. */
|
|
24
|
+
get hydrated() {
|
|
25
|
+
return this.#hydrated ? this.#current : undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Checks a declaration of this name by a new attempt: a flipped `keyed` or `persist`, a version older than the values (old code)
|
|
29
|
+
* or the same version with another fingerprint (a schema changed without a bump) throw (the attempt fails broken).
|
|
30
|
+
*/
|
|
31
|
+
check(definition) {
|
|
32
|
+
const { name, version, keyed, persist, fingerprint } = this.#current;
|
|
33
|
+
if (definition.keyed !== keyed) {
|
|
34
|
+
throw new Error(`${name}: declared ${definition.keyed ? "keyed" : "singleton"}, its documents are not`);
|
|
35
|
+
}
|
|
36
|
+
if (definition.persist !== persist) {
|
|
37
|
+
throw new Error(`${name}: declared ${definition.persist ? "persisted" : "in memory"}, its documents are not`);
|
|
38
|
+
}
|
|
39
|
+
if (definition.version < version) {
|
|
40
|
+
throw new Error(`${name}: version ${definition.version} is older than its documents' (${version})`);
|
|
41
|
+
}
|
|
42
|
+
if (definition.version === version && definition.fingerprint !== fingerprint) {
|
|
43
|
+
throw new Error(`${name}: the schema changed without a version bump (version ${version})`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Records the hydration with `definition`. */
|
|
47
|
+
hydrate(definition) {
|
|
48
|
+
this.#current = definition;
|
|
49
|
+
this.#hydrated = true;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Throws `released` for a handle of `version` once the values migrated past it (old code reads no new shape), and
|
|
53
|
+
* `not_ready` for a handle of a newer version until its activation migrated them (new code reads no old shape: a
|
|
54
|
+
* retry's factory).
|
|
55
|
+
*/
|
|
56
|
+
assertVersion(version) {
|
|
57
|
+
const current = this.#current;
|
|
58
|
+
if (version === current.version)
|
|
59
|
+
return;
|
|
60
|
+
const message = `${current.name}: a handle of version ${version}; the documents are at version ${current.version}`;
|
|
61
|
+
if (version < current.version)
|
|
62
|
+
throw new ChordError({ code: "released", reason: "version", message });
|
|
63
|
+
throw new ChordError({ code: "not_ready", message: `${message} until the activation migrates them` });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A singleton's slot: one tracker while written, `initial()` while absent; the source its handles and members watch.
|
|
68
|
+
* Persisted, it loads once per object (again after a failed load) and stays in memory while the object lives.
|
|
69
|
+
*/
|
|
70
|
+
export class SingletonSlot extends AddressSource {
|
|
71
|
+
owner;
|
|
72
|
+
definition;
|
|
73
|
+
persisted;
|
|
74
|
+
#persistence;
|
|
75
|
+
/** `initial()`, taken at hydration; `undefined` before the first. */
|
|
76
|
+
#initial;
|
|
77
|
+
#tracker;
|
|
78
|
+
/** What is stored of it (persisted); `undefined` while absent. */
|
|
79
|
+
#stored;
|
|
80
|
+
/** In memory: always; persisted: once loaded. */
|
|
81
|
+
#loaded;
|
|
82
|
+
constructor(owner, definition, persistence) {
|
|
83
|
+
super(owner.batch);
|
|
84
|
+
this.owner = owner;
|
|
85
|
+
this.definition = new SlotDefinition(definition);
|
|
86
|
+
this.#persistence = persistence;
|
|
87
|
+
this.persisted = persistence === undefined ? undefined : this;
|
|
88
|
+
this.#loaded = persistence === undefined;
|
|
89
|
+
}
|
|
90
|
+
get persistence() {
|
|
91
|
+
// Only reached through `persisted`, which a persisted slot alone has.
|
|
92
|
+
return this.#persistence;
|
|
93
|
+
}
|
|
94
|
+
get value() {
|
|
95
|
+
this.owner.assertLive();
|
|
96
|
+
if (this.#initial === undefined || !this.#loaded) {
|
|
97
|
+
const message = `${this.definition.current.name}: read before activation`;
|
|
98
|
+
throw new ChordError({ code: "not_ready", message });
|
|
99
|
+
}
|
|
100
|
+
return this.#tracker?.value ?? this.#initial;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Takes the attempt's declaration `definition` (`check` accepted it): the first takes `initial()`; a newer version
|
|
104
|
+
* migrates the value in memory (a persisted one stores a base with its next change) and takes `initial()` again,
|
|
105
|
+
* and a value that changed reaches watches as a root replacement; the same version keeps everything.
|
|
106
|
+
*/
|
|
107
|
+
hydrate(definition, context) {
|
|
108
|
+
const from = this.definition.hydrated;
|
|
109
|
+
if (from !== undefined && from.version === definition.version) {
|
|
110
|
+
this.definition.hydrate(definition);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const before = from === undefined || !this.#loaded ? undefined : this.value;
|
|
114
|
+
const tracker = this.#tracker === undefined || from === undefined
|
|
115
|
+
? this.#tracker
|
|
116
|
+
: track(definition.migrate(this.#tracker.value, from.version, context));
|
|
117
|
+
this.#initial = definition.initial(context);
|
|
118
|
+
this.#tracker = tracker;
|
|
119
|
+
this.definition.hydrate(definition);
|
|
120
|
+
if (before !== undefined)
|
|
121
|
+
this.batch.commit(() => this.replaced(), context);
|
|
122
|
+
}
|
|
123
|
+
/** Loads the persisted document unless it is loaded already (the caller holds the line). */
|
|
124
|
+
async load(_key, context) {
|
|
125
|
+
if (this.#loaded)
|
|
126
|
+
return;
|
|
127
|
+
const document = await this.persistence.read("", context);
|
|
128
|
+
// Singletons load at activation, on the line: what the code cannot read fails the activation.
|
|
129
|
+
const loaded = document === undefined ? undefined : this.persistence.decode(document, this.definition.current, context);
|
|
130
|
+
if (loaded !== undefined) {
|
|
131
|
+
this.#tracker = track(loaded.value);
|
|
132
|
+
this.#stored = loaded.stored;
|
|
133
|
+
}
|
|
134
|
+
this.#loaded = true;
|
|
135
|
+
}
|
|
136
|
+
/** Loads the persisted document unless it is loaded already (activation, holding the line). */
|
|
137
|
+
loadDeclared(context) {
|
|
138
|
+
return this.load("", context);
|
|
139
|
+
}
|
|
140
|
+
/** A singleton has one document: its key is always `""`. */
|
|
141
|
+
key(_key) {
|
|
142
|
+
return "";
|
|
143
|
+
}
|
|
144
|
+
cold(_key) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
stored(_key) {
|
|
148
|
+
return this.#stored;
|
|
149
|
+
}
|
|
150
|
+
stage(key, change, was, writes) {
|
|
151
|
+
return this.persistence.stage(key, this.definition.current, was, change, writes);
|
|
152
|
+
}
|
|
153
|
+
current(_key) {
|
|
154
|
+
return this.#tracker;
|
|
155
|
+
}
|
|
156
|
+
/** The value a draft of the absent document starts from: the `initial()` taken at hydration. */
|
|
157
|
+
initial(_context) {
|
|
158
|
+
return this.#initial;
|
|
159
|
+
}
|
|
160
|
+
adopt(_key, tracker, prepared, stored) {
|
|
161
|
+
// Unchecked: a step admitted before the object ended adopts after its seal (slice 6a §1.3).
|
|
162
|
+
const before = this.#tracker?.value ?? this.#initial;
|
|
163
|
+
tracker.adopt(prepared);
|
|
164
|
+
this.#tracker = tracker;
|
|
165
|
+
this.#stored = stored === undefined ? undefined : storedAfter(stored);
|
|
166
|
+
this.written(before, prepared);
|
|
167
|
+
}
|
|
168
|
+
/** Retires the document: it reads `initial()` again, and the frame says it was retired. */
|
|
169
|
+
retire(_key) {
|
|
170
|
+
this.#tracker = undefined;
|
|
171
|
+
this.#stored = undefined;
|
|
172
|
+
this.retired(this.#initial);
|
|
173
|
+
}
|
|
174
|
+
/** Its object ended or no attempt declares it any more: the document goes and its watches end. */
|
|
175
|
+
drop() {
|
|
176
|
+
this.#tracker = undefined;
|
|
177
|
+
this.#stored = undefined;
|
|
178
|
+
this.endWatches();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=slot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot.js","sourceRoot":"","sources":["../../../src/next/documents/slot.ts"],"names":[],"mappings":"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","sourcesContent":["// Document slots (slice 6a §1.2): one per declared document name on its object, across the object's attempts. A slot\n// holds the documents' trackers, the version and definition its values are of, what is stored of persisted ones, and\n// the watches; each attempt's handles are thin views of it. This file: what every slot is, and the singleton's slot\n// (the keyed one is `keyed-slot.ts`).\n\nimport type { Context } from \"../../context/index.ts\";\nimport { type Prepared, type Tracker, track } from \"../../delta/index.ts\";\nimport { ChordError } from \"../data/index.ts\";\nimport type { StagedWrite } from \"../store/step.ts\";\nimport { AddressSource } from \"./address-source.ts\";\nimport type { CommitPersistence, JsonObject, StateDefinition } from \"./definition.ts\";\nimport type { Documents } from \"./documents.ts\";\nimport type { SealToken } from \"./fence.ts\";\nimport { type DocumentChange, type Persistence, type Stored, type StoredChange, storedAfter } from \"./persistence.ts\";\n\n/** A document definition, whatever its value and keyedness. */\nexport type AnyDefinition = StateDefinition<JsonObject, boolean, boolean>;\n\n/**\n * What a transaction drafts and adopts: documents of one object by key (a singleton ignores the key). The slots of\n * `self.state`, and Chord's own (a job's run state documents).\n */\nexport interface DocumentSlot {\n\treadonly owner: Documents;\n\t/** The tracker of the document at `key`, `undefined` while absent. */\n\tcurrent(key: string): Tracker<JsonObject> | undefined;\n\t/** The value a draft of an absent document starts from. */\n\tinitial(context: Context): JsonObject;\n\t/** The persisted slot's store side; `undefined` for documents in memory only. */\n\treadonly persisted: PersistedSlot | undefined;\n\t/** Adopts a commit of the document at `key` (inside the batch), with what the commit stored of it. */\n\tadopt(\n\t\tkey: string,\n\t\ttracker: Tracker<JsonObject>,\n\t\tprepared: Prepared<JsonObject>,\n\t\tstored: StoredChange | undefined,\n\t): void;\n\t/** Retires the document at `key` (inside the batch). */\n\tretire(key: string): void;\n}\n\n/** What a transaction needs of a persisted slot (slice 6a §4, §10). */\nexport interface PersistedSlot {\n\treadonly persistence: Persistence;\n\treadonly definition: SlotDefinition;\n\t/** Whether the document at `key` may be stored without being in memory (a persisted keyed document not loaded). */\n\tcold(key: string): boolean;\n\t/** What is stored of the document at `key` as memory knows it; `undefined` when absent or cold. */\n\tstored(key: string): Stored | undefined;\n\t/**\n\t * Stages one commit's writes of the document at `key` into `writes` (`was`: what is stored of it, a cold one's as\n\t * the transaction found it); `persistence` is the transaction's (a deferred change of a run's state is held, D8).\n\t */\n\tstage(\n\t\tkey: string,\n\t\tchange: DocumentChange,\n\t\twas: Stored | undefined,\n\t\twrites: StagedWrite[],\n\t\tpersistence: CommitPersistence,\n\t): StoredChange;\n\t/**\n\t * Loads the document at `key` (its caller holds the line): installed when present and still absent from memory,\n\t * and, for a transaction's load (`token`), while the token is not sealed (a cut transaction released the line, so\n\t * a successor may have changed or retired the key meanwhile).\n\t */\n\tload(key: string, context: Context, token?: SealToken): Promise<void>;\n}\n\n/**\n * The definition a slot's values are of (the one that hydrated it last; the first declaration until then): the checks\n * of a new attempt's declaration and the old handles' version fence (R15).\n */\nexport class SlotDefinition {\n\t#current: AnyDefinition;\n\t#hydrated = false;\n\n\tconstructor(definition: AnyDefinition) {\n\t\tthis.#current = definition;\n\t}\n\n\t/** The definition the values are of. */\n\tget current(): AnyDefinition {\n\t\treturn this.#current;\n\t}\n\n\t/** The definition the values were hydrated with, `undefined` before the first hydration. */\n\tget hydrated(): AnyDefinition | undefined {\n\t\treturn this.#hydrated ? this.#current : undefined;\n\t}\n\n\t/**\n\t * Checks a declaration of this name by a new attempt: a flipped `keyed` or `persist`, a version older than the values (old code)\n\t * or the same version with another fingerprint (a schema changed without a bump) throw (the attempt fails broken).\n\t */\n\tcheck(definition: AnyDefinition): void {\n\t\tconst { name, version, keyed, persist, fingerprint } = this.#current;\n\t\tif (definition.keyed !== keyed) {\n\t\t\tthrow new Error(`${name}: declared ${definition.keyed ? \"keyed\" : \"singleton\"}, its documents are not`);\n\t\t}\n\t\tif (definition.persist !== persist) {\n\t\t\tthrow new Error(`${name}: declared ${definition.persist ? \"persisted\" : \"in memory\"}, its documents are not`);\n\t\t}\n\t\tif (definition.version < version) {\n\t\t\tthrow new Error(`${name}: version ${definition.version} is older than its documents' (${version})`);\n\t\t}\n\t\tif (definition.version === version && definition.fingerprint !== fingerprint) {\n\t\t\tthrow new Error(`${name}: the schema changed without a version bump (version ${version})`);\n\t\t}\n\t}\n\n\t/** Records the hydration with `definition`. */\n\thydrate(definition: AnyDefinition): void {\n\t\tthis.#current = definition;\n\t\tthis.#hydrated = true;\n\t}\n\n\t/**\n\t * Throws `released` for a handle of `version` once the values migrated past it (old code reads no new shape), and\n\t * `not_ready` for a handle of a newer version until its activation migrated them (new code reads no old shape: a\n\t * retry's factory).\n\t */\n\tassertVersion(version: number): void {\n\t\tconst current = this.#current;\n\t\tif (version === current.version) return;\n\t\tconst message = `${current.name}: a handle of version ${version}; the documents are at version ${current.version}`;\n\t\tif (version < current.version) throw new ChordError({ code: \"released\", reason: \"version\", message });\n\t\tthrow new ChordError({ code: \"not_ready\", message: `${message} until the activation migrates them` });\n\t}\n}\n\n/**\n * A singleton's slot: one tracker while written, `initial()` while absent; the source its handles and members watch.\n * Persisted, it loads once per object (again after a failed load) and stays in memory while the object lives.\n */\nexport class SingletonSlot extends AddressSource implements DocumentSlot, PersistedSlot {\n\treadonly owner: Documents;\n\treadonly definition: SlotDefinition;\n\treadonly persisted: PersistedSlot | undefined;\n\treadonly #persistence: Persistence | undefined;\n\t/** `initial()`, taken at hydration; `undefined` before the first. */\n\t#initial: JsonObject | undefined;\n\t#tracker: Tracker<JsonObject> | undefined;\n\t/** What is stored of it (persisted); `undefined` while absent. */\n\t#stored: Stored | undefined;\n\t/** In memory: always; persisted: once loaded. */\n\t#loaded: boolean;\n\n\tconstructor(owner: Documents, definition: AnyDefinition, persistence: Persistence | undefined) {\n\t\tsuper(owner.batch);\n\t\tthis.owner = owner;\n\t\tthis.definition = new SlotDefinition(definition);\n\t\tthis.#persistence = persistence;\n\t\tthis.persisted = persistence === undefined ? undefined : this;\n\t\tthis.#loaded = persistence === undefined;\n\t}\n\n\tget persistence(): Persistence {\n\t\t// Only reached through `persisted`, which a persisted slot alone has.\n\t\treturn this.#persistence!;\n\t}\n\n\tget value(): JsonObject {\n\t\tthis.owner.assertLive();\n\t\tif (this.#initial === undefined || !this.#loaded) {\n\t\t\tconst message = `${this.definition.current.name}: read before activation`;\n\t\t\tthrow new ChordError({ code: \"not_ready\", message });\n\t\t}\n\t\treturn this.#tracker?.value ?? this.#initial;\n\t}\n\n\t/**\n\t * Takes the attempt's declaration `definition` (`check` accepted it): the first takes `initial()`; a newer version\n\t * migrates the value in memory (a persisted one stores a base with its next change) and takes `initial()` again,\n\t * and a value that changed reaches watches as a root replacement; the same version keeps everything.\n\t */\n\thydrate(definition: AnyDefinition, context: Context): void {\n\t\tconst from = this.definition.hydrated;\n\t\tif (from !== undefined && from.version === definition.version) {\n\t\t\tthis.definition.hydrate(definition);\n\t\t\treturn;\n\t\t}\n\t\tconst before = from === undefined || !this.#loaded ? undefined : this.value;\n\t\tconst tracker =\n\t\t\tthis.#tracker === undefined || from === undefined\n\t\t\t\t? this.#tracker\n\t\t\t\t: track(definition.migrate(this.#tracker.value, from.version, context));\n\t\tthis.#initial = definition.initial(context);\n\t\tthis.#tracker = tracker;\n\t\tthis.definition.hydrate(definition);\n\t\tif (before !== undefined) this.batch.commit(() => this.replaced(), context);\n\t}\n\n\t/** Loads the persisted document unless it is loaded already (the caller holds the line). */\n\tasync load(_key: string, context: Context): Promise<void> {\n\t\tif (this.#loaded) return;\n\t\tconst document = await this.persistence.read(\"\", context);\n\t\t// Singletons load at activation, on the line: what the code cannot read fails the activation.\n\t\tconst loaded =\n\t\t\tdocument === undefined ? undefined : this.persistence.decode(document, this.definition.current, context);\n\t\tif (loaded !== undefined) {\n\t\t\tthis.#tracker = track(loaded.value);\n\t\t\tthis.#stored = loaded.stored;\n\t\t}\n\t\tthis.#loaded = true;\n\t}\n\n\t/** Loads the persisted document unless it is loaded already (activation, holding the line). */\n\tloadDeclared(context: Context): Promise<void> {\n\t\treturn this.load(\"\", context);\n\t}\n\n\t/** A singleton has one document: its key is always `\"\"`. */\n\tkey(_key: string): string {\n\t\treturn \"\";\n\t}\n\n\tcold(_key: string): boolean {\n\t\treturn false;\n\t}\n\n\tstored(_key: string): Stored | undefined {\n\t\treturn this.#stored;\n\t}\n\n\tstage(key: string, change: DocumentChange, was: Stored | undefined, writes: StagedWrite[]): StoredChange {\n\t\treturn this.persistence.stage(key, this.definition.current, was, change, writes);\n\t}\n\n\tcurrent(_key: string): Tracker<JsonObject> | undefined {\n\t\treturn this.#tracker;\n\t}\n\n\t/** The value a draft of the absent document starts from: the `initial()` taken at hydration. */\n\tinitial(_context: Context): JsonObject {\n\t\treturn this.#initial!;\n\t}\n\n\tadopt(\n\t\t_key: string,\n\t\ttracker: Tracker<JsonObject>,\n\t\tprepared: Prepared<JsonObject>,\n\t\tstored: StoredChange | undefined,\n\t): void {\n\t\t// Unchecked: a step admitted before the object ended adopts after its seal (slice 6a §1.3).\n\t\tconst before = this.#tracker?.value ?? this.#initial!;\n\t\ttracker.adopt(prepared);\n\t\tthis.#tracker = tracker;\n\t\tthis.#stored = stored === undefined ? undefined : storedAfter(stored);\n\t\tthis.written(before, prepared);\n\t}\n\n\t/** Retires the document: it reads `initial()` again, and the frame says it was retired. */\n\tretire(_key: string): void {\n\t\tthis.#tracker = undefined;\n\t\tthis.#stored = undefined;\n\t\tthis.retired(this.#initial!);\n\t}\n\n\t/** Its object ended or no attempt declares it any more: the document goes and its watches end. */\n\tdrop(): void {\n\t\tthis.#tracker = undefined;\n\t\tthis.#stored = undefined;\n\t\tthis.endWatches();\n\t}\n}\n"]}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { type Context } from "../../context/index.ts";
|
|
2
|
+
import { type Change, type Draft, type Tracker } from "../../delta/index.ts";
|
|
3
|
+
import type { JobHandle, Outcome, Run, StartOptions } from "../jobs/index.ts";
|
|
4
|
+
import type { Columns, PutRowOf, RowOf } from "../store/columns.ts";
|
|
5
|
+
import type { Condition, SetOf } from "../store/expression.ts";
|
|
6
|
+
import type { ColumnRefs, Query } from "../store/query.ts";
|
|
7
|
+
import type { StagedWrite } from "../store/step.ts";
|
|
8
|
+
import type { ChordStore } from "../store/store.ts";
|
|
9
|
+
import type { KeyOf } from "../store/table.ts";
|
|
10
|
+
import { type Page, type PageOptions, type Table } from "../store/table-handle.ts";
|
|
11
|
+
import type { CommitPersistence, JsonObject } from "./definition.ts";
|
|
12
|
+
import type { Documents } from "./documents.ts";
|
|
13
|
+
import type { SealToken } from "./fence.ts";
|
|
14
|
+
import type { KeyedHandle, SingletonHandle } from "./handles.ts";
|
|
15
|
+
import { type Stored } from "./persistence.ts";
|
|
16
|
+
import type { DocumentSlot } from "./slot.ts";
|
|
17
|
+
/** What `self.tx` gives its callback. Inside it: only `await tx.*`, no other `self.tx`, no calls to other objects. */
|
|
18
|
+
export interface Tx {
|
|
19
|
+
/** The document's draft: the same one for the same document within one transaction. */
|
|
20
|
+
draft<T extends JsonObject>(handle: SingletonHandle<T>): Promise<Draft<T>>;
|
|
21
|
+
draft<T extends JsonObject>(handle: KeyedHandle<T>, key: string): Promise<Draft<T>>;
|
|
22
|
+
/** Retires the document when the transaction commits (its address reads `initial()` again); a no-op when it is absent. */
|
|
23
|
+
retire(handle: SingletonHandle<JsonObject>): Promise<void>;
|
|
24
|
+
retire(handle: KeyedHandle<JsonObject>, key: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Starts a run of `job`, one of this object's jobs, with this transaction's other writes (§15): both commit or
|
|
27
|
+
* neither. Returns its `Run` at once; a discarded transaction's `Run` rejects `released` from `outcome`. A key of an
|
|
28
|
+
* unsettled run (one started earlier in this transaction too) returns that run.
|
|
29
|
+
*/
|
|
30
|
+
start<A, R, S>(job: JobHandle<A, R, S>, args: A, options?: StartOptions): Run<Outcome<A, R, S>>;
|
|
31
|
+
/** The row with `key` as this transaction leaves it (its own `put`, `update`, `delete` overlaid; W10). */
|
|
32
|
+
get<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>): Promise<RowOf<C> | undefined>;
|
|
33
|
+
/** A page of committed rows, stable for the transaction (without its own writes). */
|
|
34
|
+
page<C extends Columns, K extends readonly string[]>(table: Table<C, K>, q: Query<C, K>, limit: number, options?: PageOptions): Promise<Page<RowOf<C>>>;
|
|
35
|
+
/** Every committed row of `q`, as `page`. */
|
|
36
|
+
rows<C extends Columns, K extends readonly string[]>(table: Table<C, K>, q: Query<C, K>): AsyncIterable<RowOf<C>>;
|
|
37
|
+
/** Writes `row` when the transaction commits (an upsert: the whole row replaced). */
|
|
38
|
+
put<C extends Columns, K extends readonly string[]>(table: Table<C, K>, row: PutRowOf<C>): void;
|
|
39
|
+
/** Changes the row with `key` when the transaction commits; an absent key changes nothing. */
|
|
40
|
+
update<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>, set: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>)): void;
|
|
41
|
+
/** Deletes the row with `key` when the transaction commits. */
|
|
42
|
+
delete<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>): void;
|
|
43
|
+
/** Changes every row matching `where` when the transaction commits (one statement, its count recorded). */
|
|
44
|
+
updateWhere<C extends Columns, K extends readonly string[]>(table: Table<C, K>, where: (row: ColumnRefs<C>) => Condition, set: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>)): void;
|
|
45
|
+
/** Deletes every row matching `where` when the transaction commits. */
|
|
46
|
+
deleteWhere<C extends Columns, K extends readonly string[]>(table: Table<C, K>, where: (row: ColumnRefs<C>) => Condition): void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Chord's own changes staged in a transaction (a job's run records): adopted in its commit step with the documents,
|
|
50
|
+
* then told how the transaction ended, once the owner's line is free.
|
|
51
|
+
*/
|
|
52
|
+
export interface Staged {
|
|
53
|
+
/** Adopts the changes, inside the commit's batch. */
|
|
54
|
+
adopt(): void;
|
|
55
|
+
/** The transaction committed: the actions after the commit (a run starts, waiters settle). */
|
|
56
|
+
committed(): void;
|
|
57
|
+
/** The transaction was discarded: nothing was adopted. */
|
|
58
|
+
discarded(): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* What one transaction does with one document: a draft, a retirement, or both (retired, then drafted anew); `found`
|
|
62
|
+
* is what is stored of a cold persisted document it retires without loading (R13).
|
|
63
|
+
*/
|
|
64
|
+
type Entry = {
|
|
65
|
+
readonly slot: DocumentSlot;
|
|
66
|
+
readonly key: string;
|
|
67
|
+
draft: {
|
|
68
|
+
readonly tracker: Tracker<JsonObject>;
|
|
69
|
+
readonly change: Change<JsonObject>;
|
|
70
|
+
} | undefined;
|
|
71
|
+
retire: boolean;
|
|
72
|
+
found: Stored | undefined;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* One transaction of an object, under the seal token of whoever runs it (an attempt, a job run's invocation, the
|
|
76
|
+
* object). Commit prepares every draft (Delta records ops and checks only placed values) and adopts the changed
|
|
77
|
+
* documents and the staged changes in one batch; drafts are revoked once it settles. Cut at its token's seal, it
|
|
78
|
+
* discards everything, releases the line and refuses every later use.
|
|
79
|
+
*/
|
|
80
|
+
export declare class Transaction implements Tx {
|
|
81
|
+
#private;
|
|
82
|
+
readonly token: SealToken;
|
|
83
|
+
constructor(documents: Documents, token: SealToken, release: () => void, context: Context, persistence?: CommitPersistence);
|
|
84
|
+
/**
|
|
85
|
+
* The store writes of this transaction, which `write`s join (Chord's own documents: a job's run records): made by the
|
|
86
|
+
* first, which sends the commit through `store`'s step.
|
|
87
|
+
*/
|
|
88
|
+
stageStore(store: ChordStore): StagedWrite[];
|
|
89
|
+
/** The object whose transaction this is. */
|
|
90
|
+
get documents(): Documents;
|
|
91
|
+
draft<T extends JsonObject>(handle: SingletonHandle<T>): Promise<Draft<T>>;
|
|
92
|
+
draft<T extends JsonObject>(handle: KeyedHandle<T>, key: string): Promise<Draft<T>>;
|
|
93
|
+
/**
|
|
94
|
+
* The draft of the document at `key` of `slot` (Chord's own slots, a job's run states). A cold persisted document
|
|
95
|
+
* is loaded first, inside the transaction (it holds the line); the draft counts as pending until it settles (rule
|
|
96
|
+
* 3). A warm draft settles at once.
|
|
97
|
+
*/
|
|
98
|
+
draftSlot(slot: DocumentSlot, key: string): Promise<Draft<JsonObject>>;
|
|
99
|
+
retire(handle: SingletonHandle<JsonObject>): Promise<void>;
|
|
100
|
+
retire(handle: KeyedHandle<JsonObject>, key: string): Promise<void>;
|
|
101
|
+
/** Retires the document at `key` of `slot` when the transaction commits. */
|
|
102
|
+
retireSlot(slot: DocumentSlot, key: string): Entry;
|
|
103
|
+
start<A, R, S>(job: JobHandle<A, R, S>, args: A, options?: StartOptions): Run<Outcome<A, R, S>>;
|
|
104
|
+
get<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>): Promise<RowOf<C> | undefined>;
|
|
105
|
+
page<C extends Columns, K extends readonly string[]>(table: Table<C, K>, q: Query<C, K>, limit: number, options?: PageOptions): Promise<Page<RowOf<C>>>;
|
|
106
|
+
rows<C extends Columns, K extends readonly string[]>(table: Table<C, K>, q: Query<C, K>): AsyncIterable<RowOf<C>>;
|
|
107
|
+
put<C extends Columns, K extends readonly string[]>(table: Table<C, K>, row: PutRowOf<C>): void;
|
|
108
|
+
update<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>, set: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>)): void;
|
|
109
|
+
delete<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>): void;
|
|
110
|
+
updateWhere<C extends Columns, K extends readonly string[]>(table: Table<C, K>, where: (row: ColumnRefs<C>) => Condition, set: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>)): void;
|
|
111
|
+
deleteWhere<C extends Columns, K extends readonly string[]>(table: Table<C, K>, where: (row: ColumnRefs<C>) => Condition): void;
|
|
112
|
+
/** The changes `owner` staged in this transaction, made by `make` on its first use. */
|
|
113
|
+
stage<S extends Staged>(owner: object, make: () => S): S;
|
|
114
|
+
/** The changes `owner` staged in this transaction so far, if any. */
|
|
115
|
+
staged<S extends Staged>(owner: object): S | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* Prepares every draft and adopts what changed, and the staged changes, in one batch; nothing when nothing changed.
|
|
118
|
+
* A document retired and drafted anew is removed, then adopted: its frame carries the retirement. Persisted
|
|
119
|
+
* documents stage their writes here (rule 8), which sends the commit through the store's step.
|
|
120
|
+
*/
|
|
121
|
+
commit(): void | Promise<void>;
|
|
122
|
+
/** Aborts every draft and prepared change. */
|
|
123
|
+
discard(): void;
|
|
124
|
+
/**
|
|
125
|
+
* Its token was sealed while it held the line: every draft is aborted, the line released, and every later use,
|
|
126
|
+
* its commit included, throws `released`.
|
|
127
|
+
*/
|
|
128
|
+
cut(): void;
|
|
129
|
+
/** Tells the staged changes how the transaction ended; runs once the object's line is free. */
|
|
130
|
+
settle(): void;
|
|
131
|
+
}
|
|
132
|
+
export {};
|
|
133
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/next/documents/transaction.ts"],"names":[],"mappings":"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"}
|