@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,81 @@
|
|
|
1
|
+
import type { Context } from "../context/index.ts";
|
|
2
|
+
import { type Contract, type ContractShape, type Kind, LOCAL, type ShapeOf } from "./contract.ts";
|
|
3
|
+
import type { Change, ChangesAfter, CurrentStep, MemberNames, MethodAt, OlderVersions, StepAt, VariantShape, Variants, VariantsWith } from "./history.ts";
|
|
4
|
+
import type { Method, Static } from "./schema.ts";
|
|
5
|
+
/** Per accepted older version, exactly the mappings its later edits require (direct: old to current). */
|
|
6
|
+
export type AcceptsTable<C extends Contract> = AcceptsOf<ShapeOf<C>>;
|
|
7
|
+
type AcceptsOf<S extends ContractShape> = {
|
|
8
|
+
readonly [V in OlderVersions<S["history"]>]?: VersionMappings<S["kind"], StepAt<S["history"], V>["variants"], CurrentStep<S["history"]>["variants"], ChangesAfter<S["history"], V>>;
|
|
9
|
+
};
|
|
10
|
+
type VersionMappings<K extends Kind, Old extends Variants, Current extends Variants, C extends Change> = Section<"state", K extends "local" ? StateMappings<Old[Local], Current[Local], Local, C> : RemoteStateMappings<Old, Current, C>> & Section<"methods", MethodMappings<Old, Current, C>> & Section<"keyed", K extends "local" ? KeyedMappings<Old[Local], Current[Local], C> : Record<never, never>>;
|
|
11
|
+
/**
|
|
12
|
+
* A local contract's keyed members (slice 7b): a changed one maps each document of the current version back, or
|
|
13
|
+
* refuses; a removed one refuses (no document maps from the whole state).
|
|
14
|
+
*/
|
|
15
|
+
type KeyedMappings<Old extends VariantShape, Current extends VariantShape, C extends Change> = OmitNever<{
|
|
16
|
+
[S in keyof NonNullable<Old["keyed"]>]: S extends keyof NonNullable<Current["keyed"]> ? [Local, S, "keyed"] extends C ? ((current: Static<NonNullable<Current["keyed"]>[S]>) => Static<NonNullable<Old["keyed"]>[S]>) | "refuse" : never : "refuse";
|
|
17
|
+
}>;
|
|
18
|
+
type Local = typeof LOCAL;
|
|
19
|
+
/** A section is required when it holds a required mapping; otherwise it may be absent or empty. */
|
|
20
|
+
type Section<Key extends string, T> = [keyof T] extends [never] ? {
|
|
21
|
+
readonly [K in Key]?: {
|
|
22
|
+
readonly [member: string]: never;
|
|
23
|
+
};
|
|
24
|
+
} : {
|
|
25
|
+
readonly [K in Key]: T;
|
|
26
|
+
};
|
|
27
|
+
/** `T` without its `never` properties: the members that need no mapping. */
|
|
28
|
+
type OmitNever<T> = {
|
|
29
|
+
readonly [K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
30
|
+
};
|
|
31
|
+
type RemoteStateMappings<Old extends Variants, Current extends Variants, C extends Change> = OmitNever<{
|
|
32
|
+
[X in keyof Old & keyof Current]: [keyof StateMappings<Old[X], Current[X], X, C>] extends [never] ? never : StateMappings<Old[X], Current[X], X, C>;
|
|
33
|
+
}>;
|
|
34
|
+
type StateMappings<Old extends VariantShape, Current extends VariantShape, X, C extends Change> = OmitNever<{
|
|
35
|
+
[S in keyof Old["state"]]: StateMapping<Old, Current, X, S, C>;
|
|
36
|
+
}>;
|
|
37
|
+
/** A changed member maps the current member back; a removed one maps the variant's whole current state, or refuses. */
|
|
38
|
+
type StateMapping<Old extends VariantShape, Current extends VariantShape, X, S extends keyof Old["state"], C> = S extends keyof Current["state"] ? [X, S, "state"] extends C ? (current: Static<Current["state"][S]>) => Static<Old["state"][S]> : never : ((state: {
|
|
39
|
+
[M in keyof Current["state"]]: Static<Current["state"][M]>;
|
|
40
|
+
}) => Static<Old["state"][S]>) | "refuse";
|
|
41
|
+
type MethodMappings<Old extends Variants, Current extends Variants, C extends Change> = OmitNever<{
|
|
42
|
+
[M in MemberNames<Old, "methods">]: [RemovedFrom<Current, VariantsWith<Old, M>, M>] extends [never] ? ChangedMethod<Changed<C, VariantsWith<Old, M>, M, "args">, Changed<C, VariantsWith<Old, M>, M, "result">, MethodAt<Old, M>, MethodAt<Current, M>> : Replacement<MethodAt<Old, M>>;
|
|
43
|
+
}>;
|
|
44
|
+
/** The variants among `Xs` that no longer have method `M`. */
|
|
45
|
+
type RemovedFrom<Current extends Variants, Xs extends keyof Current, M> = {
|
|
46
|
+
[X in Xs]: M extends keyof Current[X]["methods"] ? never : X;
|
|
47
|
+
}[Xs];
|
|
48
|
+
/** `true` when an edit changed `Side` of `M` in one of `Xs`. */
|
|
49
|
+
type Changed<C, Xs, M, Side> = Xs extends unknown ? ([Xs, M, Side] extends C ? true : never) : never;
|
|
50
|
+
/** Mappings for the changed sides of a method (`A`, `R` are `true` when changed), or a replacement. */
|
|
51
|
+
type ChangedMethod<A, R, Old extends Method, Current extends Method> = [A | R] extends [never] ? never : ({
|
|
52
|
+
readonly call?: never;
|
|
53
|
+
} & ([A] extends [never] ? {
|
|
54
|
+
readonly args?: never;
|
|
55
|
+
} : {
|
|
56
|
+
readonly args: (old: Static<Old["args"]>) => Static<Current["args"]>;
|
|
57
|
+
}) & ([R] extends [never] ? {
|
|
58
|
+
readonly result?: never;
|
|
59
|
+
} : {
|
|
60
|
+
readonly result: (current: Static<Current["result"]>) => Static<Old["result"]>;
|
|
61
|
+
})) | Replacement<Old>;
|
|
62
|
+
/** A removed (or changed) method served by the provider's own function, or refused. */
|
|
63
|
+
type Replacement<Old extends Method> = {
|
|
64
|
+
readonly call: (args: Static<Old["args"]>, context: Context) => Promise<Static<Old["result"]>>;
|
|
65
|
+
readonly args?: never;
|
|
66
|
+
readonly result?: never;
|
|
67
|
+
} | "refuse";
|
|
68
|
+
/** An accepted older version and its fingerprint. */
|
|
69
|
+
export type AcceptedVersion = {
|
|
70
|
+
readonly version: number;
|
|
71
|
+
readonly fingerprint: string;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Validates an accepts table without calling any mapping: known older versions only, exactly the required mappings
|
|
75
|
+
* with the right shapes. Fails with an Error naming the path (`notes accepts[1].methods.add`).
|
|
76
|
+
*/
|
|
77
|
+
export declare function checkAccepts<C extends Contract>(contract: C, accepts: AcceptsTable<C>): {
|
|
78
|
+
readonly versions: readonly AcceptedVersion[];
|
|
79
|
+
};
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=accepts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accepts.d.ts","sourceRoot":"","sources":["../../src/contracts/accepts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// Accepted versions: the older versions a provider still serves, with the direct mappings their edits require.
|
|
2
|
+
import { contractData, LOCAL, } from "./contract.js";
|
|
3
|
+
import { checkKeys, entriesOf } from "./declare.js";
|
|
4
|
+
/**
|
|
5
|
+
* Validates an accepts table without calling any mapping: known older versions only, exactly the required mappings
|
|
6
|
+
* with the right shapes. Fails with an Error naming the path (`notes accepts[1].methods.add`).
|
|
7
|
+
*/
|
|
8
|
+
export function checkAccepts(contract, accepts) {
|
|
9
|
+
const data = contractData(contract);
|
|
10
|
+
// Declaration policy: JavaScript callers reach every check below.
|
|
11
|
+
const versions = entriesOf(accepts, `${data.name} accepts`).map(([key, mappings]) => {
|
|
12
|
+
const path = `${data.name} accepts[${key}]`;
|
|
13
|
+
const index = data.versions.findIndex(({ version }) => String(version) === key);
|
|
14
|
+
if (index === -1 || index === data.versions.length - 1)
|
|
15
|
+
throw new Error(`${path}: not an older version`);
|
|
16
|
+
checkMappings(mappings, needs(data, index), data.kind, path);
|
|
17
|
+
const { version, fingerprint } = data.versions[index];
|
|
18
|
+
return { version, fingerprint };
|
|
19
|
+
});
|
|
20
|
+
return { versions };
|
|
21
|
+
}
|
|
22
|
+
function needs(data, index) {
|
|
23
|
+
const old = data.versions[index];
|
|
24
|
+
const current = data.versions.at(-1);
|
|
25
|
+
const changes = new Set(data.versions.slice(index + 1).flatMap((version) => version.changes.map(changeKey)));
|
|
26
|
+
const changed = (...change) => changes.has(changeKey(change));
|
|
27
|
+
const state = new Map();
|
|
28
|
+
const methods = new Map();
|
|
29
|
+
const keyed = new Map();
|
|
30
|
+
for (const [variant, { state: oldState, methods: oldMethods, keyed: oldKeyed }] of old.variants) {
|
|
31
|
+
const now = current.variants.get(variant);
|
|
32
|
+
for (const member of oldKeyed.keys()) {
|
|
33
|
+
if (!now.keyed.has(member))
|
|
34
|
+
keyed.set(member, "removed");
|
|
35
|
+
else if (changed(variant, member, "keyed"))
|
|
36
|
+
keyed.set(member, "changed");
|
|
37
|
+
}
|
|
38
|
+
const variantNeeds = new Map();
|
|
39
|
+
for (const member of oldState.keys()) {
|
|
40
|
+
if (!now.state.has(member))
|
|
41
|
+
variantNeeds.set(member, "removed");
|
|
42
|
+
else if (changed(variant, member, "state"))
|
|
43
|
+
variantNeeds.set(member, "changed");
|
|
44
|
+
}
|
|
45
|
+
if (variantNeeds.size > 0)
|
|
46
|
+
state.set(variant, variantNeeds);
|
|
47
|
+
for (const member of oldMethods.keys()) {
|
|
48
|
+
const need = methods.get(member) ?? { removed: false, args: false, result: false };
|
|
49
|
+
need.removed ||= !now.methods.has(member);
|
|
50
|
+
need.args ||= changed(variant, member, "args");
|
|
51
|
+
need.result ||= changed(variant, member, "result");
|
|
52
|
+
methods.set(member, need);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const methodNeeds = new Map();
|
|
56
|
+
for (const [member, { removed, args, result }] of methods) {
|
|
57
|
+
if (removed)
|
|
58
|
+
methodNeeds.set(member, { kind: "removed" });
|
|
59
|
+
else if (args || result)
|
|
60
|
+
methodNeeds.set(member, { kind: "changed", args, result });
|
|
61
|
+
}
|
|
62
|
+
return { state, methods: methodNeeds, keyed };
|
|
63
|
+
}
|
|
64
|
+
function changeKey(change) {
|
|
65
|
+
return JSON.stringify(change);
|
|
66
|
+
}
|
|
67
|
+
function checkMappings(mappings, needs, kind, path) {
|
|
68
|
+
checkKeys(mappings, ["state", "methods", "keyed"], path);
|
|
69
|
+
const { state, methods, keyed } = mappings;
|
|
70
|
+
const checkVariant = (variantMappings, variantNeeds, at) => checkSection(variantMappings, variantNeeds, at, checkStateMapping);
|
|
71
|
+
// A local table is flat: its state section is the one variant's.
|
|
72
|
+
if (kind === "local")
|
|
73
|
+
checkVariant(state, needs.state.get(LOCAL) ?? new Map(), `${path}.state`);
|
|
74
|
+
else
|
|
75
|
+
checkSection(state, needs.state, `${path}.state`, checkVariant);
|
|
76
|
+
checkSection(methods, needs.methods, `${path}.methods`, checkMethodMapping);
|
|
77
|
+
checkSection(keyed, needs.keyed, `${path}.keyed`, checkKeyedMapping);
|
|
78
|
+
}
|
|
79
|
+
/** Exactly the needed keys: no missing and no unnecessary mapping; absent only when nothing is needed. */
|
|
80
|
+
function checkSection(section, needs, path, check) {
|
|
81
|
+
const mappings = new Map(section === undefined ? [] : entriesOf(section, path));
|
|
82
|
+
for (const key of mappings.keys())
|
|
83
|
+
if (!needs.has(key))
|
|
84
|
+
throw new Error(`${path}.${key}: unnecessary mapping`);
|
|
85
|
+
for (const [key, need] of needs) {
|
|
86
|
+
if (!mappings.has(key))
|
|
87
|
+
throw new Error(`${path}.${key}: missing mapping`);
|
|
88
|
+
check(mappings.get(key), need, `${path}.${key}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function checkStateMapping(mapping, need, path) {
|
|
92
|
+
if (typeof mapping === "function" || (need === "removed" && mapping === "refuse"))
|
|
93
|
+
return;
|
|
94
|
+
throw new Error(`${path}: expected ${need === "removed" ? 'a function or "refuse"' : "a function"}`);
|
|
95
|
+
}
|
|
96
|
+
function checkKeyedMapping(mapping, need, path) {
|
|
97
|
+
if (mapping === "refuse" || (need === "changed" && typeof mapping === "function"))
|
|
98
|
+
return;
|
|
99
|
+
throw new Error(`${path}: expected ${need === "changed" ? 'a function or "refuse"' : '"refuse"'}`);
|
|
100
|
+
}
|
|
101
|
+
function checkMethodMapping(mapping, need, path) {
|
|
102
|
+
if (mapping === "refuse")
|
|
103
|
+
return;
|
|
104
|
+
checkKeys(mapping, ["args", "result", "call"], path);
|
|
105
|
+
const { args, result, call } = mapping;
|
|
106
|
+
if (call !== undefined || need.kind === "removed") {
|
|
107
|
+
if (typeof call !== "function" || args !== undefined || result !== undefined) {
|
|
108
|
+
throw new Error(`${path}: expected { call } or "refuse"`);
|
|
109
|
+
}
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
checkSide(args, need.args, `${path}.args`);
|
|
113
|
+
checkSide(result, need.result, `${path}.result`);
|
|
114
|
+
}
|
|
115
|
+
function checkSide(mapping, needed, path) {
|
|
116
|
+
if (!needed && mapping !== undefined)
|
|
117
|
+
throw new Error(`${path}: unnecessary mapping`);
|
|
118
|
+
if (needed && mapping === undefined)
|
|
119
|
+
throw new Error(`${path}: missing mapping`);
|
|
120
|
+
if (needed && typeof mapping !== "function")
|
|
121
|
+
throw new Error(`${path}: expected a function`);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=accepts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accepts.js","sourceRoot":"","sources":["../../src/contracts/accepts.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAG/G,OAAO,EAIN,YAAY,EAEZ,KAAK,GAEL,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA0HpD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC3B,QAAW,EACX,OAAwB;IAExB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,kEAAkE;IAClE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;QACnF,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,YAAY,GAAG,GAAG,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAChF,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wBAAwB,CAAC,CAAC;QACzG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrB,CAAC;AAiBD,SAAS,KAAK,CAAC,IAAkB,EAAE,KAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,CAAC,GAAG,MAAc,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgE,CAAC;IACxF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC3C,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjG,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QAC3C,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBACpD,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;QAClD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBAC3D,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACnF,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;IAClD,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;QAC3D,IAAI,OAAO;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;aACrD,IAAI,IAAI,IAAI,MAAM;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,QAAiB,EAAE,KAAY,EAAE,IAAU,EAAE,IAAY;IAC/E,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,QAIjC,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,eAAwB,EAAE,YAA4C,EAAE,EAAU,EAAE,EAAE,CAC3G,YAAY,CAAC,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACpE,iEAAiE;IACjE,IAAI,IAAI,KAAK,OAAO;QAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;;QAC3F,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrE,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC5E,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AACtE,CAAC;AAED,0GAA0G;AAC1G,SAAS,YAAY,CACpB,OAAgB,EAChB,KAA6B,EAC7B,IAAY,EACZ,KAAwD;IAExD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAChF,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAC/G,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,mBAAmB,CAAC,CAAC;QAC3E,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB,EAAE,IAAe,EAAE,IAAY;IACzE,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC;QAAE,OAAO;IAC1F,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB,EAAE,IAAe,EAAE,IAAY;IACzE,IAAI,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,CAAC;QAAE,OAAO;IAC1F,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB,EAAE,IAAgB,EAAE,IAAY;IAC3E,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO;IACjC,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAI9B,CAAC;IACF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnD,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO;IACR,CAAC;IACD,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,OAAgB,EAAE,MAAe,EAAE,IAAY;IACjE,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;IACtF,IAAI,MAAM,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;IACjF,IAAI,MAAM,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;AAC9F,CAAC","sourcesContent":["// Accepted versions: the older versions a provider still serves, with the direct mappings their edits require.\n\nimport type { Context } from \"../context/index.ts\";\nimport {\n\ttype Contract,\n\ttype ContractData,\n\ttype ContractShape,\n\tcontractData,\n\ttype Kind,\n\tLOCAL,\n\ttype ShapeOf,\n} from \"./contract.ts\";\nimport { checkKeys, entriesOf } from \"./declare.ts\";\nimport type {\n\tChange,\n\tChangesAfter,\n\tCurrentStep,\n\tMemberNames,\n\tMethodAt,\n\tOlderVersions,\n\tStepAt,\n\tVariantShape,\n\tVariants,\n\tVariantsWith,\n} from \"./history.ts\";\nimport type { Method, Static } from \"./schema.ts\";\n\n/** Per accepted older version, exactly the mappings its later edits require (direct: old to current). */\nexport type AcceptsTable<C extends Contract> = AcceptsOf<ShapeOf<C>>;\n\ntype AcceptsOf<S extends ContractShape> = {\n\treadonly [V in OlderVersions<S[\"history\"]>]?: VersionMappings<\n\t\tS[\"kind\"],\n\t\tStepAt<S[\"history\"], V>[\"variants\"],\n\t\tCurrentStep<S[\"history\"]>[\"variants\"],\n\t\tChangesAfter<S[\"history\"], V>\n\t>;\n};\n\ntype VersionMappings<K extends Kind, Old extends Variants, Current extends Variants, C extends Change> = Section<\n\t\"state\",\n\tK extends \"local\" ? StateMappings<Old[Local], Current[Local], Local, C> : RemoteStateMappings<Old, Current, C>\n> &\n\tSection<\"methods\", MethodMappings<Old, Current, C>> &\n\tSection<\"keyed\", K extends \"local\" ? KeyedMappings<Old[Local], Current[Local], C> : Record<never, never>>;\n\n/**\n * A local contract's keyed members (slice 7b): a changed one maps each document of the current version back, or\n * refuses; a removed one refuses (no document maps from the whole state).\n */\ntype KeyedMappings<Old extends VariantShape, Current extends VariantShape, C extends Change> = OmitNever<{\n\t[S in keyof NonNullable<Old[\"keyed\"]>]: S extends keyof NonNullable<Current[\"keyed\"]>\n\t\t? [Local, S, \"keyed\"] extends C\n\t\t\t? ((current: Static<NonNullable<Current[\"keyed\"]>[S]>) => Static<NonNullable<Old[\"keyed\"]>[S]>) | \"refuse\"\n\t\t\t: never\n\t\t: \"refuse\";\n}>;\n\ntype Local = typeof LOCAL;\n\n/** A section is required when it holds a required mapping; otherwise it may be absent or empty. */\ntype Section<Key extends string, T> = [keyof T] extends [never]\n\t? { readonly [K in Key]?: { readonly [member: string]: never } }\n\t: { readonly [K in Key]: T };\n\n/** `T` without its `never` properties: the members that need no mapping. */\ntype OmitNever<T> = { readonly [K in keyof T as [T[K]] extends [never] ? never : K]: T[K] };\n\ntype RemoteStateMappings<Old extends Variants, Current extends Variants, C extends Change> = OmitNever<{\n\t[X in keyof Old & keyof Current]: [keyof StateMappings<Old[X], Current[X], X, C>] extends [never]\n\t\t? never\n\t\t: StateMappings<Old[X], Current[X], X, C>;\n}>;\n\ntype StateMappings<Old extends VariantShape, Current extends VariantShape, X, C extends Change> = OmitNever<{\n\t[S in keyof Old[\"state\"]]: StateMapping<Old, Current, X, S, C>;\n}>;\n\n/** A changed member maps the current member back; a removed one maps the variant's whole current state, or refuses. */\ntype StateMapping<\n\tOld extends VariantShape,\n\tCurrent extends VariantShape,\n\tX,\n\tS extends keyof Old[\"state\"],\n\tC,\n> = S extends keyof Current[\"state\"]\n\t? [X, S, \"state\"] extends C\n\t\t? (current: Static<Current[\"state\"][S]>) => Static<Old[\"state\"][S]>\n\t\t: never\n\t: ((state: { [M in keyof Current[\"state\"]]: Static<Current[\"state\"][M]> }) => Static<Old[\"state\"][S]>) | \"refuse\";\n\ntype MethodMappings<Old extends Variants, Current extends Variants, C extends Change> = OmitNever<{\n\t[M in MemberNames<Old, \"methods\">]: [RemovedFrom<Current, VariantsWith<Old, M>, M>] extends [never]\n\t\t? ChangedMethod<\n\t\t\t\tChanged<C, VariantsWith<Old, M>, M, \"args\">,\n\t\t\t\tChanged<C, VariantsWith<Old, M>, M, \"result\">,\n\t\t\t\tMethodAt<Old, M>,\n\t\t\t\tMethodAt<Current, M>\n\t\t\t>\n\t\t: Replacement<MethodAt<Old, M>>;\n}>;\n\n/** The variants among `Xs` that no longer have method `M`. */\ntype RemovedFrom<Current extends Variants, Xs extends keyof Current, M> = {\n\t[X in Xs]: M extends keyof Current[X][\"methods\"] ? never : X;\n}[Xs];\n\n/** `true` when an edit changed `Side` of `M` in one of `Xs`. */\ntype Changed<C, Xs, M, Side> = Xs extends unknown ? ([Xs, M, Side] extends C ? true : never) : never;\n\n/** Mappings for the changed sides of a method (`A`, `R` are `true` when changed), or a replacement. */\ntype ChangedMethod<A, R, Old extends Method, Current extends Method> = [A | R] extends [never]\n\t? never\n\t:\n\t\t\t| ({ readonly call?: never } & ([A] extends [never]\n\t\t\t\t\t? { readonly args?: never }\n\t\t\t\t\t: { readonly args: (old: Static<Old[\"args\"]>) => Static<Current[\"args\"]> }) &\n\t\t\t\t\t([R] extends [never]\n\t\t\t\t\t\t? { readonly result?: never }\n\t\t\t\t\t\t: { readonly result: (current: Static<Current[\"result\"]>) => Static<Old[\"result\"]> }))\n\t\t\t| Replacement<Old>;\n\n/** A removed (or changed) method served by the provider's own function, or refused. */\ntype Replacement<Old extends Method> =\n\t| {\n\t\t\treadonly call: (args: Static<Old[\"args\"]>, context: Context) => Promise<Static<Old[\"result\"]>>;\n\t\t\treadonly args?: never;\n\t\t\treadonly result?: never;\n\t }\n\t| \"refuse\";\n\n/** An accepted older version and its fingerprint. */\nexport type AcceptedVersion = { readonly version: number; readonly fingerprint: string };\n\n/**\n * Validates an accepts table without calling any mapping: known older versions only, exactly the required mappings\n * with the right shapes. Fails with an Error naming the path (`notes accepts[1].methods.add`).\n */\nexport function checkAccepts<C extends Contract>(\n\tcontract: C,\n\taccepts: AcceptsTable<C>,\n): { readonly versions: readonly AcceptedVersion[] } {\n\tconst data = contractData(contract);\n\t// Declaration policy: JavaScript callers reach every check below.\n\tconst versions = entriesOf(accepts, `${data.name} accepts`).map(([key, mappings]) => {\n\t\tconst path = `${data.name} accepts[${key}]`;\n\t\tconst index = data.versions.findIndex(({ version }) => String(version) === key);\n\t\tif (index === -1 || index === data.versions.length - 1) throw new Error(`${path}: not an older version`);\n\t\tcheckMappings(mappings, needs(data, index), data.kind, path);\n\t\tconst { version, fingerprint } = data.versions[index]!;\n\t\treturn { version, fingerprint };\n\t});\n\treturn { versions };\n}\n\n/** What an accepted version needs, by edit and never by schema comparison. */\ntype Needs = {\n\t/** Per variant, per state member. */\n\treadonly state: ReadonlyMap<string, ReadonlyMap<string, StateNeed>>;\n\treadonly methods: ReadonlyMap<string, MethodNeed>;\n\t/** Per keyed member (local contracts). */\n\treadonly keyed: ReadonlyMap<string, StateNeed>;\n};\n\ntype StateNeed = \"changed\" | \"removed\";\n\ntype MethodNeed =\n\t| { readonly kind: \"removed\" }\n\t| { readonly kind: \"changed\"; readonly args: boolean; readonly result: boolean };\n\nfunction needs(data: ContractData, index: number): Needs {\n\tconst old = data.versions[index]!;\n\tconst current = data.versions.at(-1)!;\n\tconst changes = new Set(data.versions.slice(index + 1).flatMap((version) => version.changes.map(changeKey)));\n\tconst changed = (...change: Change) => changes.has(changeKey(change));\n\tconst state = new Map<string, Map<string, StateNeed>>();\n\tconst methods = new Map<string, { removed: boolean; args: boolean; result: boolean }>();\n\tconst keyed = new Map<string, StateNeed>();\n\tfor (const [variant, { state: oldState, methods: oldMethods, keyed: oldKeyed }] of old.variants) {\n\t\tconst now = current.variants.get(variant)!;\n\t\tfor (const member of oldKeyed.keys()) {\n\t\t\tif (!now.keyed.has(member)) keyed.set(member, \"removed\");\n\t\t\telse if (changed(variant, member, \"keyed\")) keyed.set(member, \"changed\");\n\t\t}\n\t\tconst variantNeeds = new Map<string, StateNeed>();\n\t\tfor (const member of oldState.keys()) {\n\t\t\tif (!now.state.has(member)) variantNeeds.set(member, \"removed\");\n\t\t\telse if (changed(variant, member, \"state\")) variantNeeds.set(member, \"changed\");\n\t\t}\n\t\tif (variantNeeds.size > 0) state.set(variant, variantNeeds);\n\t\tfor (const member of oldMethods.keys()) {\n\t\t\tconst need = methods.get(member) ?? { removed: false, args: false, result: false };\n\t\t\tneed.removed ||= !now.methods.has(member);\n\t\t\tneed.args ||= changed(variant, member, \"args\");\n\t\t\tneed.result ||= changed(variant, member, \"result\");\n\t\t\tmethods.set(member, need);\n\t\t}\n\t}\n\tconst methodNeeds = new Map<string, MethodNeed>();\n\tfor (const [member, { removed, args, result }] of methods) {\n\t\tif (removed) methodNeeds.set(member, { kind: \"removed\" });\n\t\telse if (args || result) methodNeeds.set(member, { kind: \"changed\", args, result });\n\t}\n\treturn { state, methods: methodNeeds, keyed };\n}\n\nfunction changeKey(change: Change): string {\n\treturn JSON.stringify(change);\n}\n\nfunction checkMappings(mappings: unknown, needs: Needs, kind: Kind, path: string): void {\n\tcheckKeys(mappings, [\"state\", \"methods\", \"keyed\"], path);\n\tconst { state, methods, keyed } = mappings as {\n\t\treadonly state?: unknown;\n\t\treadonly methods?: unknown;\n\t\treadonly keyed?: unknown;\n\t};\n\tconst checkVariant = (variantMappings: unknown, variantNeeds: ReadonlyMap<string, StateNeed>, at: string) =>\n\t\tcheckSection(variantMappings, variantNeeds, at, checkStateMapping);\n\t// A local table is flat: its state section is the one variant's.\n\tif (kind === \"local\") checkVariant(state, needs.state.get(LOCAL) ?? new Map(), `${path}.state`);\n\telse checkSection(state, needs.state, `${path}.state`, checkVariant);\n\tcheckSection(methods, needs.methods, `${path}.methods`, checkMethodMapping);\n\tcheckSection(keyed, needs.keyed, `${path}.keyed`, checkKeyedMapping);\n}\n\n/** Exactly the needed keys: no missing and no unnecessary mapping; absent only when nothing is needed. */\nfunction checkSection<N>(\n\tsection: unknown,\n\tneeds: ReadonlyMap<string, N>,\n\tpath: string,\n\tcheck: (mapping: unknown, need: N, path: string) => void,\n): void {\n\tconst mappings = new Map(section === undefined ? [] : entriesOf(section, path));\n\tfor (const key of mappings.keys()) if (!needs.has(key)) throw new Error(`${path}.${key}: unnecessary mapping`);\n\tfor (const [key, need] of needs) {\n\t\tif (!mappings.has(key)) throw new Error(`${path}.${key}: missing mapping`);\n\t\tcheck(mappings.get(key), need, `${path}.${key}`);\n\t}\n}\n\nfunction checkStateMapping(mapping: unknown, need: StateNeed, path: string): void {\n\tif (typeof mapping === \"function\" || (need === \"removed\" && mapping === \"refuse\")) return;\n\tthrow new Error(`${path}: expected ${need === \"removed\" ? 'a function or \"refuse\"' : \"a function\"}`);\n}\n\nfunction checkKeyedMapping(mapping: unknown, need: StateNeed, path: string): void {\n\tif (mapping === \"refuse\" || (need === \"changed\" && typeof mapping === \"function\")) return;\n\tthrow new Error(`${path}: expected ${need === \"changed\" ? 'a function or \"refuse\"' : '\"refuse\"'}`);\n}\n\nfunction checkMethodMapping(mapping: unknown, need: MethodNeed, path: string): void {\n\tif (mapping === \"refuse\") return;\n\tcheckKeys(mapping, [\"args\", \"result\", \"call\"], path);\n\tconst { args, result, call } = mapping as {\n\t\treadonly args?: unknown;\n\t\treadonly result?: unknown;\n\t\treadonly call?: unknown;\n\t};\n\tif (call !== undefined || need.kind === \"removed\") {\n\t\tif (typeof call !== \"function\" || args !== undefined || result !== undefined) {\n\t\t\tthrow new Error(`${path}: expected { call } or \"refuse\"`);\n\t\t}\n\t\treturn;\n\t}\n\tcheckSide(args, need.args, `${path}.args`);\n\tcheckSide(result, need.result, `${path}.result`);\n}\n\nfunction checkSide(mapping: unknown, needed: boolean, path: string): void {\n\tif (!needed && mapping !== undefined) throw new Error(`${path}: unnecessary mapping`);\n\tif (needed && mapping === undefined) throw new Error(`${path}: missing mapping`);\n\tif (needed && typeof mapping !== \"function\") throw new Error(`${path}: expected a function`);\n}\n"]}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { Context } from "../context/index.ts";
|
|
2
|
+
import type { Watchable, WatchHandle } from "../watch.ts";
|
|
3
|
+
import type { Change, CurrentStep, History, VariantShape } from "./history.ts";
|
|
4
|
+
import type { Address } from "./host-kind.ts";
|
|
5
|
+
import type { Params, ParamsData } from "./params.ts";
|
|
6
|
+
import type { Method, NullSchema, Static } from "./schema.ts";
|
|
7
|
+
import type { Snapshot } from "./snapshot.ts";
|
|
8
|
+
export type Kind = "remote" | "local";
|
|
9
|
+
/** The variant name of a local contract's members. */
|
|
10
|
+
export declare const LOCAL = "members";
|
|
11
|
+
/** Everything the types know about a contract: kind, name, params and the whole history. */
|
|
12
|
+
export type ContractShape = {
|
|
13
|
+
readonly kind: Kind;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly params: Params;
|
|
16
|
+
readonly history: History;
|
|
17
|
+
};
|
|
18
|
+
/** A declared contract: a branded handle, immutable by convention. Spread or hand-built copies are refused. */
|
|
19
|
+
export interface Contract<S extends ContractShape = ContractShape> {
|
|
20
|
+
readonly kind: S["kind"];
|
|
21
|
+
readonly name: S["name"];
|
|
22
|
+
readonly version: number;
|
|
23
|
+
readonly fingerprint: string;
|
|
24
|
+
/** Type only: absent at runtime. */
|
|
25
|
+
readonly "~shape"?: S;
|
|
26
|
+
}
|
|
27
|
+
export type ShapeOf<C extends Contract> = NonNullable<C["~shape"]>;
|
|
28
|
+
/** The variants of a contract's current version. */
|
|
29
|
+
export type CurrentVariants<C extends Contract> = CurrentStep<ShapeOf<C>["history"]>["variants"];
|
|
30
|
+
/** The params object of a contract. */
|
|
31
|
+
export type ParamsOf<C extends Contract> = {
|
|
32
|
+
[F in keyof ShapeOf<C>["params"]]: Static<ShapeOf<C>["params"][F]>;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* What a factory returns: for `local`, a `Watchable` per state member and a function per method, `(args, context)`,
|
|
36
|
+
* or `(context)` when the method takes no arguments; for `remote`, one variant `{ variant, members }` with exactly
|
|
37
|
+
* that variant's members. `X` is the context the methods get.
|
|
38
|
+
*/
|
|
39
|
+
export type Implementation<C extends Contract, X extends Context = Context> = ImplementationOf<ShapeOf<C>["kind"], CurrentVariants<C>, X>;
|
|
40
|
+
type ImplementationOf<K extends Kind, V extends {
|
|
41
|
+
readonly [variant: string]: VariantShape;
|
|
42
|
+
}, X extends Context> = K extends "local" ? VariantImplementation<V[typeof LOCAL], X> : {
|
|
43
|
+
[N in keyof V]: {
|
|
44
|
+
readonly variant: N;
|
|
45
|
+
readonly members: VariantImplementation<V[N], X>;
|
|
46
|
+
};
|
|
47
|
+
}[keyof V];
|
|
48
|
+
/**
|
|
49
|
+
* One variant's members: a `Watchable` per state member, a function per method and, in a local contract, a
|
|
50
|
+
* `KeyedWatchable` per keyed member.
|
|
51
|
+
*/
|
|
52
|
+
export type VariantImplementation<V extends VariantShape, X extends Context = Context> = {
|
|
53
|
+
[M in keyof V["state"] | keyof V["methods"] | keyof NonNullable<V["keyed"]>]: M extends keyof V["methods"] ? MethodFunction<V["methods"][M], X> : M extends keyof V["state"] ? Watchable<Static<V["state"][M]>> : M extends keyof NonNullable<V["keyed"]> ? KeyedWatchable<Static<NonNullable<V["keyed"]>[M]>> : never;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* A keyed state member (slice 6a §12): documents by key, each watchable on its own; a keyed document handle
|
|
57
|
+
* provides it. `at(key)` is valid only in a factory (it pins the key while that attempt lives).
|
|
58
|
+
*/
|
|
59
|
+
export interface KeyedWatchable<T> {
|
|
60
|
+
/** The document at `key`, `undefined` when absent. */
|
|
61
|
+
get(key: string, context: Context): Promise<T | undefined>;
|
|
62
|
+
/** A watch of the document at `key` that follows its address, `undefined` when absent. */
|
|
63
|
+
watch(key: string, context: Context): Promise<WatchHandle<T> | undefined>;
|
|
64
|
+
/** In a factory only: the document at `key` as a watchable, `initial()` while absent. */
|
|
65
|
+
at(key: string): Watchable<T>;
|
|
66
|
+
}
|
|
67
|
+
/** A method as a function: without the argument when its argument schema is `null` (`null` stays the wire form). */
|
|
68
|
+
type MethodFunction<M extends Method, X extends Context = Context> = M["args"] extends NullSchema ? (context: X) => Promise<Static<M["result"]>> : (args: Static<M["args"]>, context: X) => Promise<Static<M["result"]>>;
|
|
69
|
+
/** The Chord-owned data behind a contract handle. */
|
|
70
|
+
export type ContractData = {
|
|
71
|
+
readonly kind: Kind;
|
|
72
|
+
readonly name: string;
|
|
73
|
+
readonly params: ParamsData;
|
|
74
|
+
/** A remote contract's host address: the address of the host serving an object for its params; none for local. */
|
|
75
|
+
readonly hostAddress: HostAddress | undefined;
|
|
76
|
+
/** Every version of the history, oldest first; the last is current. */
|
|
77
|
+
readonly versions: readonly VersionData[];
|
|
78
|
+
/** The kind of every member name ever declared in the history. */
|
|
79
|
+
readonly kinds: ReadonlyMap<string, MemberKind>;
|
|
80
|
+
};
|
|
81
|
+
export type MemberKind = "state" | "method" | "keyed";
|
|
82
|
+
/** A `hostAddress` as Chord calls it: with checked params. Plugin code: what it returns is checked where routed. */
|
|
83
|
+
export type HostAddress = (params: ParamsOf<Contract>) => Address;
|
|
84
|
+
export type VersionData = {
|
|
85
|
+
readonly version: number;
|
|
86
|
+
readonly fingerprint: string;
|
|
87
|
+
readonly variants: ReadonlyMap<string, VariantData>;
|
|
88
|
+
/** The changes that produced this version; empty for a base. */
|
|
89
|
+
readonly changes: readonly Change[];
|
|
90
|
+
};
|
|
91
|
+
export type VariantData = {
|
|
92
|
+
readonly state: ReadonlyMap<string, Snapshot>;
|
|
93
|
+
readonly methods: ReadonlyMap<string, MethodData>;
|
|
94
|
+
/** Keyed state members (slice 6a §12): only a local contract has any. */
|
|
95
|
+
readonly keyed: ReadonlyMap<string, Snapshot>;
|
|
96
|
+
};
|
|
97
|
+
export type MethodData = {
|
|
98
|
+
readonly args: Snapshot;
|
|
99
|
+
readonly result: Snapshot;
|
|
100
|
+
};
|
|
101
|
+
/** The data behind a contract handle; refuses spread and hand-built copies. */
|
|
102
|
+
export declare function contractData(contract: Contract): ContractData;
|
|
103
|
+
/** Whether a method takes no arguments: its argument schema is `null`, so its functions omit the argument. */
|
|
104
|
+
export declare function takesNoArgs(method: MethodData): boolean;
|
|
105
|
+
/** The variants of a contract's current version; a local contract has the one variant `LOCAL`. */
|
|
106
|
+
export declare function currentVariants(contract: Contract): ReadonlyMap<string, VariantData>;
|
|
107
|
+
/** The variants of version `version` of a contract's history (an older consumer's binding, Q10). */
|
|
108
|
+
export declare function variantsAt(contract: Contract, version: number): ReadonlyMap<string, VariantData>;
|
|
109
|
+
/** A variant's names as links index them (2b): its state members and its methods, each sorted. */
|
|
110
|
+
export type VariantNames = {
|
|
111
|
+
readonly state: readonly string[];
|
|
112
|
+
readonly methods: readonly string[];
|
|
113
|
+
};
|
|
114
|
+
/** The current version's variant names in the order links index them: sorted. */
|
|
115
|
+
export declare function variantOrder(contract: Contract): readonly string[];
|
|
116
|
+
/** A variant's state members and methods in the order links index them: each sorted. */
|
|
117
|
+
export declare function variantNames(variant: VariantData): VariantNames;
|
|
118
|
+
/** A new contract handle for `data`; the caller states the type-level shape. */
|
|
119
|
+
export declare function createContract<C extends Contract>(data: ContractData): C;
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/contracts/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Contract handles: the branded, immutable value an app declares, its type-level shape, and the Chord-owned data
|
|
2
|
+
// behind it.
|
|
3
|
+
/** The variant name of a local contract's members. */
|
|
4
|
+
export const LOCAL = "members";
|
|
5
|
+
/** The data behind a contract handle; refuses spread and hand-built copies. */
|
|
6
|
+
export function contractData(contract) {
|
|
7
|
+
const data = contracts.get(contract);
|
|
8
|
+
if (data === undefined) {
|
|
9
|
+
throw new Error(`${contract.name}: not a declared contract (spread and hand-built copies are refused)`);
|
|
10
|
+
}
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
13
|
+
const contracts = new WeakMap();
|
|
14
|
+
/** Whether a method takes no arguments: its argument schema is `null`, so its functions omit the argument. */
|
|
15
|
+
export function takesNoArgs(method) {
|
|
16
|
+
// A schema's normal form is an object of keywords.
|
|
17
|
+
const normal = method.args.normal;
|
|
18
|
+
return normal.type === "null" && Object.keys(normal).length === 1;
|
|
19
|
+
}
|
|
20
|
+
/** The variants of a contract's current version; a local contract has the one variant `LOCAL`. */
|
|
21
|
+
export function currentVariants(contract) {
|
|
22
|
+
return contractData(contract).versions.at(-1).variants;
|
|
23
|
+
}
|
|
24
|
+
/** The variants of version `version` of a contract's history (an older consumer's binding, Q10). */
|
|
25
|
+
export function variantsAt(contract, version) {
|
|
26
|
+
// Callers name a version the provider binds (`binds`): its history has it.
|
|
27
|
+
return contractData(contract).versions.find((data) => data.version === version).variants;
|
|
28
|
+
}
|
|
29
|
+
/** The current version's variant names in the order links index them: sorted. */
|
|
30
|
+
export function variantOrder(contract) {
|
|
31
|
+
return [...currentVariants(contract).keys()].sort();
|
|
32
|
+
}
|
|
33
|
+
/** A variant's state members and methods in the order links index them: each sorted. */
|
|
34
|
+
export function variantNames(variant) {
|
|
35
|
+
return { state: [...variant.state.keys()].sort(), methods: [...variant.methods.keys()].sort() };
|
|
36
|
+
}
|
|
37
|
+
/** A new contract handle for `data`; the caller states the type-level shape. */
|
|
38
|
+
export function createContract(data) {
|
|
39
|
+
const current = data.versions.at(-1);
|
|
40
|
+
const contract = {
|
|
41
|
+
kind: data.kind,
|
|
42
|
+
name: data.name,
|
|
43
|
+
version: current.version,
|
|
44
|
+
fingerprint: current.fingerprint,
|
|
45
|
+
};
|
|
46
|
+
contracts.set(contract, data);
|
|
47
|
+
// The shape is type-level only; every caller states the shape it built.
|
|
48
|
+
return contract;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/contracts/contract.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,aAAa;AAYb,sDAAsD;AACtD,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAkH/B,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,sEAAsE,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,OAAO,EAA0B,CAAC;AAExD,8GAA8G;AAC9G,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC7C,mDAAmD;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAiD,CAAC;IAC7E,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,eAAe,CAAC,QAAkB;IACjD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,UAAU,CAAC,QAAkB,EAAE,OAAe;IAC7D,2EAA2E;IAC3E,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAE,CAAC,QAAQ,CAAC;AAC3F,CAAC;AAKD,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC9C,OAAO,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,OAAoB;IAChD,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACjG,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAqB,IAAkB;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IACtC,MAAM,QAAQ,GAAa;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;KAChC,CAAC;IACF,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9B,wEAAwE;IACxE,OAAO,QAAa,CAAC;AACtB,CAAC","sourcesContent":["// Contract handles: the branded, immutable value an app declares, its type-level shape, and the Chord-owned data\n// behind it.\n\nimport type { Context } from \"../context/index.ts\";\nimport type { Watchable, WatchHandle } from \"../watch.ts\";\nimport type { Change, CurrentStep, History, VariantShape } from \"./history.ts\";\nimport type { Address } from \"./host-kind.ts\";\nimport type { Params, ParamsData } from \"./params.ts\";\nimport type { Method, NullSchema, Static } from \"./schema.ts\";\nimport type { Snapshot } from \"./snapshot.ts\";\n\nexport type Kind = \"remote\" | \"local\";\n\n/** The variant name of a local contract's members. */\nexport const LOCAL = \"members\";\n\n/** Everything the types know about a contract: kind, name, params and the whole history. */\nexport type ContractShape = {\n\treadonly kind: Kind;\n\treadonly name: string;\n\treadonly params: Params;\n\treadonly history: History;\n};\n\n/** A declared contract: a branded handle, immutable by convention. Spread or hand-built copies are refused. */\nexport interface Contract<S extends ContractShape = ContractShape> {\n\treadonly kind: S[\"kind\"];\n\treadonly name: S[\"name\"];\n\treadonly version: number;\n\treadonly fingerprint: string;\n\t/** Type only: absent at runtime. */\n\treadonly \"~shape\"?: S;\n}\n\nexport type ShapeOf<C extends Contract> = NonNullable<C[\"~shape\"]>;\n\n/** The variants of a contract's current version. */\nexport type CurrentVariants<C extends Contract> = CurrentStep<ShapeOf<C>[\"history\"]>[\"variants\"];\n\n/** The params object of a contract. */\nexport type ParamsOf<C extends Contract> = { [F in keyof ShapeOf<C>[\"params\"]]: Static<ShapeOf<C>[\"params\"][F]> };\n\n/**\n * What a factory returns: for `local`, a `Watchable` per state member and a function per method, `(args, context)`,\n * or `(context)` when the method takes no arguments; for `remote`, one variant `{ variant, members }` with exactly\n * that variant's members. `X` is the context the methods get.\n */\nexport type Implementation<C extends Contract, X extends Context = Context> = ImplementationOf<\n\tShapeOf<C>[\"kind\"],\n\tCurrentVariants<C>,\n\tX\n>;\n\ntype ImplementationOf<\n\tK extends Kind,\n\tV extends { readonly [variant: string]: VariantShape },\n\tX extends Context,\n> = K extends \"local\"\n\t? VariantImplementation<V[typeof LOCAL], X>\n\t: { [N in keyof V]: { readonly variant: N; readonly members: VariantImplementation<V[N], X> } }[keyof V];\n\n/**\n * One variant's members: a `Watchable` per state member, a function per method and, in a local contract, a\n * `KeyedWatchable` per keyed member.\n */\nexport type VariantImplementation<V extends VariantShape, X extends Context = Context> = {\n\t[M in keyof V[\"state\"] | keyof V[\"methods\"] | keyof NonNullable<V[\"keyed\"]>]: M extends keyof V[\"methods\"]\n\t\t? MethodFunction<V[\"methods\"][M], X>\n\t\t: M extends keyof V[\"state\"]\n\t\t\t? Watchable<Static<V[\"state\"][M]>>\n\t\t\t: M extends keyof NonNullable<V[\"keyed\"]>\n\t\t\t\t? KeyedWatchable<Static<NonNullable<V[\"keyed\"]>[M]>>\n\t\t\t\t: never;\n};\n\n/**\n * A keyed state member (slice 6a §12): documents by key, each watchable on its own; a keyed document handle\n * provides it. `at(key)` is valid only in a factory (it pins the key while that attempt lives).\n */\nexport interface KeyedWatchable<T> {\n\t/** The document at `key`, `undefined` when absent. */\n\tget(key: string, context: Context): Promise<T | undefined>;\n\t/** A watch of the document at `key` that follows its address, `undefined` when absent. */\n\twatch(key: string, context: Context): Promise<WatchHandle<T> | undefined>;\n\t/** In a factory only: the document at `key` as a watchable, `initial()` while absent. */\n\tat(key: string): Watchable<T>;\n}\n\n/** A method as a function: without the argument when its argument schema is `null` (`null` stays the wire form). */\ntype MethodFunction<M extends Method, X extends Context = Context> = M[\"args\"] extends NullSchema\n\t? (context: X) => Promise<Static<M[\"result\"]>>\n\t: (args: Static<M[\"args\"]>, context: X) => Promise<Static<M[\"result\"]>>;\n\n/** The Chord-owned data behind a contract handle. */\nexport type ContractData = {\n\treadonly kind: Kind;\n\treadonly name: string;\n\treadonly params: ParamsData;\n\t/** A remote contract's host address: the address of the host serving an object for its params; none for local. */\n\treadonly hostAddress: HostAddress | undefined;\n\t/** Every version of the history, oldest first; the last is current. */\n\treadonly versions: readonly VersionData[];\n\t/** The kind of every member name ever declared in the history. */\n\treadonly kinds: ReadonlyMap<string, MemberKind>;\n};\n\nexport type MemberKind = \"state\" | \"method\" | \"keyed\";\n\n/** A `hostAddress` as Chord calls it: with checked params. Plugin code: what it returns is checked where routed. */\nexport type HostAddress = (params: ParamsOf<Contract>) => Address;\n\nexport type VersionData = {\n\treadonly version: number;\n\treadonly fingerprint: string;\n\treadonly variants: ReadonlyMap<string, VariantData>;\n\t/** The changes that produced this version; empty for a base. */\n\treadonly changes: readonly Change[];\n};\n\nexport type VariantData = {\n\treadonly state: ReadonlyMap<string, Snapshot>;\n\treadonly methods: ReadonlyMap<string, MethodData>;\n\t/** Keyed state members (slice 6a §12): only a local contract has any. */\n\treadonly keyed: ReadonlyMap<string, Snapshot>;\n};\n\nexport type MethodData = { readonly args: Snapshot; readonly result: Snapshot };\n\n/** The data behind a contract handle; refuses spread and hand-built copies. */\nexport function contractData(contract: Contract): ContractData {\n\tconst data = contracts.get(contract);\n\tif (data === undefined) {\n\t\tthrow new Error(`${contract.name}: not a declared contract (spread and hand-built copies are refused)`);\n\t}\n\treturn data;\n}\n\nconst contracts = new WeakMap<Contract, ContractData>();\n\n/** Whether a method takes no arguments: its argument schema is `null`, so its functions omit the argument. */\nexport function takesNoArgs(method: MethodData): boolean {\n\t// A schema's normal form is an object of keywords.\n\tconst normal = method.args.normal as { readonly [keyword: string]: unknown };\n\treturn normal.type === \"null\" && Object.keys(normal).length === 1;\n}\n\n/** The variants of a contract's current version; a local contract has the one variant `LOCAL`. */\nexport function currentVariants(contract: Contract): ReadonlyMap<string, VariantData> {\n\treturn contractData(contract).versions.at(-1)!.variants;\n}\n\n/** The variants of version `version` of a contract's history (an older consumer's binding, Q10). */\nexport function variantsAt(contract: Contract, version: number): ReadonlyMap<string, VariantData> {\n\t// Callers name a version the provider binds (`binds`): its history has it.\n\treturn contractData(contract).versions.find((data) => data.version === version)!.variants;\n}\n\n/** A variant's names as links index them (2b): its state members and its methods, each sorted. */\nexport type VariantNames = { readonly state: readonly string[]; readonly methods: readonly string[] };\n\n/** The current version's variant names in the order links index them: sorted. */\nexport function variantOrder(contract: Contract): readonly string[] {\n\treturn [...currentVariants(contract).keys()].sort();\n}\n\n/** A variant's state members and methods in the order links index them: each sorted. */\nexport function variantNames(variant: VariantData): VariantNames {\n\treturn { state: [...variant.state.keys()].sort(), methods: [...variant.methods.keys()].sort() };\n}\n\n/** A new contract handle for `data`; the caller states the type-level shape. */\nexport function createContract<C extends Contract>(data: ContractData): C {\n\tconst current = data.versions.at(-1)!;\n\tconst contract: Contract = {\n\t\tkind: data.kind,\n\t\tname: data.name,\n\t\tversion: current.version,\n\t\tfingerprint: current.fingerprint,\n\t};\n\tcontracts.set(contract, data);\n\t// The shape is type-level only; every caller states the shape it built.\n\treturn contract as C;\n}\n"]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { type Contract, type Kind, LOCAL, type MemberKind, type MethodData, type VariantData } from "./contract.ts";
|
|
2
|
+
import type { MemberNames, MethodAt, VariantShape } from "./history.ts";
|
|
3
|
+
import type { Address } from "./host-kind.ts";
|
|
4
|
+
import { type Params, type RequiredFields } from "./params.ts";
|
|
5
|
+
import { KeyedMember, Method, type Schema, type Static } from "./schema.ts";
|
|
6
|
+
type VariantDeclaration = {
|
|
7
|
+
readonly state?: {
|
|
8
|
+
readonly [member: string]: Schema;
|
|
9
|
+
};
|
|
10
|
+
readonly methods?: {
|
|
11
|
+
readonly [member: string]: Method;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
type VariantDeclarations = {
|
|
15
|
+
readonly [variant: string]: VariantDeclaration;
|
|
16
|
+
};
|
|
17
|
+
type RemoteVariants<D extends VariantDeclarations> = {
|
|
18
|
+
[V in keyof D]: {
|
|
19
|
+
state: D[V]["state"] extends object ? D[V]["state"] : Record<never, never>;
|
|
20
|
+
methods: D[V]["methods"] extends object ? D[V]["methods"] : Record<never, never>;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
type LocalVariants<M extends {
|
|
24
|
+
readonly [member: string]: LocalMember;
|
|
25
|
+
}> = {
|
|
26
|
+
[LOCAL]: {
|
|
27
|
+
state: {
|
|
28
|
+
[K in keyof M as M[K] extends Method | KeyedMember ? never : K]: Exclude<M[K], Method | KeyedMember>;
|
|
29
|
+
};
|
|
30
|
+
methods: {
|
|
31
|
+
[K in keyof M as M[K] extends Method ? K : never]: Extract<M[K], Method>;
|
|
32
|
+
};
|
|
33
|
+
keyed: {
|
|
34
|
+
[K in keyof M as M[K] extends KeyedMember ? K : never]: SchemaOf<M[K]>;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
/** A local contract's member: a state schema, `method(...)` or `keyed(schema)`. */
|
|
39
|
+
type LocalMember = Schema | Method | KeyedMember;
|
|
40
|
+
type SchemaOf<M> = M extends KeyedMember<infer S> ? S : never;
|
|
41
|
+
/** D11: a member name has one kind in every variant, a method one signature; no keyed members. */
|
|
42
|
+
type SameMembers<D extends VariantDeclarations, V extends {
|
|
43
|
+
[variant: string]: VariantShape;
|
|
44
|
+
} = RemoteVariants<D>> = {
|
|
45
|
+
[X in keyof D]: {
|
|
46
|
+
state?: {
|
|
47
|
+
[M in keyof D[X]["state"]]: M extends MemberNames<V, "methods"> ? never : D[X]["state"][M] extends KeyedMember ? never : D[X]["state"][M];
|
|
48
|
+
};
|
|
49
|
+
methods?: {
|
|
50
|
+
[M in keyof D[X]["methods"]]: M extends MemberNames<V, "state"> ? never : [MethodAt<V, M>] extends [D[X]["methods"][M]] ? D[X]["methods"][M] : never;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
/** Declares a remote contract: per-principal variants of state and methods. */
|
|
55
|
+
export declare function remote<const N extends string, const P extends Params, const V extends number, const D extends VariantDeclarations>(name: N, declaration: {
|
|
56
|
+
readonly version: V;
|
|
57
|
+
readonly params: P & NoInfer<RequiredFields<P>>;
|
|
58
|
+
/** The address of the host serving an object for these params; never part of the fingerprint. */
|
|
59
|
+
readonly hostAddress: (params: {
|
|
60
|
+
[F in keyof P]: Static<P[F]>;
|
|
61
|
+
}) => Address;
|
|
62
|
+
readonly variants: D & NoInfer<SameMembers<D>>;
|
|
63
|
+
}): Contract<{
|
|
64
|
+
kind: "remote";
|
|
65
|
+
name: N;
|
|
66
|
+
params: P;
|
|
67
|
+
history: [{
|
|
68
|
+
version: `${V}`;
|
|
69
|
+
variants: RemoteVariants<D>;
|
|
70
|
+
changes: never;
|
|
71
|
+
}];
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Declares a local contract: one flat map of members, where a schema is state, `method(...)` a method and
|
|
75
|
+
* `keyed(schema)` a keyed state member.
|
|
76
|
+
*/
|
|
77
|
+
export declare function local<const N extends string, const P extends Params, const V extends number, const M extends {
|
|
78
|
+
readonly [member: string]: LocalMember;
|
|
79
|
+
}>(name: N, declaration: {
|
|
80
|
+
readonly version: V;
|
|
81
|
+
readonly params: P & NoInfer<RequiredFields<P>>;
|
|
82
|
+
readonly members: M;
|
|
83
|
+
}): Contract<{
|
|
84
|
+
kind: "local";
|
|
85
|
+
name: N;
|
|
86
|
+
params: P;
|
|
87
|
+
history: [{
|
|
88
|
+
version: `${V}`;
|
|
89
|
+
variants: LocalVariants<M>;
|
|
90
|
+
changes: never;
|
|
91
|
+
}];
|
|
92
|
+
}>;
|
|
93
|
+
/** One method declaration as Chord-owned snapshots; its arguments must be closed. */
|
|
94
|
+
export declare function readMethod(method: Method, path: string): MethodData;
|
|
95
|
+
/**
|
|
96
|
+
* Checks the members of every variant: a name keeps one kind across variants and the whole history (`kinds`, updated
|
|
97
|
+
* here), a method one signature across variants.
|
|
98
|
+
*/
|
|
99
|
+
export declare function checkMembers(variants: ReadonlyMap<string, VariantData>, kinds: Map<string, MemberKind>, path: (variant: string, member: string, kind: MemberKind) => string): void;
|
|
100
|
+
/** The path of a member in errors: `notes.editor.methods.add`, `info.members.clear`. */
|
|
101
|
+
export declare function memberPath(base: string, kind: Kind, variant: string, member: string, memberKind: MemberKind): string;
|
|
102
|
+
/** Refuses a non-object and unknown keys. */
|
|
103
|
+
export declare function checkKeys(source: unknown, allowed: readonly string[], path: string): void;
|
|
104
|
+
/** The entries of an object; anything else is refused. */
|
|
105
|
+
export declare function entriesOf(source: unknown, path: string): [string, unknown][];
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=declare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declare.d.ts","sourceRoot":"","sources":["../../src/contracts/declare.ts"],"names":[],"mappings":"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"}
|