@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":"records.js","sourceRoot":"","sources":["../../src/jobs/records.ts"],"names":[],"mappings":"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","sourcesContent":["// A job's records on its object (§15, slice 6a §1.2, slice 6b §4): its runs by id and by key, the active count, the\n// run state documents, `running` and the runs waiting for a live attempt, across the object's attempts. Records and\n// state documents change only in transactions on the object's line (staged changes adopted in the commit step); a\n// persisted job's also in its object's store, in the same commits, loaded once per object, and written back stopped by\n// the close writer when a clean stop cuts its runs off. Across a reload (slice 7b §8) the records take the new\n// declaration's definition and every run keeps its version: an older one is mapped forwards through `accepts`, one\n// without an adapter (or newer, or of a job the code no longer declares) is blocked `version` until a reload brings\n// matching code.\n\nimport { type Context, withoutAbortSignal } from \"../context/index.ts\";\nimport { ChordError } from \"../data/index.ts\";\nimport { check, validatorFor } from \"../data/internal.ts\";\nimport type { Op } from \"../delta/index.ts\";\nimport type { JsonObject } from \"../documents/index.ts\";\nimport { type Documents, Persistence, type Staged, type Transaction } from \"../documents/internal.ts\";\nimport type { AnyHost } from \"../host/internal.ts\";\nimport { uuidv7 } from \"../host/internal.ts\";\nimport type { JsonValue } from \"../json.ts\";\nimport type { StagedWrite } from \"../store/step.ts\";\nimport type { ChordStore } from \"../store/store.ts\";\nimport { carrierOf } from \"../telemetry.ts\";\nimport type { JobDefinition, JobError } from \"./definition.ts\";\nimport type { CutReason, Job, StartOptions } from \"./job.ts\";\nimport { type LoadedRecord, PersistedRuns } from \"./persisted.ts\";\nimport { type AnyOutcome, type BlockedReason, JobRun, type Phase, type Run } from \"./run.ts\";\nimport { RunStates } from \"./run-states.ts\";\nimport { Running } from \"./running.ts\";\nimport { outcomeOf, type StoredFields, storedRun } from \"./stored.ts\";\n\n/** What a job's records need of their object. */\nexport type RecordsOwner = {\n\treadonly label: string;\n\treadonly host: AnyHost;\n\t/** The object's context, without an abort signal: outcomes are recorded under it. */\n\treadonly context: Context;\n\treadonly documents: Documents;\n\t/** The host's store and the object's owner name in it, when the object may persist (P3). */\n\treadonly store: { readonly store: ChordStore; readonly owner: string } | undefined;\n\t/** Counts running and finishing runs: they keep the object alive (`host.activity.jobs`). */\n\tcountRuns(delta: number): void;\n\t/** A held state change must be stored by `deadline`: the object's one timer flushes it (D8). */\n\theld(deadline: number): void;\n};\n\n/** How a run's invocation ended, before its outcome is recorded. */\nexport type Settled =\n\t| { readonly kind: \"done\"; readonly result: unknown }\n\t| { readonly kind: \"failed\"; readonly error: JobError };\n\n/** What a change sets on a run's record besides its phase transitions below (D6, D7, the finish failure count). */\ntype RunFields = {\n\treadonly phase?: Phase;\n\treadonly restarts?: number;\n\treadonly finishFailures?: number;\n\treadonly abortMarked?: true;\n};\n\n/** A loaded run and the change its activation writes, if any. */\ntype Restored = { readonly run: JobRun; readonly change: RecordChange | undefined };\n\n/** A change of the records, staged in a transaction and adopted in its commit step. */\ntype RecordChange =\n\t| { readonly kind: \"create\"; readonly run: JobRun }\n\t| { readonly kind: \"update\"; readonly run: JobRun; readonly fields: RunFields }\n\t| { readonly kind: \"outcome\"; readonly run: JobRun; readonly outcome: AnyOutcome }\n\t| { readonly kind: \"block\"; readonly run: JobRun; readonly reason: BlockedReason }\n\t/** A blocked run is retried (a reload): back to `phase` (finishing with its outcome, or to be invoked). */\n\t| { readonly kind: \"unblock\"; readonly run: JobRun; readonly phase: Phase }\n\t| { readonly kind: \"delete\"; readonly run: JobRun }\n\t| { readonly kind: \"drop\"; readonly run: JobRun };\n\n/** What a commit step adopts of the records: a change, or a loaded run taken into memory as stored. */\ntype Adopted = RecordChange | { readonly kind: \"restore\"; readonly run: JobRun };\n\n/** One transaction's changes of one job: the runs it started (dedupe, concurrency) and whose finish it is. */\nexport type Staging = Staged & {\n\treadonly started: JobRun[];\n\treadonly changes: Adopted[];\n\t/** What the transaction's store writes leave in memory, adopted with the changes. */\n\treadonly adopts: (() => void)[];\n\tfinishing: JobRun | undefined;\n};\n\nconst RESTART: Settled = { kind: \"failed\", error: { kind: \"aborted\", reason: \"restart\" } };\n\nconst RELOAD: Settled = { kind: \"failed\", error: { kind: \"aborted\", reason: \"reload\" } };\n\nconst ABORTED: Settled = { kind: \"failed\", error: { kind: \"aborted\", reason: \"abort\" } };\n\n/** A persisted run cut off this many times in a row ends `restart_limit` (D6, Durable's limit). */\nconst RESTART_LIMIT = 5;\n\n/**\n * The records of one job name on one object. The live attempt's `Job` invokes and finishes its runs; between live\n * attempts, committed runs not yet invoked and runs whose outcome is recorded wait for the next one.\n */\nexport class JobRecords {\n\t/** The latest declaration's definition: a reload's new attempt redefines it; each run keeps its own version. */\n\tdefinition: JobDefinition<unknown, unknown, unknown>;\n\treadonly running: Running;\n\treadonly #owner: RecordsOwner;\n\t#states: RunStates | undefined;\n\t/** The store side of a persisted job's state documents; `undefined` in memory. */\n\treadonly #statePersistence: Persistence | undefined;\n\t/** The store side of a persisted job's runs; `undefined` in memory. */\n\treadonly #persisted: PersistedRuns | undefined;\n\treadonly #runs = new Map<string, JobRun>();\n\treadonly #keys = new Map<string, JobRun>();\n\t/** Running and finishing runs: concurrency and keep-alive count them. */\n\t#active = 0;\n\t/** The live attempt's job; `undefined` between live attempts. */\n\t#job: Job | undefined;\n\t/** Runs waiting for a live attempt: to be invoked (`invocation` pending) or finished (phase `finishing`). */\n\treadonly #waiting = new Set<JobRun>();\n\t/** Runs a clean stop cut off whose record the close writer has not written `stopped` yet. */\n\treadonly #stopped = new Set<JobRun>();\n\t/** Whether a persisted job's records were loaded (once per object). */\n\t#loaded = false;\n\t/** The object's end error, once it ended. */\n\t#ended: ChordError | undefined;\n\t/** Whether the latest live attempt declares the job: its runs are blocked `version` while it does not. */\n\t#declared = true;\n\n\tconstructor(definition: JobDefinition<unknown, unknown, unknown>, owner: RecordsOwner) {\n\t\tthis.definition = definition;\n\t\tthis.#owner = owner;\n\t\tconst { state, persist, name } = definition;\n\t\tconst store = persist === undefined ? undefined : owner.store!;\n\t\tconst persistence =\n\t\t\tstore === undefined ? undefined : new Persistence(store.store, store.owner, \"chord.job-states\", name);\n\t\tthis.#statePersistence = persistence;\n\t\tthis.#states = state === undefined ? undefined : this.#runStates(state);\n\t\tthis.#persisted =\n\t\t\tstore === undefined\n\t\t\t\t? undefined\n\t\t\t\t: new PersistedRuns(new Persistence(store.store, store.owner, \"chord.jobs\", name), persistence!);\n\t\tthis.running = new Running(owner.documents.batch, this.name);\n\t}\n\n\t/** The run state documents of `state`, reporting their changes to `running` and their held deadlines. */\n\t#runStates(state: NonNullable<JobDefinition<unknown, unknown, unknown>[\"state\"]>): RunStates {\n\t\tconst owner = this.#owner;\n\t\tconst states = {\n\t\t\tdocuments: owner.documents,\n\t\t\tchanged: (id: string, ops: readonly Op[]) => this.#stateChanged(id, ops),\n\t\t\theld: (deadline: number) => owner.held(deadline),\n\t\t};\n\t\treturn new RunStates(state, states, this.#statePersistence);\n\t}\n\n\t/**\n\t * Refuses a declaration of this job that its records cannot take (slice 7b §8): the same version with another\n\t * fingerprint (its args, result or state schema changed without a version bump), or a state document definition\n\t * the run documents refuse (`SlotDefinition.check`). A reload's staging checks it too.\n\t */\n\tcheck(definition: JobDefinition<unknown, unknown, unknown>): void {\n\t\tconst current = this.definition;\n\t\tif (definition.version === current.version && definition.fingerprint !== current.fingerprint) {\n\t\t\tthrow new Error(`${this.name}: its schema changed without a version bump (version ${definition.version})`);\n\t\t}\n\t\tconst { state } = definition;\n\t\tconst states = this.#states;\n\t\tif (state !== undefined && states !== undefined && state !== states.definition.current) {\n\t\t\tstates.definition.check(state);\n\t\t}\n\t}\n\n\t/**\n\t * Takes a new attempt's declaration `definition` (another version after a reload, `ChordObject.checkJob` refused\n\t * the same version with another fingerprint): new runs are of its version; the runs of others keep theirs, their\n\t * `running` entries show their args mapped forwards (or blocked); their state documents keep their version until\n\t * their run settles or moves to the new code.\n\t */\n\tredefine(definition: JobDefinition<unknown, unknown, unknown>): void {\n\t\tthis.#declared = true;\n\t\tif (definition === this.definition) return;\n\t\tthis.definition = definition;\n\t\tconst { state } = definition;\n\t\tif (state !== undefined) {\n\t\t\tif (this.#states === undefined) this.#states = this.#runStates(state);\n\t\t\telse this.#states.redefine(state);\n\t\t}\n\t\tif (this.#runs.size === 0) return;\n\t\tthis.#owner.documents.batch.within(() => {\n\t\t\tfor (const run of this.#runs.values()) if (run.entry !== undefined) this.#replaceEntry(run);\n\t\t}, this.#owner.context);\n\t}\n\n\t/**\n\t * The latest live attempt does not declare the job (slice 7b §8): its runs not invoked and its finishing runs are\n\t * blocked `version` (kept, not invoked) until a reload declares it again or they are aborted; a running\n\t * invocation finishes and is blocked then.\n\t */\n\tundeclare(): void {\n\t\tif (!this.#declared || this.#ended !== undefined) return;\n\t\tthis.#declared = false;\n\t\tthis.#job = undefined;\n\t\tconst waiting = [...this.#waiting];\n\t\tthis.#waiting.clear();\n\t\tfor (const run of waiting) void this.record(run, { kind: \"block\", run, reason: \"version\" });\n\t}\n\n\t/**\n\t * A reload brought new code (its attempt is live): blocked runs are retried, once: a `finish_failed` one finishes\n\t * again, a `version` one whose version the code now takes (its own, or an older one with an adapter) is invoked or\n\t * finished; the others stay blocked. A persisted run blocked at its load has its state document read first.\n\t */\n\tasync retryBlocked(context: Context): Promise<void> {\n\t\tif (!this.#declared || this.#ended !== undefined) return;\n\t\tconst retried = [...this.#runs.values()].filter(\n\t\t\t(run) => run.phase === \"blocked\" && (run.blocked === \"finish_failed\" || this.#takes(run)),\n\t\t);\n\t\tif (retried.length === 0) return;\n\t\ttry {\n\t\t\tfor (const run of retried) if (run.blockedPhase !== undefined) await this.#readBlockedState(run, context);\n\t\t} catch {\n\t\t\t// Its state document cannot be read: it stays blocked (the next reload tries again).\n\t\t\treturn;\n\t\t}\n\t\tconst { documents } = this.#owner;\n\t\ttry {\n\t\t\tawait documents.tx(\n\t\t\t\t(tx) => {\n\t\t\t\t\tfor (const run of retried) {\n\t\t\t\t\t\tif (this.#runs.get(run.id) !== run || run.phase !== \"blocked\") continue;\n\t\t\t\t\t\tconst phase =\n\t\t\t\t\t\t\trun.outcome !== undefined ? \"finishing\" : this.#persisted === undefined ? \"running\" : \"pending\";\n\t\t\t\t\t\tthis.change(tx, { kind: \"unblock\", run, phase });\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdocuments.own,\n\t\t\t\tthis.#owner.context,\n\t\t\t);\n\t\t} catch {\n\t\t\t// The object ended.\n\t\t}\n\t}\n\n\t/** Reads and decodes the state document of a persisted run blocked at its load, now that the code takes it. */\n\tasync #readBlockedState(run: JobRun, context: Context): Promise<void> {\n\t\tconst states = this.#states;\n\t\tthis.#persisted!.forgetBlockedState(run.id);\n\t\tif (states === undefined) return;\n\t\tconst document = await states.persistence.read(run.id, context);\n\t\tif (document === undefined) return;\n\t\tconst { value, stored } = states.persistence.decode(document, states.definition.current, context);\n\t\tstates.create(run.id, value, stored);\n\t\tif (run.outcome !== undefined) run.outcome = { ...run.outcome, state: value };\n\t}\n\n\t/**\n\t * Whether the current code takes `run`: of its version and fingerprint, or of an older version its `accepts` maps\n\t * forwards; a newer one (a rollback) or an older one without an adapter is not (`blocked { version }`).\n\t */\n\t#takes(run: JobRun): boolean {\n\t\tconst { definition } = this;\n\t\tif (run.version === definition.version) return run.fingerprint === definition.fingerprint;\n\t\treturn run.version < definition.version && definition.accepts[run.version] !== undefined;\n\t}\n\n\t/**\n\t * `run`'s args as the code of `definition` takes them (the current code's, or an invoking attempt's own): mapped\n\t * forwards once per run and version when older.\n\t */\n\targsOf(run: JobRun, definition: JobDefinition<unknown, unknown, unknown>): JsonValue {\n\t\tif (run.version === definition.version) return run.args;\n\t\tconst mapped = run.mapped;\n\t\tif (mapped !== undefined && mapped.version === definition.version) return mapped.args;\n\t\t// `#takes` found the adapter; its result is the current args (the provider's mapping, not validated).\n\t\tconst args = definition.accepts[run.version]!.args(run.args as never) as JsonValue;\n\t\trun.mapped = { version: definition.version, args };\n\t\treturn args;\n\t}\n\n\t/**\n\t * `run`'s outcome as the current code's `finish` gets it: an older run's args and result mapped forwards (once per\n\t * run), its state document migrated to the current state definition.\n\t */\n\toutcomeOf(run: JobRun, context: Context): AnyOutcome {\n\t\tconst outcome = run.outcome!;\n\t\tconst { definition } = this;\n\t\tif (run.version === definition.version) return outcome;\n\t\tconst args = this.argsOf(run, definition);\n\t\tconst mapped = run.mapped!;\n\t\tif (mapped.outcome !== undefined) return mapped.outcome;\n\t\tconst result =\n\t\t\toutcome.kind === \"done\"\n\t\t\t\t? { kind: \"done\" as const, result: definition.accepts[run.version]!.result(outcome.result as never) }\n\t\t\t\t: { kind: \"failed\" as const, error: outcome.error };\n\t\tconst state = this.#states?.migrated(run.id, context) ?? outcome.state;\n\t\tmapped.outcome = { id: outcome.id, args, state, ...result };\n\t\treturn mapped.outcome;\n\t}\n\n\t/** The job in errors: its object and its name. */\n\tget name(): string {\n\t\treturn `${this.#owner.label} job ${this.definition.name}`;\n\t}\n\n\t/** Waits for the outcome of the unsettled run `id`; a settled or unknown id rejects `gone`. */\n\toutcome(id: string, context: Context): Promise<AnyOutcome> {\n\t\tconst run = this.#runs.get(id);\n\t\tif (run === undefined) {\n\t\t\treturn Promise.reject(new ChordError({ code: \"gone\", message: `${this.name}: no unsettled run ${id}` }));\n\t\t}\n\t\treturn run.handle.outcome(context);\n\t}\n\n\t/**\n\t * Aborts run `id` (D7, Durable's `abortTask`): a blocked run is dropped; a finishing one is only marked; any other\n\t * is marked (stored for a persisted job) in a transaction, its signal fired after the commit, outside the batch and\n\t * the line, and the abort joins its invocation. `\"marked\"`, or `\"terminal\"` when no unsettled run has that id.\n\t */\n\tasync abort(id: string, context: Context): Promise<\"marked\" | \"terminal\"> {\n\t\tconst run = this.#runs.get(id);\n\t\tif (run === undefined || this.#ended !== undefined) return \"terminal\";\n\t\tif (run.phase === \"blocked\") {\n\t\t\tawait this.record(run, { kind: \"drop\", run });\n\t\t\treturn \"marked\";\n\t\t}\n\t\tif (!run.abortMarked) await this.record(run, { kind: \"update\", run, fields: { abortMarked: true } });\n\t\t// A finishing run's outcome stays: it is only marked.\n\t\tif (run.phase === \"finishing\") return \"marked\";\n\t\trun.invocation?.abort.abort(new ChordError({ code: \"aborted\", message: `${this.name}: run ${id} aborted` }));\n\t\tawait run.over(context);\n\t\treturn \"marked\";\n\t}\n\n\t/** See `Job.stage`: the checks and the staged creation, against the object's runs. */\n\tstage(tx: Transaction, args: unknown, context: Context, options: StartOptions): Run<AnyOutcome> {\n\t\tconst definition = this.definition;\n\t\t// Plugin code, not type-checked: the args are checked as a method's are (R7).\n\t\tcheck(validatorFor(definition.args, context), args, \"args\", context);\n\t\tconst staged = tx.staged<Staging>(this);\n\t\tconst { key } = options;\n\t\tif (key !== undefined) {\n\t\t\tconst known = staged?.started.find((run) => run.key === key) ?? this.#keys.get(key);\n\t\t\tif (known !== undefined && known !== staged?.finishing) return known.handle;\n\t\t}\n\t\tconst { concurrency } = definition;\n\t\tconst active = this.#active + (staged?.started.length ?? 0) - (staged?.finishing === undefined ? 0 : 1);\n\t\tif (concurrency !== undefined && active >= concurrency) {\n\t\t\tconst message = `${this.name}: at its concurrency limit (${concurrency})`;\n\t\t\tthrow new ChordError({ code: \"unavailable\", reason: \"busy\", message });\n\t\t}\n\t\tconst persisted = this.#persisted !== undefined;\n\t\t// Its starter's carrier: its later phases are children of it (a persisted run stores it, for a later process).\n\t\tconst trace = carrierOf(context.telemetry);\n\t\t// Checked above: the args are JSON (the definition refuses bytes).\n\t\tconst run = new JobRun(\n\t\t\tuuidv7(),\n\t\t\tdefinition.version,\n\t\t\tdefinition.fingerprint,\n\t\t\tkey,\n\t\t\targs as JsonValue,\n\t\t\tpersisted ? \"pending\" : \"running\",\n\t\t\ttrace,\n\t\t);\n\t\tconst staging = this.staging(tx);\n\t\tstaging.started.push(run);\n\t\tthis.change(tx, { kind: \"create\", run });\n\t\tconst state = definition.state?.initial(context);\n\t\tif (state !== undefined) staging.adopts.push(this.#states!.stageCreate(run.id, state, () => this.#store(tx)));\n\t\treturn run.handle;\n\t}\n\n\t/**\n\t * Stages `change` in `tx`: in the job's staging, adopted in the commit step, and for a persisted job the run's record\n\t * written with it (rule 8: serialized now), and for a settled run its state document retired.\n\t */\n\tchange(tx: Transaction, change: RecordChange): void {\n\t\tconst staging = this.staging(tx);\n\t\tstaging.changes.push(change);\n\t\tconst { run } = change;\n\t\tconst states = this.#states;\n\t\tconst retires = change.kind === \"delete\" || change.kind === \"drop\";\n\t\tif (retires && states?.current(run.id) !== undefined) tx.retireSlot(states, run.id);\n\t\tconst persisted = this.#persisted;\n\t\tif (persisted === undefined) return;\n\t\tconst writes = this.#store(tx);\n\t\tif (retires) {\n\t\t\tstaging.adopts.push(persisted.stageRetire(run.id, writes));\n\t\t\treturn;\n\t\t}\n\t\tconst fields = recordFields(change);\n\t\tstaging.adopts.push(persisted.stage(run.id, storedRun(run, fields), writes));\n\t}\n\n\t/** This job's changes in `tx`, made on the first. */\n\tstaging(tx: Transaction): Staging {\n\t\treturn tx.stage(this, () => {\n\t\t\tconst changes: Adopted[] = [];\n\t\t\tconst adopts: (() => void)[] = [];\n\t\t\treturn {\n\t\t\t\tstarted: [],\n\t\t\t\tchanges,\n\t\t\t\tadopts,\n\t\t\t\tfinishing: undefined,\n\t\t\t\tadopt: () => {\n\t\t\t\t\t// A step admitted before the object ended adopts after it: the records are not changed any more.\n\t\t\t\t\tif (this.#ended !== undefined) return;\n\t\t\t\t\t// What is stored first: a new run's state document exists when its `running` entry is made.\n\t\t\t\t\trunAll(adopts);\n\t\t\t\t\tfor (const change of changes) this.#adopt(change);\n\t\t\t\t},\n\t\t\t\tcommitted: () => {\n\t\t\t\t\tconst ended = this.#ended;\n\t\t\t\t\tif (ended === undefined) {\n\t\t\t\t\t\tfor (const change of changes) this.#committed(change);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// Its runs end as the object's other runs did.\n\t\t\t\t\tfor (const change of changes) if (change.kind === \"create\") change.run.reject(ended);\n\t\t\t\t},\n\t\t\t\tdiscarded: () => {\n\t\t\t\t\tfor (const change of changes) if (change.kind === \"create\") change.run.reject(this.#discarded());\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\t/**\n\t * A persisted job's runs, loaded once per object at its first activation (slice 6b §4.2), again only after a load\n\t * failed (design §9): each record read; a record of another version or fingerprint blocked (`version`) as stored,\n\t * its state document left undecoded; the others' state documents read and decoded, a run cut off while `running`\n\t * counted (`restarts + 1`; at the limit it ends `restart_limit`, reported `job_interrupted`), `stopped` and\n\t * `pending` ones made `pending` again. The runs and their activation changes are adopted in one commit, all before\n\t * anything runs; a failure leaves nothing loaded.\n\t */\n\tasync load(context: Context): Promise<void> {\n\t\tconst persisted = this.#persisted;\n\t\tif (persisted === undefined || this.#loaded) return;\n\t\tconst restored: Restored[] = [];\n\t\ttry {\n\t\t\tfor (const loaded of await persisted.load(context)) restored.push(await this.#restored(loaded, context));\n\t\t\tif (restored.length > 0) {\n\t\t\t\tconst { documents } = this.#owner;\n\t\t\t\tawait documents.tx((tx) => this.#restoreAll(tx, restored), documents.own, context);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tpersisted.drop();\n\t\t\tfor (const { run } of restored) this.#states?.retire(run.id);\n\t\t\tthrow error;\n\t\t}\n\t\tthis.#loaded = true;\n\t\tfor (const { run, change } of restored) {\n\t\t\tif (\n\t\t\t\tchange?.kind === \"outcome\" &&\n\t\t\t\tchange.outcome.kind === \"failed\" &&\n\t\t\t\tchange.outcome.error.kind === \"restart_limit\"\n\t\t\t) {\n\t\t\t\tthis.report({ kind: \"job_interrupted\", id: run.id, restarts: change.outcome.error.restarts });\n\t\t\t}\n\t\t}\n\t\tfor (const { run } of restored) this.#need(run);\n\t}\n\n\t/** Stages the loaded runs in `tx`: each restored, then the activation changes (adopted after every restore). */\n\t#restoreAll(tx: Transaction, restored: readonly Restored[]): void {\n\t\tconst staging = this.staging(tx);\n\t\tfor (const { run } of restored) staging.changes.push({ kind: \"restore\", run });\n\t\tfor (const { change } of restored) if (change !== undefined) this.change(tx, change);\n\t}\n\n\t/** `job`, of the attempt that went live, invokes and finishes the runs from now on; the waiting ones first. */\n\tattach(job: Job): void {\n\t\tif (this.#ended !== undefined) return;\n\t\tthis.#job = job;\n\t\tconst waiting = [...this.#waiting];\n\t\tthis.#waiting.clear();\n\t\tfor (const run of waiting) this.#dispatch(run, job);\n\t}\n\n\t/**\n\t * `job`'s attempt was sealed: its running invocations are cut off (`cut`), the runs it was finishing wait for the\n\t * next live attempt.\n\t */\n\tdetach(job: Job, finishing: Iterable<JobRun>): void {\n\t\tif (this.#job === job) this.#job = undefined;\n\t\tfor (const run of finishing) this.#need(run);\n\t}\n\n\t/**\n\t * A run whose reservation its sealed attempt never committed waits for the next live attempt (dispatched now when one\n\t * is attached already: the sealed attempt was detached at its seal).\n\t */\n\trequeue(run: JobRun): void {\n\t\tthis.#need(run);\n\t}\n\n\t/** Records `run` running before its `run` is invoked (a persisted run's reservation: a crash after it counts). */\n\treserve(tx: Transaction, run: JobRun): void {\n\t\tthis.change(tx, { kind: \"update\", run, fields: { phase: \"running\" } });\n\t}\n\n\t/** A state change of a run with restarts counted resets them in its commit (progress, D6). */\n\tprogressed(tx: Transaction, run: JobRun): void {\n\t\tif (run.restarts !== 0) this.change(tx, { kind: \"update\", run, fields: { restarts: 0 } });\n\t}\n\n\t/**\n\t * A run's invocation settled: its outcome is recorded (phase `finishing`) in a transaction of the object behind the\n\t * state changes admitted before, so `outcome.state` has them; then it is finished on the live attempt.\n\t */\n\tsettled(run: JobRun, ended: Settled): void {\n\t\tvoid this.#recordOutcome(run, ended);\n\t}\n\n\t/**\n\t * A running run whose attempt was sealed: its signal fires with `error`, its invocation is fenced (later state\n\t * changes refused, the open one discarded, its settling ignored). In memory it ends `failed { aborted }` with\n\t * `reason` (`reload` for a native restart, slice 7b §8), finished on the next live attempt; persisted it is stopped (R3), written back by the close writer and\n\t * resumed by the next live attempt as after a clean close.\n\t */\n\tcut(run: JobRun, error: ChordError, reason: CutReason): void {\n\t\t// Only an invoked run is cut: its current invocation is the one the seal stops.\n\t\tconst invocation = run.invocation!;\n\t\tinvocation.settle();\n\t\tthis.#owner.documents.fence(invocation.token);\n\t\tinvocation.abort.abort(error);\n\t\tif (this.#persisted !== undefined) {\n\t\t\trun.phase = \"stopped\";\n\t\t\t// Resumed per the job's `resume` (an `abandon` job's run ends `failed { aborted, restart }`).\n\t\t\trun.resuming = true;\n\t\t\tthis.#stopped.add(run);\n\t\t\tif (this.#ended === undefined) this.#need(run);\n\t\t\treturn;\n\t\t}\n\t\tif (this.#ended === undefined) void this.#recordOutcome(run, reason === \"reload\" ? RELOAD : RESTART);\n\t}\n\n\t/**\n\t * Records `change` (a run's finish failure, its block, its drop) in a transaction of the object, if `run` is still\n\t * one of its runs there. The object's end ends it.\n\t */\n\tasync record(run: JobRun, change: RecordChange): Promise<void> {\n\t\tconst { documents, context } = this.#owner;\n\t\ttry {\n\t\t\tawait documents.tx(\n\t\t\t\t(tx) => {\n\t\t\t\t\tif (this.#runs.get(run.id) === run) this.change(tx, change);\n\t\t\t\t},\n\t\t\t\tdocuments.own,\n\t\t\t\tcontext,\n\t\t\t);\n\t\t} catch {\n\t\t\t// The object ended: its runs went with it.\n\t\t}\n\t}\n\n\t/**\n\t * The close writer (slice 6b §4.2, Durable's `writeAtClose`): one commit past the seal writing the runs a clean stop\n\t * cut off `stopped` and every held state change, straight to the store (the object's transactions are refused by\n\t * now). Its failure is the store's; the records stay as they were (a crash counts them).\n\t */\n\tasync writeAtClose(context: Context): Promise<void> {\n\t\tconst persisted = this.#persisted;\n\t\tif (persisted === undefined) return;\n\t\tconst writes: StagedWrite[] = [];\n\t\tconst adopts: (() => void)[] = [];\n\t\tfor (const run of this.#stopped) {\n\t\t\tadopts.push(persisted.stage(run.id, storedRun(run), writes));\n\t\t}\n\t\tthis.#stopped.clear();\n\t\tfor (const id of this.#states?.heldIds ?? []) {\n\t\t\tconst adopt = this.#states!.stageHeld(id, writes);\n\t\t\tif (adopt !== undefined) adopts.push(adopt);\n\t\t}\n\t\tif (writes.length === 0) return;\n\t\tconst fence = { admit: () => true, adopt: () => runAll(adopts) };\n\t\ttry {\n\t\t\tawait this.#owner.store!.store.commit(writes, fence, withoutAbortSignal(context));\n\t\t} catch {\n\t\t\t// The store failed or refused it (reported as the store's): a crash loses as much.\n\t\t}\n\t}\n\n\t/** Stores every held state change whose deadline passed (`now`), in one transaction of the object (D8). */\n\tasync flushHeld(now: number): Promise<void> {\n\t\tconst states = this.#states;\n\t\tif (states === undefined || states.heldIds.length === 0) return;\n\t\tconst { documents, context } = this.#owner;\n\t\ttry {\n\t\t\tawait documents.tx(\n\t\t\t\t(tx) => {\n\t\t\t\t\tconst staging = this.staging(tx);\n\t\t\t\t\tfor (const id of states.heldIds) {\n\t\t\t\t\t\tif (states.deadline(id) > now) continue;\n\t\t\t\t\t\tconst adopt = states.stageHeld(id, this.#store(tx));\n\t\t\t\t\t\tif (adopt !== undefined) staging.adopts.push(adopt);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdocuments.own,\n\t\t\t\tcontext,\n\t\t\t);\n\t\t} catch {\n\t\t\t// The object is ending: its close writer stores what is held.\n\t\t}\n\t}\n\n\t/** The earliest deadline of a held state change (`Infinity`: none). */\n\tnextDeadline(): number {\n\t\tconst states = this.#states;\n\t\tif (states === undefined) return Number.POSITIVE_INFINITY;\n\t\treturn Math.min(Number.POSITIVE_INFINITY, ...states.heldIds.map((id) => states.deadline(id)));\n\t}\n\n\t/** The value of run `id`'s state document, `undefined` without one or once retired. */\n\tstateOf(id: string): JsonObject | undefined {\n\t\treturn this.#states?.value(id);\n\t}\n\n\t/** The run state documents, for `ctx.state.change`; `undefined` without a state definition. */\n\tget states(): RunStates | undefined {\n\t\treturn this.#states;\n\t}\n\n\t/** Whether the job persists its runs. */\n\tget persisted(): boolean {\n\t\treturn this.#persisted !== undefined;\n\t}\n\n\t/**\n\t * The object ends: running runs' signals fire, every waiter rejects with `error`; blocked in-memory runs are\n\t * dropped (reported), persisted ones keep their records; nothing finishes. The records stay readable until `drop`.\n\t */\n\tend(error: ChordError): void {\n\t\tif (this.#ended !== undefined) return;\n\t\tthis.#ended = error;\n\t\tthis.#job = undefined;\n\t\tthis.#waiting.clear();\n\t\tfor (const run of this.#runs.values()) {\n\t\t\tif (run.phase === \"blocked\" && this.#persisted === undefined) this.report({ kind: \"job_dropped\", id: run.id });\n\t\t\tconst { invocation } = run;\n\t\t\tinvocation?.abort.abort(error);\n\t\t\trun.reject(error);\n\t\t\tif (invocation?.state !== \"running\") invocation?.ended();\n\t\t}\n\t\tif (this.#active > 0) this.#owner.countRuns(-this.#active);\n\t}\n\n\t/** Its object's documents are dropped: the runs, their state documents and `running`'s watches go. */\n\tdrop(): void {\n\t\tthis.#runs.clear();\n\t\tthis.#keys.clear();\n\t\tthis.#states?.drop();\n\t\tthis.#persisted?.drop();\n\t\tthis.running.end();\n\t}\n\n\t/** Reports a run's failure, drop or interruption to the host. */\n\treport(\n\t\terror:\n\t\t\t| { readonly kind: \"job_failed\" | \"job_finish_failed\"; readonly id: string; readonly error: unknown }\n\t\t\t| { readonly kind: \"job_dropped\"; readonly id: string }\n\t\t\t| { readonly kind: \"job_interrupted\"; readonly id: string; readonly restarts: number },\n\t): void {\n\t\tthis.#owner.host.report({ ...error, object: this.#owner.label, job: this.definition.name });\n\t}\n\n\t/** The store writes of `tx` (Chord's own documents of a persisted job). */\n\t#store(tx: Transaction): StagedWrite[] {\n\t\treturn tx.stageStore(this.#owner.store!.store);\n\t}\n\n\t/**\n\t * The run a loaded record stands for and the change its activation writes (D6): a record of another version or\n\t * fingerprint blocked as stored (its state document only found, never decoded: slice 7 maps it); otherwise its state\n\t * document read and decoded (migrated), pinned while it is unsettled, a crash counted, at the limit its outcome,\n\t * marked resuming unless blocked or finishing.\n\t */\n\tasync #restored(loaded: LoadedRecord, context: Context): Promise<Restored> {\n\t\tconst { id, record } = loaded;\n\t\tconst { definition } = this;\n\t\tconst run = new JobRun(\n\t\t\tid,\n\t\t\trecord.version,\n\t\t\trecord.fingerprint,\n\t\t\trecord.key,\n\t\t\trecord.args,\n\t\t\trecord.phase,\n\t\t\trecord.trace,\n\t\t);\n\t\trun.restarts = record.restarts;\n\t\trun.finishFailures = record.finishFailures;\n\t\trun.abortMarked = record.abort === true;\n\t\tconst states = this.#states;\n\t\tif (record.version !== definition.version || record.fingerprint !== definition.fingerprint) {\n\t\t\trun.phase = \"blocked\";\n\t\t\trun.blocked = \"version\";\n\t\t\t// What the record says, for the reload that brings its version (`retryBlocked`).\n\t\t\trun.blockedPhase = record.phase;\n\t\t\tif (record.outcome !== undefined) run.outcome = outcomeOf(record.outcome, id, record.args, undefined);\n\t\t\t// What is stored of its state (also when this version declares none), so an abort drops it with the record.\n\t\t\tawait this.#persisted!.findBlockedState(id, context);\n\t\t\treturn { run, change: undefined };\n\t\t}\n\t\tconst document = await states?.persistence.read(id, context);\n\t\tif (document !== undefined) {\n\t\t\tconst { value, stored } = states!.persistence.decode(document, states!.definition.current, context);\n\t\t\tstates!.create(id, value, stored);\n\t\t}\n\t\tif (record.outcome !== undefined) run.outcome = outcomeOf(record.outcome, id, record.args, this.stateOf(id));\n\t\trun.blocked = record.blocked;\n\t\tswitch (record.phase) {\n\t\t\tcase \"running\": {\n\t\t\t\tconst restarts = record.restarts + 1;\n\t\t\t\trun.resuming = true;\n\t\t\t\tif (restarts < RESTART_LIMIT) {\n\t\t\t\t\treturn { run, change: { kind: \"update\", run, fields: { phase: \"pending\", restarts } } };\n\t\t\t\t}\n\t\t\t\trun.restarts = restarts;\n\t\t\t\tconst outcome = this.#outcome(run, { kind: \"failed\", error: { kind: \"restart_limit\", restarts } });\n\t\t\t\treturn { run, change: { kind: \"outcome\", run, outcome } };\n\t\t\t}\n\t\t\tcase \"stopped\":\n\t\t\t\trun.resuming = true;\n\t\t\t\treturn { run, change: { kind: \"update\", run, fields: { phase: \"pending\" } } };\n\t\t\tcase \"pending\":\n\t\t\t\trun.resuming = true;\n\t\t\t\treturn { run, change: undefined };\n\t\t\tdefault:\n\t\t\t\treturn { run, change: undefined };\n\t\t}\n\t}\n\n\t/** Records the outcome of `run` (with what its state holds, D8), then has it finished on the live attempt. */\n\tasync #recordOutcome(run: JobRun, ended: Settled): Promise<void> {\n\t\tconst { documents, context } = this.#owner;\n\t\ttry {\n\t\t\tawait documents.tx(\n\t\t\t\t(tx) => {\n\t\t\t\t\tconst outcome = this.#outcome(run, ended);\n\t\t\t\t\tthis.change(tx, { kind: \"outcome\", run, outcome });\n\t\t\t\t\t// What its state holds is stored before the outcome is recorded (D8).\n\t\t\t\t\tconst adopt =\n\t\t\t\t\t\tthis.#persisted === undefined ? undefined : this.#states?.stageHeld(run.id, this.#store(tx));\n\t\t\t\t\tif (adopt !== undefined) this.staging(tx).adopts.push(adopt);\n\t\t\t\t},\n\t\t\t\tdocuments.own,\n\t\t\t\tcontext,\n\t\t\t);\n\t\t} catch {\n\t\t\t// The object ended: nothing finishes.\n\t\t\treturn;\n\t\t} finally {\n\t\t\t// A run ending without an invocation (marked aborted, abandoned, cut off in memory) has none to wait for.\n\t\t\trun.invocation?.ended();\n\t\t}\n\t\tthis.#need(run);\n\t}\n\n\t/** `run`'s outcome for `ended`, with its args and its state as it is now. */\n\t#outcome(run: JobRun, ended: Settled): AnyOutcome {\n\t\treturn { id: run.id, args: run.args, state: this.stateOf(run.id), ...ended };\n\t}\n\n\t/** `run` needs a live attempt (to be invoked or finished): now, or once one attaches. */\n\t#need(run: JobRun): void {\n\t\tif (this.#ended !== undefined || this.#runs.get(run.id) !== run) return;\n\t\t// A job the code no longer declares: blocked `version`, kept (slice 7b §8).\n\t\tif (!this.#declared) {\n\t\t\tif (run.phase !== \"blocked\") void this.record(run, { kind: \"block\", run, reason: \"version\" });\n\t\t\treturn;\n\t\t}\n\t\tconst job = this.#job;\n\t\tif (job === undefined) this.#waiting.add(run);\n\t\telse this.#dispatch(run, job);\n\t}\n\n\t/**\n\t * Invokes or finishes `run` on `job`, as its record stands: a finishing run is finished; a run not invoked yet is\n\t * invoked, unless it is marked aborted (it ends `aborted` without `run`) or resumes abandoned (`failed { aborted,\n\t * reason: \"restart\" }`).\n\t */\n\t#dispatch(run: JobRun, job: Job): void {\n\t\tif (this.#runs.get(run.id) !== run || run.phase === \"blocked\") return;\n\t\t// Not of a version the code takes: blocked `version` until a reload brings matching code.\n\t\tif (!this.#takes(run)) {\n\t\t\tvoid this.record(run, { kind: \"block\", run, reason: \"version\" });\n\t\t\treturn;\n\t\t}\n\t\tif (run.phase === \"finishing\") {\n\t\t\tjob.finish(run);\n\t\t\treturn;\n\t\t}\n\t\tif (run.invoked) return;\n\t\tif (run.abortMarked) {\n\t\t\tvoid this.#recordOutcome(run, ABORTED);\n\t\t\treturn;\n\t\t}\n\t\tif (run.resuming && this.definition.persist?.resume === \"abandon\") {\n\t\t\tvoid this.#recordOutcome(run, RESTART);\n\t\t\treturn;\n\t\t}\n\t\trun.resuming = false;\n\t\tjob.invoke(run);\n\t}\n\n\t/**\n\t * Adopts one record change, inside the commit step: the maps, the active count, `running`. A new run is counted for\n\t * its object here, before the commit's publication (a link closing while it sends may release the object's last\n\t * reference) and before any run of the same commit settles in `#committed`.\n\t */\n\t#adopt(change: Adopted): void {\n\t\tconst { run } = change;\n\t\tswitch (change.kind) {\n\t\t\tcase \"create\":\n\t\t\tcase \"restore\":\n\t\t\t\tthis.#runs.set(run.id, run);\n\t\t\t\tif (run.key !== undefined) this.#keys.set(run.key, run);\n\t\t\t\tif (run.phase !== \"blocked\") {\n\t\t\t\t\tthis.#active++;\n\t\t\t\t\tthis.#owner.countRuns(1);\n\t\t\t\t}\n\t\t\t\trun.entry = this.#entryOf(run);\n\t\t\t\tthis.running.add(run.entry);\n\t\t\t\treturn;\n\t\t\tcase \"update\":\n\t\t\t\tObject.assign(run, change.fields);\n\t\t\t\tthis.#replaceEntry(run);\n\t\t\t\treturn;\n\t\t\tcase \"outcome\":\n\t\t\t\trun.outcome = change.outcome;\n\t\t\t\trun.phase = \"finishing\";\n\t\t\t\tthis.#replaceEntry(run);\n\t\t\t\treturn;\n\t\t\tcase \"block\":\n\t\t\t\trun.phase = \"blocked\";\n\t\t\t\trun.blocked = change.reason;\n\t\t\t\tthis.#active--;\n\t\t\t\tthis.#replaceEntry(run);\n\t\t\t\treturn;\n\t\t\tcase \"unblock\":\n\t\t\t\trun.phase = change.phase;\n\t\t\t\trun.blocked = undefined;\n\t\t\t\trun.blockedPhase = undefined;\n\t\t\t\trun.finishFailures = 0;\n\t\t\t\t// A persisted run to be invoked again resumes per its job's `resume`, as after a stop.\n\t\t\t\tif (change.phase === \"pending\") run.resuming = true;\n\t\t\t\tthis.#active++;\n\t\t\t\tthis.#owner.countRuns(1);\n\t\t\t\tthis.#replaceEntry(run);\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\tcase \"drop\":\n\t\t\t\tthis.#runs.delete(run.id);\n\t\t\t\t// The finishing run's key may name its successor already, started in the same commit.\n\t\t\t\tif (run.key !== undefined && this.#keys.get(run.key) === run) this.#keys.delete(run.key);\n\t\t\t\tif (change.kind === \"delete\") this.#active--;\n\t\t\t\tthis.running.remove(run.entry!);\n\t\t\t\trun.entry = undefined;\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\t/** The actions after a record change committed. */\n\t#committed(change: Adopted): void {\n\t\tconst { run } = change;\n\t\tswitch (change.kind) {\n\t\t\tcase \"create\":\n\t\t\t\t// After the commit, outside the batch, once the transaction settled; on the live attempt, or the next.\n\t\t\t\tqueueMicrotask(() => this.#need(run));\n\t\t\t\treturn;\n\t\t\tcase \"restore\":\n\t\t\tcase \"update\":\n\t\t\tcase \"outcome\":\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tthis.#owner.countRuns(-1);\n\t\t\t\trun.resolve(run.outcome!);\n\t\t\t\treturn;\n\t\t\tcase \"block\":\n\t\t\t\tthis.#owner.countRuns(-1);\n\t\t\t\treturn;\n\t\t\tcase \"unblock\":\n\t\t\t\tthis.#need(run);\n\t\t\t\treturn;\n\t\t\tcase \"drop\":\n\t\t\t\tthis.report({ kind: \"job_dropped\", id: run.id });\n\t\t\t\trun.reject(new ChordError({ code: \"aborted\", message: `${this.name}: run ${run.id} dropped` }));\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\t/** A run's state document changed by `ops`, inside the commit step: its entry is replaced. */\n\t#stateChanged(id: string, ops: readonly Op[]): void {\n\t\tconst run = this.#runs.get(id);\n\t\t// Its record may not be adopted yet (a start creates both in one commit; its entry takes the state then).\n\t\tif (run?.entry === undefined) return;\n\t\tconst before = run.entry;\n\t\trun.entry = this.#entryOf(run);\n\t\tthis.running.stateChanged(before, run.entry, ops);\n\t}\n\n\t/** A run's record changed, inside the commit step: its entry is replaced. */\n\t#replaceEntry(run: JobRun): void {\n\t\tconst before = run.entry!;\n\t\trun.entry = this.#entryOf(run);\n\t\tthis.running.replace(before, run.entry);\n\t}\n\n\t/**\n\t * `run`'s `running` entry: blocked, or with its state and its args as the current code takes them (an older run's\n\t * mapped; one the code does not take, or whose mapping throws, shows its own).\n\t */\n\t#entryOf(run: JobRun): JsonValue {\n\t\tlet args = run.args;\n\t\tif (run.phase !== \"blocked\" && run.version !== this.definition.version && this.#takes(run)) {\n\t\t\ttry {\n\t\t\t\targs = this.argsOf(run, this.definition);\n\t\t\t} catch {\n\t\t\t\t// The provider's mapping threw: its own args (its finish meets the same throw and is retried).\n\t\t\t}\n\t\t}\n\t\treturn run.entryFor(this.stateOf(run.id), args);\n\t}\n\n\t#discarded(): ChordError {\n\t\treturn new ChordError({\n\t\t\tcode: \"released\",\n\t\t\treason: \"discarded\",\n\t\t\tmessage: `${this.name}: the start's transaction was discarded`,\n\t\t});\n\t}\n}\n\n/** Runs every adoption of `adopts`. */\nfunction runAll(adopts: readonly (() => void)[]): void {\n\tfor (const adopt of adopts) adopt();\n}\n\n/** The record fields a change writes, its phase transitions included. */\nfunction recordFields(change: Exclude<RecordChange, { kind: \"delete\" | \"drop\" }>): StoredFields {\n\tswitch (change.kind) {\n\t\tcase \"create\":\n\t\t\treturn {};\n\t\tcase \"update\":\n\t\t\treturn change.fields;\n\t\tcase \"outcome\":\n\t\t\treturn { phase: \"finishing\", outcome: change.outcome };\n\t\tcase \"block\":\n\t\t\treturn { phase: \"blocked\", blocked: change.reason };\n\t\tcase \"unblock\":\n\t\t\treturn { phase: change.phase, blocked: undefined, finishFailures: 0 };\n\t}\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { Context } from "../context/index.ts";
|
|
2
|
+
import { type Op, type Prepared, type Tracker } from "../delta/index.ts";
|
|
3
|
+
import type { CommitPersistence, JsonObject, StateDefinition } from "../documents/index.ts";
|
|
4
|
+
import { type DocumentChange, type DocumentSlot, type Documents, type PersistedSlot, type Persistence, SlotDefinition, type Stored, type StoredChange } from "../documents/internal.ts";
|
|
5
|
+
import type { StagedWrite } from "../store/step.ts";
|
|
6
|
+
/** What the run states tell their job: a document changed (`running` follows), a held change's deadline. */
|
|
7
|
+
export type RunStatesOwner = {
|
|
8
|
+
readonly documents: Documents;
|
|
9
|
+
/** Run `id`'s document changed by `ops`, inside the commit step. */
|
|
10
|
+
changed(id: string, ops: readonly Op[]): void;
|
|
11
|
+
/** A held change must be stored by `deadline` (`Date.now()` time). */
|
|
12
|
+
held(deadline: number): void;
|
|
13
|
+
};
|
|
14
|
+
/** A run's state documents. Created with the run, retired with its record; never drafted while absent. */
|
|
15
|
+
export declare class RunStates implements DocumentSlot, PersistedSlot {
|
|
16
|
+
#private;
|
|
17
|
+
readonly owner: Documents;
|
|
18
|
+
/** The store side when the job persists; `undefined` in memory. */
|
|
19
|
+
readonly persisted: PersistedSlot | undefined;
|
|
20
|
+
/** The definition new documents are of: the job's latest declaration's state. */
|
|
21
|
+
definition: SlotDefinition;
|
|
22
|
+
constructor(definition: StateDefinition<JsonObject, false, boolean>, states: RunStatesOwner, persistence: Persistence | undefined);
|
|
23
|
+
get persistence(): Persistence;
|
|
24
|
+
/**
|
|
25
|
+
* Takes a reload's new job version's state `definition` for new documents (`SlotDefinition.check` refuses an older
|
|
26
|
+
* version or a schema changed without a bump); the documents there are keep the version they are of.
|
|
27
|
+
*/
|
|
28
|
+
redefine(definition: StateDefinition<JsonObject, false, boolean>): void;
|
|
29
|
+
/**
|
|
30
|
+
* Run `id`'s document as the current definition reads it: migrated when it is of an older version (its run's
|
|
31
|
+
* outcome on the new code; the document itself is retired with the run), `undefined` once retired.
|
|
32
|
+
*/
|
|
33
|
+
migrated(id: string, context: Context): JsonObject | undefined;
|
|
34
|
+
/** The value of run `id`'s document; `undefined` once retired. */
|
|
35
|
+
value(id: string): JsonObject | undefined;
|
|
36
|
+
current(key: string): Tracker<JsonObject> | undefined;
|
|
37
|
+
initial(_context: Context): JsonObject;
|
|
38
|
+
/** Pinned in memory while the run is unsettled: never cold. */
|
|
39
|
+
cold(_key: string): boolean;
|
|
40
|
+
stored(key: string): Stored | undefined;
|
|
41
|
+
load(_key: string, _context: Context): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* A change of run `key`'s document: a deferred one of a stored document is held (nothing written); an immediate
|
|
44
|
+
* one stores what is held with its own ops, as one delta on the stored revision or a base.
|
|
45
|
+
*/
|
|
46
|
+
stage(key: string, change: DocumentChange, was: Stored | undefined, writes: StagedWrite[], persistence: CommitPersistence): StoredChange;
|
|
47
|
+
adopt(key: string, tracker: Tracker<JsonObject>, prepared: Prepared<JsonObject>, change: StoredChange | undefined): void;
|
|
48
|
+
/** Retires run `key`'s document (its record's deletion): what is held goes with it. */
|
|
49
|
+
retire(key: string): void;
|
|
50
|
+
/** Run `id`'s document with `value`, as its start created it or a load found it (`stored`: persisted). */
|
|
51
|
+
create(id: string, value: JsonObject, stored: Stored | undefined): void;
|
|
52
|
+
/**
|
|
53
|
+
* Stages the creation of run `id`'s document with `value` into `writes` (its start); returns the adoption, which
|
|
54
|
+
* creates it in memory with what is stored.
|
|
55
|
+
*/
|
|
56
|
+
stageCreate(id: string, value: JsonObject, writes: () => StagedWrite[]): () => void;
|
|
57
|
+
/** When run `id`'s held changes must be stored at the latest (`Infinity`: none held, or none with a deadline). */
|
|
58
|
+
deadline(id: string): number;
|
|
59
|
+
/** The runs whose documents hold changes not stored yet. */
|
|
60
|
+
get heldIds(): readonly string[];
|
|
61
|
+
/**
|
|
62
|
+
* Stages what run `id`'s document holds into `writes` (a flush: its deadline, the outcome, the close writer), as one
|
|
63
|
+
* delta on its stored revision or a base; returns the adoption, `undefined` when nothing is held.
|
|
64
|
+
*/
|
|
65
|
+
stageHeld(id: string, writes: StagedWrite[]): (() => void) | undefined;
|
|
66
|
+
/** Drops every document (the object ended): what is held is lost, as a crash loses it. */
|
|
67
|
+
drop(): void;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=run-states.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-states.d.ts","sourceRoot":"","sources":["../../src/jobs/run-states.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
// A job's run state documents (§15, slice 6b §4.1, §4.3): one per run by its id, Chord's own slot apart from the
|
|
2
|
+
// object's `self.state` slots. In memory, or persisted in the object's store (namespace `chord.job-states`), always in
|
|
3
|
+
// memory while the run is unsettled (`ctx.state.value` reads it synchronously). A persisted run's deferred changes
|
|
4
|
+
// (D8) are adopted and published at once and held, stored before the next change's own, at the outcome, at close or
|
|
5
|
+
// when their deadline passes.
|
|
6
|
+
import { ChordError } from "../data/index.js";
|
|
7
|
+
import { PendingOps, track } from "../delta/index.js";
|
|
8
|
+
import { SlotDefinition, storedAfter, } from "../documents/internal.js";
|
|
9
|
+
import { changeDocument, createDocument } from "../store/engine.js";
|
|
10
|
+
/** How long a deferred change is held at most by default (Durable's `progress.persistWithinMs`). */
|
|
11
|
+
const DEFAULT_WITHIN_MS = 1_000;
|
|
12
|
+
/** A run's state documents. Created with the run, retired with its record; never drafted while absent. */
|
|
13
|
+
export class RunStates {
|
|
14
|
+
owner;
|
|
15
|
+
/** The store side when the job persists; `undefined` in memory. */
|
|
16
|
+
persisted;
|
|
17
|
+
/** The definition new documents are of: the job's latest declaration's state. */
|
|
18
|
+
definition;
|
|
19
|
+
#persistence;
|
|
20
|
+
#states;
|
|
21
|
+
#trackers = new Map();
|
|
22
|
+
#stored = new Map();
|
|
23
|
+
#held = new Map();
|
|
24
|
+
/**
|
|
25
|
+
* The definitions of documents older than `definition` (runs started before a reload's new job version), by run id:
|
|
26
|
+
* the old code keeps writing the version it knows; the document migrates once its run settles or moves to the new
|
|
27
|
+
* code (slice 7b §8).
|
|
28
|
+
*/
|
|
29
|
+
#older = new Map();
|
|
30
|
+
constructor(definition, states, persistence) {
|
|
31
|
+
this.definition = new SlotDefinition(definition);
|
|
32
|
+
this.owner = states.documents;
|
|
33
|
+
this.#states = states;
|
|
34
|
+
this.#persistence = persistence;
|
|
35
|
+
this.persisted = persistence === undefined ? undefined : this;
|
|
36
|
+
}
|
|
37
|
+
get persistence() {
|
|
38
|
+
// Only reached through `persisted`, which a persisted job's states alone have.
|
|
39
|
+
return this.#persistence;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Takes a reload's new job version's state `definition` for new documents (`SlotDefinition.check` refuses an older
|
|
43
|
+
* version or a schema changed without a bump); the documents there are keep the version they are of.
|
|
44
|
+
*/
|
|
45
|
+
redefine(definition) {
|
|
46
|
+
const current = this.definition;
|
|
47
|
+
if (definition === current.current)
|
|
48
|
+
return;
|
|
49
|
+
current.check(definition);
|
|
50
|
+
if (definition.version !== current.current.version) {
|
|
51
|
+
for (const id of this.#trackers.keys())
|
|
52
|
+
if (!this.#older.has(id))
|
|
53
|
+
this.#older.set(id, current);
|
|
54
|
+
}
|
|
55
|
+
this.definition = new SlotDefinition(definition);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Run `id`'s document as the current definition reads it: migrated when it is of an older version (its run's
|
|
59
|
+
* outcome on the new code; the document itself is retired with the run), `undefined` once retired.
|
|
60
|
+
*/
|
|
61
|
+
migrated(id, context) {
|
|
62
|
+
const value = this.value(id);
|
|
63
|
+
const older = this.#older.get(id);
|
|
64
|
+
if (value === undefined || older === undefined)
|
|
65
|
+
return value;
|
|
66
|
+
return this.definition.current.migrate(value, older.current.version, context);
|
|
67
|
+
}
|
|
68
|
+
/** The definition run `key`'s document is of. */
|
|
69
|
+
#definitionOf(key) {
|
|
70
|
+
return this.#older.get(key) ?? this.definition;
|
|
71
|
+
}
|
|
72
|
+
/** The value of run `id`'s document; `undefined` once retired. */
|
|
73
|
+
value(id) {
|
|
74
|
+
return this.#trackers.get(id)?.value;
|
|
75
|
+
}
|
|
76
|
+
current(key) {
|
|
77
|
+
return this.#trackers.get(key);
|
|
78
|
+
}
|
|
79
|
+
initial(_context) {
|
|
80
|
+
throw new ChordError({
|
|
81
|
+
code: "released",
|
|
82
|
+
reason: "settled",
|
|
83
|
+
message: `${this.definition.current.name}: the run's document is retired`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/** Pinned in memory while the run is unsettled: never cold. */
|
|
87
|
+
cold(_key) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
stored(key) {
|
|
91
|
+
return this.#stored.get(key);
|
|
92
|
+
}
|
|
93
|
+
async load(_key, _context) { }
|
|
94
|
+
/**
|
|
95
|
+
* A change of run `key`'s document: a deferred one of a stored document is held (nothing written); an immediate
|
|
96
|
+
* one stores what is held with its own ops, as one delta on the stored revision or a base.
|
|
97
|
+
*/
|
|
98
|
+
stage(key, change, was, writes, persistence) {
|
|
99
|
+
if (persistence.kind === "deferred" && was !== undefined && !change.retires && change.prepared !== undefined) {
|
|
100
|
+
return { kind: "held", stored: was, withinMs: persistence.withinMs ?? DEFAULT_WITHIN_MS };
|
|
101
|
+
}
|
|
102
|
+
const held = this.#held.get(key);
|
|
103
|
+
return this.persistence.stage(key, this.#definitionOf(key).current, was, change, writes, held && heldOps(held));
|
|
104
|
+
}
|
|
105
|
+
adopt(key, tracker, prepared, change) {
|
|
106
|
+
tracker.adopt(prepared);
|
|
107
|
+
if (change?.kind === "held")
|
|
108
|
+
this.#hold(key, prepared, change);
|
|
109
|
+
else if (change !== undefined)
|
|
110
|
+
this.#settle(key, storedAfter(change));
|
|
111
|
+
this.#states.changed(key, prepared.ops);
|
|
112
|
+
}
|
|
113
|
+
/** Retires run `key`'s document (its record's deletion): what is held goes with it. */
|
|
114
|
+
retire(key) {
|
|
115
|
+
this.#older.delete(key);
|
|
116
|
+
this.#trackers.delete(key);
|
|
117
|
+
this.#stored.delete(key);
|
|
118
|
+
this.#held.delete(key);
|
|
119
|
+
}
|
|
120
|
+
/** Run `id`'s document with `value`, as its start created it or a load found it (`stored`: persisted). */
|
|
121
|
+
create(id, value, stored) {
|
|
122
|
+
this.#trackers.set(id, track(value));
|
|
123
|
+
if (stored !== undefined)
|
|
124
|
+
this.#stored.set(id, stored);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Stages the creation of run `id`'s document with `value` into `writes` (its start); returns the adoption, which
|
|
128
|
+
* creates it in memory with what is stored.
|
|
129
|
+
*/
|
|
130
|
+
stageCreate(id, value, writes) {
|
|
131
|
+
const persistence = this.#persistence;
|
|
132
|
+
if (persistence === undefined)
|
|
133
|
+
return () => this.create(id, value, undefined);
|
|
134
|
+
const { version, fingerprint } = this.definition.current;
|
|
135
|
+
const created = { id: 0 };
|
|
136
|
+
const base = { version, fingerprint, value };
|
|
137
|
+
writes().push(createDocument(persistence.at(id), base, JSON.stringify(value), (stored) => {
|
|
138
|
+
created.id = stored;
|
|
139
|
+
}));
|
|
140
|
+
return () => this.create(id, value, { id: created.id, revision: 1, version, deltasSinceBase: 0 });
|
|
141
|
+
}
|
|
142
|
+
/** When run `id`'s held changes must be stored at the latest (`Infinity`: none held, or none with a deadline). */
|
|
143
|
+
deadline(id) {
|
|
144
|
+
return this.#held.get(id)?.deadline ?? Number.POSITIVE_INFINITY;
|
|
145
|
+
}
|
|
146
|
+
/** The runs whose documents hold changes not stored yet. */
|
|
147
|
+
get heldIds() {
|
|
148
|
+
return [...this.#held.keys()];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Stages what run `id`'s document holds into `writes` (a flush: its deadline, the outcome, the close writer), as one
|
|
152
|
+
* delta on its stored revision or a base; returns the adoption, `undefined` when nothing is held.
|
|
153
|
+
*/
|
|
154
|
+
stageHeld(id, writes) {
|
|
155
|
+
const held = this.#held.get(id);
|
|
156
|
+
const stored = this.#stored.get(id);
|
|
157
|
+
const tracker = this.#trackers.get(id);
|
|
158
|
+
if (held === undefined || stored === undefined || tracker === undefined)
|
|
159
|
+
return undefined;
|
|
160
|
+
const { version, fingerprint } = this.#definitionOf(id).current;
|
|
161
|
+
const value = tracker.value;
|
|
162
|
+
const { ops, base: asked } = heldOps(held);
|
|
163
|
+
const base = asked || stored.version !== version;
|
|
164
|
+
const content = base
|
|
165
|
+
? { kind: "base", version, fingerprint, value }
|
|
166
|
+
: { kind: "delta", version, ops };
|
|
167
|
+
writes.push(changeDocument(stored.id, stored.revision, content, JSON.stringify(base ? value : ops)));
|
|
168
|
+
const deltasSinceBase = base ? 0 : stored.deltasSinceBase + 1;
|
|
169
|
+
const after = { id: stored.id, revision: stored.revision + 1, version, deltasSinceBase };
|
|
170
|
+
return () => {
|
|
171
|
+
if (this.#held.get(id) === held)
|
|
172
|
+
this.#settle(id, after);
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/** Drops every document (the object ended): what is held is lost, as a crash loses it. */
|
|
176
|
+
drop() {
|
|
177
|
+
this.#older.clear();
|
|
178
|
+
this.#trackers.clear();
|
|
179
|
+
this.#stored.clear();
|
|
180
|
+
this.#held.clear();
|
|
181
|
+
}
|
|
182
|
+
/** What is stored of run `key`'s document after a commit stored it: nothing is held any more. */
|
|
183
|
+
#settle(key, stored) {
|
|
184
|
+
if (stored === undefined)
|
|
185
|
+
this.#stored.delete(key);
|
|
186
|
+
else
|
|
187
|
+
this.#stored.set(key, stored);
|
|
188
|
+
this.#held.delete(key);
|
|
189
|
+
}
|
|
190
|
+
/** A deferred change adopted: its ops held (a base when `checkpointWhen` asks), its deadline told. */
|
|
191
|
+
#hold(key, prepared, change) {
|
|
192
|
+
const held = this.#held.get(key) ?? {
|
|
193
|
+
pending: new PendingOps(),
|
|
194
|
+
base: false,
|
|
195
|
+
deadline: Number.POSITIVE_INFINITY,
|
|
196
|
+
};
|
|
197
|
+
const deltasSinceBase = change.stored.deltasSinceBase + (held.pending.size > 0 ? 1 : 0);
|
|
198
|
+
if (this.#definitionOf(key).current.checkpointWhen(prepared.value, prepared.ops, { deltasSinceBase })) {
|
|
199
|
+
held.base = true;
|
|
200
|
+
}
|
|
201
|
+
// A base stores the whole value: no op needs keeping for it.
|
|
202
|
+
if (held.base)
|
|
203
|
+
held.pending.take();
|
|
204
|
+
else
|
|
205
|
+
held.pending.push(prepared.ops);
|
|
206
|
+
held.deadline = Math.min(held.deadline, Date.now() + change.withinMs);
|
|
207
|
+
this.#held.set(key, held);
|
|
208
|
+
if (Number.isFinite(held.deadline))
|
|
209
|
+
this.#states.held(held.deadline);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* What `held` stores, its queue left as it was (a commit may still be refused): its folded ops, or a base once a held
|
|
214
|
+
* change asked for one or the queue overflowed. Taking and pushing back one batch keeps it by reference: no copy.
|
|
215
|
+
*/
|
|
216
|
+
function heldOps(held) {
|
|
217
|
+
if (held.base)
|
|
218
|
+
return NO_HELD_OPS_BASE;
|
|
219
|
+
const taken = held.pending.take();
|
|
220
|
+
if (taken.kind === "replace") {
|
|
221
|
+
held.base = true;
|
|
222
|
+
return NO_HELD_OPS_BASE;
|
|
223
|
+
}
|
|
224
|
+
held.pending.push(taken.ops);
|
|
225
|
+
return { ops: taken.ops, base: false };
|
|
226
|
+
}
|
|
227
|
+
const NO_HELD_OPS_BASE = { ops: [], base: true };
|
|
228
|
+
//# sourceMappingURL=run-states.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-states.js","sourceRoot":"","sources":["../../src/jobs/run-states.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,uHAAuH;AACvH,mHAAmH;AACnH,oHAAoH;AACpH,8BAA8B;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAW,UAAU,EAA+B,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE5F,OAAO,EAON,cAAc,EAGd,WAAW,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkBpE,oGAAoG;AACpG,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,0GAA0G;AAC1G,MAAM,OAAO,SAAS;IACZ,KAAK,CAAY;IAC1B,mEAAmE;IAC1D,SAAS,CAA4B;IAC9C,iFAAiF;IACjF,UAAU,CAAiB;IAClB,YAAY,CAA0B;IACtC,OAAO,CAAiB;IACxB,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACnD,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC9C;;;;OAIG;IACM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEpD,YACC,UAAuD,EACvD,MAAsB,EACtB,WAAoC;QAEpC,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAED,IAAI,WAAW;QACd,+EAA+E;QAC/E,OAAO,IAAI,CAAC,YAAa,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,UAAuD;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,UAAU,KAAK,OAAO,CAAC,OAAO;YAAE,OAAO;QAC3C,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,EAAU,EAAE,OAAgB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED,iDAAiD;IACjD,aAAa,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;IAChD,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,QAAiB;QACxB,MAAM,IAAI,UAAU,CAAC;YACpB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,iCAAiC;SACzE,CAAC,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,IAAY;QAChB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,QAAiB,IAAkB,CAAC;IAE7D;;;OAGG;IACH,KAAK,CACJ,GAAW,EACX,MAAsB,EACtB,GAAuB,EACvB,MAAqB,EACrB,WAA8B;QAE9B,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC9G,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QAC3F,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjH,CAAC;IAED,KAAK,CACJ,GAAW,EACX,OAA4B,EAC5B,QAA8B,EAC9B,MAAgC;QAEhC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC1D,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,uFAAuF;IACvF,MAAM,CAAC,GAAW;QACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,0GAA0G;IAC1G,MAAM,CAAC,EAAU,EAAE,KAAiB,EAAE,MAA0B;QAC/D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,EAAU,EAAE,KAAiB,EAAE,MAA2B;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACzD,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAC7C,MAAM,EAAE,CAAC,IAAI,CACZ,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1E,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CACF,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,kHAAkH;IAClH,QAAQ,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACjE,CAAC;IAED,4DAA4D;IAC5D,IAAI,OAAO;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,EAAU,EAAE,MAAqB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1F,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI;YACnB,CAAC,CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAY;YAC1D,CAAC,CAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAY,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAW,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QACjG,OAAO,GAAG,EAAE;YACX,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI;gBAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,IAAI;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,iGAAiG;IACjG,OAAO,CAAC,GAAW,EAAE,MAA0B;QAC9C,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;YAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,sGAAsG;IACtG,KAAK,CAAC,GAAW,EAAE,QAA8B,EAAE,MAA+C;QACjG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;YACnC,OAAO,EAAE,IAAI,UAAU,EAAE;YACzB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,MAAM,CAAC,iBAAiB;SAClC,CAAC;QACF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;YACvG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,6DAA6D;QAC7D,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;;YAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;CACD;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,IAAe;IAC/B,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,gBAAgB,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,gBAAgB,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,gBAAgB,GAAS,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC","sourcesContent":["// A job's run state documents (§15, slice 6b §4.1, §4.3): one per run by its id, Chord's own slot apart from the\n// object's `self.state` slots. In memory, or persisted in the object's store (namespace `chord.job-states`), always in\n// memory while the run is unsettled (`ctx.state.value` reads it synchronously). A persisted run's deferred changes\n// (D8) are adopted and published at once and held, stored before the next change's own, at the outcome, at close or\n// when their deadline passes.\n\nimport type { Context } from \"../context/index.ts\";\nimport { ChordError } from \"../data/index.ts\";\nimport { type Op, PendingOps, type Prepared, type Tracker, track } from \"../delta/index.ts\";\nimport type { CommitPersistence, JsonObject, StateDefinition } from \"../documents/index.ts\";\nimport {\n\ttype DocumentChange,\n\ttype DocumentSlot,\n\ttype Documents,\n\ttype Held,\n\ttype PersistedSlot,\n\ttype Persistence,\n\tSlotDefinition,\n\ttype Stored,\n\ttype StoredChange,\n\tstoredAfter,\n} from \"../documents/internal.ts\";\nimport { changeDocument, createDocument } from \"../store/engine.ts\";\nimport type { StagedWrite } from \"../store/step.ts\";\n\n/**\n * A held state's ops, folded as they come (`PendingOps`: repeated writes of one leaf keep one op; past its bound only\n * \"store a base\" stays), whether a held change asked for a base, and when it must be stored at the latest.\n */\ntype HeldState = { readonly pending: PendingOps; base: boolean; deadline: number };\n\n/** What the run states tell their job: a document changed (`running` follows), a held change's deadline. */\nexport type RunStatesOwner = {\n\treadonly documents: Documents;\n\t/** Run `id`'s document changed by `ops`, inside the commit step. */\n\tchanged(id: string, ops: readonly Op[]): void;\n\t/** A held change must be stored by `deadline` (`Date.now()` time). */\n\theld(deadline: number): void;\n};\n\n/** How long a deferred change is held at most by default (Durable's `progress.persistWithinMs`). */\nconst DEFAULT_WITHIN_MS = 1_000;\n\n/** A run's state documents. Created with the run, retired with its record; never drafted while absent. */\nexport class RunStates implements DocumentSlot, PersistedSlot {\n\treadonly owner: Documents;\n\t/** The store side when the job persists; `undefined` in memory. */\n\treadonly persisted: PersistedSlot | undefined;\n\t/** The definition new documents are of: the job's latest declaration's state. */\n\tdefinition: SlotDefinition;\n\treadonly #persistence: Persistence | undefined;\n\treadonly #states: RunStatesOwner;\n\treadonly #trackers = new Map<string, Tracker<JsonObject>>();\n\treadonly #stored = new Map<string, Stored>();\n\treadonly #held = new Map<string, HeldState>();\n\t/**\n\t * The definitions of documents older than `definition` (runs started before a reload's new job version), by run id:\n\t * the old code keeps writing the version it knows; the document migrates once its run settles or moves to the new\n\t * code (slice 7b §8).\n\t */\n\treadonly #older = new Map<string, SlotDefinition>();\n\n\tconstructor(\n\t\tdefinition: StateDefinition<JsonObject, false, boolean>,\n\t\tstates: RunStatesOwner,\n\t\tpersistence: Persistence | undefined,\n\t) {\n\t\tthis.definition = new SlotDefinition(definition);\n\t\tthis.owner = states.documents;\n\t\tthis.#states = states;\n\t\tthis.#persistence = persistence;\n\t\tthis.persisted = persistence === undefined ? undefined : this;\n\t}\n\n\tget persistence(): Persistence {\n\t\t// Only reached through `persisted`, which a persisted job's states alone have.\n\t\treturn this.#persistence!;\n\t}\n\n\t/**\n\t * Takes a reload's new job version's state `definition` for new documents (`SlotDefinition.check` refuses an older\n\t * version or a schema changed without a bump); the documents there are keep the version they are of.\n\t */\n\tredefine(definition: StateDefinition<JsonObject, false, boolean>): void {\n\t\tconst current = this.definition;\n\t\tif (definition === current.current) return;\n\t\tcurrent.check(definition);\n\t\tif (definition.version !== current.current.version) {\n\t\t\tfor (const id of this.#trackers.keys()) if (!this.#older.has(id)) this.#older.set(id, current);\n\t\t}\n\t\tthis.definition = new SlotDefinition(definition);\n\t}\n\n\t/**\n\t * Run `id`'s document as the current definition reads it: migrated when it is of an older version (its run's\n\t * outcome on the new code; the document itself is retired with the run), `undefined` once retired.\n\t */\n\tmigrated(id: string, context: Context): JsonObject | undefined {\n\t\tconst value = this.value(id);\n\t\tconst older = this.#older.get(id);\n\t\tif (value === undefined || older === undefined) return value;\n\t\treturn this.definition.current.migrate(value, older.current.version, context);\n\t}\n\n\t/** The definition run `key`'s document is of. */\n\t#definitionOf(key: string): SlotDefinition {\n\t\treturn this.#older.get(key) ?? this.definition;\n\t}\n\n\t/** The value of run `id`'s document; `undefined` once retired. */\n\tvalue(id: string): JsonObject | undefined {\n\t\treturn this.#trackers.get(id)?.value;\n\t}\n\n\tcurrent(key: string): Tracker<JsonObject> | undefined {\n\t\treturn this.#trackers.get(key);\n\t}\n\n\tinitial(_context: Context): JsonObject {\n\t\tthrow new ChordError({\n\t\t\tcode: \"released\",\n\t\t\treason: \"settled\",\n\t\t\tmessage: `${this.definition.current.name}: the run's document is retired`,\n\t\t});\n\t}\n\n\t/** Pinned in memory while the run is unsettled: never cold. */\n\tcold(_key: string): boolean {\n\t\treturn false;\n\t}\n\n\tstored(key: string): Stored | undefined {\n\t\treturn this.#stored.get(key);\n\t}\n\n\tasync load(_key: string, _context: Context): Promise<void> {}\n\n\t/**\n\t * A change of run `key`'s document: a deferred one of a stored document is held (nothing written); an immediate\n\t * one stores what is held with its own ops, as one delta on the stored revision or a base.\n\t */\n\tstage(\n\t\tkey: string,\n\t\tchange: DocumentChange,\n\t\twas: Stored | undefined,\n\t\twrites: StagedWrite[],\n\t\tpersistence: CommitPersistence,\n\t): StoredChange {\n\t\tif (persistence.kind === \"deferred\" && was !== undefined && !change.retires && change.prepared !== undefined) {\n\t\t\treturn { kind: \"held\", stored: was, withinMs: persistence.withinMs ?? DEFAULT_WITHIN_MS };\n\t\t}\n\t\tconst held = this.#held.get(key);\n\t\treturn this.persistence.stage(key, this.#definitionOf(key).current, was, change, writes, held && heldOps(held));\n\t}\n\n\tadopt(\n\t\tkey: string,\n\t\ttracker: Tracker<JsonObject>,\n\t\tprepared: Prepared<JsonObject>,\n\t\tchange: StoredChange | undefined,\n\t): void {\n\t\ttracker.adopt(prepared);\n\t\tif (change?.kind === \"held\") this.#hold(key, prepared, change);\n\t\telse if (change !== undefined) this.#settle(key, storedAfter(change));\n\t\tthis.#states.changed(key, prepared.ops);\n\t}\n\n\t/** Retires run `key`'s document (its record's deletion): what is held goes with it. */\n\tretire(key: string): void {\n\t\tthis.#older.delete(key);\n\t\tthis.#trackers.delete(key);\n\t\tthis.#stored.delete(key);\n\t\tthis.#held.delete(key);\n\t}\n\n\t/** Run `id`'s document with `value`, as its start created it or a load found it (`stored`: persisted). */\n\tcreate(id: string, value: JsonObject, stored: Stored | undefined): void {\n\t\tthis.#trackers.set(id, track(value));\n\t\tif (stored !== undefined) this.#stored.set(id, stored);\n\t}\n\n\t/**\n\t * Stages the creation of run `id`'s document with `value` into `writes` (its start); returns the adoption, which\n\t * creates it in memory with what is stored.\n\t */\n\tstageCreate(id: string, value: JsonObject, writes: () => StagedWrite[]): () => void {\n\t\tconst persistence = this.#persistence;\n\t\tif (persistence === undefined) return () => this.create(id, value, undefined);\n\t\tconst { version, fingerprint } = this.definition.current;\n\t\tconst created = { id: 0 };\n\t\tconst base = { version, fingerprint, value };\n\t\twrites().push(\n\t\t\tcreateDocument(persistence.at(id), base, JSON.stringify(value), (stored) => {\n\t\t\t\tcreated.id = stored;\n\t\t\t}),\n\t\t);\n\t\treturn () => this.create(id, value, { id: created.id, revision: 1, version, deltasSinceBase: 0 });\n\t}\n\n\t/** When run `id`'s held changes must be stored at the latest (`Infinity`: none held, or none with a deadline). */\n\tdeadline(id: string): number {\n\t\treturn this.#held.get(id)?.deadline ?? Number.POSITIVE_INFINITY;\n\t}\n\n\t/** The runs whose documents hold changes not stored yet. */\n\tget heldIds(): readonly string[] {\n\t\treturn [...this.#held.keys()];\n\t}\n\n\t/**\n\t * Stages what run `id`'s document holds into `writes` (a flush: its deadline, the outcome, the close writer), as one\n\t * delta on its stored revision or a base; returns the adoption, `undefined` when nothing is held.\n\t */\n\tstageHeld(id: string, writes: StagedWrite[]): (() => void) | undefined {\n\t\tconst held = this.#held.get(id);\n\t\tconst stored = this.#stored.get(id);\n\t\tconst tracker = this.#trackers.get(id);\n\t\tif (held === undefined || stored === undefined || tracker === undefined) return undefined;\n\t\tconst { version, fingerprint } = this.#definitionOf(id).current;\n\t\tconst value = tracker.value;\n\t\tconst { ops, base: asked } = heldOps(held);\n\t\tconst base = asked || stored.version !== version;\n\t\tconst content = base\n\t\t\t? ({ kind: \"base\", version, fingerprint, value } as const)\n\t\t\t: ({ kind: \"delta\", version, ops } as const);\n\t\twrites.push(changeDocument(stored.id, stored.revision, content, JSON.stringify(base ? value : ops)));\n\t\tconst deltasSinceBase = base ? 0 : stored.deltasSinceBase + 1;\n\t\tconst after: Stored = { id: stored.id, revision: stored.revision + 1, version, deltasSinceBase };\n\t\treturn () => {\n\t\t\tif (this.#held.get(id) === held) this.#settle(id, after);\n\t\t};\n\t}\n\n\t/** Drops every document (the object ended): what is held is lost, as a crash loses it. */\n\tdrop(): void {\n\t\tthis.#older.clear();\n\t\tthis.#trackers.clear();\n\t\tthis.#stored.clear();\n\t\tthis.#held.clear();\n\t}\n\n\t/** What is stored of run `key`'s document after a commit stored it: nothing is held any more. */\n\t#settle(key: string, stored: Stored | undefined): void {\n\t\tif (stored === undefined) this.#stored.delete(key);\n\t\telse this.#stored.set(key, stored);\n\t\tthis.#held.delete(key);\n\t}\n\n\t/** A deferred change adopted: its ops held (a base when `checkpointWhen` asks), its deadline told. */\n\t#hold(key: string, prepared: Prepared<JsonObject>, change: Extract<StoredChange, { kind: \"held\" }>): void {\n\t\tconst held = this.#held.get(key) ?? {\n\t\t\tpending: new PendingOps(),\n\t\t\tbase: false,\n\t\t\tdeadline: Number.POSITIVE_INFINITY,\n\t\t};\n\t\tconst deltasSinceBase = change.stored.deltasSinceBase + (held.pending.size > 0 ? 1 : 0);\n\t\tif (this.#definitionOf(key).current.checkpointWhen(prepared.value, prepared.ops, { deltasSinceBase })) {\n\t\t\theld.base = true;\n\t\t}\n\t\t// A base stores the whole value: no op needs keeping for it.\n\t\tif (held.base) held.pending.take();\n\t\telse held.pending.push(prepared.ops);\n\t\theld.deadline = Math.min(held.deadline, Date.now() + change.withinMs);\n\t\tthis.#held.set(key, held);\n\t\tif (Number.isFinite(held.deadline)) this.#states.held(held.deadline);\n\t}\n}\n\n/**\n * What `held` stores, its queue left as it was (a commit may still be refused): its folded ops, or a base once a held\n * change asked for one or the queue overflowed. Taking and pushing back one batch keeps it by reference: no copy.\n */\nfunction heldOps(held: HeldState): Held {\n\tif (held.base) return NO_HELD_OPS_BASE;\n\tconst taken = held.pending.take();\n\tif (taken.kind === \"replace\") {\n\t\theld.base = true;\n\t\treturn NO_HELD_OPS_BASE;\n\t}\n\theld.pending.push(taken.ops);\n\treturn { ops: taken.ops, base: false };\n}\n\nconst NO_HELD_OPS_BASE: Held = { ops: [], base: true };\n"]}
|