@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,214 @@
|
|
|
1
|
+
// Adapted members (Q10, §22, slice 7b §7; decision "References are the only indirection" (5)): one object instance's
|
|
2
|
+
// shared mapping for the consumers of one older version its provider accepts. Per state member one derive of the
|
|
3
|
+
// instance's member through `(current) => old` (a changed member), of its variant's whole state through `(state) => old`
|
|
4
|
+
// (a removed member), or the member itself (unchanged), made on first use; per key of a keyed member one derive of the
|
|
5
|
+
// key's document through the member's mapping, shared by the references holding it. One map and one diff per commit
|
|
6
|
+
// per version, whatever the number of old references. Dropped when no reference of the version is left, gone with the
|
|
7
|
+
// instance; references move to a new instance's mappings as to any new instance. A version the provider does not
|
|
8
|
+
// accept, or a refused member, gives no member (`contract_mismatch`): its consumers wait unbound.
|
|
9
|
+
import { currentVariants, LOCAL, variantsAt } from "../contracts/internal.js";
|
|
10
|
+
import { ChordError } from "../data/index.js";
|
|
11
|
+
import { Derive } from "../state/internal.js";
|
|
12
|
+
/**
|
|
13
|
+
* Why consumers of the older `version` cannot bind to `served`'s `variant`: a version it does not accept, or a member
|
|
14
|
+
* of it the provider refuses (`contract_mismatch`); `undefined` when they can.
|
|
15
|
+
*/
|
|
16
|
+
export function refusal(served, version, variant) {
|
|
17
|
+
const { contract, provider } = served;
|
|
18
|
+
if (!provider.accepted.some((accepted) => accepted.version === version)) {
|
|
19
|
+
return new ChordError({ code: "contract_mismatch", message: `${contract.name} v${version} is not served here` });
|
|
20
|
+
}
|
|
21
|
+
const mappings = mappingsOf(served, version);
|
|
22
|
+
const old = variantsAt(contract, version).get(variant ?? LOCAL);
|
|
23
|
+
for (const member of old?.state.keys() ?? []) {
|
|
24
|
+
if (stateMapping(served, mappings, variant, member) === "refuse")
|
|
25
|
+
return refused(contract, version, member);
|
|
26
|
+
}
|
|
27
|
+
for (const member of old?.keyed.keys() ?? []) {
|
|
28
|
+
if (mappings?.keyed?.[member] === "refuse")
|
|
29
|
+
return refused(contract, version, member);
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
/** One instance's members as the consumers of one older version read them. */
|
|
34
|
+
export class AdaptedMembers {
|
|
35
|
+
version;
|
|
36
|
+
#instance;
|
|
37
|
+
/** The members read so far: a mapping derive, or the instance's member itself (unchanged). */
|
|
38
|
+
#members = new Map();
|
|
39
|
+
/** The mapping derives it made (an unchanged member is the instance's own: it never detaches that one). */
|
|
40
|
+
#derives = new Set();
|
|
41
|
+
/** The keys held so far, by the instance's key document. */
|
|
42
|
+
#keys;
|
|
43
|
+
constructor(instance, version) {
|
|
44
|
+
this.#instance = instance;
|
|
45
|
+
this.version = version;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* State member `member` as this version reads it, made by the first use; `contract_mismatch` when the provider
|
|
49
|
+
* refuses it or does not accept this version.
|
|
50
|
+
*/
|
|
51
|
+
member(member) {
|
|
52
|
+
const made = this.#members.get(member);
|
|
53
|
+
if (made !== undefined)
|
|
54
|
+
return made;
|
|
55
|
+
const source = this.#make(member);
|
|
56
|
+
this.#members.set(member, source);
|
|
57
|
+
return source;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The document `document` at a key of keyed member `member` as this version reads it: the document itself when
|
|
61
|
+
* unchanged, else a derive of it through the mapping, shared by its holders; `release` (once per call) lets the last
|
|
62
|
+
* holder's go. `contract_mismatch` when the provider refuses the member.
|
|
63
|
+
*/
|
|
64
|
+
key(member, document) {
|
|
65
|
+
const mapping = this.#keyed(member);
|
|
66
|
+
if (mapping === undefined)
|
|
67
|
+
return { source: document, release: () => { } };
|
|
68
|
+
this.#keys ??= new Map();
|
|
69
|
+
const keys = this.#keys;
|
|
70
|
+
// By member, then document: two keyed members over one handle map the same document differently (Astra).
|
|
71
|
+
let found = keys.get(member);
|
|
72
|
+
if (found === undefined) {
|
|
73
|
+
found = new Map();
|
|
74
|
+
keys.set(member, found);
|
|
75
|
+
}
|
|
76
|
+
const byDocument = found;
|
|
77
|
+
let held = byDocument.get(document);
|
|
78
|
+
if (held === undefined) {
|
|
79
|
+
const { batch } = this.#instance;
|
|
80
|
+
const derive = new Derive([document], ([value]) => mapping(value), batch);
|
|
81
|
+
// A failure of the mapping is the reader's (its watch gets it); nothing to report for the provider.
|
|
82
|
+
derive.attach((declared) => declared, () => { });
|
|
83
|
+
held = { derive, holders: 0 };
|
|
84
|
+
byDocument.set(document, held);
|
|
85
|
+
}
|
|
86
|
+
held.holders++;
|
|
87
|
+
const key = held;
|
|
88
|
+
let released = false;
|
|
89
|
+
return {
|
|
90
|
+
source: key.derive,
|
|
91
|
+
release: () => {
|
|
92
|
+
if (released)
|
|
93
|
+
return;
|
|
94
|
+
released = true;
|
|
95
|
+
if (--key.holders > 0 || byDocument.get(document) !== key)
|
|
96
|
+
return;
|
|
97
|
+
byDocument.delete(document);
|
|
98
|
+
if (byDocument.size === 0 && keys.get(member) === byDocument)
|
|
99
|
+
keys.delete(member);
|
|
100
|
+
key.derive.detach(ended(this.#instance.label));
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The provider's mapping of keyed member `member`'s documents to this version's shape (`undefined`: unchanged),
|
|
106
|
+
* counted; throws `contract_mismatch` when the provider refuses it.
|
|
107
|
+
*/
|
|
108
|
+
keyed(member) {
|
|
109
|
+
return this.#keyed(member);
|
|
110
|
+
}
|
|
111
|
+
/** Its instance ended, or the version's last reference left: its derives go (their watches end with `error`). */
|
|
112
|
+
detach(error) {
|
|
113
|
+
for (const derive of this.#derives)
|
|
114
|
+
derive.detach(error);
|
|
115
|
+
this.#derives.clear();
|
|
116
|
+
this.#members.clear();
|
|
117
|
+
for (const byDocument of this.#keys?.values() ?? []) {
|
|
118
|
+
for (const { derive } of byDocument.values())
|
|
119
|
+
derive.detach(error);
|
|
120
|
+
}
|
|
121
|
+
this.#keys = undefined;
|
|
122
|
+
}
|
|
123
|
+
/** The mapping of keyed member `member`, counted; `contract_mismatch` when refused. */
|
|
124
|
+
#keyed(member) {
|
|
125
|
+
this.#assertAccepted();
|
|
126
|
+
const mapping = this.#mappings?.keyed?.[member];
|
|
127
|
+
if (mapping === undefined)
|
|
128
|
+
return undefined;
|
|
129
|
+
if (mapping === "refuse")
|
|
130
|
+
throw refused(this.#contract, this.version, member);
|
|
131
|
+
const { batch } = this.#instance;
|
|
132
|
+
return (current) => {
|
|
133
|
+
batch.count("chord.contract.adapts");
|
|
134
|
+
// The provider's mapping, typed by its contract; its result is the old shape (not validated).
|
|
135
|
+
return mapping(current);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* What `member` is at this version: the instance's member itself (unchanged), or a derive through the mapping, of the
|
|
140
|
+
* member when the current variant has it, else of the variant's whole current state (a removed member).
|
|
141
|
+
*/
|
|
142
|
+
#make(member) {
|
|
143
|
+
this.#assertAccepted();
|
|
144
|
+
const instance = this.#instance;
|
|
145
|
+
const { variant, batch } = instance;
|
|
146
|
+
const mapping = stateMapping(instance.served, this.#mappings, variant, member);
|
|
147
|
+
if (mapping === undefined)
|
|
148
|
+
return instance.member(member);
|
|
149
|
+
if (mapping === "refuse")
|
|
150
|
+
throw refused(this.#contract, this.version, member);
|
|
151
|
+
const map = (value) => {
|
|
152
|
+
batch.count("chord.contract.adapts");
|
|
153
|
+
// The provider's mapping, typed by its contract; its result is the old member's shape (not validated).
|
|
154
|
+
return mapping(value);
|
|
155
|
+
};
|
|
156
|
+
const current = currentVariants(this.#contract).get(variant ?? LOCAL);
|
|
157
|
+
// The member when the current variant has it, else the variant's whole current state (a removed member).
|
|
158
|
+
const kept = current.state.has(member);
|
|
159
|
+
const names = kept ? [member] : [...current.state.keys()];
|
|
160
|
+
const sources = names.map((name) => instance.member(name));
|
|
161
|
+
const derive = kept
|
|
162
|
+
? new Derive(sources, ([value]) => map(value), batch)
|
|
163
|
+
: new Derive(sources, (values) => map(Object.fromEntries(names.map((name, index) => [name, values[index]]))), batch);
|
|
164
|
+
this.#derives.add(derive);
|
|
165
|
+
// The sources are the instance's members already.
|
|
166
|
+
derive.attach((source) => source, (error) => instance.report(member, error));
|
|
167
|
+
return derive;
|
|
168
|
+
}
|
|
169
|
+
/** Throws `contract_mismatch` unless the provider accepts this version. */
|
|
170
|
+
#assertAccepted() {
|
|
171
|
+
const { contract, provider } = this.#instance.served;
|
|
172
|
+
if (provider.accepted.some(({ version }) => version === this.version))
|
|
173
|
+
return;
|
|
174
|
+
throw new ChordError({
|
|
175
|
+
code: "contract_mismatch",
|
|
176
|
+
message: `${contract.name} v${this.version} is not served here`,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
get #contract() {
|
|
180
|
+
return this.#instance.served.contract;
|
|
181
|
+
}
|
|
182
|
+
/** This version's mappings in the provider's accepts table. */
|
|
183
|
+
get #mappings() {
|
|
184
|
+
return mappingsOf(this.#instance.served, this.version);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/** `version`'s mappings in `served`'s accepts table. */
|
|
188
|
+
function mappingsOf(served, version) {
|
|
189
|
+
// `checkAccepts` established the table's shape.
|
|
190
|
+
const accepts = served.provider.accepts;
|
|
191
|
+
return accepts[version];
|
|
192
|
+
}
|
|
193
|
+
/** The mapping of state member `member` of `variant` in `mappings`; `undefined` when it is unchanged. */
|
|
194
|
+
function stateMapping(served, mappings, variant, member) {
|
|
195
|
+
const state = mappings?.state;
|
|
196
|
+
if (state === undefined)
|
|
197
|
+
return undefined;
|
|
198
|
+
if (served.contract.kind === "local")
|
|
199
|
+
return state[member];
|
|
200
|
+
const section = state[variant ?? ""];
|
|
201
|
+
return section?.[member];
|
|
202
|
+
}
|
|
203
|
+
/** The `contract_mismatch` of a member of `version` the provider refuses. */
|
|
204
|
+
function refused(contract, version, member) {
|
|
205
|
+
return new ChordError({
|
|
206
|
+
code: "contract_mismatch",
|
|
207
|
+
message: `${contract.name} v${version}: member "${member}" is refused by its provider`,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/** The `released` error its derives end with when its instance or version goes. */
|
|
211
|
+
function ended(label) {
|
|
212
|
+
return new ChordError({ code: "released", reason: "ended", message: `${label}: ended` });
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=adapted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapted.js","sourceRoot":"","sources":["../../../src/next/host/adapted.ts"],"names":[],"mappings":"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","sourcesContent":["// Adapted members (Q10, §22, slice 7b §7; decision \"References are the only indirection\" (5)): one object instance's\n// shared mapping for the consumers of one older version its provider accepts. Per state member one derive of the\n// instance's member through `(current) => old` (a changed member), of its variant's whole state through `(state) => old`\n// (a removed member), or the member itself (unchanged), made on first use; per key of a keyed member one derive of the\n// key's document through the member's mapping, shared by the references holding it. One map and one diff per commit\n// per version, whatever the number of old references. Dropped when no reference of the version is left, gone with the\n// instance; references move to a new instance's mappings as to any new instance. A version the provider does not\n// accept, or a refused member, gives no member (`contract_mismatch`): its consumers wait unbound.\n\nimport type { JsonValue } from \"../../json.ts\";\nimport type { Contract } from \"../contracts/index.ts\";\nimport { currentVariants, LOCAL, variantsAt } from \"../contracts/internal.ts\";\nimport { ChordError } from \"../data/index.ts\";\nimport type { Batch } from \"../state/batch.ts\";\nimport { Derive, type DeriveSource } from \"../state/internal.ts\";\nimport type { Served } from \"./object.ts\";\n\n/** A state mapping as an accepts table holds it (checked by `checkAccepts`). */\ntype StateMapping = ((current: never) => unknown) | \"refuse\";\n\n/** One older version's mappings, as `checkAccepts` checked them: remote state by variant, local state flat. */\ntype VersionMappings = {\n\treadonly state?: { readonly [key: string]: StateMapping | { readonly [member: string]: StateMapping } };\n\treadonly keyed?: { readonly [member: string]: StateMapping };\n};\n\n/** What the mappings of one instance read: its provider, its variant, its own members, its host's batch and reports. */\nexport type AdaptedInstance = {\n\treadonly served: Served;\n\treadonly variant: string | undefined;\n\treadonly label: string;\n\treadonly batch: Batch;\n\t/** The instance's state member `member` (`invalid/member` when its variant has none). */\n\tmember(member: string): DeriveSource;\n\t/** Reports a mapping derive's failure (`derive_failed`). */\n\treport(member: string, error: unknown): void;\n};\n\n/** A key's mapping derive, shared by the references holding the key at this version. */\ntype MappedKey = { readonly derive: Derive; holders: number };\n\n/**\n * Why consumers of the older `version` cannot bind to `served`'s `variant`: a version it does not accept, or a member\n * of it the provider refuses (`contract_mismatch`); `undefined` when they can.\n */\nexport function refusal(served: Served, version: number, variant: string | undefined): ChordError | undefined {\n\tconst { contract, provider } = served;\n\tif (!provider.accepted.some((accepted) => accepted.version === version)) {\n\t\treturn new ChordError({ code: \"contract_mismatch\", message: `${contract.name} v${version} is not served here` });\n\t}\n\tconst mappings = mappingsOf(served, version);\n\tconst old = variantsAt(contract, version).get(variant ?? LOCAL);\n\tfor (const member of old?.state.keys() ?? []) {\n\t\tif (stateMapping(served, mappings, variant, member) === \"refuse\") return refused(contract, version, member);\n\t}\n\tfor (const member of old?.keyed.keys() ?? []) {\n\t\tif (mappings?.keyed?.[member] === \"refuse\") return refused(contract, version, member);\n\t}\n\treturn undefined;\n}\n\n/** One instance's members as the consumers of one older version read them. */\nexport class AdaptedMembers {\n\treadonly version: number;\n\treadonly #instance: AdaptedInstance;\n\t/** The members read so far: a mapping derive, or the instance's member itself (unchanged). */\n\treadonly #members = new Map<string, DeriveSource>();\n\t/** The mapping derives it made (an unchanged member is the instance's own: it never detaches that one). */\n\treadonly #derives = new Set<Derive>();\n\t/** The keys held so far, by the instance's key document. */\n\t#keys: Map<string, Map<DeriveSource, MappedKey>> | undefined;\n\n\tconstructor(instance: AdaptedInstance, version: number) {\n\t\tthis.#instance = instance;\n\t\tthis.version = version;\n\t}\n\n\t/**\n\t * State member `member` as this version reads it, made by the first use; `contract_mismatch` when the provider\n\t * refuses it or does not accept this version.\n\t */\n\tmember(member: string): DeriveSource {\n\t\tconst made = this.#members.get(member);\n\t\tif (made !== undefined) return made;\n\t\tconst source = this.#make(member);\n\t\tthis.#members.set(member, source);\n\t\treturn source;\n\t}\n\n\t/**\n\t * The document `document` at a key of keyed member `member` as this version reads it: the document itself when\n\t * unchanged, else a derive of it through the mapping, shared by its holders; `release` (once per call) lets the last\n\t * holder's go. `contract_mismatch` when the provider refuses the member.\n\t */\n\tkey(member: string, document: DeriveSource): { readonly source: DeriveSource; release(): void } {\n\t\tconst mapping = this.#keyed(member);\n\t\tif (mapping === undefined) return { source: document, release: () => {} };\n\t\tthis.#keys ??= new Map();\n\t\tconst keys = this.#keys;\n\t\t// By member, then document: two keyed members over one handle map the same document differently (Astra).\n\t\tlet found = keys.get(member);\n\t\tif (found === undefined) {\n\t\t\tfound = new Map();\n\t\t\tkeys.set(member, found);\n\t\t}\n\t\tconst byDocument = found;\n\t\tlet held = byDocument.get(document);\n\t\tif (held === undefined) {\n\t\t\tconst { batch } = this.#instance;\n\t\t\tconst derive = new Derive([document], ([value]) => mapping(value as JsonValue), batch);\n\t\t\t// A failure of the mapping is the reader's (its watch gets it); nothing to report for the provider.\n\t\t\tderive.attach(\n\t\t\t\t(declared) => declared as DeriveSource,\n\t\t\t\t() => {},\n\t\t\t);\n\t\t\theld = { derive, holders: 0 };\n\t\t\tbyDocument.set(document, held);\n\t\t}\n\t\theld.holders++;\n\t\tconst key = held;\n\t\tlet released = false;\n\t\treturn {\n\t\t\tsource: key.derive,\n\t\t\trelease: () => {\n\t\t\t\tif (released) return;\n\t\t\t\treleased = true;\n\t\t\t\tif (--key.holders > 0 || byDocument.get(document) !== key) return;\n\t\t\t\tbyDocument.delete(document);\n\t\t\t\tif (byDocument.size === 0 && keys.get(member) === byDocument) keys.delete(member);\n\t\t\t\tkey.derive.detach(ended(this.#instance.label));\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * The provider's mapping of keyed member `member`'s documents to this version's shape (`undefined`: unchanged),\n\t * counted; throws `contract_mismatch` when the provider refuses it.\n\t */\n\tkeyed(member: string): ((current: JsonValue) => JsonValue) | undefined {\n\t\treturn this.#keyed(member);\n\t}\n\n\t/** Its instance ended, or the version's last reference left: its derives go (their watches end with `error`). */\n\tdetach(error: Error): void {\n\t\tfor (const derive of this.#derives) derive.detach(error);\n\t\tthis.#derives.clear();\n\t\tthis.#members.clear();\n\t\tfor (const byDocument of this.#keys?.values() ?? []) {\n\t\t\tfor (const { derive } of byDocument.values()) derive.detach(error);\n\t\t}\n\t\tthis.#keys = undefined;\n\t}\n\n\t/** The mapping of keyed member `member`, counted; `contract_mismatch` when refused. */\n\t#keyed(member: string): ((current: JsonValue) => JsonValue) | undefined {\n\t\tthis.#assertAccepted();\n\t\tconst mapping = this.#mappings?.keyed?.[member];\n\t\tif (mapping === undefined) return undefined;\n\t\tif (mapping === \"refuse\") throw refused(this.#contract, this.version, member);\n\t\tconst { batch } = this.#instance;\n\t\treturn (current) => {\n\t\t\tbatch.count(\"chord.contract.adapts\");\n\t\t\t// The provider's mapping, typed by its contract; its result is the old shape (not validated).\n\t\t\treturn mapping(current as never) as JsonValue;\n\t\t};\n\t}\n\n\t/**\n\t * What `member` is at this version: the instance's member itself (unchanged), or a derive through the mapping, of the\n\t * member when the current variant has it, else of the variant's whole current state (a removed member).\n\t */\n\t#make(member: string): DeriveSource {\n\t\tthis.#assertAccepted();\n\t\tconst instance = this.#instance;\n\t\tconst { variant, batch } = instance;\n\t\tconst mapping = stateMapping(instance.served, this.#mappings, variant, member);\n\t\tif (mapping === undefined) return instance.member(member);\n\t\tif (mapping === \"refuse\") throw refused(this.#contract, this.version, member);\n\t\tconst map = (value: unknown): JsonValue => {\n\t\t\tbatch.count(\"chord.contract.adapts\");\n\t\t\t// The provider's mapping, typed by its contract; its result is the old member's shape (not validated).\n\t\t\treturn mapping(value as never) as JsonValue;\n\t\t};\n\t\tconst current = currentVariants(this.#contract).get(variant ?? LOCAL)!;\n\t\t// The member when the current variant has it, else the variant's whole current state (a removed member).\n\t\tconst kept = current.state.has(member);\n\t\tconst names = kept ? [member] : [...current.state.keys()];\n\t\tconst sources = names.map((name) => instance.member(name));\n\t\tconst derive = kept\n\t\t\t? new Derive(sources, ([value]) => map(value), batch)\n\t\t\t: new Derive(\n\t\t\t\t\tsources,\n\t\t\t\t\t(values) => map(Object.fromEntries(names.map((name, index) => [name, values[index]]))),\n\t\t\t\t\tbatch,\n\t\t\t\t);\n\t\tthis.#derives.add(derive);\n\t\t// The sources are the instance's members already.\n\t\tderive.attach(\n\t\t\t(source) => source as DeriveSource,\n\t\t\t(error) => instance.report(member, error),\n\t\t);\n\t\treturn derive;\n\t}\n\n\t/** Throws `contract_mismatch` unless the provider accepts this version. */\n\t#assertAccepted(): void {\n\t\tconst { contract, provider } = this.#instance.served;\n\t\tif (provider.accepted.some(({ version }) => version === this.version)) return;\n\t\tthrow new ChordError({\n\t\t\tcode: \"contract_mismatch\",\n\t\t\tmessage: `${contract.name} v${this.version} is not served here`,\n\t\t});\n\t}\n\n\tget #contract(): Contract {\n\t\treturn this.#instance.served.contract;\n\t}\n\n\t/** This version's mappings in the provider's accepts table. */\n\tget #mappings(): VersionMappings | undefined {\n\t\treturn mappingsOf(this.#instance.served, this.version);\n\t}\n}\n\n/** `version`'s mappings in `served`'s accepts table. */\nfunction mappingsOf(served: Served, version: number): VersionMappings | undefined {\n\t// `checkAccepts` established the table's shape.\n\tconst accepts = served.provider.accepts as { readonly [version: number]: VersionMappings };\n\treturn accepts[version];\n}\n\n/** The mapping of state member `member` of `variant` in `mappings`; `undefined` when it is unchanged. */\nfunction stateMapping(\n\tserved: Served,\n\tmappings: VersionMappings | undefined,\n\tvariant: string | undefined,\n\tmember: string,\n): StateMapping | undefined {\n\tconst state = mappings?.state;\n\tif (state === undefined) return undefined;\n\tif (served.contract.kind === \"local\") return state[member] as StateMapping | undefined;\n\tconst section = state[variant ?? \"\"] as { readonly [member: string]: StateMapping } | undefined;\n\treturn section?.[member];\n}\n\n/** The `contract_mismatch` of a member of `version` the provider refuses. */\nfunction refused(contract: Contract, version: number, member: string): ChordError {\n\treturn new ChordError({\n\t\tcode: \"contract_mismatch\",\n\t\tmessage: `${contract.name} v${version}: member \"${member}\" is refused by its provider`,\n\t});\n}\n\n/** The `released` error its derives end with when its instance or version goes. */\nfunction ended(label: string): ChordError {\n\treturn new ChordError({ code: \"released\", reason: \"ended\", message: `${label}: ended` });\n}\n"]}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { type Context } from "../../context/index.ts";
|
|
2
|
+
import type { JsonValue } from "../../json.ts";
|
|
3
|
+
import type { NativeWatchable, Watchable } from "../../watch.ts";
|
|
4
|
+
import type { Contract, Implementation, ParamsOf } from "../contracts/index.ts";
|
|
5
|
+
import { type ShapeOf } from "../contracts/internal.ts";
|
|
6
|
+
import { ChordError, type FailureCause, type Principal } from "../data/index.ts";
|
|
7
|
+
import type { HandleOf, JsonObject, StateDefinition, Tx } from "../documents/index.ts";
|
|
8
|
+
import { type KeyDeclarer, type KeyedSlot, type KeySource } from "../documents/internal.ts";
|
|
9
|
+
import type { JobDefinition, JobHandle, JobImplementation } from "../jobs/index.ts";
|
|
10
|
+
import { type CutReason } from "../jobs/internal.ts";
|
|
11
|
+
import type { Contribution, Registry, RegistryValue } from "../registries/index.ts";
|
|
12
|
+
import type { RegistryContribution, RegistryWaiter } from "../registries/internal.ts";
|
|
13
|
+
import type { Writable } from "../state/index.ts";
|
|
14
|
+
import { type DeriveSource } from "../state/internal.ts";
|
|
15
|
+
import type { Columns } from "../store/columns.ts";
|
|
16
|
+
import type { TableDefinition } from "../store/table.ts";
|
|
17
|
+
import { type Table } from "../store/table-handle.ts";
|
|
18
|
+
import { type Caller, type Ctx } from "./ctx.ts";
|
|
19
|
+
import { type FollowAttach } from "./follow.ts";
|
|
20
|
+
import { type KeyedBinding } from "./members.ts";
|
|
21
|
+
import { type CloseFailed, type Native, type NativeCloseReason, type NativeOptions } from "./native.ts";
|
|
22
|
+
import type { ChordObject } from "./object.ts";
|
|
23
|
+
import type { Reference, RetryWalk } from "./reference.ts";
|
|
24
|
+
import { type OnHandler, type OnLiveHandler, type OnNativeHandler, type RoutineDeclarations } from "./routines.ts";
|
|
25
|
+
/**
|
|
26
|
+
* What a factory declares with. Declarations (`state`, `derive`, `get`, `registry`, `writable`, `retryOn`, `open`,
|
|
27
|
+
* `on`, `onLive`, `job`) are valid only while it runs. `P` is the app's principal type, which the ctx of routine calls
|
|
28
|
+
* and job runs carry.
|
|
29
|
+
*/
|
|
30
|
+
export interface Self<P extends Principal = Principal> extends RoutineDeclarations<P> {
|
|
31
|
+
/** This object's documents of `definition`, in memory for its life (across its attempts). */
|
|
32
|
+
state<D extends StateDefinition<JsonObject, boolean, false>>(definition: D): HandleOf<D>;
|
|
33
|
+
/**
|
|
34
|
+
* A value computed from `sources` (JSON watchables and native ones: a `writable`, a registry value, `ref.state`) by
|
|
35
|
+
* the pure, synchronous `compute`; always JSON.
|
|
36
|
+
*/
|
|
37
|
+
derive<const S extends readonly (Watchable<unknown> | NativeWatchable<unknown>)[], T extends JsonValue>(sources: S, compute: (values: {
|
|
38
|
+
readonly [I in keyof S]: S[I] extends Watchable<infer V> ? V : S[I] extends NativeWatchable<infer V> ? V : never;
|
|
39
|
+
}) => T): Watchable<T>;
|
|
40
|
+
/** A reference to another object, live once this object is, released when it ends. */
|
|
41
|
+
get<C extends Contract>(Type: C, params: ParamsOf<C>): Reference<C>;
|
|
42
|
+
/**
|
|
43
|
+
* Registry `R`'s composed value as this plugin's version of `R` sees it: a declared dependency, as `get` is
|
|
44
|
+
* (the attempt parks until it has a usable value: `failed { waiting }` while it has none, woken when it has). Read
|
|
45
|
+
* `.value` at use; once live, a later failure of the registry keeps its last good value while every contribution it
|
|
46
|
+
* was built from is still in the table.
|
|
47
|
+
*/
|
|
48
|
+
registry<C, V>(R: Registry<C, V>): RegistryValue<V>;
|
|
49
|
+
/**
|
|
50
|
+
* An in-process value this attempt sets (`set`, identity compared): a contribution, a derive source and an `on`
|
|
51
|
+
* source, never a state member; its watches end with the attempt, and `set` after its end throws `released`.
|
|
52
|
+
*/
|
|
53
|
+
writable<T>(initial: T): Writable<T>;
|
|
54
|
+
/**
|
|
55
|
+
* Wake signals: a new value of any of `sources` (registry values; constants never change) retries this object
|
|
56
|
+
* while it is failed, as `ref.retry()` does, and once more at once if its current activation fails. Followed from
|
|
57
|
+
* the factory's return until the next attempt's declaration or the object's end; failures wake nothing.
|
|
58
|
+
*/
|
|
59
|
+
retryOn(...sources: readonly (Watchable<unknown> | NativeWatchable<unknown>)[]): void;
|
|
60
|
+
/**
|
|
61
|
+
* A native, opened during activation after the references are live and the earlier natives are open, and closed
|
|
62
|
+
* in reverse when the attempt ends. `open` gets a context aborted when the attempt is abandoned; `close` one aborted
|
|
63
|
+
* at the close timeout. Throw `broken(error)` from `open` when retrying is pointless.
|
|
64
|
+
*/
|
|
65
|
+
open<T>(open: (context: Context) => Promise<T>, close: (value: T, reason: NativeCloseReason, context: Context) => void | Promise<void>, options?: NativeOptions): Native<T>;
|
|
66
|
+
/** Runs `fn` as one transaction of this object (§9). */
|
|
67
|
+
tx<R>(fn: (tx: Tx) => R | Promise<R>, context: Context): Promise<R>;
|
|
68
|
+
/**
|
|
69
|
+
* A source following another runtime's synchronous observer (Durable's views, slice 6b §3): `attach` runs during
|
|
70
|
+
* activation once the natives opened (a rejection or `undefined` fails the activation `transient`), and the observer
|
|
71
|
+
* is detached when the attempt ends. Its runtime failing fails this object `transient`; its `ended` is final, the
|
|
72
|
+
* source keeping its last value. A state member, a derive source, an `on` source.
|
|
73
|
+
*/
|
|
74
|
+
follow<T>(attach: FollowAttach<T>): Watchable<T>;
|
|
75
|
+
/**
|
|
76
|
+
* This object's job `definition` (§15), once per job name: `run` runs each started run outside transactions,
|
|
77
|
+
* `finish` records its outcome in one. Starts are taken once the object is live.
|
|
78
|
+
*/
|
|
79
|
+
job<A, R, S>(definition: JobDefinition<A, R, S>, implementation: JobImplementation<A, R, S, P>): JobHandle<A, R, S>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* What the factory of a `local` type with empty params declares with: one object per host and type, so its data may
|
|
83
|
+
* persist (P3). `P` as for `Self`.
|
|
84
|
+
*/
|
|
85
|
+
export interface StoreSelf<P extends Principal = Principal> extends Self<P> {
|
|
86
|
+
/** This object's documents of `definition`: in memory for its life, or persisted in the host's store. */
|
|
87
|
+
state<D extends StateDefinition<JsonObject, boolean, boolean>>(definition: D): HandleOf<D>;
|
|
88
|
+
/** This object's table `definition` in the host's store, once per table name. */
|
|
89
|
+
table<C extends Columns, K extends readonly string[]>(definition: TableDefinition<C, K>): Table<C, K>;
|
|
90
|
+
/**
|
|
91
|
+
* Contributes `value` to registry `R` from the moment this object is live until it ends, fails or restarts (R21: a
|
|
92
|
+
* host-lifetime object): a plain value, or a Chord watchable of one (followed: its change recomposes). At most one
|
|
93
|
+
* per registry.
|
|
94
|
+
*/
|
|
95
|
+
contribute<C>(R: Registry<C, unknown>, value: Contribution<C>): void;
|
|
96
|
+
}
|
|
97
|
+
/** A key of a keyed member pinned on one instance, loaded: its source (mapped when older), and the release (once). */
|
|
98
|
+
export type PinnedKey = {
|
|
99
|
+
readonly source: DeriveSource;
|
|
100
|
+
readonly release: () => void;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* A factory: synchronous and declarative, run once per attempt. A remote one also gets the principal in its object's
|
|
104
|
+
* identity and returns one variant, `{ variant, members }`. Methods get a `Ctx` for the app's principal type `P`.
|
|
105
|
+
*/
|
|
106
|
+
export type Factory<C extends Contract, P extends Principal = Principal> = ShapeOf<C>["kind"] extends "local" ? (params: ParamsOf<C>, self: keyof ParamsOf<C> extends never ? StoreSelf<P> : Self<P>) => Implementation<C, Ctx<P>> : (params: ParamsOf<C>, principal: P, self: Self<P>) => Implementation<C, Ctx<P>>;
|
|
107
|
+
/** How an attempt's activation ended. */
|
|
108
|
+
type Activation = {
|
|
109
|
+
readonly kind: "live";
|
|
110
|
+
} | {
|
|
111
|
+
readonly kind: "failed";
|
|
112
|
+
readonly cause: FailureCause;
|
|
113
|
+
} | {
|
|
114
|
+
readonly kind: "ended";
|
|
115
|
+
readonly error: ChordError;
|
|
116
|
+
};
|
|
117
|
+
/** How an activation that did not go live ended. */
|
|
118
|
+
type NotLive = Exclude<Activation, {
|
|
119
|
+
readonly kind: "live";
|
|
120
|
+
}>;
|
|
121
|
+
/** The error of an object, or a getter, that waited `ms` without the object going live. */
|
|
122
|
+
export declare function notLive(label: string, ms: number): ChordError;
|
|
123
|
+
/**
|
|
124
|
+
* One attempt of an object. Activation: factory, documents hydrated (the object's slots), references bound, then parked
|
|
125
|
+
* until every dependency is live (no timer: the deadline paused), then its own steps: natives opened one after
|
|
126
|
+
* another, followed sources attached, members checked, derives computed; bounded by the host's `readyTimeout`.
|
|
127
|
+
* Ending: sealed at once (calls aborted, its transactions refused and the one holding the line discarded, its job
|
|
128
|
+
* invocations cut off), then the drain, the closes in reverse, derives detached; its object releases its references.
|
|
129
|
+
* Documents and job runs stay on the object.
|
|
130
|
+
*/
|
|
131
|
+
export declare class Attempt implements StoreSelf, KeyDeclarer, RegistryWaiter {
|
|
132
|
+
#private;
|
|
133
|
+
constructor(object: ChordObject, context: Context);
|
|
134
|
+
state<D extends StateDefinition<JsonObject, boolean, boolean>>(definition: D): HandleOf<D>;
|
|
135
|
+
/** `handle.at(key)`: pins `key` of `slot` while this attempt's factory's pins are held, and returns its source. */
|
|
136
|
+
at(slot: KeyedSlot, key: string): KeySource;
|
|
137
|
+
table<C extends Columns, K extends readonly string[]>(definition: TableDefinition<C, K>): Table<C, K>;
|
|
138
|
+
derive<const S extends readonly (Watchable<unknown> | NativeWatchable<unknown>)[], T extends JsonValue>(sources: S, compute: (values: {
|
|
139
|
+
readonly [I in keyof S]: S[I] extends Watchable<infer V> ? V : S[I] extends NativeWatchable<infer V> ? V : never;
|
|
140
|
+
}) => T): Watchable<T>;
|
|
141
|
+
get<C extends Contract>(Type: C, params: ParamsOf<C>): Reference<C>;
|
|
142
|
+
registry<C, V>(R: Registry<C, V>): RegistryValue<V>;
|
|
143
|
+
writable<T>(initial: T): Writable<T>;
|
|
144
|
+
retryOn(...sources: readonly (Watchable<unknown> | NativeWatchable<unknown>)[]): void;
|
|
145
|
+
contribute<C>(R: Registry<C, unknown>, value: Contribution<C>): void;
|
|
146
|
+
open<T>(open: (context: Context) => Promise<T>, close: (value: T, reason: NativeCloseReason, context: Context) => void | Promise<void>, options?: NativeOptions): Native<T>;
|
|
147
|
+
tx<R>(fn: (tx: Tx) => R | Promise<R>, context: Context): Promise<R>;
|
|
148
|
+
follow<T>(attach: FollowAttach<T>): Watchable<T>;
|
|
149
|
+
on<T>(source: Watchable<T>, fn: OnHandler<T>): void;
|
|
150
|
+
on<T>(source: NativeWatchable<T>, fn: OnNativeHandler<T>): void;
|
|
151
|
+
onLive(fn: OnLiveHandler): void;
|
|
152
|
+
job<A, R, S>(definition: JobDefinition<A, R, S>, implementation: JobImplementation<A, R, S>): JobHandle<A, R, S>;
|
|
153
|
+
/**
|
|
154
|
+
* Activates once `ending` (the previous instance's) has finished; `readyTimeout` bounds both (an attempt abandoned
|
|
155
|
+
* while it waits has opened nothing).
|
|
156
|
+
*/
|
|
157
|
+
activate(ending: Promise<void> | undefined): Promise<Activation>;
|
|
158
|
+
/** Abandons the activation with `outcome` (once): its waits stop and the openers' contexts are aborted. */
|
|
159
|
+
abandon(outcome: NotLive): void;
|
|
160
|
+
/**
|
|
161
|
+
* The object went live: its jobs take starts and its routines start, in this turn; both stop when it is sealed.
|
|
162
|
+
* After a swap (`previous`, the attempt it replaced) its routines start once the previous attempt's routine calls
|
|
163
|
+
* finished (the handover per object, §14), calls never wait for it.
|
|
164
|
+
*/
|
|
165
|
+
live(previous?: Attempt): void;
|
|
166
|
+
/**
|
|
167
|
+
* A reload swaps this live attempt out (slice 7b §5): its routines stop, its jobs are handed over (their running
|
|
168
|
+
* invocations finish on this code), it takes no new starts; its calls run on until `drainCalls` settled.
|
|
169
|
+
*/
|
|
170
|
+
handOver(): void;
|
|
171
|
+
/** Its routines stop (their ctx aborted); their running calls are waited for by the drain or the handover. */
|
|
172
|
+
stopRoutines(): void;
|
|
173
|
+
/**
|
|
174
|
+
* The new attempt's routines may start: once this attempt's routine calls finished, bounded by `closeTimeout` (a
|
|
175
|
+
* stuck one is reported `drain_timeout`; the whole attempt is sealed by then: the swap's retirement drains its
|
|
176
|
+
* calls and routine calls on the same bound from the swap's start, then seals it, so a stuck call's later commit
|
|
177
|
+
* is refused `released`).
|
|
178
|
+
*/
|
|
179
|
+
handOverRoutines(): Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Waits for its running calls and routine calls (not its job invocations), bounded by `closeTimeout`
|
|
182
|
+
* (`drain_timeout` reported): a reload's swap or restart lets them finish before the seal. Its end's drain then
|
|
183
|
+
* waits for them no more.
|
|
184
|
+
*/
|
|
185
|
+
drainCalls(): Promise<void>;
|
|
186
|
+
/** A reload started it: once live, its object retries its blocked job runs (slice 7b §8). */
|
|
187
|
+
startedByReload(): void;
|
|
188
|
+
/** Whether a reload started it. */
|
|
189
|
+
get reloadStarted(): boolean;
|
|
190
|
+
/** Whether its factory declared job `name`. */
|
|
191
|
+
declaresJob(name: string): boolean;
|
|
192
|
+
/** Whether its factory opens natives (`self.open`): a reload restarts it instead of swapping it. */
|
|
193
|
+
get opensNatives(): boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Its first dependency check: why it parked (`parkedCause`), `undefined` when it went on (its dependencies live) or
|
|
196
|
+
* its activation ended before (a reload's report and a swap's handover wait for it).
|
|
197
|
+
*/
|
|
198
|
+
get checked(): Promise<FailureCause | undefined>;
|
|
199
|
+
/** Whether it is parked on its dependencies (the dependency check runs). */
|
|
200
|
+
get isParked(): boolean;
|
|
201
|
+
/** Its contributions, resolved by its activation: in the registries' tables while its object is live. */
|
|
202
|
+
get contributions(): readonly RegistryContribution[];
|
|
203
|
+
/** The variant a remote object's factory chose; `undefined` for a local object. */
|
|
204
|
+
get variant(): string | undefined;
|
|
205
|
+
/** The state members, as Chord follows them. */
|
|
206
|
+
get stateMembers(): ReadonlyMap<string, DeriveSource>;
|
|
207
|
+
/**
|
|
208
|
+
* Calls a method for `caller`, bound at `version`: a method outside the variant fails `invalid/member` first (for an
|
|
209
|
+
* older version after its table's checks), then the arguments are checked against that version (L1) and, for an
|
|
210
|
+
* older one (Q10), mapped forwards, the handler's result mapped back, or the provider's replacement of a removed
|
|
211
|
+
* method run instead; a refused method fails `contract_mismatch`. The handler runs under a ctx aborted by the caller
|
|
212
|
+
* and by this attempt's end, admitted to the drain before it runs. Either rejects the caller at once; the handler
|
|
213
|
+
* runs on, its transactions refused, and the drain waits for it. Its `ctx.get` references are released when it
|
|
214
|
+
* settles. Measured choices (fix round 2): one body for every version (with the shared part in a helper method, a
|
|
215
|
+
* call over a link was about 10% slower in the links benchmark), and no `async` (a check's throw is returned as a
|
|
216
|
+
* rejection; as an async function a local call allocated about 250 B more).
|
|
217
|
+
*/
|
|
218
|
+
call(method: string, args: unknown, context: Context, caller: Caller, version: number): Promise<unknown>;
|
|
219
|
+
/**
|
|
220
|
+
* The keyed member `member`'s ultimate slot (slice 6a §12, rule 22: through re-exposures); an unknown one fails
|
|
221
|
+
* `invalid/member`.
|
|
222
|
+
*/
|
|
223
|
+
keyedMember(member: string): KeyedSlot;
|
|
224
|
+
/** The keyed members as checked: what each is (`KeyedBinding`), for the keys its object holds across attempts. */
|
|
225
|
+
get keyedMembers(): ReadonlyMap<string, KeyedBinding>;
|
|
226
|
+
/**
|
|
227
|
+
* State member `member` as a consumer of `version` follows it: its own member at its version, else its shared mapping
|
|
228
|
+
* for that version (`AdaptedMembers`); `invalid/member` outside the variant, `contract_mismatch` for a version or
|
|
229
|
+
* member its provider refuses.
|
|
230
|
+
*/
|
|
231
|
+
memberAt(member: string, version: number): DeriveSource;
|
|
232
|
+
/** How a consumer of `version` reads keyed member `member`'s documents: mapped when older (`undefined`: as they are). */
|
|
233
|
+
keyMapping(member: string, version: number): ((current: JsonValue) => JsonValue) | undefined;
|
|
234
|
+
/**
|
|
235
|
+
* Pins `key` of keyed member `member` on this instance, loaded (its own slot's document, or the re-exposed reference's
|
|
236
|
+
* key), as a consumer of `version` reads it (mapped when older); `release` lets it go.
|
|
237
|
+
*/
|
|
238
|
+
pinKey(member: string, key: string, version: number, context: Context): Promise<PinnedKey>;
|
|
239
|
+
/** No consumer of `version` is left: its shared mapping goes. */
|
|
240
|
+
dropVersion(version: number): void;
|
|
241
|
+
/** The state member `member`, as Chord follows it; one outside the variant fails `invalid/member`. */
|
|
242
|
+
member(member: string): DeriveSource;
|
|
243
|
+
/**
|
|
244
|
+
* Ends the attempt at once (the seal fence): calls, openers and routines aborted with `error` (their callers
|
|
245
|
+
* rejected with it), its transactions refused and the one holding the line discarded, its job invocations cut off
|
|
246
|
+
* (an in-memory run ends `aborted` with `runs` as its reason: `reload` for a native restart, slice 7b §8); documents
|
|
247
|
+
* stay readable.
|
|
248
|
+
*/
|
|
249
|
+
seal(error: ChordError, runs?: CutReason): void;
|
|
250
|
+
/**
|
|
251
|
+
* Tears a sealed attempt down: waits for its running handlers, routine calls and runs up to the host's
|
|
252
|
+
* `closeTimeout` (the drain), then closes its natives in reverse with `reason`. Resolves with the closes that threw.
|
|
253
|
+
*/
|
|
254
|
+
close(reason: NativeCloseReason): Promise<CloseFailed[]>;
|
|
255
|
+
/**
|
|
256
|
+
* Detaches its derives (once their object no longer needs them: reads throw `released`, their watches end), its
|
|
257
|
+
* followed sources (their observers detached, their watches ended) and its writables (their watches ended).
|
|
258
|
+
*/
|
|
259
|
+
detach(): void;
|
|
260
|
+
/** Releases its references and registry reads. */
|
|
261
|
+
releaseReferences(): void;
|
|
262
|
+
/**
|
|
263
|
+
* A dependency of this parked attempt changed (its state, its cause, its first outcome): it checks again after the
|
|
264
|
+
* batch that changed it, once however many changed. A change while it checks or loads pinned keys is remembered
|
|
265
|
+
* (`#moved`); one outside parking costs a flag.
|
|
266
|
+
*/
|
|
267
|
+
dependencyMoved(): void;
|
|
268
|
+
/** A registry it is parked on closed with its host: the parked attempt ends with `error`. */
|
|
269
|
+
closed(error: ChordError): void;
|
|
270
|
+
/**
|
|
271
|
+
* `ref.retry()` on its parked object (`failed { waiting }`): passed on to every failed dependency (a broken or
|
|
272
|
+
* transient one retries, a parked one passes it on, a request waiting in an index is left alone), as a step of
|
|
273
|
+
* `walk`; then it checks again (a key that failed to load is loaded again).
|
|
274
|
+
*/
|
|
275
|
+
retryDependencies(walk: RetryWalk): void;
|
|
276
|
+
}
|
|
277
|
+
export {};
|
|
278
|
+
//# sourceMappingURL=attempt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attempt.d.ts","sourceRoot":"","sources":["../../../src/next/host/attempt.ts"],"names":[],"mappings":"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"}
|