@earendil-works/chord 1.4.0 → 1.5.1
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 +92 -0
- package/README.md +115 -90
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/index.js.map +1 -1
- package/dist/contracts/accepts.d.ts +81 -0
- package/dist/contracts/accepts.d.ts.map +1 -0
- package/dist/contracts/accepts.js +123 -0
- package/dist/contracts/accepts.js.map +1 -0
- package/dist/contracts/contract.d.ts +121 -0
- package/dist/contracts/contract.d.ts.map +1 -0
- package/dist/contracts/contract.js +50 -0
- package/dist/contracts/contract.js.map +1 -0
- package/dist/contracts/declare.d.ts +107 -0
- package/dist/contracts/declare.d.ts.map +1 -0
- package/dist/contracts/declare.js +136 -0
- package/dist/contracts/declare.js.map +1 -0
- package/dist/contracts/evolve.d.ts +92 -0
- package/dist/contracts/evolve.d.ts.map +1 -0
- package/dist/contracts/evolve.js +179 -0
- package/dist/contracts/evolve.js.map +1 -0
- package/dist/contracts/fingerprint.d.ts +16 -0
- package/dist/contracts/fingerprint.d.ts.map +1 -0
- package/dist/contracts/fingerprint.js +50 -0
- package/dist/contracts/fingerprint.js.map +1 -0
- package/dist/contracts/history.d.ts +71 -0
- package/dist/contracts/history.d.ts.map +1 -0
- package/dist/contracts/history.js +3 -0
- package/dist/contracts/history.js.map +1 -0
- package/dist/contracts/host-kind.d.ts +40 -0
- package/dist/contracts/host-kind.d.ts.map +1 -0
- package/dist/contracts/host-kind.js +37 -0
- package/dist/contracts/host-kind.js.map +1 -0
- package/dist/contracts/index.d.ts +7 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +6 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/internal.d.ts +10 -0
- package/dist/contracts/internal.d.ts.map +1 -0
- package/dist/contracts/internal.js +9 -0
- package/dist/contracts/internal.js.map +1 -0
- package/dist/contracts/names.d.ts +3 -0
- package/dist/contracts/names.d.ts.map +1 -0
- package/dist/contracts/names.js +13 -0
- package/dist/contracts/names.js.map +1 -0
- package/dist/contracts/params.d.ts +28 -0
- package/dist/contracts/params.d.ts.map +1 -0
- package/dist/contracts/params.js +50 -0
- package/dist/contracts/params.js.map +1 -0
- package/dist/contracts/schema.d.ts +102 -0
- package/dist/contracts/schema.d.ts.map +1 -0
- package/dist/contracts/schema.js +103 -0
- package/dist/contracts/schema.js.map +1 -0
- package/dist/contracts/snapshot.d.ts +16 -0
- package/dist/contracts/snapshot.d.ts.map +1 -0
- package/dist/contracts/snapshot.js +167 -0
- package/dist/contracts/snapshot.js.map +1 -0
- package/dist/data/args.d.ts +50 -0
- package/dist/data/args.d.ts.map +1 -0
- package/dist/data/args.js +83 -0
- package/dist/data/args.js.map +1 -0
- package/dist/data/errors.d.ts +80 -0
- package/dist/data/errors.d.ts.map +1 -0
- package/dist/data/errors.js +116 -0
- package/dist/data/errors.js.map +1 -0
- package/dist/data/failure.d.ts +26 -0
- package/dist/data/failure.d.ts.map +1 -0
- package/dist/data/failure.js +77 -0
- package/dist/data/failure.js.map +1 -0
- package/dist/data/index.d.ts +4 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +5 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/internal.d.ts +7 -0
- package/dist/data/internal.d.ts.map +1 -0
- package/dist/data/internal.js +8 -0
- package/dist/data/internal.js.map +1 -0
- package/dist/data/params.d.ts +20 -0
- package/dist/data/params.d.ts.map +1 -0
- package/dist/data/params.js +31 -0
- package/dist/data/params.js.map +1 -0
- package/dist/data/principal.d.ts +22 -0
- package/dist/data/principal.d.ts.map +1 -0
- package/dist/data/principal.js +49 -0
- package/dist/data/principal.js.map +1 -0
- package/dist/data/validator.d.ts +12 -0
- package/dist/data/validator.d.ts.map +1 -0
- package/dist/data/validator.js +35 -0
- package/dist/data/validator.js.map +1 -0
- 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/documents/address-source.d.ts +20 -0
- package/dist/documents/address-source.d.ts.map +1 -0
- package/dist/documents/address-source.js +44 -0
- package/dist/documents/address-source.js.map +1 -0
- package/dist/documents/definition.d.ts +84 -0
- package/dist/documents/definition.d.ts.map +1 -0
- package/dist/documents/definition.js +74 -0
- package/dist/documents/definition.js.map +1 -0
- package/dist/documents/documents.d.ts +126 -0
- package/dist/documents/documents.d.ts.map +1 -0
- package/dist/documents/documents.js +248 -0
- package/dist/documents/documents.js.map +1 -0
- package/dist/documents/fence.d.ts +9 -0
- package/dist/documents/fence.d.ts.map +1 -0
- package/dist/documents/fence.js +15 -0
- package/dist/documents/fence.js.map +1 -0
- package/dist/documents/handles.d.ts +76 -0
- package/dist/documents/handles.d.ts.map +1 -0
- package/dist/documents/handles.js +66 -0
- package/dist/documents/handles.js.map +1 -0
- package/dist/documents/index.d.ts +4 -0
- package/dist/documents/index.d.ts.map +1 -0
- package/dist/documents/index.js +3 -0
- package/dist/documents/index.js.map +1 -0
- package/dist/documents/internal.d.ts +9 -0
- package/dist/documents/internal.d.ts.map +1 -0
- package/dist/documents/internal.js +9 -0
- package/dist/documents/internal.js.map +1 -0
- package/dist/documents/keyed-slot.d.ts +103 -0
- package/dist/documents/keyed-slot.d.ts.map +1 -0
- package/dist/documents/keyed-slot.js +395 -0
- package/dist/documents/keyed-slot.js.map +1 -0
- package/dist/documents/line.d.ts +7 -0
- package/dist/documents/line.d.ts.map +1 -0
- package/dist/documents/line.js +14 -0
- package/dist/documents/line.js.map +1 -0
- package/dist/documents/persistence.d.ts +104 -0
- package/dist/documents/persistence.d.ts.map +1 -0
- package/dist/documents/persistence.js +129 -0
- package/dist/documents/persistence.js.map +1 -0
- package/dist/documents/residency.d.ts +31 -0
- package/dist/documents/residency.d.ts.map +1 -0
- package/dist/documents/residency.js +93 -0
- package/dist/documents/residency.js.map +1 -0
- package/dist/documents/slot.d.ts +109 -0
- package/dist/documents/slot.d.ts.map +1 -0
- package/dist/documents/slot.js +181 -0
- package/dist/documents/slot.js.map +1 -0
- package/dist/documents/transaction.d.ts +143 -0
- package/dist/documents/transaction.d.ts.map +1 -0
- package/dist/documents/transaction.js +442 -0
- package/dist/documents/transaction.js.map +1 -0
- package/dist/host/activity.d.ts +31 -0
- package/dist/host/activity.d.ts.map +1 -0
- package/dist/host/activity.js +40 -0
- package/dist/host/activity.js.map +1 -0
- package/dist/host/adapted.d.ts +49 -0
- package/dist/host/adapted.d.ts.map +1 -0
- package/dist/host/adapted.js +214 -0
- package/dist/host/adapted.js.map +1 -0
- package/dist/host/attempt.d.ts +308 -0
- package/dist/host/attempt.d.ts.map +1 -0
- package/dist/host/attempt.js +1199 -0
- package/dist/host/attempt.js.map +1 -0
- package/dist/host/backoff.d.ts +29 -0
- package/dist/host/backoff.d.ts.map +1 -0
- package/dist/host/backoff.js +69 -0
- package/dist/host/backoff.js.map +1 -0
- package/dist/host/ctx.d.ts +94 -0
- package/dist/host/ctx.d.ts.map +1 -0
- package/dist/host/ctx.js +200 -0
- package/dist/host/ctx.js.map +1 -0
- package/dist/host/deadline.d.ts +12 -0
- package/dist/host/deadline.d.ts.map +1 -0
- package/dist/host/deadline.js +40 -0
- package/dist/host/deadline.js.map +1 -0
- package/dist/host/dependencies.d.ts +65 -0
- package/dist/host/dependencies.d.ts.map +1 -0
- package/dist/host/dependencies.js +115 -0
- package/dist/host/dependencies.js.map +1 -0
- package/dist/host/destination.d.ts +48 -0
- package/dist/host/destination.d.ts.map +1 -0
- package/dist/host/destination.js +101 -0
- package/dist/host/destination.js.map +1 -0
- package/dist/host/facet.d.ts +84 -0
- package/dist/host/facet.d.ts.map +1 -0
- package/dist/host/facet.js +55 -0
- package/dist/host/facet.js.map +1 -0
- package/dist/host/follow.d.ts +52 -0
- package/dist/host/follow.d.ts.map +1 -0
- package/dist/host/follow.js +207 -0
- package/dist/host/follow.js.map +1 -0
- package/dist/host/host.d.ts +571 -0
- package/dist/host/host.d.ts.map +1 -0
- package/dist/host/host.js +1318 -0
- package/dist/host/host.js.map +1 -0
- package/dist/host/index.d.ts +17 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +6 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/internal.d.ts +11 -0
- package/dist/host/internal.d.ts.map +1 -0
- package/dist/host/internal.js +9 -0
- package/dist/host/internal.js.map +1 -0
- package/dist/host/members.d.ts +50 -0
- package/dist/host/members.d.ts.map +1 -0
- package/dist/host/members.js +107 -0
- package/dist/host/members.js.map +1 -0
- package/dist/host/native.d.ts +64 -0
- package/dist/host/native.d.ts.map +1 -0
- package/dist/host/native.js +126 -0
- package/dist/host/native.js.map +1 -0
- package/dist/host/object.d.ts +331 -0
- package/dist/host/object.d.ts.map +1 -0
- package/dist/host/object.js +1296 -0
- package/dist/host/object.js.map +1 -0
- package/dist/host/old-work.d.ts +34 -0
- package/dist/host/old-work.d.ts.map +1 -0
- package/dist/host/old-work.js +52 -0
- package/dist/host/old-work.js.map +1 -0
- package/dist/host/parked.d.ts +23 -0
- package/dist/host/parked.d.ts.map +1 -0
- package/dist/host/parked.js +79 -0
- package/dist/host/parked.js.map +1 -0
- package/dist/host/presence.d.ts +34 -0
- package/dist/host/presence.d.ts.map +1 -0
- package/dist/host/presence.js +117 -0
- package/dist/host/presence.js.map +1 -0
- package/dist/host/readiness.d.ts +27 -0
- package/dist/host/readiness.d.ts.map +1 -0
- package/dist/host/readiness.js +134 -0
- package/dist/host/readiness.js.map +1 -0
- package/dist/host/ref-state.d.ts +53 -0
- package/dist/host/ref-state.d.ts.map +1 -0
- package/dist/host/ref-state.js +83 -0
- package/dist/host/ref-state.js.map +1 -0
- package/dist/host/reference-keys.d.ts +36 -0
- package/dist/host/reference-keys.d.ts.map +1 -0
- package/dist/host/reference-keys.js +168 -0
- package/dist/host/reference-keys.js.map +1 -0
- package/dist/host/reference-source.d.ts +65 -0
- package/dist/host/reference-source.d.ts.map +1 -0
- package/dist/host/reference-source.js +285 -0
- package/dist/host/reference-source.js.map +1 -0
- package/dist/host/reference.d.ts +321 -0
- package/dist/host/reference.d.ts.map +1 -0
- package/dist/host/reference.js +797 -0
- package/dist/host/reference.js.map +1 -0
- package/dist/host/reload-cycle.d.ts +16 -0
- package/dist/host/reload-cycle.d.ts.map +1 -0
- package/dist/host/reload-cycle.js +81 -0
- package/dist/host/reload-cycle.js.map +1 -0
- package/dist/host/retry-on.d.ts +28 -0
- package/dist/host/retry-on.d.ts.map +1 -0
- package/dist/host/retry-on.js +52 -0
- package/dist/host/retry-on.js.map +1 -0
- package/dist/host/revocation.d.ts +16 -0
- package/dist/host/revocation.d.ts.map +1 -0
- package/dist/host/revocation.js +27 -0
- package/dist/host/revocation.js.map +1 -0
- package/dist/host/root.d.ts +37 -0
- package/dist/host/root.d.ts.map +1 -0
- package/dist/host/root.js +68 -0
- package/dist/host/root.js.map +1 -0
- package/dist/host/route.d.ts +64 -0
- package/dist/host/route.d.ts.map +1 -0
- package/dist/host/route.js +227 -0
- package/dist/host/route.js.map +1 -0
- package/dist/host/routines.d.ts +78 -0
- package/dist/host/routines.d.ts.map +1 -0
- package/dist/host/routines.js +398 -0
- package/dist/host/routines.js.map +1 -0
- package/dist/host/sleep.d.ts +9 -0
- package/dist/host/sleep.d.ts.map +1 -0
- package/dist/host/sleep.js +40 -0
- package/dist/host/sleep.js.map +1 -0
- package/dist/host/staging.d.ts +94 -0
- package/dist/host/staging.d.ts.map +1 -0
- package/dist/host/staging.js +304 -0
- package/dist/host/staging.js.map +1 -0
- package/dist/host/unbound-clock.d.ts +23 -0
- package/dist/host/unbound-clock.d.ts.map +1 -0
- package/dist/host/unbound-clock.js +58 -0
- package/dist/host/unbound-clock.js.map +1 -0
- package/dist/host/unbound.d.ts +37 -0
- package/dist/host/unbound.d.ts.map +1 -0
- package/dist/host/unbound.js +88 -0
- package/dist/host/unbound.js.map +1 -0
- package/dist/host/uuid.d.ts +3 -0
- package/dist/host/uuid.d.ts.map +1 -0
- package/dist/host/uuid.js +38 -0
- package/dist/host/uuid.js.map +1 -0
- package/dist/index.d.ts +29 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -9
- package/dist/index.js.map +1 -1
- package/dist/jobs/definition.d.ts +96 -0
- package/dist/jobs/definition.d.ts.map +1 -0
- package/dist/jobs/definition.js +83 -0
- package/dist/jobs/definition.js.map +1 -0
- package/dist/jobs/index.d.ts +5 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +3 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/internal.d.ts +3 -0
- package/dist/jobs/internal.d.ts.map +1 -0
- package/dist/jobs/internal.js +4 -0
- package/dist/jobs/internal.js.map +1 -0
- package/dist/jobs/job.d.ts +149 -0
- package/dist/jobs/job.d.ts.map +1 -0
- package/dist/jobs/job.js +387 -0
- package/dist/jobs/job.js.map +1 -0
- package/dist/jobs/persisted.d.ts +38 -0
- package/dist/jobs/persisted.d.ts.map +1 -0
- package/dist/jobs/persisted.js +95 -0
- package/dist/jobs/persisted.js.map +1 -0
- package/dist/jobs/records.d.ts +231 -0
- package/dist/jobs/records.d.ts.map +1 -0
- package/dist/jobs/records.js +871 -0
- package/dist/jobs/records.js.map +1 -0
- package/dist/jobs/run-states.d.ts +69 -0
- package/dist/jobs/run-states.d.ts.map +1 -0
- package/dist/jobs/run-states.js +228 -0
- package/dist/jobs/run-states.js.map +1 -0
- package/dist/jobs/run.d.ts +117 -0
- package/dist/jobs/run.d.ts.map +1 -0
- package/dist/jobs/run.js +204 -0
- package/dist/jobs/run.js.map +1 -0
- package/dist/jobs/running.d.ts +44 -0
- package/dist/jobs/running.d.ts.map +1 -0
- package/dist/jobs/running.js +117 -0
- package/dist/jobs/running.js.map +1 -0
- package/dist/jobs/stored.d.ts +63 -0
- package/dist/jobs/stored.d.ts.map +1 -0
- package/dist/jobs/stored.js +55 -0
- package/dist/jobs/stored.js.map +1 -0
- package/dist/link/binary.d.ts +4 -0
- package/dist/link/binary.d.ts.map +1 -0
- package/dist/link/binary.js +544 -0
- package/dist/link/binary.js.map +1 -0
- package/dist/link/channel.d.ts +68 -0
- package/dist/link/channel.d.ts.map +1 -0
- package/dist/link/channel.js +215 -0
- package/dist/link/channel.js.map +1 -0
- package/dist/link/errors.d.ts +7 -0
- package/dist/link/errors.d.ts.map +1 -0
- package/dist/link/errors.js +21 -0
- package/dist/link/errors.js.map +1 -0
- package/dist/link/index.d.ts +8 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js +8 -0
- package/dist/link/index.js.map +1 -0
- package/dist/link/internal.d.ts +9 -0
- package/dist/link/internal.d.ts.map +1 -0
- package/dist/link/internal.js +10 -0
- package/dist/link/internal.js.map +1 -0
- package/dist/link/ipc.d.ts +22 -0
- package/dist/link/ipc.d.ts.map +1 -0
- package/dist/link/ipc.js +64 -0
- package/dist/link/ipc.js.map +1 -0
- package/dist/link/link.d.ts +34 -0
- package/dist/link/link.d.ts.map +1 -0
- package/dist/link/link.js +87 -0
- package/dist/link/link.js.map +1 -0
- package/dist/link/message.d.ts +262 -0
- package/dist/link/message.d.ts.map +1 -0
- package/dist/link/message.js +156 -0
- package/dist/link/message.js.map +1 -0
- package/dist/link/part.d.ts +80 -0
- package/dist/link/part.d.ts.map +1 -0
- package/dist/link/part.js +165 -0
- package/dist/link/part.js.map +1 -0
- package/dist/link/text.d.ts +6 -0
- package/dist/link/text.d.ts.map +1 -0
- package/dist/link/text.js +355 -0
- package/dist/link/text.js.map +1 -0
- package/dist/link/values.d.ts +40 -0
- package/dist/link/values.d.ts.map +1 -0
- package/dist/link/values.js +121 -0
- package/dist/link/values.js.map +1 -0
- package/dist/link/websocket.d.ts +26 -0
- package/dist/link/websocket.d.ts.map +1 -0
- package/dist/link/websocket.js +91 -0
- package/dist/link/websocket.js.map +1 -0
- package/dist/node/app/app.d.ts +269 -0
- package/dist/node/app/app.d.ts.map +1 -0
- package/dist/node/app/app.js +513 -0
- package/dist/node/app/app.js.map +1 -0
- package/dist/node/app/archive.d.ts +37 -0
- package/dist/node/app/archive.d.ts.map +1 -0
- package/dist/node/app/archive.js +204 -0
- package/dist/node/app/archive.js.map +1 -0
- package/dist/node/app/blobs.d.ts +23 -0
- package/dist/node/app/blobs.d.ts.map +1 -0
- package/dist/node/app/blobs.js +64 -0
- package/dist/node/app/blobs.js.map +1 -0
- package/dist/node/app/data.d.ts +35 -0
- package/dist/node/app/data.d.ts.map +1 -0
- package/dist/node/app/data.js +44 -0
- package/dist/node/app/data.js.map +1 -0
- package/dist/node/app/ephemeral-sessions.d.ts +20 -0
- package/dist/node/app/ephemeral-sessions.d.ts.map +1 -0
- package/dist/node/app/ephemeral-sessions.js +69 -0
- package/dist/node/app/ephemeral-sessions.js.map +1 -0
- package/dist/node/app/ephemeral.d.ts +11 -0
- package/dist/node/app/ephemeral.d.ts.map +1 -0
- package/dist/node/app/ephemeral.js +34 -0
- package/dist/node/app/ephemeral.js.map +1 -0
- package/dist/node/app/files-copy.d.ts +13 -0
- package/dist/node/app/files-copy.d.ts.map +1 -0
- package/dist/node/app/files-copy.js +86 -0
- package/dist/node/app/files-copy.js.map +1 -0
- package/dist/node/app/files-entry.d.ts +4 -0
- package/dist/node/app/files-entry.d.ts.map +1 -0
- package/dist/node/app/files-entry.js +7 -0
- package/dist/node/app/files-entry.js.map +1 -0
- package/dist/node/app/files-index.d.ts +180 -0
- package/dist/node/app/files-index.d.ts.map +1 -0
- package/dist/node/app/files-index.js +535 -0
- package/dist/node/app/files-index.js.map +1 -0
- package/dist/node/app/files.d.ts +363 -0
- package/dist/node/app/files.d.ts.map +1 -0
- package/dist/node/app/files.js +368 -0
- package/dist/node/app/files.js.map +1 -0
- package/dist/node/app/folder-views.d.ts +21 -0
- package/dist/node/app/folder-views.d.ts.map +1 -0
- package/dist/node/app/folder-views.js +55 -0
- package/dist/node/app/folder-views.js.map +1 -0
- package/dist/node/app/index.d.ts +12 -0
- package/dist/node/app/index.d.ts.map +1 -0
- package/dist/node/app/index.js +15 -0
- package/dist/node/app/index.js.map +1 -0
- package/dist/node/app/info.d.ts +66 -0
- package/dist/node/app/info.d.ts.map +1 -0
- package/dist/node/app/info.js +37 -0
- package/dist/node/app/info.js.map +1 -0
- package/dist/node/app/invite.d.ts +5 -0
- package/dist/node/app/invite.d.ts.map +1 -0
- package/dist/node/app/invite.js +64 -0
- package/dist/node/app/invite.js.map +1 -0
- package/dist/node/app/layout.d.ts +36 -0
- package/dist/node/app/layout.d.ts.map +1 -0
- package/dist/node/app/layout.js +87 -0
- package/dist/node/app/layout.js.map +1 -0
- package/dist/node/app/owner.d.ts +31 -0
- package/dist/node/app/owner.d.ts.map +1 -0
- package/dist/node/app/owner.js +104 -0
- package/dist/node/app/owner.js.map +1 -0
- package/dist/node/app/pairing.d.ts +55 -0
- package/dist/node/app/pairing.d.ts.map +1 -0
- package/dist/node/app/pairing.js +183 -0
- package/dist/node/app/pairing.js.map +1 -0
- package/dist/node/app/secrets.d.ts +16 -0
- package/dist/node/app/secrets.d.ts.map +1 -0
- package/dist/node/app/secrets.js +72 -0
- package/dist/node/app/secrets.js.map +1 -0
- package/dist/node/app/sessions.d.ts +72 -0
- package/dist/node/app/sessions.d.ts.map +1 -0
- package/dist/node/app/sessions.js +222 -0
- package/dist/node/app/sessions.js.map +1 -0
- package/dist/node/app/tar.d.ts +24 -0
- package/dist/node/app/tar.d.ts.map +1 -0
- package/dist/node/app/tar.js +167 -0
- package/dist/node/app/tar.js.map +1 -0
- package/dist/node/app/uploads.d.ts +37 -0
- package/dist/node/app/uploads.d.ts.map +1 -0
- package/dist/node/app/uploads.js +157 -0
- package/dist/node/app/uploads.js.map +1 -0
- package/dist/node/app/users.d.ts +37 -0
- package/dist/node/app/users.d.ts.map +1 -0
- package/dist/node/app/users.js +62 -0
- package/dist/node/app/users.js.map +1 -0
- package/dist/node/app/worker.d.ts +18 -0
- package/dist/node/app/worker.d.ts.map +1 -0
- package/dist/node/app/worker.js +84 -0
- package/dist/node/app/worker.js.map +1 -0
- package/dist/node/compression.d.ts +7 -0
- package/dist/node/compression.d.ts.map +1 -0
- package/dist/node/compression.js +25 -0
- package/dist/node/compression.js.map +1 -0
- package/dist/node/http/admission.d.ts +63 -0
- package/dist/node/http/admission.d.ts.map +1 -0
- package/dist/node/http/admission.js +134 -0
- package/dist/node/http/admission.js.map +1 -0
- package/dist/node/http/authenticate.d.ts +21 -0
- package/dist/node/http/authenticate.d.ts.map +1 -0
- package/dist/node/http/authenticate.js +34 -0
- package/dist/node/http/authenticate.js.map +1 -0
- package/dist/node/http/cookies.d.ts +32 -0
- package/dist/node/http/cookies.d.ts.map +1 -0
- package/dist/node/http/cookies.js +70 -0
- package/dist/node/http/cookies.js.map +1 -0
- package/dist/node/http/file.d.ts +23 -0
- package/dist/node/http/file.d.ts.map +1 -0
- package/dist/node/http/file.js +94 -0
- package/dist/node/http/file.js.map +1 -0
- package/dist/node/http/headers.d.ts +37 -0
- package/dist/node/http/headers.d.ts.map +1 -0
- package/dist/node/http/headers.js +136 -0
- package/dist/node/http/headers.js.map +1 -0
- package/dist/node/http/http.d.ts +111 -0
- package/dist/node/http/http.d.ts.map +1 -0
- package/dist/node/http/http.js +524 -0
- package/dist/node/http/http.js.map +1 -0
- package/dist/node/http/incoming.d.ts +19 -0
- package/dist/node/http/incoming.d.ts.map +1 -0
- package/dist/node/http/incoming.js +31 -0
- package/dist/node/http/incoming.js.map +1 -0
- package/dist/node/http/index.d.ts +11 -0
- package/dist/node/http/index.d.ts.map +1 -0
- package/dist/node/http/index.js +12 -0
- package/dist/node/http/index.js.map +1 -0
- package/dist/node/http/node.d.ts +78 -0
- package/dist/node/http/node.d.ts.map +1 -0
- package/dist/node/http/node.js +291 -0
- package/dist/node/http/node.js.map +1 -0
- package/dist/node/http/request.d.ts +60 -0
- package/dist/node/http/request.d.ts.map +1 -0
- package/dist/node/http/request.js +118 -0
- package/dist/node/http/request.js.map +1 -0
- package/dist/node/http/response.d.ts +63 -0
- package/dist/node/http/response.d.ts.map +1 -0
- package/dist/node/http/response.js +202 -0
- package/dist/node/http/response.js.map +1 -0
- package/dist/node/http/router.d.ts +132 -0
- package/dist/node/http/router.d.ts.map +1 -0
- package/dist/node/http/router.js +267 -0
- package/dist/node/http/router.js.map +1 -0
- package/dist/node/http/upgrades.d.ts +61 -0
- package/dist/node/http/upgrades.d.ts.map +1 -0
- package/dist/node/http/upgrades.js +192 -0
- package/dist/node/http/upgrades.js.map +1 -0
- package/dist/node/plugins/base-inputs.d.ts +14 -0
- package/dist/node/plugins/base-inputs.d.ts.map +1 -0
- package/dist/node/plugins/base-inputs.js +33 -0
- package/dist/node/plugins/base-inputs.js.map +1 -0
- package/dist/node/plugins/build.d.ts +77 -0
- package/dist/node/plugins/build.d.ts.map +1 -0
- package/dist/node/plugins/build.js +576 -0
- package/dist/node/plugins/build.js.map +1 -0
- package/dist/node/plugins/css-modules.d.ts +13 -0
- package/dist/node/plugins/css-modules.d.ts.map +1 -0
- package/dist/node/plugins/css-modules.js +58 -0
- package/dist/node/plugins/css-modules.js.map +1 -0
- package/dist/node/plugins/discover.d.ts +67 -0
- package/dist/node/plugins/discover.d.ts.map +1 -0
- package/dist/node/plugins/discover.js +369 -0
- package/dist/node/plugins/discover.js.map +1 -0
- package/dist/node/plugins/evaluate.d.ts +33 -0
- package/dist/node/plugins/evaluate.d.ts.map +1 -0
- package/dist/node/plugins/evaluate.js +121 -0
- package/dist/node/plugins/evaluate.js.map +1 -0
- package/dist/node/plugins/index.d.ts +11 -0
- package/dist/node/plugins/index.d.ts.map +1 -0
- package/dist/node/plugins/index.js +13 -0
- package/dist/node/plugins/index.js.map +1 -0
- package/dist/node/plugins/install.d.ts +38 -0
- package/dist/node/plugins/install.d.ts.map +1 -0
- package/dist/node/plugins/install.js +213 -0
- package/dist/node/plugins/install.js.map +1 -0
- package/dist/node/plugins/plugins.d.ts +162 -0
- package/dist/node/plugins/plugins.d.ts.map +1 -0
- package/dist/node/plugins/plugins.js +244 -0
- package/dist/node/plugins/plugins.js.map +1 -0
- package/dist/node/plugins/runtime.d.ts +57 -0
- package/dist/node/plugins/runtime.d.ts.map +1 -0
- package/dist/node/plugins/runtime.js +92 -0
- package/dist/node/plugins/runtime.js.map +1 -0
- package/dist/node/plugins/stack.d.ts +16 -0
- package/dist/node/plugins/stack.d.ts.map +1 -0
- package/dist/node/plugins/stack.js +61 -0
- package/dist/node/plugins/stack.js.map +1 -0
- package/dist/node/plugins/testing.d.ts +58 -0
- package/dist/node/plugins/testing.d.ts.map +1 -0
- package/dist/node/plugins/testing.js +210 -0
- package/dist/node/plugins/testing.js.map +1 -0
- package/dist/node/plugins/watcher.d.ts +69 -0
- package/dist/node/plugins/watcher.d.ts.map +1 -0
- package/dist/node/plugins/watcher.js +622 -0
- package/dist/node/plugins/watcher.js.map +1 -0
- package/dist/node/surfaces/bundle.d.ts +31 -0
- package/dist/node/surfaces/bundle.d.ts.map +1 -0
- package/dist/node/surfaces/bundle.js +118 -0
- package/dist/node/surfaces/bundle.js.map +1 -0
- package/dist/node/surfaces/current.d.ts +17 -0
- package/dist/node/surfaces/current.d.ts.map +1 -0
- package/dist/node/surfaces/current.js +54 -0
- package/dist/node/surfaces/current.js.map +1 -0
- package/dist/node/surfaces/index.d.ts +6 -0
- package/dist/node/surfaces/index.d.ts.map +1 -0
- package/dist/node/surfaces/index.js +6 -0
- package/dist/node/surfaces/index.js.map +1 -0
- package/dist/node/surfaces/published.d.ts +27 -0
- package/dist/node/surfaces/published.d.ts.map +1 -0
- package/dist/node/surfaces/published.js +142 -0
- package/dist/node/surfaces/published.js.map +1 -0
- package/dist/node/surfaces/served.d.ts +15 -0
- package/dist/node/surfaces/served.d.ts.map +1 -0
- package/dist/node/surfaces/served.js +42 -0
- package/dist/node/surfaces/served.js.map +1 -0
- package/dist/node/surfaces/surface-build.d.ts +53 -0
- package/dist/node/surfaces/surface-build.d.ts.map +1 -0
- package/dist/node/surfaces/surface-build.js +105 -0
- package/dist/node/surfaces/surface-build.js.map +1 -0
- package/dist/node/surfaces/tui.d.ts +40 -0
- package/dist/node/surfaces/tui.d.ts.map +1 -0
- package/dist/node/surfaces/tui.js +55 -0
- package/dist/node/surfaces/tui.js.map +1 -0
- package/dist/node/surfaces/web.d.ts +56 -0
- package/dist/node/surfaces/web.d.ts.map +1 -0
- package/dist/node/surfaces/web.js +108 -0
- package/dist/node/surfaces/web.js.map +1 -0
- package/dist/node/tui/actions.d.ts +49 -0
- package/dist/node/tui/actions.d.ts.map +1 -0
- package/dist/node/tui/actions.js +195 -0
- package/dist/node/tui/actions.js.map +1 -0
- package/dist/node/tui/credentials.d.ts +17 -0
- package/dist/node/tui/credentials.d.ts.map +1 -0
- package/dist/node/tui/credentials.js +54 -0
- package/dist/node/tui/credentials.js.map +1 -0
- package/dist/node/tui/filter.d.ts +5 -0
- package/dist/node/tui/filter.d.ts.map +1 -0
- package/dist/node/tui/filter.js +79 -0
- package/dist/node/tui/filter.js.map +1 -0
- package/dist/node/tui/index.d.ts +6 -0
- package/dist/node/tui/index.d.ts.map +1 -0
- package/dist/node/tui/index.js +6 -0
- package/dist/node/tui/index.js.map +1 -0
- package/dist/node/tui/launcher.d.ts +40 -0
- package/dist/node/tui/launcher.d.ts.map +1 -0
- package/dist/node/tui/launcher.js +439 -0
- package/dist/node/tui/launcher.js.map +1 -0
- package/dist/node/tui/pipe.d.ts +18 -0
- package/dist/node/tui/pipe.d.ts.map +1 -0
- package/dist/node/tui/pipe.js +134 -0
- package/dist/node/tui/pipe.js.map +1 -0
- package/dist/node/tui/sandbox.d.ts +54 -0
- package/dist/node/tui/sandbox.d.ts.map +1 -0
- package/dist/node/tui/sandbox.js +431 -0
- package/dist/node/tui/sandbox.js.map +1 -0
- package/dist/node/workers/base.d.ts +30 -0
- package/dist/node/workers/base.d.ts.map +1 -0
- package/dist/node/workers/base.js +255 -0
- package/dist/node/workers/base.js.map +1 -0
- package/dist/node/workers/child.d.ts +4 -0
- package/dist/node/workers/child.d.ts.map +1 -0
- package/dist/node/workers/child.js +6 -0
- package/dist/node/workers/child.js.map +1 -0
- package/dist/node/workers/control.d.ts +83 -0
- package/dist/node/workers/control.d.ts.map +1 -0
- package/dist/node/workers/control.js +77 -0
- package/dist/node/workers/control.js.map +1 -0
- package/dist/node/workers/index.d.ts +4 -0
- package/dist/node/workers/index.d.ts.map +1 -0
- package/dist/node/workers/index.js +7 -0
- package/dist/node/workers/index.js.map +1 -0
- package/dist/node/workers/lock.d.ts +30 -0
- package/dist/node/workers/lock.d.ts.map +1 -0
- package/dist/node/workers/lock.js +180 -0
- package/dist/node/workers/lock.js.map +1 -0
- package/dist/node/workers/main.d.ts +46 -0
- package/dist/node/workers/main.d.ts.map +1 -0
- package/dist/node/workers/main.js +230 -0
- package/dist/node/workers/main.js.map +1 -0
- package/dist/node/workers/process.d.ts +42 -0
- package/dist/node/workers/process.d.ts.map +1 -0
- package/dist/node/workers/process.js +125 -0
- package/dist/node/workers/process.js.map +1 -0
- package/dist/node/workers/workers.d.ts +122 -0
- package/dist/node/workers/workers.d.ts.map +1 -0
- package/dist/node/workers/workers.js +677 -0
- package/dist/node/workers/workers.js.map +1 -0
- package/dist/output.d.ts +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +4 -2
- package/dist/output.js.map +1 -1
- package/dist/react/hooks.d.ts +43 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +82 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +4 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/stores.d.ts +9 -0
- package/dist/react/stores.d.ts.map +1 -0
- package/dist/react/stores.js +37 -0
- package/dist/react/stores.js.map +1 -0
- package/dist/registries/contribution.d.ts +50 -0
- package/dist/registries/contribution.d.ts.map +1 -0
- package/dist/registries/contribution.js +129 -0
- package/dist/registries/contribution.js.map +1 -0
- package/dist/registries/entries.d.ts +18 -0
- package/dist/registries/entries.d.ts.map +1 -0
- package/dist/registries/entries.js +42 -0
- package/dist/registries/entries.js.map +1 -0
- package/dist/registries/index.d.ts +3 -0
- package/dist/registries/index.d.ts.map +1 -0
- package/dist/registries/index.js +5 -0
- package/dist/registries/index.js.map +1 -0
- package/dist/registries/internal.d.ts +4 -0
- package/dist/registries/internal.d.ts.map +1 -0
- package/dist/registries/internal.js +5 -0
- package/dist/registries/internal.js.map +1 -0
- package/dist/registries/record.d.ts +115 -0
- package/dist/registries/record.d.ts.map +1 -0
- package/dist/registries/record.js +283 -0
- package/dist/registries/record.js.map +1 -0
- package/dist/registries/registry.d.ts +74 -0
- package/dist/registries/registry.d.ts.map +1 -0
- package/dist/registries/registry.js +14 -0
- package/dist/registries/registry.js.map +1 -0
- package/dist/registries/value.d.ts +48 -0
- package/dist/registries/value.d.ts.map +1 -0
- package/dist/registries/value.js +224 -0
- package/dist/registries/value.js.map +1 -0
- package/dist/remote/calls.d.ts +25 -0
- package/dist/remote/calls.d.ts.map +1 -0
- package/dist/remote/calls.js +62 -0
- package/dist/remote/calls.js.map +1 -0
- package/dist/remote/consumer.d.ts +43 -0
- package/dist/remote/consumer.d.ts.map +1 -0
- package/dist/remote/consumer.js +350 -0
- package/dist/remote/consumer.js.map +1 -0
- package/dist/remote/hold.d.ts +141 -0
- package/dist/remote/hold.d.ts.map +1 -0
- package/dist/remote/hold.js +579 -0
- package/dist/remote/hold.js.map +1 -0
- package/dist/remote/host-link.d.ts +77 -0
- package/dist/remote/host-link.d.ts.map +1 -0
- package/dist/remote/host-link.js +184 -0
- package/dist/remote/host-link.js.map +1 -0
- package/dist/remote/internal.d.ts +6 -0
- package/dist/remote/internal.d.ts.map +1 -0
- package/dist/remote/internal.js +6 -0
- package/dist/remote/internal.js.map +1 -0
- package/dist/remote/path.d.ts +46 -0
- package/dist/remote/path.d.ts.map +1 -0
- package/dist/remote/path.js +73 -0
- package/dist/remote/path.js.map +1 -0
- package/dist/remote/provider.d.ts +89 -0
- package/dist/remote/provider.d.ts.map +1 -0
- package/dist/remote/provider.js +597 -0
- package/dist/remote/provider.js.map +1 -0
- package/dist/remote/relay.d.ts +69 -0
- package/dist/remote/relay.d.ts.map +1 -0
- package/dist/remote/relay.js +219 -0
- package/dist/remote/relay.js.map +1 -0
- package/dist/remote/remote-object.d.ts +138 -0
- package/dist/remote/remote-object.d.ts.map +1 -0
- package/dist/remote/remote-object.js +492 -0
- package/dist/remote/remote-object.js.map +1 -0
- package/dist/remote/replica.d.ts +59 -0
- package/dist/remote/replica.d.ts.map +1 -0
- package/dist/remote/replica.js +125 -0
- package/dist/remote/replica.js.map +1 -0
- package/dist/sqlite/cloudflare.d.ts +2 -0
- package/dist/sqlite/cloudflare.d.ts.map +1 -1
- package/dist/sqlite/cloudflare.js +10 -0
- package/dist/sqlite/cloudflare.js.map +1 -1
- package/dist/sqlite/database.d.ts +5 -2
- package/dist/sqlite/database.d.ts.map +1 -1
- package/dist/sqlite/database.js.map +1 -1
- package/dist/sqlite/node.d.ts +13 -2
- package/dist/sqlite/node.d.ts.map +1 -1
- package/dist/sqlite/node.js +31 -8
- package/dist/sqlite/node.js.map +1 -1
- package/dist/state/batch.d.ts +64 -0
- package/dist/state/batch.d.ts.map +1 -0
- package/dist/state/batch.js +164 -0
- package/dist/state/batch.js.map +1 -0
- package/dist/state/derive.d.ts +52 -0
- package/dist/state/derive.d.ts.map +1 -0
- package/dist/state/derive.js +182 -0
- package/dist/state/derive.js.map +1 -0
- package/dist/state/index.d.ts +6 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +4 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/internal.d.ts +6 -0
- package/dist/state/internal.d.ts.map +1 -0
- package/dist/state/internal.js +8 -0
- package/dist/state/internal.js.map +1 -0
- package/dist/state/native-source.d.ts +106 -0
- package/dist/state/native-source.d.ts.map +1 -0
- package/dist/state/native-source.js +240 -0
- package/dist/state/native-source.js.map +1 -0
- package/dist/state/watchable.d.ts +114 -0
- package/dist/state/watchable.d.ts.map +1 -0
- package/dist/state/watchable.js +156 -0
- package/dist/state/watchable.js.map +1 -0
- package/dist/state/writable.d.ts +32 -0
- package/dist/state/writable.d.ts.map +1 -0
- package/dist/state/writable.js +49 -0
- package/dist/state/writable.js.map +1 -0
- package/dist/store/adapter.d.ts +67 -0
- package/dist/store/adapter.d.ts.map +1 -0
- package/dist/store/adapter.js +118 -0
- package/dist/store/adapter.js.map +1 -0
- package/dist/store/allocator.d.ts +17 -0
- package/dist/store/allocator.d.ts.map +1 -0
- package/dist/store/allocator.js +30 -0
- package/dist/store/allocator.js.map +1 -0
- package/dist/store/applier.d.ts +8 -0
- package/dist/store/applier.d.ts.map +1 -0
- package/dist/store/applier.js +375 -0
- package/dist/store/applier.js.map +1 -0
- package/dist/store/apply-batch.d.ts +12 -0
- package/dist/store/apply-batch.d.ts.map +1 -0
- package/dist/store/apply-batch.js +83 -0
- package/dist/store/apply-batch.js.map +1 -0
- package/dist/store/archive.d.ts +32 -0
- package/dist/store/archive.d.ts.map +1 -0
- package/dist/store/archive.js +130 -0
- package/dist/store/archive.js.map +1 -0
- package/dist/store/backend.d.ts +10 -0
- package/dist/store/backend.d.ts.map +1 -0
- package/dist/store/backend.js +15 -0
- package/dist/store/backend.js.map +1 -0
- package/dist/store/catalog.d.ts +24 -0
- package/dist/store/catalog.d.ts.map +1 -0
- package/dist/store/catalog.js +17 -0
- package/dist/store/catalog.js.map +1 -0
- package/dist/store/claims.d.ts +23 -0
- package/dist/store/claims.d.ts.map +1 -0
- package/dist/store/claims.js +65 -0
- package/dist/store/claims.js.map +1 -0
- package/dist/store/columns.d.ts +77 -0
- package/dist/store/columns.d.ts.map +1 -0
- package/dist/store/columns.js +77 -0
- package/dist/store/columns.js.map +1 -0
- package/dist/store/engine.d.ts +176 -0
- package/dist/store/engine.d.ts.map +1 -0
- package/dist/store/engine.js +283 -0
- package/dist/store/engine.js.map +1 -0
- package/dist/store/evaluate.d.ts +17 -0
- package/dist/store/evaluate.d.ts.map +1 -0
- package/dist/store/evaluate.js +128 -0
- package/dist/store/evaluate.js.map +1 -0
- package/dist/store/export.d.ts +17 -0
- package/dist/store/export.d.ts.map +1 -0
- package/dist/store/export.js +200 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/expression.d.ts +150 -0
- package/dist/store/expression.d.ts.map +1 -0
- package/dist/store/expression.js +268 -0
- package/dist/store/expression.js.map +1 -0
- package/dist/store/import.d.ts +10 -0
- package/dist/store/import.d.ts.map +1 -0
- package/dist/store/import.js +276 -0
- package/dist/store/import.js.map +1 -0
- package/dist/store/index.d.ts +16 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +13 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json-column.d.ts +33 -0
- package/dist/store/json-column.d.ts.map +1 -0
- package/dist/store/json-column.js +62 -0
- package/dist/store/json-column.js.map +1 -0
- package/dist/store/jsonl.d.ts +9 -0
- package/dist/store/jsonl.d.ts.map +1 -0
- package/dist/store/jsonl.js +61 -0
- package/dist/store/jsonl.js.map +1 -0
- package/dist/store/live-query.d.ts +108 -0
- package/dist/store/live-query.d.ts.map +1 -0
- package/dist/store/live-query.js +254 -0
- package/dist/store/live-query.js.map +1 -0
- package/dist/store/outbox.d.ts +26 -0
- package/dist/store/outbox.d.ts.map +1 -0
- package/dist/store/outbox.js +80 -0
- package/dist/store/outbox.js.map +1 -0
- package/dist/store/query.d.ts +39 -0
- package/dist/store/query.d.ts.map +1 -0
- package/dist/store/query.js +97 -0
- package/dist/store/query.js.map +1 -0
- package/dist/store/refusal.d.ts +15 -0
- package/dist/store/refusal.d.ts.map +1 -0
- package/dist/store/refusal.js +36 -0
- package/dist/store/refusal.js.map +1 -0
- package/dist/store/rows.d.ts +80 -0
- package/dist/store/rows.d.ts.map +1 -0
- package/dist/store/rows.js +183 -0
- package/dist/store/rows.js.map +1 -0
- package/dist/store/schema.d.ts +25 -0
- package/dist/store/schema.d.ts.map +1 -0
- package/dist/store/schema.js +115 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/sql.d.ts +73 -0
- package/dist/store/sql.d.ts.map +1 -0
- package/dist/store/sql.js +234 -0
- package/dist/store/sql.js.map +1 -0
- package/dist/store/step.d.ts +50 -0
- package/dist/store/step.d.ts.map +1 -0
- package/dist/store/step.js +52 -0
- package/dist/store/step.js.map +1 -0
- package/dist/store/store.d.ts +171 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +818 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/table-changes.d.ts +29 -0
- package/dist/store/table-changes.d.ts.map +1 -0
- package/dist/store/table-changes.js +102 -0
- package/dist/store/table-changes.js.map +1 -0
- package/dist/store/table-evolve.d.ts +74 -0
- package/dist/store/table-evolve.d.ts.map +1 -0
- package/dist/store/table-evolve.js +201 -0
- package/dist/store/table-evolve.js.map +1 -0
- package/dist/store/table-handle.d.ts +73 -0
- package/dist/store/table-handle.d.ts.map +1 -0
- package/dist/store/table-handle.js +101 -0
- package/dist/store/table-handle.js.map +1 -0
- package/dist/store/table-history.d.ts +75 -0
- package/dist/store/table-history.d.ts.map +1 -0
- package/dist/store/table-history.js +42 -0
- package/dist/store/table-history.js.map +1 -0
- package/dist/store/table-migration.d.ts +16 -0
- package/dist/store/table-migration.d.ts.map +1 -0
- package/dist/store/table-migration.js +202 -0
- package/dist/store/table-migration.js.map +1 -0
- package/dist/store/table-writes.d.ts +125 -0
- package/dist/store/table-writes.d.ts.map +1 -0
- package/dist/store/table-writes.js +170 -0
- package/dist/store/table-writes.js.map +1 -0
- package/dist/store/table.d.ts +80 -0
- package/dist/store/table.d.ts.map +1 -0
- package/dist/store/table.js +103 -0
- package/dist/store/table.js.map +1 -0
- package/dist/store/text.d.ts +14 -0
- package/dist/store/text.d.ts.map +1 -0
- package/dist/store/text.js +51 -0
- package/dist/store/text.js.map +1 -0
- package/dist/store/writes.d.ts +5 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +4 -0
- package/dist/store/writes.js.map +1 -0
- package/dist/surfaces/active-language.d.ts +20 -0
- package/dist/surfaces/active-language.d.ts.map +1 -0
- package/dist/surfaces/active-language.js +78 -0
- package/dist/surfaces/active-language.js.map +1 -0
- package/dist/surfaces/active-theme.d.ts +16 -0
- package/dist/surfaces/active-theme.d.ts.map +1 -0
- package/dist/surfaces/active-theme.js +47 -0
- package/dist/surfaces/active-theme.js.map +1 -0
- package/dist/surfaces/client.d.ts +96 -0
- package/dist/surfaces/client.d.ts.map +1 -0
- package/dist/surfaces/client.js +264 -0
- package/dist/surfaces/client.js.map +1 -0
- package/dist/surfaces/connection.d.ts +49 -0
- package/dist/surfaces/connection.d.ts.map +1 -0
- package/dist/surfaces/connection.js +142 -0
- package/dist/surfaces/connection.js.map +1 -0
- package/dist/surfaces/format.d.ts +5 -0
- package/dist/surfaces/format.d.ts.map +1 -0
- package/dist/surfaces/format.js +37 -0
- package/dist/surfaces/format.js.map +1 -0
- package/dist/surfaces/index.d.ts +15 -0
- package/dist/surfaces/index.d.ts.map +1 -0
- package/dist/surfaces/index.js +18 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/language.d.ts +53 -0
- package/dist/surfaces/language.d.ts.map +1 -0
- package/dist/surfaces/language.js +74 -0
- package/dist/surfaces/language.js.map +1 -0
- package/dist/surfaces/loaded.d.ts +42 -0
- package/dist/surfaces/loaded.d.ts.map +1 -0
- package/dist/surfaces/loaded.js +116 -0
- package/dist/surfaces/loaded.js.map +1 -0
- package/dist/surfaces/locale-choice.d.ts +25 -0
- package/dist/surfaces/locale-choice.d.ts.map +1 -0
- package/dist/surfaces/locale-choice.js +14 -0
- package/dist/surfaces/locale-choice.js.map +1 -0
- package/dist/surfaces/messages.d.ts +67 -0
- package/dist/surfaces/messages.d.ts.map +1 -0
- package/dist/surfaces/messages.js +112 -0
- package/dist/surfaces/messages.js.map +1 -0
- package/dist/surfaces/page-state.d.ts +14 -0
- package/dist/surfaces/page-state.d.ts.map +1 -0
- package/dist/surfaces/page-state.js +43 -0
- package/dist/surfaces/page-state.js.map +1 -0
- package/dist/surfaces/preference.d.ts +32 -0
- package/dist/surfaces/preference.d.ts.map +1 -0
- package/dist/surfaces/preference.js +72 -0
- package/dist/surfaces/preference.js.map +1 -0
- package/dist/surfaces/registered.d.ts +33 -0
- package/dist/surfaces/registered.d.ts.map +1 -0
- package/dist/surfaces/registered.js +51 -0
- package/dist/surfaces/registered.js.map +1 -0
- package/dist/surfaces/scripts.d.ts +84 -0
- package/dist/surfaces/scripts.d.ts.map +1 -0
- package/dist/surfaces/scripts.js +28 -0
- package/dist/surfaces/scripts.js.map +1 -0
- package/dist/surfaces/theme-choice.d.ts +31 -0
- package/dist/surfaces/theme-choice.d.ts.map +1 -0
- package/dist/surfaces/theme-choice.js +18 -0
- package/dist/surfaces/theme-choice.js.map +1 -0
- package/dist/surfaces/themes.d.ts +43 -0
- package/dist/surfaces/themes.d.ts.map +1 -0
- package/dist/surfaces/themes.js +110 -0
- package/dist/surfaces/themes.js.map +1 -0
- package/dist/surfaces/translations.d.ts +29 -0
- package/dist/surfaces/translations.d.ts.map +1 -0
- package/dist/surfaces/translations.js +57 -0
- package/dist/surfaces/translations.js.map +1 -0
- package/dist/sync/batch.d.ts +18 -0
- package/dist/sync/batch.d.ts.map +1 -0
- package/dist/sync/batch.js +125 -0
- package/dist/sync/batch.js.map +1 -0
- package/dist/sync/client.d.ts +166 -0
- package/dist/sync/client.d.ts.map +1 -0
- package/dist/sync/client.js +438 -0
- package/dist/sync/client.js.map +1 -0
- package/dist/sync/files.d.ts +46 -0
- package/dist/sync/files.d.ts.map +1 -0
- package/dist/sync/files.js +13 -0
- package/dist/sync/files.js.map +1 -0
- package/dist/sync/filesystem.d.ts +37 -0
- package/dist/sync/filesystem.d.ts.map +1 -0
- package/dist/sync/filesystem.js +185 -0
- package/dist/sync/filesystem.js.map +1 -0
- package/dist/sync/index.d.ts +8 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +9 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/lines.d.ts +18 -0
- package/dist/sync/lines.d.ts.map +1 -0
- package/dist/sync/lines.js +46 -0
- package/dist/sync/lines.js.map +1 -0
- package/dist/sync/remote.d.ts +130 -0
- package/dist/sync/remote.d.ts.map +1 -0
- package/dist/sync/remote.js +46 -0
- package/dist/sync/remote.js.map +1 -0
- package/dist/sync/state.d.ts +17 -0
- package/dist/sync/state.d.ts.map +1 -0
- package/dist/sync/state.js +40 -0
- package/dist/sync/state.js.map +1 -0
- package/dist/telemetry-ingest/batch.d.ts +70 -0
- package/dist/telemetry-ingest/batch.d.ts.map +1 -0
- package/dist/telemetry-ingest/batch.js +110 -0
- package/dist/telemetry-ingest/batch.js.map +1 -0
- package/dist/telemetry-ingest/facet.d.ts +21 -0
- package/dist/telemetry-ingest/facet.d.ts.map +1 -0
- package/dist/telemetry-ingest/facet.js +96 -0
- package/dist/telemetry-ingest/facet.js.map +1 -0
- package/dist/telemetry-ingest/index.d.ts +5 -0
- package/dist/telemetry-ingest/index.d.ts.map +1 -0
- package/dist/telemetry-ingest/index.js +8 -0
- package/dist/telemetry-ingest/index.js.map +1 -0
- package/dist/telemetry-ingest/recorder.d.ts +50 -0
- package/dist/telemetry-ingest/recorder.d.ts.map +1 -0
- package/dist/telemetry-ingest/recorder.js +298 -0
- package/dist/telemetry-ingest/recorder.js.map +1 -0
- package/dist/telemetry-ingest/sender.d.ts +14 -0
- package/dist/telemetry-ingest/sender.d.ts.map +1 -0
- package/dist/telemetry-ingest/sender.js +64 -0
- package/dist/telemetry-ingest/sender.js.map +1 -0
- package/dist/telemetry-sqlite/index.d.ts +13 -4
- package/dist/telemetry-sqlite/index.d.ts.map +1 -1
- package/dist/telemetry-sqlite/index.js +81 -241
- package/dist/telemetry-sqlite/index.js.map +1 -1
- package/dist/telemetry-sqlite/node.d.ts +13 -0
- package/dist/telemetry-sqlite/node.d.ts.map +1 -0
- package/dist/telemetry-sqlite/node.js +27 -0
- package/dist/telemetry-sqlite/node.js.map +1 -0
- package/dist/telemetry-sqlite/schema.d.ts +9 -0
- package/dist/telemetry-sqlite/schema.d.ts.map +1 -0
- package/dist/telemetry-sqlite/schema.js +61 -0
- package/dist/telemetry-sqlite/schema.js.map +1 -0
- package/dist/telemetry-sqlite/store.d.ts +3 -0
- package/dist/telemetry-sqlite/store.d.ts.map +1 -1
- package/dist/telemetry-sqlite/store.js +24 -13
- package/dist/telemetry-sqlite/store.js.map +1 -1
- package/dist/telemetry.d.ts +937 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +470 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tui/bridge.d.ts +112 -0
- package/dist/tui/bridge.d.ts.map +1 -0
- package/dist/tui/bridge.js +9 -0
- package/dist/tui/bridge.js.map +1 -0
- package/dist/tui/channel.d.ts +44 -0
- package/dist/tui/channel.d.ts.map +1 -0
- package/dist/tui/channel.js +150 -0
- package/dist/tui/channel.js.map +1 -0
- package/dist/tui/frames.d.ts +5 -0
- package/dist/tui/frames.d.ts.map +1 -0
- package/dist/tui/frames.js +52 -0
- package/dist/tui/frames.js.map +1 -0
- package/dist/tui/index.d.ts +7 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +8 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/runtime.d.ts +46 -0
- package/dist/tui/runtime.d.ts.map +1 -0
- package/dist/tui/runtime.js +101 -0
- package/dist/tui/runtime.js.map +1 -0
- package/dist/tui/scope.d.ts +46 -0
- package/dist/tui/scope.d.ts.map +1 -0
- package/dist/tui/scope.js +141 -0
- package/dist/tui/scope.js.map +1 -0
- package/dist/tui/terminal.d.ts +15 -0
- package/dist/tui/terminal.d.ts.map +1 -0
- package/dist/tui/terminal.js +37 -0
- package/dist/tui/terminal.js.map +1 -0
- package/dist/tui/theme.d.ts +17 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +38 -0
- package/dist/tui/theme.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/web/environment.d.ts +4 -0
- package/dist/web/environment.d.ts.map +1 -0
- package/dist/web/environment.js +37 -0
- package/dist/web/environment.js.map +1 -0
- package/dist/web/index.d.ts +5 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +7 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/language.d.ts +7 -0
- package/dist/web/language.d.ts.map +1 -0
- package/dist/web/language.js +21 -0
- package/dist/web/language.js.map +1 -0
- package/dist/web/page.d.ts +29 -0
- package/dist/web/page.d.ts.map +1 -0
- package/dist/web/page.js +92 -0
- package/dist/web/page.js.map +1 -0
- package/dist/web/scripts.d.ts +23 -0
- package/dist/web/scripts.d.ts.map +1 -0
- package/dist/web/scripts.js +50 -0
- package/dist/web/scripts.js.map +1 -0
- package/dist/web/styles.d.ts +17 -0
- package/dist/web/styles.d.ts.map +1 -0
- package/dist/web/styles.js +218 -0
- package/dist/web/styles.js.map +1 -0
- package/dist/web/themes.d.ts +6 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +31 -0
- package/dist/web/themes.js.map +1 -0
- package/docs/benchmarks.md +1036 -0
- package/docs/decisions.md +3436 -0
- package/docs/dependencies/book.md +1671 -0
- package/docs/dependencies/index.html +2641 -0
- package/docs/dependencies/model.md +330 -0
- package/docs/design.md +3065 -0
- package/docs/durable-observers/book.md +432 -0
- package/docs/durable-observers/index.html +517 -0
- package/docs/flow-control/book.md +333 -0
- package/docs/flow-control/fold/index.html +265 -0
- package/docs/flow-control/index.html +548 -0
- package/docs/flow-control/window/index.html +228 -0
- package/docs/guide-plugins-hosts/book.md +957 -0
- package/docs/guide-plugins-hosts/index.html +952 -0
- package/docs/http-workers/book.md +378 -0
- package/docs/http-workers/index.html +515 -0
- package/docs/i18n/book.md +217 -0
- package/docs/i18n/index.html +344 -0
- package/docs/layer-1.md +311 -0
- package/docs/layer-2.md +216 -0
- package/docs/p3-features/README.md +6 -0
- package/docs/p3-features/book.md +478 -0
- package/docs/plugin-authoring.md +276 -0
- package/docs/plugin-model/book.md +186 -0
- package/docs/plugin-model/index.html +310 -0
- package/docs/plugin-primer/book.md +273 -0
- package/docs/plugin-primer/index.html +430 -0
- package/docs/slice-1.md +236 -0
- package/docs/slice-10.md +288 -0
- package/docs/slice-11.md +114 -0
- package/docs/slice-12.md +132 -0
- package/docs/slice-13.md +121 -0
- package/docs/slice-2.md +174 -0
- package/docs/slice-3a.md +296 -0
- package/docs/slice-3b.md +197 -0
- package/docs/slice-4.md +146 -0
- package/docs/slice-4a.md +418 -0
- package/docs/slice-4b.md +208 -0
- package/docs/slice-5.md +281 -0
- package/docs/slice-6a.md +676 -0
- package/docs/slice-6b.md +332 -0
- package/docs/slice-7a.md +130 -0
- package/docs/slice-7b/book.md +608 -0
- package/docs/slice-7b/index.html +842 -0
- package/docs/slice-7b.md +255 -0
- package/docs/slice-7c.md +165 -0
- package/docs/slice-8.md +194 -0
- package/docs/slice-9.md +110 -0
- package/docs/slices.md +241 -0
- package/docs/store/book.md +670 -0
- package/docs/store/index.html +861 -0
- package/docs/store/walkthrough.md +193 -0
- package/docs/theming/book.md +223 -0
- package/docs/theming/index.html +371 -0
- package/docs/tutorial/book.md +2169 -0
- package/docs/tutorial/index.html +2112 -0
- package/docs/tutorial/screens/click-after.png +0 -0
- package/docs/tutorial/screens/click-before.png +0 -0
- package/docs/tutorial/screens/edited.png +0 -0
- package/docs/tutorial/screens/french.png +0 -0
- package/docs/tutorial/screens/harbor.png +0 -0
- package/docs/tutorial/screens/page.png +0 -0
- package/docs/tutorial/screens/traces-ada.png +0 -0
- package/docs/tutorial/screens/traces.png +0 -0
- package/package.json +114 -20
- package/src/delta/README.md +69 -0
- package/dist/cell.d.ts +0 -122
- package/dist/cell.d.ts.map +0 -1
- package/dist/cell.js +0 -356
- package/dist/cell.js.map +0 -1
- package/dist/cluster.d.ts +0 -27
- package/dist/cluster.d.ts.map +0 -1
- package/dist/cluster.js +0 -230
- package/dist/cluster.js.map +0 -1
- package/dist/connection.d.ts +0 -270
- package/dist/connection.d.ts.map +0 -1
- package/dist/connection.js +0 -1216
- package/dist/connection.js.map +0 -1
- package/dist/contract.d.ts +0 -208
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -246
- package/dist/contract.js.map +0 -1
- package/dist/declare.d.ts +0 -33
- package/dist/declare.d.ts.map +0 -1
- package/dist/declare.js +0 -2
- package/dist/declare.js.map +0 -1
- package/dist/errors.d.ts +0 -28
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -59
- package/dist/errors.js.map +0 -1
- package/dist/host.d.ts +0 -348
- package/dist/host.d.ts.map +0 -1
- package/dist/host.js +0 -1000
- package/dist/host.js.map +0 -1
- package/dist/link.d.ts +0 -107
- package/dist/link.d.ts.map +0 -1
- package/dist/link.js +0 -355
- package/dist/link.js.map +0 -1
- package/dist/loader.d.ts +0 -4
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -73
- package/dist/loader.js.map +0 -1
- package/dist/manager.d.ts +0 -115
- package/dist/manager.d.ts.map +0 -1
- package/dist/manager.js +0 -345
- package/dist/manager.js.map +0 -1
- package/dist/node.d.ts +0 -4
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js +0 -4
- package/dist/node.js.map +0 -1
- package/dist/object.d.ts +0 -438
- package/dist/object.d.ts.map +0 -1
- package/dist/object.js +0 -1571
- package/dist/object.js.map +0 -1
- package/dist/publish.d.ts +0 -5
- package/dist/publish.d.ts.map +0 -1
- package/dist/publish.js +0 -40
- package/dist/publish.js.map +0 -1
- package/dist/registry.d.ts +0 -25
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -6
- package/dist/registry.js.map +0 -1
- package/dist/reload.d.ts +0 -126
- package/dist/reload.d.ts.map +0 -1
- package/dist/reload.js +0 -653
- package/dist/reload.js.map +0 -1
- package/dist/remote.d.ts +0 -165
- package/dist/remote.d.ts.map +0 -1
- package/dist/remote.js +0 -612
- package/dist/remote.js.map +0 -1
- package/dist/schema.d.ts +0 -21
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -228
- package/dist/schema.js.map +0 -1
- package/dist/state.d.ts +0 -92
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -287
- package/dist/state.js.map +0 -1
- package/dist/types.d.ts +0 -88
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/websocket.d.ts +0 -15
- package/dist/websocket.d.ts.map +0 -1
- package/dist/websocket.js +0 -16
- package/dist/websocket.js.map +0 -1
- package/dist/wire.d.ts +0 -216
- package/dist/wire.d.ts.map +0 -1
- package/dist/wire.js +0 -165
- package/dist/wire.js.map +0 -1
- package/docs/guide.md +0 -814
- package/docs/spec.md +0 -288
- package/docs/tutorial.md +0 -931
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/documents/transaction.ts"],"names":[],"mappings":"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","sourcesContent":["// Transactions (§9, R12, R13): drafts of an object's documents, prepared and adopted in one batch, with Chord's own\n// staged changes (job runs, §15), fenced by the token they run under; they run on the object's line (`line.ts`).\n\nimport { type Context, withoutAbortSignal } from \"../context/index.ts\";\nimport { ChordError } from \"../data/index.ts\";\nimport { asChordError } from \"../data/internal.ts\";\nimport { type Change, type Draft, type Prepared, type Tracker, track } from \"../delta/index.ts\";\nimport type { JobHandle, Outcome, Run, StartOptions } from \"../jobs/index.ts\";\nimport type { Job } from \"../jobs/internal.ts\";\nimport type { Columns, PutRowOf, RowOf } from \"../store/columns.ts\";\nimport type { Condition, SetOf } from \"../store/expression.ts\";\nimport { refreshOf } from \"../store/live-query.ts\";\nimport type { ColumnRefs, Query } from \"../store/query.ts\";\nimport { refusalOf } from \"../store/refusal.ts\";\nimport type { StagedWrite } from \"../store/step.ts\";\nimport type { ChordStore } from \"../store/store.ts\";\nimport type { KeyOf } from \"../store/table.ts\";\nimport { TableChanges } from \"../store/table-changes.ts\";\nimport { type Page, type PageOptions, ROWS_PAGE, type Table, TableHandle } from \"../store/table-handle.ts\";\nimport type { CommitPersistence, JsonObject } from \"./definition.ts\";\nimport type { Documents } from \"./documents.ts\";\nimport type { SealToken } from \"./fence.ts\";\nimport type { Keyed, KeyedHandle, Singleton, SingletonHandle } from \"./handles.ts\";\nimport type { KeyedSlot } from \"./keyed-slot.ts\";\nimport { checkReadable, type FoundDocument, type Stored, type StoredChange } from \"./persistence.ts\";\nimport type { DocumentSlot, PersistedSlot, SingletonSlot } from \"./slot.ts\";\n\n/** What `self.tx` gives its callback. Inside it: only `await tx.*`, no other `self.tx`, no calls to other objects. */\nexport interface Tx {\n\t/** The document's draft: the same one for the same document within one transaction. */\n\tdraft<T extends JsonObject>(handle: SingletonHandle<T>): Promise<Draft<T>>;\n\tdraft<T extends JsonObject>(handle: KeyedHandle<T>, key: string): Promise<Draft<T>>;\n\t/** Retires the document when the transaction commits (its address reads `initial()` again); a no-op when it is absent. */\n\tretire(handle: SingletonHandle<JsonObject>): Promise<void>;\n\tretire(handle: KeyedHandle<JsonObject>, key: string): Promise<void>;\n\t/**\n\t * Starts a run of `job`, one of this object's jobs, with this transaction's other writes (§15): both commit or\n\t * neither. Returns its `Run` at once; a discarded transaction's `Run` rejects `released` from `outcome`. A key of an\n\t * unsettled run (one started earlier in this transaction too) returns that run.\n\t */\n\tstart<A, R, S>(job: JobHandle<A, R, S>, args: A, options?: StartOptions): Run<Outcome<A, R, S>>;\n\t/** The row with `key` as this transaction leaves it (its own `put`, `update`, `delete` overlaid; W10). */\n\tget<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\tkey: KeyOf<C, K>,\n\t): Promise<RowOf<C> | undefined>;\n\t/** A page of committed rows, stable for the transaction (without its own writes). */\n\tpage<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\tq: Query<C, K>,\n\t\tlimit: number,\n\t\toptions?: PageOptions,\n\t): Promise<Page<RowOf<C>>>;\n\t/** Every committed row of `q`, as `page`. */\n\trows<C extends Columns, K extends readonly string[]>(table: Table<C, K>, q: Query<C, K>): AsyncIterable<RowOf<C>>;\n\t/** Writes `row` when the transaction commits (an upsert: the whole row replaced). */\n\tput<C extends Columns, K extends readonly string[]>(table: Table<C, K>, row: PutRowOf<C>): void;\n\t/** Changes the row with `key` when the transaction commits; an absent key changes nothing. */\n\tupdate<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\tkey: KeyOf<C, K>,\n\t\tset: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>),\n\t): void;\n\t/** Deletes the row with `key` when the transaction commits. */\n\tdelete<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>): void;\n\t/** Changes every row matching `where` when the transaction commits (one statement, its count recorded). */\n\tupdateWhere<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\twhere: (row: ColumnRefs<C>) => Condition,\n\t\tset: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>),\n\t): void;\n\t/** Deletes every row matching `where` when the transaction commits. */\n\tdeleteWhere<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\twhere: (row: ColumnRefs<C>) => Condition,\n\t): void;\n}\n\n/**\n * Chord's own changes staged in a transaction (a job's run records): adopted in its commit step with the documents,\n * then told how the transaction ended, once the owner's line is free.\n */\nexport interface Staged {\n\t/** Adopts the changes, inside the commit's batch. */\n\tadopt(): void;\n\t/** The transaction committed: the actions after the commit (a run starts, waiters settle). */\n\tcommitted(): void;\n\t/** The transaction was discarded: nothing was adopted. */\n\tdiscarded(): void;\n}\n\n/**\n * What one transaction does with one document: a draft, a retirement, or both (retired, then drafted anew); `found`\n * is what is stored of a cold persisted document it retires without loading (R13).\n */\ntype Entry = {\n\treadonly slot: DocumentSlot;\n\treadonly key: string;\n\tdraft: { readonly tracker: Tracker<JsonObject>; readonly change: Change<JsonObject> } | undefined;\n\tretire: boolean;\n\tfound: Stored | undefined;\n};\n\nconst IMMEDIATE: CommitPersistence = { kind: \"immediate\" };\n\n/**\n * One document change a commit adopts: a removal, a draft's prepared change, or both; and for a persisted document\n * what the commit stores of it.\n */\ntype Adoption = {\n\treadonly entry: Entry;\n\treadonly prepared: Prepared<JsonObject> | undefined;\n\treadonly retires: boolean;\n\treadonly stored: StoredChange | undefined;\n};\n\n/**\n * One transaction of an object, under the seal token of whoever runs it (an attempt, a job run's invocation, the\n * object). Commit prepares every draft (Delta records ops and checks only placed values) and adopts the changed\n * documents and the staged changes in one batch; drafts are revoked once it settles. Cut at its token's seal, it\n * discards everything, releases the line and refuses every later use.\n */\nexport class Transaction implements Tx {\n\treadonly #documents: Documents;\n\treadonly token: SealToken;\n\treadonly #release: () => void;\n\treadonly #context: Context;\n\treadonly #entries = new Map<DocumentSlot, Map<string, Entry>>();\n\t/** Chord's own staged changes, by their owner (a job); made by the first. */\n\t#staged: Map<object, Staged> | undefined;\n\t/**\n\t * The store writes, in staging order, and the store they commit to; made by the first (the flag that sends the\n\t * commit through the store's step, W12).\n\t */\n\t#writes: { readonly store: ChordStore; readonly staged: StagedWrite[] } | undefined;\n\t/** The tables written, each with its writes and overlay. */\n\t#tables: Map<TableHandle, TableChanges> | undefined;\n\t/** `tx.*` reads underway: a callback settling with one is refused (rule 3, as Durable's). */\n\t#pending = 0;\n\t/** When its commit reaches the store (a run state's deferred change, D8). */\n\treadonly #persistence: CommitPersistence;\n\t#state: \"open\" | \"committing\" | \"stepping\" | \"committed\" | \"discarded\" | \"cut\" = \"open\";\n\t/** Rejected by `cut` while the commit waits in the store's queue: its caller is told at once (rule 3). */\n\t#queued: PromiseWithResolvers<never> | undefined;\n\t/** What its commit adopts, once it started (telemetry's `chord.commit` counts it when asked). */\n\t#adoptions: readonly Adoption[] = [];\n\t/** The table rows its commit's step changed, once it committed through the store. */\n\t#rows = 0;\n\n\tconstructor(\n\t\tdocuments: Documents,\n\t\ttoken: SealToken,\n\t\trelease: () => void,\n\t\tcontext: Context,\n\t\tpersistence: CommitPersistence = IMMEDIATE,\n\t) {\n\t\tthis.#documents = documents;\n\t\tthis.token = token;\n\t\tthis.#release = release;\n\t\tthis.#context = context;\n\t\tthis.#persistence = persistence;\n\t}\n\n\t/**\n\t * The store writes of this transaction, which `write`s join (Chord's own documents: a job's run records): made by the\n\t * first, which sends the commit through `store`'s step.\n\t */\n\tstageStore(store: ChordStore): StagedWrite[] {\n\t\tthis.#writes ??= { store, staged: [] };\n\t\treturn this.#writes.staged;\n\t}\n\n\t/**\n\t * What its commit adopted: its documents, their ops, its store writes and the table rows they changed (all 0 before\n\t * it committed).\n\t */\n\tcommitted(): { readonly documents: number; readonly ops: number; readonly writes: number; readonly rows: number } {\n\t\tlet ops = 0;\n\t\tfor (const { prepared } of this.#adoptions) ops += prepared?.ops.length ?? 0;\n\t\treturn { documents: this.#adoptions.length, ops, writes: this.#writes?.staged.length ?? 0, rows: this.#rows };\n\t}\n\n\t/** The object whose transaction this is. */\n\tget documents(): Documents {\n\t\treturn this.#documents;\n\t}\n\n\tdraft<T extends JsonObject>(handle: SingletonHandle<T>): Promise<Draft<T>>;\n\tdraft<T extends JsonObject>(handle: KeyedHandle<T>, key: string): Promise<Draft<T>>;\n\tdraft<T extends JsonObject>(handle: SingletonHandle<T> | KeyedHandle<T>, key = \"\"): Promise<Draft<T>> {\n\t\t// Not `async`: the draft's promise is returned as it is, without another promise around it (the in-memory path\n\t\t// stays as cheap as before the store); a throw still reaches the caller as a rejection.\n\t\tlet slot: SingletonSlot | KeyedSlot;\n\t\tlet at: string;\n\t\t// Keyed keys follow the text rules (`KeyedSlot.key`); a singleton's key is always \"\".\n\t\ttry {\n\t\t\tslot = this.#slotOf(handle);\n\t\t\tat = key === \"\" ? key : slot.key(key);\n\t\t} catch (error) {\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t\t// The entry is made for this handle's slot, whose documents are `T`.\n\t\treturn this.draftSlot(slot, at) as Promise<Draft<T>>;\n\t}\n\n\t/**\n\t * The draft of the document at `key` of `slot` (Chord's own slots, a job's run states). A cold persisted document\n\t * is loaded first, inside the transaction (it holds the line); the draft counts as pending until it settles (rule\n\t * 3). A warm draft settles at once.\n\t */\n\tasync draftSlot(slot: DocumentSlot, key: string): Promise<Draft<JsonObject>> {\n\t\tconst entry = this.#entry(slot, key);\n\t\tconst persisted = slot.persisted;\n\t\tif (entry.draft !== undefined || entry.retire || persisted?.cold(key) !== true) return this.#begin(entry);\n\t\tthis.#pending++;\n\t\ttry {\n\t\t\tawait persisted.load(key, this.#context, this.token);\n\t\t\tthis.#assertOpen();\n\t\t\treturn this.#begin(entry);\n\t\t} finally {\n\t\t\tthis.#pending--;\n\t\t}\n\t}\n\n\tretire(handle: SingletonHandle<JsonObject>): Promise<void>;\n\tretire(handle: KeyedHandle<JsonObject>, key: string): Promise<void>;\n\tasync retire(handle: SingletonHandle<JsonObject> | KeyedHandle<JsonObject>, key = \"\"): Promise<void> {\n\t\tconst slot = this.#slotOf(handle);\n\t\tconst at = key === \"\" ? key : slot.key(key);\n\t\tconst entry = this.retireSlot(slot, at);\n\t\tconst persisted = slot.persisted;\n\t\t// A cold persisted document is found, not loaded (one read; absent: a no-op, R13); a version or fingerprint\n\t\t// the code cannot read fails the owner as a load would (R15): a retirement of it is no exception.\n\t\tif (entry.found === undefined && persisted?.cold(at)) {\n\t\t\tconst found = await this.#track(persisted.persistence.find(at, this.#context));\n\t\t\t// Cut meanwhile: its attempt was sealed, and failing the owner now would fail its successor.\n\t\t\tthis.#assertOpen();\n\t\t\tif (found !== undefined) checkFound(found, persisted, slot);\n\t\t\tentry.found = found?.stored;\n\t\t}\n\t}\n\n\t/** Retires the document at `key` of `slot` when the transaction commits. */\n\tretireSlot(slot: DocumentSlot, key: string): Entry {\n\t\tconst entry = this.#entry(slot, key);\n\t\tentry.draft?.change.abort();\n\t\tentry.draft = undefined;\n\t\tentry.retire = true;\n\t\treturn entry;\n\t}\n\n\tstart<A, R, S>(job: JobHandle<A, R, S>, args: A, options: StartOptions = {}): Run<Outcome<A, R, S>> {\n\t\t// Job handles are Chord's own: `self.job` made them.\n\t\treturn (job as unknown as Job).stage(this, args, this.#context, options) as Run<Outcome<A, R, S>>;\n\t}\n\n\tget<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\tkey: KeyOf<C, K>,\n\t): Promise<RowOf<C> | undefined> {\n\t\tconst handle = this.#handle(table);\n\t\tconst changes = this.#tables?.get(handle);\n\t\tconst read = changes === undefined ? handle.get(key, this.#context) : changes.get(key, this.#context);\n\t\t// The handle's rows are the table's, typed by `C`.\n\t\treturn this.#track(read) as Promise<RowOf<C> | undefined>;\n\t}\n\n\tpage<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\tq: Query<C, K>,\n\t\tlimit: number,\n\t\toptions: PageOptions = {},\n\t): Promise<Page<RowOf<C>>> {\n\t\t// As in `get`; the query's table is checked against the handle's.\n\t\tconst read = this.#handle(table).page(q as unknown as Query, limit, this.#context, options);\n\t\treturn this.#track(read) as Promise<Page<RowOf<C>>>;\n\t}\n\n\tasync *rows<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\tq: Query<C, K>,\n\t): AsyncIterable<RowOf<C>> {\n\t\tlet after: string | undefined;\n\t\tdo {\n\t\t\tconst page = await this.page(table, q, ROWS_PAGE, after === undefined ? {} : { after });\n\t\t\tyield* page.items;\n\t\t\tafter = page.next;\n\t\t} while (after !== undefined);\n\t}\n\n\tput<C extends Columns, K extends readonly string[]>(table: Table<C, K>, row: PutRowOf<C>): void {\n\t\tthis.#changes(table).put(row);\n\t}\n\n\tupdate<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\tkey: KeyOf<C, K>,\n\t\tset: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>),\n\t): void {\n\t\tthis.#changes(table).update(key, set);\n\t}\n\n\tdelete<C extends Columns, K extends readonly string[]>(table: Table<C, K>, key: KeyOf<C, K>): void {\n\t\tthis.#changes(table).delete(key);\n\t}\n\n\tupdateWhere<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\twhere: (row: ColumnRefs<C>) => Condition,\n\t\tset: SetOf<C, K> | ((row: ColumnRefs<C>) => SetOf<C, K>),\n\t): void {\n\t\tthis.#changes(table).updateWhere(where, set);\n\t}\n\n\tdeleteWhere<C extends Columns, K extends readonly string[]>(\n\t\ttable: Table<C, K>,\n\t\twhere: (row: ColumnRefs<C>) => Condition,\n\t): void {\n\t\tthis.#changes(table).deleteWhere(where);\n\t}\n\n\t/** The changes `owner` staged in this transaction, made by `make` on its first use. */\n\tstage<S extends Staged>(owner: object, make: () => S): S {\n\t\tthis.#assertOpen();\n\t\tthis.#staged ??= new Map();\n\t\tlet staged = this.#staged.get(owner);\n\t\tif (staged === undefined) {\n\t\t\tstaged = make();\n\t\t\tthis.#staged.set(owner, staged);\n\t\t}\n\t\t// Each owner stages one kind of change, the one its `make` returns.\n\t\treturn staged as S;\n\t}\n\n\t/** The changes `owner` staged in this transaction so far, if any. */\n\tstaged<S extends Staged>(owner: object): S | undefined {\n\t\t// As in `stage`: the owner's own kind.\n\t\treturn this.#staged?.get(owner) as S | undefined;\n\t}\n\n\t/**\n\t * Prepares every draft and adopts what changed, and the staged changes, in one batch; nothing when nothing changed.\n\t * A document retired and drafted anew is removed, then adopted: its frame carries the retirement. Persisted\n\t * documents stage their writes here (rule 8), which sends the commit through the store's step.\n\t */\n\tcommit(): void | Promise<void> {\n\t\tthis.#assertOpen();\n\t\tif (this.#pending > 0)\n\t\t\tthrow new Error(`${this.#documents.label}: the callback settled before its pending tx operations`);\n\t\tif (this.#tables !== undefined) this.#refreshQueries(this.#tables);\n\t\tthis.#state = \"committing\";\n\t\tthis.#context.abortSignal?.throwIfAborted();\n\t\tconst adoptions: Adoption[] = [];\n\t\tfor (const entries of this.#entries.values()) {\n\t\t\tfor (const entry of entries.values()) {\n\t\t\t\tlet prepared = entry.draft?.change.prepare();\n\t\t\t\tif (prepared !== undefined && prepared.ops.length === 0) {\n\t\t\t\t\tprepared.abort();\n\t\t\t\t\tprepared = undefined;\n\t\t\t\t}\n\t\t\t\tconst { slot, key } = entry;\n\t\t\t\tconst retires = entry.retire && (slot.current(key) !== undefined || entry.found !== undefined);\n\t\t\t\tif (prepared === undefined && !retires) continue;\n\t\t\t\tconst persisted = slot.persisted;\n\t\t\t\tlet stored: StoredChange | undefined;\n\t\t\t\tif (persisted !== undefined) {\n\t\t\t\t\tconst writes = this.stageStore(persisted.persistence.store);\n\t\t\t\t\tconst was = persisted.stored(key) ?? entry.found;\n\t\t\t\t\tstored = persisted.stage(key, { prepared, retires }, was, writes, this.#persistence);\n\t\t\t\t}\n\t\t\t\tadoptions.push({ entry, prepared, retires, stored });\n\t\t\t}\n\t\t}\n\t\tconst writes = this.#writes;\n\t\tthis.#adoptions = adoptions;\n\t\tif (writes === undefined) {\n\t\t\tthis.#adopt(adoptions);\n\t\t\tthis.#state = \"committed\";\n\t\t\treturn;\n\t\t}\n\t\treturn this.#step(writes.store, writes.staged, adoptions);\n\t}\n\n\t/**\n\t * Commits through the store's step (§3): admitted while neither cut nor sealed (else `released`, nothing written),\n\t * then the documents and staged changes adopted inside the step. Once queued, the caller's abort no longer counts;\n\t * a cut while queued rejects `released` at once (the queue drops the entry at its admission, writing nothing).\n\t */\n\tasync #step(store: ChordStore, staged: readonly StagedWrite[], adoptions: readonly Adoption[]): Promise<void> {\n\t\tconst fence = {\n\t\t\tadmit: () => {\n\t\t\t\tif (this.#state !== \"committing\" || this.token.sealed) return false;\n\t\t\t\tthis.#state = \"stepping\";\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tadopt: (_seq: number, _ids: readonly number[], rows: number) => {\n\t\t\t\tthis.#rows = rows;\n\t\t\t\tthis.#adopt(adoptions);\n\t\t\t},\n\t\t};\n\t\tthis.#queued = Promise.withResolvers<never>();\n\t\ttry {\n\t\t\t// The race handles the commit's own later rejection too.\n\t\t\tawait Promise.race([store.commit(staged, fence, withoutAbortSignal(this.#context)), this.#queued.promise]);\n\t\t} catch (error) {\n\t\t\tif (this.#state === \"cut\") throw this.#cutError();\n\t\t\tthrow this.#refused(error);\n\t\t} finally {\n\t\t\tthis.#queued = undefined;\n\t\t}\n\t\tthis.#state = \"committed\";\n\t}\n\n\t/**\n\t * The error a commit the store rejected rejects with (D4): the store's own (`released`, `storage_failed`) as it\n\t * is; a refused step classified, an `int` `CHECK` failing only this transaction (`invalid/args`), any other refusal\n\t * failing the live object `broken` too (memory and disk disagree).\n\t */\n\t#refused(error: unknown): unknown {\n\t\tconst refusal = refusalOf(error, this.#documents.label);\n\t\tif (refusal === undefined) return error;\n\t\tif (refusal.kind === \"broken\") this.#documents.fail(refusal.error);\n\t\treturn refusal.error;\n\t}\n\n\t/**\n\t * Adopts the changed documents (persisted ones with what the commit stored of them) and the staged changes in one\n\t * batch; nothing when nothing changed.\n\t */\n\t#adopt(adoptions: readonly Adoption[]): void {\n\t\tconst staged = this.#staged;\n\t\tif (adoptions.length === 0 && staged === undefined) return;\n\t\tthis.#documents.batch.commit(() => {\n\t\t\tfor (const { entry, prepared, retires, stored } of adoptions) {\n\t\t\t\tif (retires) entry.slot.retire(entry.key);\n\t\t\t\tif (prepared === undefined) continue;\n\t\t\t\tentry.slot.adopt(entry.key, entry.draft!.tracker, prepared, stored);\n\t\t\t}\n\t\t\tfor (const each of staged?.values() ?? []) each.adopt();\n\t\t}, this.#context);\n\t}\n\n\t/** Aborts every draft and prepared change. */\n\tdiscard(): void {\n\t\tif (this.#state === \"cut\") return;\n\t\tthis.#state = \"discarded\";\n\t\tthis.#abortDrafts();\n\t}\n\n\t/**\n\t * Its token was sealed while it held the line: every draft is aborted, the line released, and every later use,\n\t * its commit included, throws `released`.\n\t */\n\tcut(): void {\n\t\t// A commit admitted to the step runs to its end; one still queued is refused at admission.\n\t\tif (this.#state !== \"open\" && this.#state !== \"committing\") return;\n\t\tthis.#state = \"cut\";\n\t\tthis.#abortDrafts();\n\t\tthis.#release();\n\t\tthis.#queued?.reject(this.#cutError());\n\t}\n\n\t/** Tells the staged changes how the transaction ended; runs once the object's line is free. */\n\tsettle(): void {\n\t\tif (this.#staged === undefined) return;\n\t\tconst committed = this.#state === \"committed\";\n\t\tfor (const staged of this.#staged.values()) {\n\t\t\tif (committed) staged.committed();\n\t\t\telse staged.discarded();\n\t\t}\n\t}\n\n\t#abortDrafts(): void {\n\t\tfor (const entries of this.#entries.values()) for (const entry of entries.values()) entry.draft?.change.abort();\n\t}\n\n\t/** The slot behind a handle of this object, after the handle's version fence (R15). */\n\t#slotOf(handle: SingletonHandle<JsonObject> | KeyedHandle<JsonObject>): SingletonSlot | KeyedSlot {\n\t\t// Handles are Chord's own: `self.state` made them.\n\t\tconst { slot, version } = handle as Singleton | Keyed;\n\t\tslot.definition.assertVersion(version);\n\t\treturn slot;\n\t}\n\n\t#entry(slot: DocumentSlot, key: string): Entry {\n\t\tthis.#assertOpen();\n\t\tif (slot.owner !== this.#documents) {\n\t\t\tthrow new Error(`${this.#documents.label}: a transaction drafts only its own object's documents`);\n\t\t}\n\t\tlet entries = this.#entries.get(slot);\n\t\tif (entries === undefined) {\n\t\t\tentries = new Map();\n\t\t\tthis.#entries.set(slot, entries);\n\t\t}\n\t\tlet entry = entries.get(key);\n\t\tif (entry === undefined) {\n\t\t\tentry = { slot, key, draft: undefined, retire: false, found: undefined };\n\t\t\tentries.set(key, entry);\n\t\t}\n\t\treturn entry;\n\t}\n\n\t#assertOpen(): void {\n\t\tif (this.#state === \"open\") return;\n\t\tif (this.#state === \"cut\") throw this.#cutError();\n\t\tthrow new Error(`${this.#documents.label}: the transaction has settled`);\n\t}\n\n\t#cutError(): ChordError {\n\t\treturn new ChordError({\n\t\t\tcode: \"released\",\n\t\t\treason: \"discarded\",\n\t\t\tmessage: `${this.#documents.label}: the transaction was discarded at the seal`,\n\t\t});\n\t}\n\n\t/** The handle behind `table`, one of this object's tables (another object's is refused). */\n\t#handle(table: object): TableHandle {\n\t\tthis.#assertOpen();\n\t\t// Plugin code may pass any table: only this object's handles are taken.\n\t\tconst handle = table;\n\t\tif (!(handle instanceof TableHandle) || handle.owner.scope !== this.#documents) {\n\t\t\tthrow new Error(`${this.#documents.label}: a transaction writes only its own object's tables`);\n\t\t}\n\t\thandle.assertVersion();\n\t\treturn handle;\n\t}\n\n\t/** The writes to `table` in this transaction, made by the first. */\n\t#changes(table: object): TableChanges {\n\t\tconst handle = this.#handle(table);\n\t\tthis.#tables ??= new Map();\n\t\tlet changes = this.#tables.get(handle);\n\t\tif (changes === undefined) {\n\t\t\tthis.#writes ??= { store: handle.store, staged: [] };\n\t\t\tchanges = new TableChanges(handle, this.#writes.staged);\n\t\t\tthis.#tables.set(handle, changes);\n\t\t}\n\t\treturn changes;\n\t}\n\n\t/**\n\t * Stages the re-run of the live queries over the tables this transaction wrote (decision \"Live queries over an\n\t * object's own tables\"): read in the commit step after every table write staged so far (the callback's), published\n\t * in the commit's batch. None when no written table has a live query.\n\t */\n\t#refreshQueries(tables: ReadonlyMap<TableHandle, TableChanges>): void {\n\t\tconst refresh = refreshOf(tables.keys(), this.#context);\n\t\tif (refresh === undefined) return;\n\t\tthis.#writes!.staged.push(refresh.write);\n\t\tthis.stage(refresh, () => refresh);\n\t}\n\n\t/** Counts `read` as pending until the operation's promise settles (rule 3). */\n\tasync #track<T>(read: Promise<T>): Promise<T> {\n\t\tthis.#pending++;\n\t\ttry {\n\t\t\treturn await read;\n\t\t} finally {\n\t\t\tthis.#pending--;\n\t\t}\n\t}\n\n\t/** The entry's draft, begun on the current document (or a fresh `initial()`) by the first use. */\n\t#begin(entry: Entry): Draft<JsonObject> {\n\t\tif (entry.draft === undefined) {\n\t\t\tconst { slot, key } = entry;\n\t\t\tconst current = entry.retire ? undefined : slot.current(key);\n\t\t\tconst tracker = current ?? track(slot.initial(this.#context));\n\t\t\tentry.draft = { tracker, change: tracker.beginChange() };\n\t\t}\n\t\treturn entry.draft.change.state;\n\t}\n}\n\n/** Throws, failing `slot`'s owner `broken`, when its definition cannot read the cold document `found` (R15). */\nfunction checkFound(found: FoundDocument, persisted: PersistedSlot, slot: DocumentSlot): void {\n\ttry {\n\t\tcheckReadable({ version: found.stored.version, fingerprint: found.fingerprint }, persisted.definition.current);\n\t} catch (error) {\n\t\tconst failure = asChordError(error, slot.owner.label);\n\t\tslot.owner.fail(failure);\n\t\tthrow failure;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Context } from "../context/index.ts";
|
|
2
|
+
import type { JsonValue } from "../json.ts";
|
|
3
|
+
import { Source } from "../state/internal.ts";
|
|
4
|
+
/** What `host.activity` counts. */
|
|
5
|
+
export type ActivityCounts = {
|
|
6
|
+
/** Holds arriving over links and served here. */
|
|
7
|
+
readonly references: number;
|
|
8
|
+
/** Method calls running on this host, local and remote. */
|
|
9
|
+
readonly calls: number;
|
|
10
|
+
/** Running jobs (slice 5). */
|
|
11
|
+
readonly jobs: number;
|
|
12
|
+
/** Objects kept live by their type's `linger` after their last reference. */
|
|
13
|
+
readonly lingering: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* `host.activity`. A count marks it changed; while it is watched or derived from, the first change of a microtask turn
|
|
17
|
+
* schedules one publication, a batch that gives its watches the counts as they are then (`[["r", counts]]`: a slow
|
|
18
|
+
* watch gets the newest counts) and marks derives over it. Its value is built from the counters when read or
|
|
19
|
+
* published.
|
|
20
|
+
*/
|
|
21
|
+
export declare class Activity extends Source {
|
|
22
|
+
#private;
|
|
23
|
+
get value(): JsonValue;
|
|
24
|
+
/**
|
|
25
|
+
* Adds `delta` to the count of `kind`; published with the turn's other changes. Nothing is scheduled while nobody
|
|
26
|
+
* watches or derives from it: a later watch or derive reads the counts as they are then.
|
|
27
|
+
*/
|
|
28
|
+
count(kind: keyof ActivityCounts, delta: number): void;
|
|
29
|
+
deliver(context: Context): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/host/activity.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,MAAM;;IAMnC,IAAI,KAAK,IAAI,SAAS,CAGrB;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CASrD;IAED,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAG9B;CACD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Keep-alive counts (§3, R26): `host.activity`, a JSON watchable of the work keeping a host busy, for the app's
|
|
2
|
+
// supervisor. Counters are kept where the work happens; their changes in one microtask turn are one publication.
|
|
3
|
+
import { BACKGROUND_CONTEXT } from "../context/index.js";
|
|
4
|
+
import { Source } from "../state/internal.js";
|
|
5
|
+
/**
|
|
6
|
+
* `host.activity`. A count marks it changed; while it is watched or derived from, the first change of a microtask turn
|
|
7
|
+
* schedules one publication, a batch that gives its watches the counts as they are then (`[["r", counts]]`: a slow
|
|
8
|
+
* watch gets the newest counts) and marks derives over it. Its value is built from the counters when read or
|
|
9
|
+
* published.
|
|
10
|
+
*/
|
|
11
|
+
export class Activity extends Source {
|
|
12
|
+
#counts = { references: 0, calls: 0, jobs: 0, lingering: 0 };
|
|
13
|
+
/** The counts as last read, until the next change. */
|
|
14
|
+
#value;
|
|
15
|
+
#scheduled = false;
|
|
16
|
+
get value() {
|
|
17
|
+
this.#value ??= { ...this.#counts };
|
|
18
|
+
return this.#value;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Adds `delta` to the count of `kind`; published with the turn's other changes. Nothing is scheduled while nobody
|
|
22
|
+
* watches or derives from it: a later watch or derive reads the counts as they are then.
|
|
23
|
+
*/
|
|
24
|
+
count(kind, delta) {
|
|
25
|
+
this.#counts[kind] += delta;
|
|
26
|
+
this.#value = undefined;
|
|
27
|
+
if (this.#scheduled || (!this.watched && this.dependents.size === 0))
|
|
28
|
+
return;
|
|
29
|
+
this.#scheduled = true;
|
|
30
|
+
queueMicrotask(() => {
|
|
31
|
+
this.#scheduled = false;
|
|
32
|
+
this.batch.within(() => this.changed(), BACKGROUND_CONTEXT);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
deliver(context) {
|
|
36
|
+
const value = this.value;
|
|
37
|
+
this.publish(value, [["r", value]], false, context);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/host/activity.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAChH,iHAAiH;AAEjH,OAAO,EAAE,kBAAkB,EAAgB,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAc9C;;;;;GAKG;AACH,MAAM,OAAO,QAAS,SAAQ,MAAM;IAC1B,OAAO,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACtE,sDAAsD;IACtD,MAAM,CAA6B;IACnC,UAAU,GAAG,KAAK,CAAC;IAEnB,IAAI,KAAK;QACR,IAAI,CAAC,MAAM,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAA0B,EAAE,KAAa;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC;YAAE,OAAO;QAC7E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,cAAc,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAgB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CACD","sourcesContent":["// Keep-alive counts (§3, R26): `host.activity`, a JSON watchable of the work keeping a host busy, for the app's\n// supervisor. Counters are kept where the work happens; their changes in one microtask turn are one publication.\n\nimport { BACKGROUND_CONTEXT, type Context } from \"../context/index.ts\";\nimport type { JsonValue } from \"../json.ts\";\nimport { Source } from \"../state/internal.ts\";\n\n/** What `host.activity` counts. */\nexport type ActivityCounts = {\n\t/** Holds arriving over links and served here. */\n\treadonly references: number;\n\t/** Method calls running on this host, local and remote. */\n\treadonly calls: number;\n\t/** Running jobs (slice 5). */\n\treadonly jobs: number;\n\t/** Objects kept live by their type's `linger` after their last reference. */\n\treadonly lingering: number;\n};\n\n/**\n * `host.activity`. A count marks it changed; while it is watched or derived from, the first change of a microtask turn\n * schedules one publication, a batch that gives its watches the counts as they are then (`[[\"r\", counts]]`: a slow\n * watch gets the newest counts) and marks derives over it. Its value is built from the counters when read or\n * published.\n */\nexport class Activity extends Source {\n\treadonly #counts = { references: 0, calls: 0, jobs: 0, lingering: 0 };\n\t/** The counts as last read, until the next change. */\n\t#value: ActivityCounts | undefined;\n\t#scheduled = false;\n\n\tget value(): JsonValue {\n\t\tthis.#value ??= { ...this.#counts };\n\t\treturn this.#value;\n\t}\n\n\t/**\n\t * Adds `delta` to the count of `kind`; published with the turn's other changes. Nothing is scheduled while nobody\n\t * watches or derives from it: a later watch or derive reads the counts as they are then.\n\t */\n\tcount(kind: keyof ActivityCounts, delta: number): void {\n\t\tthis.#counts[kind] += delta;\n\t\tthis.#value = undefined;\n\t\tif (this.#scheduled || (!this.watched && this.dependents.size === 0)) return;\n\t\tthis.#scheduled = true;\n\t\tqueueMicrotask(() => {\n\t\t\tthis.#scheduled = false;\n\t\t\tthis.batch.within(() => this.changed(), BACKGROUND_CONTEXT);\n\t\t});\n\t}\n\n\tdeliver(context: Context): void {\n\t\tconst value = this.value;\n\t\tthis.publish(value, [[\"r\", value]], false, context);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ChordError } from "../data/index.ts";
|
|
2
|
+
import type { JsonValue } from "../json.ts";
|
|
3
|
+
import type { Batch } from "../state/batch.ts";
|
|
4
|
+
import { type DeriveSource } from "../state/internal.ts";
|
|
5
|
+
import type { Served } from "./object.ts";
|
|
6
|
+
/** What the mappings of one instance read: its provider, its variant, its own members, its host's batch and reports. */
|
|
7
|
+
export type AdaptedInstance = {
|
|
8
|
+
readonly served: Served;
|
|
9
|
+
readonly variant: string | undefined;
|
|
10
|
+
readonly label: string;
|
|
11
|
+
readonly batch: Batch;
|
|
12
|
+
/** The instance's state member `member` (`invalid/member` when its variant has none). */
|
|
13
|
+
member(member: string): DeriveSource;
|
|
14
|
+
/** Reports a mapping derive's failure (`derive_failed`). */
|
|
15
|
+
report(member: string, error: unknown): void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Why consumers of the older `version` cannot bind to `served`'s `variant`: a version it does not accept, or a member
|
|
19
|
+
* of it the provider refuses (`contract_mismatch`); `undefined` when they can.
|
|
20
|
+
*/
|
|
21
|
+
export declare function refusal(served: Served, version: number, variant: string | undefined): ChordError | undefined;
|
|
22
|
+
/** One instance's members as the consumers of one older version read them. */
|
|
23
|
+
export declare class AdaptedMembers {
|
|
24
|
+
#private;
|
|
25
|
+
readonly version: number;
|
|
26
|
+
constructor(instance: AdaptedInstance, version: number);
|
|
27
|
+
/**
|
|
28
|
+
* State member `member` as this version reads it, made by the first use; `contract_mismatch` when the provider
|
|
29
|
+
* refuses it or does not accept this version.
|
|
30
|
+
*/
|
|
31
|
+
member(member: string): DeriveSource;
|
|
32
|
+
/**
|
|
33
|
+
* The document `document` at a key of keyed member `member` as this version reads it: the document itself when
|
|
34
|
+
* unchanged, else a derive of it through the mapping, shared by its holders; `release` (once per call) lets the last
|
|
35
|
+
* holder's go. `contract_mismatch` when the provider refuses the member.
|
|
36
|
+
*/
|
|
37
|
+
key(member: string, document: DeriveSource): {
|
|
38
|
+
readonly source: DeriveSource;
|
|
39
|
+
release(): void;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* The provider's mapping of keyed member `member`'s documents to this version's shape (`undefined`: unchanged),
|
|
43
|
+
* counted; throws `contract_mismatch` when the provider refuses it.
|
|
44
|
+
*/
|
|
45
|
+
keyed(member: string): ((current: JsonValue) => JsonValue) | undefined;
|
|
46
|
+
/** Its instance ended, or the version's last reference left: its derives go (their watches end with `error`). */
|
|
47
|
+
detach(error: Error): void;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=adapted.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapted.d.ts","sourceRoot":"","sources":["../../src/host/adapted.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAW1C,wHAAwH;AACxH,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,yFAAyF;IACzF,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,4DAA4D;IAC5D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7C,CAAC;AAKF;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAc5G;AAED,8EAA8E;AAC9E,qBAAa,cAAc;;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IASzB,YAAY,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAGrD;IAED;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAMnC;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAAC,OAAO,IAAI,IAAI,CAAA;KAAE,CAsC9F;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,SAAS,CAErE;IAED,iHAAiH;IACjH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAQzB;CAuED"}
|
|
@@ -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/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 { Contract } from \"../contracts/index.ts\";\nimport { currentVariants, LOCAL, variantsAt } from \"../contracts/internal.ts\";\nimport { ChordError } from \"../data/index.ts\";\nimport type { JsonValue } from \"../json.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"]}
|