@earendil-works/chord 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +92 -0
- package/README.md +115 -90
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/index.js.map +1 -1
- package/dist/contracts/accepts.d.ts +81 -0
- package/dist/contracts/accepts.d.ts.map +1 -0
- package/dist/contracts/accepts.js +123 -0
- package/dist/contracts/accepts.js.map +1 -0
- package/dist/contracts/contract.d.ts +121 -0
- package/dist/contracts/contract.d.ts.map +1 -0
- package/dist/contracts/contract.js +50 -0
- package/dist/contracts/contract.js.map +1 -0
- package/dist/contracts/declare.d.ts +107 -0
- package/dist/contracts/declare.d.ts.map +1 -0
- package/dist/contracts/declare.js +136 -0
- package/dist/contracts/declare.js.map +1 -0
- package/dist/contracts/evolve.d.ts +92 -0
- package/dist/contracts/evolve.d.ts.map +1 -0
- package/dist/contracts/evolve.js +179 -0
- package/dist/contracts/evolve.js.map +1 -0
- package/dist/contracts/fingerprint.d.ts +16 -0
- package/dist/contracts/fingerprint.d.ts.map +1 -0
- package/dist/contracts/fingerprint.js +50 -0
- package/dist/contracts/fingerprint.js.map +1 -0
- package/dist/contracts/history.d.ts +71 -0
- package/dist/contracts/history.d.ts.map +1 -0
- package/dist/contracts/history.js +3 -0
- package/dist/contracts/history.js.map +1 -0
- package/dist/contracts/host-kind.d.ts +40 -0
- package/dist/contracts/host-kind.d.ts.map +1 -0
- package/dist/contracts/host-kind.js +37 -0
- package/dist/contracts/host-kind.js.map +1 -0
- package/dist/contracts/index.d.ts +7 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +6 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/internal.d.ts +10 -0
- package/dist/contracts/internal.d.ts.map +1 -0
- package/dist/contracts/internal.js +9 -0
- package/dist/contracts/internal.js.map +1 -0
- package/dist/contracts/names.d.ts +3 -0
- package/dist/contracts/names.d.ts.map +1 -0
- package/dist/contracts/names.js +13 -0
- package/dist/contracts/names.js.map +1 -0
- package/dist/contracts/params.d.ts +28 -0
- package/dist/contracts/params.d.ts.map +1 -0
- package/dist/contracts/params.js +50 -0
- package/dist/contracts/params.js.map +1 -0
- package/dist/contracts/schema.d.ts +102 -0
- package/dist/contracts/schema.d.ts.map +1 -0
- package/dist/contracts/schema.js +103 -0
- package/dist/contracts/schema.js.map +1 -0
- package/dist/contracts/snapshot.d.ts +16 -0
- package/dist/contracts/snapshot.d.ts.map +1 -0
- package/dist/contracts/snapshot.js +167 -0
- package/dist/contracts/snapshot.js.map +1 -0
- package/dist/data/args.d.ts +50 -0
- package/dist/data/args.d.ts.map +1 -0
- package/dist/data/args.js +83 -0
- package/dist/data/args.js.map +1 -0
- package/dist/data/errors.d.ts +80 -0
- package/dist/data/errors.d.ts.map +1 -0
- package/dist/data/errors.js +116 -0
- package/dist/data/errors.js.map +1 -0
- package/dist/data/failure.d.ts +26 -0
- package/dist/data/failure.d.ts.map +1 -0
- package/dist/data/failure.js +77 -0
- package/dist/data/failure.js.map +1 -0
- package/dist/data/index.d.ts +4 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +5 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/internal.d.ts +7 -0
- package/dist/data/internal.d.ts.map +1 -0
- package/dist/data/internal.js +8 -0
- package/dist/data/internal.js.map +1 -0
- package/dist/data/params.d.ts +20 -0
- package/dist/data/params.d.ts.map +1 -0
- package/dist/data/params.js +31 -0
- package/dist/data/params.js.map +1 -0
- package/dist/data/principal.d.ts +22 -0
- package/dist/data/principal.d.ts.map +1 -0
- package/dist/data/principal.js +49 -0
- package/dist/data/principal.js.map +1 -0
- package/dist/data/validator.d.ts +12 -0
- package/dist/data/validator.d.ts.map +1 -0
- package/dist/data/validator.js +35 -0
- package/dist/data/validator.js.map +1 -0
- package/dist/delta/apply-immutable-trusted.js +3 -4
- package/dist/delta/apply-immutable-trusted.js.map +1 -1
- package/dist/delta/diff.d.ts.map +1 -1
- package/dist/delta/diff.js +5 -3
- package/dist/delta/diff.js.map +1 -1
- package/dist/delta/index.d.ts +9 -1
- package/dist/delta/index.d.ts.map +1 -1
- package/dist/delta/index.js +15 -11
- package/dist/delta/index.js.map +1 -1
- package/dist/delta/pending.d.ts +36 -0
- package/dist/delta/pending.d.ts.map +1 -0
- package/dist/delta/pending.js +143 -0
- package/dist/delta/pending.js.map +1 -0
- package/dist/delta/tracker.d.ts +12 -0
- package/dist/delta/tracker.d.ts.map +1 -1
- package/dist/delta/tracker.js +109 -39
- package/dist/delta/tracker.js.map +1 -1
- package/dist/documents/address-source.d.ts +20 -0
- package/dist/documents/address-source.d.ts.map +1 -0
- package/dist/documents/address-source.js +44 -0
- package/dist/documents/address-source.js.map +1 -0
- package/dist/documents/definition.d.ts +84 -0
- package/dist/documents/definition.d.ts.map +1 -0
- package/dist/documents/definition.js +74 -0
- package/dist/documents/definition.js.map +1 -0
- package/dist/documents/documents.d.ts +126 -0
- package/dist/documents/documents.d.ts.map +1 -0
- package/dist/documents/documents.js +248 -0
- package/dist/documents/documents.js.map +1 -0
- package/dist/documents/fence.d.ts +9 -0
- package/dist/documents/fence.d.ts.map +1 -0
- package/dist/documents/fence.js +15 -0
- package/dist/documents/fence.js.map +1 -0
- package/dist/documents/handles.d.ts +76 -0
- package/dist/documents/handles.d.ts.map +1 -0
- package/dist/documents/handles.js +66 -0
- package/dist/documents/handles.js.map +1 -0
- package/dist/documents/index.d.ts +4 -0
- package/dist/documents/index.d.ts.map +1 -0
- package/dist/documents/index.js +3 -0
- package/dist/documents/index.js.map +1 -0
- package/dist/documents/internal.d.ts +9 -0
- package/dist/documents/internal.d.ts.map +1 -0
- package/dist/documents/internal.js +9 -0
- package/dist/documents/internal.js.map +1 -0
- package/dist/documents/keyed-slot.d.ts +103 -0
- package/dist/documents/keyed-slot.d.ts.map +1 -0
- package/dist/documents/keyed-slot.js +395 -0
- package/dist/documents/keyed-slot.js.map +1 -0
- package/dist/documents/line.d.ts +7 -0
- package/dist/documents/line.d.ts.map +1 -0
- package/dist/documents/line.js +14 -0
- package/dist/documents/line.js.map +1 -0
- package/dist/documents/persistence.d.ts +104 -0
- package/dist/documents/persistence.d.ts.map +1 -0
- package/dist/documents/persistence.js +129 -0
- package/dist/documents/persistence.js.map +1 -0
- package/dist/documents/residency.d.ts +31 -0
- package/dist/documents/residency.d.ts.map +1 -0
- package/dist/documents/residency.js +93 -0
- package/dist/documents/residency.js.map +1 -0
- package/dist/documents/slot.d.ts +109 -0
- package/dist/documents/slot.d.ts.map +1 -0
- package/dist/documents/slot.js +181 -0
- package/dist/documents/slot.js.map +1 -0
- package/dist/documents/transaction.d.ts +143 -0
- package/dist/documents/transaction.d.ts.map +1 -0
- package/dist/documents/transaction.js +442 -0
- package/dist/documents/transaction.js.map +1 -0
- package/dist/host/activity.d.ts +31 -0
- package/dist/host/activity.d.ts.map +1 -0
- package/dist/host/activity.js +40 -0
- package/dist/host/activity.js.map +1 -0
- package/dist/host/adapted.d.ts +49 -0
- package/dist/host/adapted.d.ts.map +1 -0
- package/dist/host/adapted.js +214 -0
- package/dist/host/adapted.js.map +1 -0
- package/dist/host/attempt.d.ts +308 -0
- package/dist/host/attempt.d.ts.map +1 -0
- package/dist/host/attempt.js +1199 -0
- package/dist/host/attempt.js.map +1 -0
- package/dist/host/backoff.d.ts +29 -0
- package/dist/host/backoff.d.ts.map +1 -0
- package/dist/host/backoff.js +69 -0
- package/dist/host/backoff.js.map +1 -0
- package/dist/host/ctx.d.ts +94 -0
- package/dist/host/ctx.d.ts.map +1 -0
- package/dist/host/ctx.js +200 -0
- package/dist/host/ctx.js.map +1 -0
- package/dist/host/deadline.d.ts +12 -0
- package/dist/host/deadline.d.ts.map +1 -0
- package/dist/host/deadline.js +40 -0
- package/dist/host/deadline.js.map +1 -0
- package/dist/host/dependencies.d.ts +65 -0
- package/dist/host/dependencies.d.ts.map +1 -0
- package/dist/host/dependencies.js +115 -0
- package/dist/host/dependencies.js.map +1 -0
- package/dist/host/destination.d.ts +48 -0
- package/dist/host/destination.d.ts.map +1 -0
- package/dist/host/destination.js +101 -0
- package/dist/host/destination.js.map +1 -0
- package/dist/host/facet.d.ts +84 -0
- package/dist/host/facet.d.ts.map +1 -0
- package/dist/host/facet.js +55 -0
- package/dist/host/facet.js.map +1 -0
- package/dist/host/follow.d.ts +52 -0
- package/dist/host/follow.d.ts.map +1 -0
- package/dist/host/follow.js +207 -0
- package/dist/host/follow.js.map +1 -0
- package/dist/host/host.d.ts +571 -0
- package/dist/host/host.d.ts.map +1 -0
- package/dist/host/host.js +1318 -0
- package/dist/host/host.js.map +1 -0
- package/dist/host/index.d.ts +17 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +6 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/internal.d.ts +11 -0
- package/dist/host/internal.d.ts.map +1 -0
- package/dist/host/internal.js +9 -0
- package/dist/host/internal.js.map +1 -0
- package/dist/host/members.d.ts +50 -0
- package/dist/host/members.d.ts.map +1 -0
- package/dist/host/members.js +107 -0
- package/dist/host/members.js.map +1 -0
- package/dist/host/native.d.ts +64 -0
- package/dist/host/native.d.ts.map +1 -0
- package/dist/host/native.js +126 -0
- package/dist/host/native.js.map +1 -0
- package/dist/host/object.d.ts +331 -0
- package/dist/host/object.d.ts.map +1 -0
- package/dist/host/object.js +1296 -0
- package/dist/host/object.js.map +1 -0
- package/dist/host/old-work.d.ts +34 -0
- package/dist/host/old-work.d.ts.map +1 -0
- package/dist/host/old-work.js +52 -0
- package/dist/host/old-work.js.map +1 -0
- package/dist/host/parked.d.ts +23 -0
- package/dist/host/parked.d.ts.map +1 -0
- package/dist/host/parked.js +79 -0
- package/dist/host/parked.js.map +1 -0
- package/dist/host/presence.d.ts +34 -0
- package/dist/host/presence.d.ts.map +1 -0
- package/dist/host/presence.js +117 -0
- package/dist/host/presence.js.map +1 -0
- package/dist/host/readiness.d.ts +27 -0
- package/dist/host/readiness.d.ts.map +1 -0
- package/dist/host/readiness.js +134 -0
- package/dist/host/readiness.js.map +1 -0
- package/dist/host/ref-state.d.ts +53 -0
- package/dist/host/ref-state.d.ts.map +1 -0
- package/dist/host/ref-state.js +83 -0
- package/dist/host/ref-state.js.map +1 -0
- package/dist/host/reference-keys.d.ts +36 -0
- package/dist/host/reference-keys.d.ts.map +1 -0
- package/dist/host/reference-keys.js +168 -0
- package/dist/host/reference-keys.js.map +1 -0
- package/dist/host/reference-source.d.ts +65 -0
- package/dist/host/reference-source.d.ts.map +1 -0
- package/dist/host/reference-source.js +285 -0
- package/dist/host/reference-source.js.map +1 -0
- package/dist/host/reference.d.ts +321 -0
- package/dist/host/reference.d.ts.map +1 -0
- package/dist/host/reference.js +797 -0
- package/dist/host/reference.js.map +1 -0
- package/dist/host/reload-cycle.d.ts +16 -0
- package/dist/host/reload-cycle.d.ts.map +1 -0
- package/dist/host/reload-cycle.js +81 -0
- package/dist/host/reload-cycle.js.map +1 -0
- package/dist/host/retry-on.d.ts +28 -0
- package/dist/host/retry-on.d.ts.map +1 -0
- package/dist/host/retry-on.js +52 -0
- package/dist/host/retry-on.js.map +1 -0
- package/dist/host/revocation.d.ts +16 -0
- package/dist/host/revocation.d.ts.map +1 -0
- package/dist/host/revocation.js +27 -0
- package/dist/host/revocation.js.map +1 -0
- package/dist/host/root.d.ts +37 -0
- package/dist/host/root.d.ts.map +1 -0
- package/dist/host/root.js +68 -0
- package/dist/host/root.js.map +1 -0
- package/dist/host/route.d.ts +64 -0
- package/dist/host/route.d.ts.map +1 -0
- package/dist/host/route.js +227 -0
- package/dist/host/route.js.map +1 -0
- package/dist/host/routines.d.ts +78 -0
- package/dist/host/routines.d.ts.map +1 -0
- package/dist/host/routines.js +398 -0
- package/dist/host/routines.js.map +1 -0
- package/dist/host/sleep.d.ts +9 -0
- package/dist/host/sleep.d.ts.map +1 -0
- package/dist/host/sleep.js +40 -0
- package/dist/host/sleep.js.map +1 -0
- package/dist/host/staging.d.ts +94 -0
- package/dist/host/staging.d.ts.map +1 -0
- package/dist/host/staging.js +304 -0
- package/dist/host/staging.js.map +1 -0
- package/dist/host/unbound-clock.d.ts +23 -0
- package/dist/host/unbound-clock.d.ts.map +1 -0
- package/dist/host/unbound-clock.js +58 -0
- package/dist/host/unbound-clock.js.map +1 -0
- package/dist/host/unbound.d.ts +37 -0
- package/dist/host/unbound.d.ts.map +1 -0
- package/dist/host/unbound.js +88 -0
- package/dist/host/unbound.js.map +1 -0
- package/dist/host/uuid.d.ts +3 -0
- package/dist/host/uuid.d.ts.map +1 -0
- package/dist/host/uuid.js +38 -0
- package/dist/host/uuid.js.map +1 -0
- package/dist/index.d.ts +29 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -9
- package/dist/index.js.map +1 -1
- package/dist/jobs/definition.d.ts +96 -0
- package/dist/jobs/definition.d.ts.map +1 -0
- package/dist/jobs/definition.js +83 -0
- package/dist/jobs/definition.js.map +1 -0
- package/dist/jobs/index.d.ts +5 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +3 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/internal.d.ts +3 -0
- package/dist/jobs/internal.d.ts.map +1 -0
- package/dist/jobs/internal.js +4 -0
- package/dist/jobs/internal.js.map +1 -0
- package/dist/jobs/job.d.ts +149 -0
- package/dist/jobs/job.d.ts.map +1 -0
- package/dist/jobs/job.js +387 -0
- package/dist/jobs/job.js.map +1 -0
- package/dist/jobs/persisted.d.ts +38 -0
- package/dist/jobs/persisted.d.ts.map +1 -0
- package/dist/jobs/persisted.js +95 -0
- package/dist/jobs/persisted.js.map +1 -0
- package/dist/jobs/records.d.ts +231 -0
- package/dist/jobs/records.d.ts.map +1 -0
- package/dist/jobs/records.js +871 -0
- package/dist/jobs/records.js.map +1 -0
- package/dist/jobs/run-states.d.ts +69 -0
- package/dist/jobs/run-states.d.ts.map +1 -0
- package/dist/jobs/run-states.js +228 -0
- package/dist/jobs/run-states.js.map +1 -0
- package/dist/jobs/run.d.ts +117 -0
- package/dist/jobs/run.d.ts.map +1 -0
- package/dist/jobs/run.js +204 -0
- package/dist/jobs/run.js.map +1 -0
- package/dist/jobs/running.d.ts +44 -0
- package/dist/jobs/running.d.ts.map +1 -0
- package/dist/jobs/running.js +117 -0
- package/dist/jobs/running.js.map +1 -0
- package/dist/jobs/stored.d.ts +63 -0
- package/dist/jobs/stored.d.ts.map +1 -0
- package/dist/jobs/stored.js +55 -0
- package/dist/jobs/stored.js.map +1 -0
- package/dist/link/binary.d.ts +4 -0
- package/dist/link/binary.d.ts.map +1 -0
- package/dist/link/binary.js +544 -0
- package/dist/link/binary.js.map +1 -0
- package/dist/link/channel.d.ts +68 -0
- package/dist/link/channel.d.ts.map +1 -0
- package/dist/link/channel.js +215 -0
- package/dist/link/channel.js.map +1 -0
- package/dist/link/errors.d.ts +7 -0
- package/dist/link/errors.d.ts.map +1 -0
- package/dist/link/errors.js +21 -0
- package/dist/link/errors.js.map +1 -0
- package/dist/link/index.d.ts +8 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js +8 -0
- package/dist/link/index.js.map +1 -0
- package/dist/link/internal.d.ts +9 -0
- package/dist/link/internal.d.ts.map +1 -0
- package/dist/link/internal.js +10 -0
- package/dist/link/internal.js.map +1 -0
- package/dist/link/ipc.d.ts +22 -0
- package/dist/link/ipc.d.ts.map +1 -0
- package/dist/link/ipc.js +64 -0
- package/dist/link/ipc.js.map +1 -0
- package/dist/link/link.d.ts +34 -0
- package/dist/link/link.d.ts.map +1 -0
- package/dist/link/link.js +87 -0
- package/dist/link/link.js.map +1 -0
- package/dist/link/message.d.ts +262 -0
- package/dist/link/message.d.ts.map +1 -0
- package/dist/link/message.js +156 -0
- package/dist/link/message.js.map +1 -0
- package/dist/link/part.d.ts +80 -0
- package/dist/link/part.d.ts.map +1 -0
- package/dist/link/part.js +165 -0
- package/dist/link/part.js.map +1 -0
- package/dist/link/text.d.ts +6 -0
- package/dist/link/text.d.ts.map +1 -0
- package/dist/link/text.js +355 -0
- package/dist/link/text.js.map +1 -0
- package/dist/link/values.d.ts +40 -0
- package/dist/link/values.d.ts.map +1 -0
- package/dist/link/values.js +121 -0
- package/dist/link/values.js.map +1 -0
- package/dist/link/websocket.d.ts +26 -0
- package/dist/link/websocket.d.ts.map +1 -0
- package/dist/link/websocket.js +91 -0
- package/dist/link/websocket.js.map +1 -0
- package/dist/node/app/app.d.ts +269 -0
- package/dist/node/app/app.d.ts.map +1 -0
- package/dist/node/app/app.js +513 -0
- package/dist/node/app/app.js.map +1 -0
- package/dist/node/app/archive.d.ts +37 -0
- package/dist/node/app/archive.d.ts.map +1 -0
- package/dist/node/app/archive.js +204 -0
- package/dist/node/app/archive.js.map +1 -0
- package/dist/node/app/blobs.d.ts +23 -0
- package/dist/node/app/blobs.d.ts.map +1 -0
- package/dist/node/app/blobs.js +64 -0
- package/dist/node/app/blobs.js.map +1 -0
- package/dist/node/app/data.d.ts +35 -0
- package/dist/node/app/data.d.ts.map +1 -0
- package/dist/node/app/data.js +44 -0
- package/dist/node/app/data.js.map +1 -0
- package/dist/node/app/ephemeral-sessions.d.ts +20 -0
- package/dist/node/app/ephemeral-sessions.d.ts.map +1 -0
- package/dist/node/app/ephemeral-sessions.js +69 -0
- package/dist/node/app/ephemeral-sessions.js.map +1 -0
- package/dist/node/app/ephemeral.d.ts +11 -0
- package/dist/node/app/ephemeral.d.ts.map +1 -0
- package/dist/node/app/ephemeral.js +34 -0
- package/dist/node/app/ephemeral.js.map +1 -0
- package/dist/node/app/files-copy.d.ts +13 -0
- package/dist/node/app/files-copy.d.ts.map +1 -0
- package/dist/node/app/files-copy.js +86 -0
- package/dist/node/app/files-copy.js.map +1 -0
- package/dist/node/app/files-entry.d.ts +4 -0
- package/dist/node/app/files-entry.d.ts.map +1 -0
- package/dist/node/app/files-entry.js +7 -0
- package/dist/node/app/files-entry.js.map +1 -0
- package/dist/node/app/files-index.d.ts +180 -0
- package/dist/node/app/files-index.d.ts.map +1 -0
- package/dist/node/app/files-index.js +535 -0
- package/dist/node/app/files-index.js.map +1 -0
- package/dist/node/app/files.d.ts +363 -0
- package/dist/node/app/files.d.ts.map +1 -0
- package/dist/node/app/files.js +368 -0
- package/dist/node/app/files.js.map +1 -0
- package/dist/node/app/folder-views.d.ts +21 -0
- package/dist/node/app/folder-views.d.ts.map +1 -0
- package/dist/node/app/folder-views.js +55 -0
- package/dist/node/app/folder-views.js.map +1 -0
- package/dist/node/app/index.d.ts +12 -0
- package/dist/node/app/index.d.ts.map +1 -0
- package/dist/node/app/index.js +15 -0
- package/dist/node/app/index.js.map +1 -0
- package/dist/node/app/info.d.ts +66 -0
- package/dist/node/app/info.d.ts.map +1 -0
- package/dist/node/app/info.js +37 -0
- package/dist/node/app/info.js.map +1 -0
- package/dist/node/app/invite.d.ts +5 -0
- package/dist/node/app/invite.d.ts.map +1 -0
- package/dist/node/app/invite.js +64 -0
- package/dist/node/app/invite.js.map +1 -0
- package/dist/node/app/layout.d.ts +36 -0
- package/dist/node/app/layout.d.ts.map +1 -0
- package/dist/node/app/layout.js +87 -0
- package/dist/node/app/layout.js.map +1 -0
- package/dist/node/app/owner.d.ts +31 -0
- package/dist/node/app/owner.d.ts.map +1 -0
- package/dist/node/app/owner.js +104 -0
- package/dist/node/app/owner.js.map +1 -0
- package/dist/node/app/pairing.d.ts +55 -0
- package/dist/node/app/pairing.d.ts.map +1 -0
- package/dist/node/app/pairing.js +183 -0
- package/dist/node/app/pairing.js.map +1 -0
- package/dist/node/app/secrets.d.ts +16 -0
- package/dist/node/app/secrets.d.ts.map +1 -0
- package/dist/node/app/secrets.js +72 -0
- package/dist/node/app/secrets.js.map +1 -0
- package/dist/node/app/sessions.d.ts +72 -0
- package/dist/node/app/sessions.d.ts.map +1 -0
- package/dist/node/app/sessions.js +222 -0
- package/dist/node/app/sessions.js.map +1 -0
- package/dist/node/app/tar.d.ts +24 -0
- package/dist/node/app/tar.d.ts.map +1 -0
- package/dist/node/app/tar.js +167 -0
- package/dist/node/app/tar.js.map +1 -0
- package/dist/node/app/uploads.d.ts +37 -0
- package/dist/node/app/uploads.d.ts.map +1 -0
- package/dist/node/app/uploads.js +157 -0
- package/dist/node/app/uploads.js.map +1 -0
- package/dist/node/app/users.d.ts +37 -0
- package/dist/node/app/users.d.ts.map +1 -0
- package/dist/node/app/users.js +62 -0
- package/dist/node/app/users.js.map +1 -0
- package/dist/node/app/worker.d.ts +18 -0
- package/dist/node/app/worker.d.ts.map +1 -0
- package/dist/node/app/worker.js +84 -0
- package/dist/node/app/worker.js.map +1 -0
- package/dist/node/compression.d.ts +7 -0
- package/dist/node/compression.d.ts.map +1 -0
- package/dist/node/compression.js +25 -0
- package/dist/node/compression.js.map +1 -0
- package/dist/node/http/admission.d.ts +63 -0
- package/dist/node/http/admission.d.ts.map +1 -0
- package/dist/node/http/admission.js +134 -0
- package/dist/node/http/admission.js.map +1 -0
- package/dist/node/http/authenticate.d.ts +21 -0
- package/dist/node/http/authenticate.d.ts.map +1 -0
- package/dist/node/http/authenticate.js +34 -0
- package/dist/node/http/authenticate.js.map +1 -0
- package/dist/node/http/cookies.d.ts +32 -0
- package/dist/node/http/cookies.d.ts.map +1 -0
- package/dist/node/http/cookies.js +70 -0
- package/dist/node/http/cookies.js.map +1 -0
- package/dist/node/http/file.d.ts +23 -0
- package/dist/node/http/file.d.ts.map +1 -0
- package/dist/node/http/file.js +94 -0
- package/dist/node/http/file.js.map +1 -0
- package/dist/node/http/headers.d.ts +37 -0
- package/dist/node/http/headers.d.ts.map +1 -0
- package/dist/node/http/headers.js +136 -0
- package/dist/node/http/headers.js.map +1 -0
- package/dist/node/http/http.d.ts +111 -0
- package/dist/node/http/http.d.ts.map +1 -0
- package/dist/node/http/http.js +524 -0
- package/dist/node/http/http.js.map +1 -0
- package/dist/node/http/incoming.d.ts +19 -0
- package/dist/node/http/incoming.d.ts.map +1 -0
- package/dist/node/http/incoming.js +31 -0
- package/dist/node/http/incoming.js.map +1 -0
- package/dist/node/http/index.d.ts +11 -0
- package/dist/node/http/index.d.ts.map +1 -0
- package/dist/node/http/index.js +12 -0
- package/dist/node/http/index.js.map +1 -0
- package/dist/node/http/node.d.ts +78 -0
- package/dist/node/http/node.d.ts.map +1 -0
- package/dist/node/http/node.js +291 -0
- package/dist/node/http/node.js.map +1 -0
- package/dist/node/http/request.d.ts +60 -0
- package/dist/node/http/request.d.ts.map +1 -0
- package/dist/node/http/request.js +118 -0
- package/dist/node/http/request.js.map +1 -0
- package/dist/node/http/response.d.ts +63 -0
- package/dist/node/http/response.d.ts.map +1 -0
- package/dist/node/http/response.js +202 -0
- package/dist/node/http/response.js.map +1 -0
- package/dist/node/http/router.d.ts +132 -0
- package/dist/node/http/router.d.ts.map +1 -0
- package/dist/node/http/router.js +267 -0
- package/dist/node/http/router.js.map +1 -0
- package/dist/node/http/upgrades.d.ts +61 -0
- package/dist/node/http/upgrades.d.ts.map +1 -0
- package/dist/node/http/upgrades.js +192 -0
- package/dist/node/http/upgrades.js.map +1 -0
- package/dist/node/plugins/base-inputs.d.ts +14 -0
- package/dist/node/plugins/base-inputs.d.ts.map +1 -0
- package/dist/node/plugins/base-inputs.js +33 -0
- package/dist/node/plugins/base-inputs.js.map +1 -0
- package/dist/node/plugins/build.d.ts +77 -0
- package/dist/node/plugins/build.d.ts.map +1 -0
- package/dist/node/plugins/build.js +576 -0
- package/dist/node/plugins/build.js.map +1 -0
- package/dist/node/plugins/css-modules.d.ts +13 -0
- package/dist/node/plugins/css-modules.d.ts.map +1 -0
- package/dist/node/plugins/css-modules.js +58 -0
- package/dist/node/plugins/css-modules.js.map +1 -0
- package/dist/node/plugins/discover.d.ts +67 -0
- package/dist/node/plugins/discover.d.ts.map +1 -0
- package/dist/node/plugins/discover.js +369 -0
- package/dist/node/plugins/discover.js.map +1 -0
- package/dist/node/plugins/evaluate.d.ts +33 -0
- package/dist/node/plugins/evaluate.d.ts.map +1 -0
- package/dist/node/plugins/evaluate.js +121 -0
- package/dist/node/plugins/evaluate.js.map +1 -0
- package/dist/node/plugins/index.d.ts +11 -0
- package/dist/node/plugins/index.d.ts.map +1 -0
- package/dist/node/plugins/index.js +13 -0
- package/dist/node/plugins/index.js.map +1 -0
- package/dist/node/plugins/install.d.ts +38 -0
- package/dist/node/plugins/install.d.ts.map +1 -0
- package/dist/node/plugins/install.js +213 -0
- package/dist/node/plugins/install.js.map +1 -0
- package/dist/node/plugins/plugins.d.ts +162 -0
- package/dist/node/plugins/plugins.d.ts.map +1 -0
- package/dist/node/plugins/plugins.js +244 -0
- package/dist/node/plugins/plugins.js.map +1 -0
- package/dist/node/plugins/runtime.d.ts +57 -0
- package/dist/node/plugins/runtime.d.ts.map +1 -0
- package/dist/node/plugins/runtime.js +92 -0
- package/dist/node/plugins/runtime.js.map +1 -0
- package/dist/node/plugins/stack.d.ts +16 -0
- package/dist/node/plugins/stack.d.ts.map +1 -0
- package/dist/node/plugins/stack.js +61 -0
- package/dist/node/plugins/stack.js.map +1 -0
- package/dist/node/plugins/testing.d.ts +58 -0
- package/dist/node/plugins/testing.d.ts.map +1 -0
- package/dist/node/plugins/testing.js +210 -0
- package/dist/node/plugins/testing.js.map +1 -0
- package/dist/node/plugins/watcher.d.ts +69 -0
- package/dist/node/plugins/watcher.d.ts.map +1 -0
- package/dist/node/plugins/watcher.js +622 -0
- package/dist/node/plugins/watcher.js.map +1 -0
- package/dist/node/surfaces/bundle.d.ts +31 -0
- package/dist/node/surfaces/bundle.d.ts.map +1 -0
- package/dist/node/surfaces/bundle.js +118 -0
- package/dist/node/surfaces/bundle.js.map +1 -0
- package/dist/node/surfaces/current.d.ts +17 -0
- package/dist/node/surfaces/current.d.ts.map +1 -0
- package/dist/node/surfaces/current.js +54 -0
- package/dist/node/surfaces/current.js.map +1 -0
- package/dist/node/surfaces/index.d.ts +6 -0
- package/dist/node/surfaces/index.d.ts.map +1 -0
- package/dist/node/surfaces/index.js +6 -0
- package/dist/node/surfaces/index.js.map +1 -0
- package/dist/node/surfaces/published.d.ts +27 -0
- package/dist/node/surfaces/published.d.ts.map +1 -0
- package/dist/node/surfaces/published.js +142 -0
- package/dist/node/surfaces/published.js.map +1 -0
- package/dist/node/surfaces/served.d.ts +15 -0
- package/dist/node/surfaces/served.d.ts.map +1 -0
- package/dist/node/surfaces/served.js +42 -0
- package/dist/node/surfaces/served.js.map +1 -0
- package/dist/node/surfaces/surface-build.d.ts +53 -0
- package/dist/node/surfaces/surface-build.d.ts.map +1 -0
- package/dist/node/surfaces/surface-build.js +105 -0
- package/dist/node/surfaces/surface-build.js.map +1 -0
- package/dist/node/surfaces/tui.d.ts +40 -0
- package/dist/node/surfaces/tui.d.ts.map +1 -0
- package/dist/node/surfaces/tui.js +55 -0
- package/dist/node/surfaces/tui.js.map +1 -0
- package/dist/node/surfaces/web.d.ts +56 -0
- package/dist/node/surfaces/web.d.ts.map +1 -0
- package/dist/node/surfaces/web.js +108 -0
- package/dist/node/surfaces/web.js.map +1 -0
- package/dist/node/tui/actions.d.ts +49 -0
- package/dist/node/tui/actions.d.ts.map +1 -0
- package/dist/node/tui/actions.js +195 -0
- package/dist/node/tui/actions.js.map +1 -0
- package/dist/node/tui/credentials.d.ts +17 -0
- package/dist/node/tui/credentials.d.ts.map +1 -0
- package/dist/node/tui/credentials.js +54 -0
- package/dist/node/tui/credentials.js.map +1 -0
- package/dist/node/tui/filter.d.ts +5 -0
- package/dist/node/tui/filter.d.ts.map +1 -0
- package/dist/node/tui/filter.js +79 -0
- package/dist/node/tui/filter.js.map +1 -0
- package/dist/node/tui/index.d.ts +6 -0
- package/dist/node/tui/index.d.ts.map +1 -0
- package/dist/node/tui/index.js +6 -0
- package/dist/node/tui/index.js.map +1 -0
- package/dist/node/tui/launcher.d.ts +40 -0
- package/dist/node/tui/launcher.d.ts.map +1 -0
- package/dist/node/tui/launcher.js +439 -0
- package/dist/node/tui/launcher.js.map +1 -0
- package/dist/node/tui/pipe.d.ts +18 -0
- package/dist/node/tui/pipe.d.ts.map +1 -0
- package/dist/node/tui/pipe.js +134 -0
- package/dist/node/tui/pipe.js.map +1 -0
- package/dist/node/tui/sandbox.d.ts +54 -0
- package/dist/node/tui/sandbox.d.ts.map +1 -0
- package/dist/node/tui/sandbox.js +431 -0
- package/dist/node/tui/sandbox.js.map +1 -0
- package/dist/node/workers/base.d.ts +30 -0
- package/dist/node/workers/base.d.ts.map +1 -0
- package/dist/node/workers/base.js +255 -0
- package/dist/node/workers/base.js.map +1 -0
- package/dist/node/workers/child.d.ts +4 -0
- package/dist/node/workers/child.d.ts.map +1 -0
- package/dist/node/workers/child.js +6 -0
- package/dist/node/workers/child.js.map +1 -0
- package/dist/node/workers/control.d.ts +83 -0
- package/dist/node/workers/control.d.ts.map +1 -0
- package/dist/node/workers/control.js +77 -0
- package/dist/node/workers/control.js.map +1 -0
- package/dist/node/workers/index.d.ts +4 -0
- package/dist/node/workers/index.d.ts.map +1 -0
- package/dist/node/workers/index.js +7 -0
- package/dist/node/workers/index.js.map +1 -0
- package/dist/node/workers/lock.d.ts +30 -0
- package/dist/node/workers/lock.d.ts.map +1 -0
- package/dist/node/workers/lock.js +180 -0
- package/dist/node/workers/lock.js.map +1 -0
- package/dist/node/workers/main.d.ts +46 -0
- package/dist/node/workers/main.d.ts.map +1 -0
- package/dist/node/workers/main.js +230 -0
- package/dist/node/workers/main.js.map +1 -0
- package/dist/node/workers/process.d.ts +42 -0
- package/dist/node/workers/process.d.ts.map +1 -0
- package/dist/node/workers/process.js +125 -0
- package/dist/node/workers/process.js.map +1 -0
- package/dist/node/workers/workers.d.ts +122 -0
- package/dist/node/workers/workers.d.ts.map +1 -0
- package/dist/node/workers/workers.js +677 -0
- package/dist/node/workers/workers.js.map +1 -0
- package/dist/output.d.ts +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +4 -2
- package/dist/output.js.map +1 -1
- package/dist/react/hooks.d.ts +43 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +82 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +4 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/stores.d.ts +9 -0
- package/dist/react/stores.d.ts.map +1 -0
- package/dist/react/stores.js +37 -0
- package/dist/react/stores.js.map +1 -0
- package/dist/registries/contribution.d.ts +50 -0
- package/dist/registries/contribution.d.ts.map +1 -0
- package/dist/registries/contribution.js +129 -0
- package/dist/registries/contribution.js.map +1 -0
- package/dist/registries/entries.d.ts +18 -0
- package/dist/registries/entries.d.ts.map +1 -0
- package/dist/registries/entries.js +42 -0
- package/dist/registries/entries.js.map +1 -0
- package/dist/registries/index.d.ts +3 -0
- package/dist/registries/index.d.ts.map +1 -0
- package/dist/registries/index.js +5 -0
- package/dist/registries/index.js.map +1 -0
- package/dist/registries/internal.d.ts +4 -0
- package/dist/registries/internal.d.ts.map +1 -0
- package/dist/registries/internal.js +5 -0
- package/dist/registries/internal.js.map +1 -0
- package/dist/registries/record.d.ts +115 -0
- package/dist/registries/record.d.ts.map +1 -0
- package/dist/registries/record.js +283 -0
- package/dist/registries/record.js.map +1 -0
- package/dist/registries/registry.d.ts +74 -0
- package/dist/registries/registry.d.ts.map +1 -0
- package/dist/registries/registry.js +14 -0
- package/dist/registries/registry.js.map +1 -0
- package/dist/registries/value.d.ts +48 -0
- package/dist/registries/value.d.ts.map +1 -0
- package/dist/registries/value.js +224 -0
- package/dist/registries/value.js.map +1 -0
- package/dist/remote/calls.d.ts +25 -0
- package/dist/remote/calls.d.ts.map +1 -0
- package/dist/remote/calls.js +62 -0
- package/dist/remote/calls.js.map +1 -0
- package/dist/remote/consumer.d.ts +43 -0
- package/dist/remote/consumer.d.ts.map +1 -0
- package/dist/remote/consumer.js +350 -0
- package/dist/remote/consumer.js.map +1 -0
- package/dist/remote/hold.d.ts +141 -0
- package/dist/remote/hold.d.ts.map +1 -0
- package/dist/remote/hold.js +579 -0
- package/dist/remote/hold.js.map +1 -0
- package/dist/remote/host-link.d.ts +77 -0
- package/dist/remote/host-link.d.ts.map +1 -0
- package/dist/remote/host-link.js +184 -0
- package/dist/remote/host-link.js.map +1 -0
- package/dist/remote/internal.d.ts +6 -0
- package/dist/remote/internal.d.ts.map +1 -0
- package/dist/remote/internal.js +6 -0
- package/dist/remote/internal.js.map +1 -0
- package/dist/remote/path.d.ts +46 -0
- package/dist/remote/path.d.ts.map +1 -0
- package/dist/remote/path.js +73 -0
- package/dist/remote/path.js.map +1 -0
- package/dist/remote/provider.d.ts +89 -0
- package/dist/remote/provider.d.ts.map +1 -0
- package/dist/remote/provider.js +597 -0
- package/dist/remote/provider.js.map +1 -0
- package/dist/remote/relay.d.ts +69 -0
- package/dist/remote/relay.d.ts.map +1 -0
- package/dist/remote/relay.js +219 -0
- package/dist/remote/relay.js.map +1 -0
- package/dist/remote/remote-object.d.ts +138 -0
- package/dist/remote/remote-object.d.ts.map +1 -0
- package/dist/remote/remote-object.js +492 -0
- package/dist/remote/remote-object.js.map +1 -0
- package/dist/remote/replica.d.ts +59 -0
- package/dist/remote/replica.d.ts.map +1 -0
- package/dist/remote/replica.js +125 -0
- package/dist/remote/replica.js.map +1 -0
- package/dist/sqlite/cloudflare.d.ts +2 -0
- package/dist/sqlite/cloudflare.d.ts.map +1 -1
- package/dist/sqlite/cloudflare.js +10 -0
- package/dist/sqlite/cloudflare.js.map +1 -1
- package/dist/sqlite/database.d.ts +5 -2
- package/dist/sqlite/database.d.ts.map +1 -1
- package/dist/sqlite/database.js.map +1 -1
- package/dist/sqlite/node.d.ts +13 -2
- package/dist/sqlite/node.d.ts.map +1 -1
- package/dist/sqlite/node.js +31 -8
- package/dist/sqlite/node.js.map +1 -1
- package/dist/state/batch.d.ts +64 -0
- package/dist/state/batch.d.ts.map +1 -0
- package/dist/state/batch.js +164 -0
- package/dist/state/batch.js.map +1 -0
- package/dist/state/derive.d.ts +52 -0
- package/dist/state/derive.d.ts.map +1 -0
- package/dist/state/derive.js +182 -0
- package/dist/state/derive.js.map +1 -0
- package/dist/state/index.d.ts +6 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +4 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/internal.d.ts +6 -0
- package/dist/state/internal.d.ts.map +1 -0
- package/dist/state/internal.js +8 -0
- package/dist/state/internal.js.map +1 -0
- package/dist/state/native-source.d.ts +106 -0
- package/dist/state/native-source.d.ts.map +1 -0
- package/dist/state/native-source.js +240 -0
- package/dist/state/native-source.js.map +1 -0
- package/dist/state/watchable.d.ts +114 -0
- package/dist/state/watchable.d.ts.map +1 -0
- package/dist/state/watchable.js +156 -0
- package/dist/state/watchable.js.map +1 -0
- package/dist/state/writable.d.ts +32 -0
- package/dist/state/writable.d.ts.map +1 -0
- package/dist/state/writable.js +49 -0
- package/dist/state/writable.js.map +1 -0
- package/dist/store/adapter.d.ts +67 -0
- package/dist/store/adapter.d.ts.map +1 -0
- package/dist/store/adapter.js +118 -0
- package/dist/store/adapter.js.map +1 -0
- package/dist/store/allocator.d.ts +17 -0
- package/dist/store/allocator.d.ts.map +1 -0
- package/dist/store/allocator.js +30 -0
- package/dist/store/allocator.js.map +1 -0
- package/dist/store/applier.d.ts +8 -0
- package/dist/store/applier.d.ts.map +1 -0
- package/dist/store/applier.js +375 -0
- package/dist/store/applier.js.map +1 -0
- package/dist/store/apply-batch.d.ts +12 -0
- package/dist/store/apply-batch.d.ts.map +1 -0
- package/dist/store/apply-batch.js +83 -0
- package/dist/store/apply-batch.js.map +1 -0
- package/dist/store/archive.d.ts +32 -0
- package/dist/store/archive.d.ts.map +1 -0
- package/dist/store/archive.js +130 -0
- package/dist/store/archive.js.map +1 -0
- package/dist/store/backend.d.ts +10 -0
- package/dist/store/backend.d.ts.map +1 -0
- package/dist/store/backend.js +15 -0
- package/dist/store/backend.js.map +1 -0
- package/dist/store/catalog.d.ts +24 -0
- package/dist/store/catalog.d.ts.map +1 -0
- package/dist/store/catalog.js +17 -0
- package/dist/store/catalog.js.map +1 -0
- package/dist/store/claims.d.ts +23 -0
- package/dist/store/claims.d.ts.map +1 -0
- package/dist/store/claims.js +65 -0
- package/dist/store/claims.js.map +1 -0
- package/dist/store/columns.d.ts +77 -0
- package/dist/store/columns.d.ts.map +1 -0
- package/dist/store/columns.js +77 -0
- package/dist/store/columns.js.map +1 -0
- package/dist/store/engine.d.ts +176 -0
- package/dist/store/engine.d.ts.map +1 -0
- package/dist/store/engine.js +283 -0
- package/dist/store/engine.js.map +1 -0
- package/dist/store/evaluate.d.ts +17 -0
- package/dist/store/evaluate.d.ts.map +1 -0
- package/dist/store/evaluate.js +128 -0
- package/dist/store/evaluate.js.map +1 -0
- package/dist/store/export.d.ts +17 -0
- package/dist/store/export.d.ts.map +1 -0
- package/dist/store/export.js +200 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/expression.d.ts +150 -0
- package/dist/store/expression.d.ts.map +1 -0
- package/dist/store/expression.js +268 -0
- package/dist/store/expression.js.map +1 -0
- package/dist/store/import.d.ts +10 -0
- package/dist/store/import.d.ts.map +1 -0
- package/dist/store/import.js +276 -0
- package/dist/store/import.js.map +1 -0
- package/dist/store/index.d.ts +16 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +13 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json-column.d.ts +33 -0
- package/dist/store/json-column.d.ts.map +1 -0
- package/dist/store/json-column.js +62 -0
- package/dist/store/json-column.js.map +1 -0
- package/dist/store/jsonl.d.ts +9 -0
- package/dist/store/jsonl.d.ts.map +1 -0
- package/dist/store/jsonl.js +61 -0
- package/dist/store/jsonl.js.map +1 -0
- package/dist/store/live-query.d.ts +108 -0
- package/dist/store/live-query.d.ts.map +1 -0
- package/dist/store/live-query.js +254 -0
- package/dist/store/live-query.js.map +1 -0
- package/dist/store/outbox.d.ts +26 -0
- package/dist/store/outbox.d.ts.map +1 -0
- package/dist/store/outbox.js +80 -0
- package/dist/store/outbox.js.map +1 -0
- package/dist/store/query.d.ts +39 -0
- package/dist/store/query.d.ts.map +1 -0
- package/dist/store/query.js +97 -0
- package/dist/store/query.js.map +1 -0
- package/dist/store/refusal.d.ts +15 -0
- package/dist/store/refusal.d.ts.map +1 -0
- package/dist/store/refusal.js +36 -0
- package/dist/store/refusal.js.map +1 -0
- package/dist/store/rows.d.ts +80 -0
- package/dist/store/rows.d.ts.map +1 -0
- package/dist/store/rows.js +183 -0
- package/dist/store/rows.js.map +1 -0
- package/dist/store/schema.d.ts +25 -0
- package/dist/store/schema.d.ts.map +1 -0
- package/dist/store/schema.js +115 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/sql.d.ts +73 -0
- package/dist/store/sql.d.ts.map +1 -0
- package/dist/store/sql.js +234 -0
- package/dist/store/sql.js.map +1 -0
- package/dist/store/step.d.ts +50 -0
- package/dist/store/step.d.ts.map +1 -0
- package/dist/store/step.js +52 -0
- package/dist/store/step.js.map +1 -0
- package/dist/store/store.d.ts +171 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +818 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/table-changes.d.ts +29 -0
- package/dist/store/table-changes.d.ts.map +1 -0
- package/dist/store/table-changes.js +102 -0
- package/dist/store/table-changes.js.map +1 -0
- package/dist/store/table-evolve.d.ts +74 -0
- package/dist/store/table-evolve.d.ts.map +1 -0
- package/dist/store/table-evolve.js +201 -0
- package/dist/store/table-evolve.js.map +1 -0
- package/dist/store/table-handle.d.ts +73 -0
- package/dist/store/table-handle.d.ts.map +1 -0
- package/dist/store/table-handle.js +101 -0
- package/dist/store/table-handle.js.map +1 -0
- package/dist/store/table-history.d.ts +75 -0
- package/dist/store/table-history.d.ts.map +1 -0
- package/dist/store/table-history.js +42 -0
- package/dist/store/table-history.js.map +1 -0
- package/dist/store/table-migration.d.ts +16 -0
- package/dist/store/table-migration.d.ts.map +1 -0
- package/dist/store/table-migration.js +202 -0
- package/dist/store/table-migration.js.map +1 -0
- package/dist/store/table-writes.d.ts +125 -0
- package/dist/store/table-writes.d.ts.map +1 -0
- package/dist/store/table-writes.js +170 -0
- package/dist/store/table-writes.js.map +1 -0
- package/dist/store/table.d.ts +80 -0
- package/dist/store/table.d.ts.map +1 -0
- package/dist/store/table.js +103 -0
- package/dist/store/table.js.map +1 -0
- package/dist/store/text.d.ts +14 -0
- package/dist/store/text.d.ts.map +1 -0
- package/dist/store/text.js +51 -0
- package/dist/store/text.js.map +1 -0
- package/dist/store/writes.d.ts +5 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +4 -0
- package/dist/store/writes.js.map +1 -0
- package/dist/surfaces/active-language.d.ts +20 -0
- package/dist/surfaces/active-language.d.ts.map +1 -0
- package/dist/surfaces/active-language.js +78 -0
- package/dist/surfaces/active-language.js.map +1 -0
- package/dist/surfaces/active-theme.d.ts +16 -0
- package/dist/surfaces/active-theme.d.ts.map +1 -0
- package/dist/surfaces/active-theme.js +47 -0
- package/dist/surfaces/active-theme.js.map +1 -0
- package/dist/surfaces/client.d.ts +96 -0
- package/dist/surfaces/client.d.ts.map +1 -0
- package/dist/surfaces/client.js +264 -0
- package/dist/surfaces/client.js.map +1 -0
- package/dist/surfaces/connection.d.ts +49 -0
- package/dist/surfaces/connection.d.ts.map +1 -0
- package/dist/surfaces/connection.js +142 -0
- package/dist/surfaces/connection.js.map +1 -0
- package/dist/surfaces/format.d.ts +5 -0
- package/dist/surfaces/format.d.ts.map +1 -0
- package/dist/surfaces/format.js +37 -0
- package/dist/surfaces/format.js.map +1 -0
- package/dist/surfaces/index.d.ts +15 -0
- package/dist/surfaces/index.d.ts.map +1 -0
- package/dist/surfaces/index.js +18 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/language.d.ts +53 -0
- package/dist/surfaces/language.d.ts.map +1 -0
- package/dist/surfaces/language.js +74 -0
- package/dist/surfaces/language.js.map +1 -0
- package/dist/surfaces/loaded.d.ts +42 -0
- package/dist/surfaces/loaded.d.ts.map +1 -0
- package/dist/surfaces/loaded.js +116 -0
- package/dist/surfaces/loaded.js.map +1 -0
- package/dist/surfaces/locale-choice.d.ts +25 -0
- package/dist/surfaces/locale-choice.d.ts.map +1 -0
- package/dist/surfaces/locale-choice.js +14 -0
- package/dist/surfaces/locale-choice.js.map +1 -0
- package/dist/surfaces/messages.d.ts +67 -0
- package/dist/surfaces/messages.d.ts.map +1 -0
- package/dist/surfaces/messages.js +112 -0
- package/dist/surfaces/messages.js.map +1 -0
- package/dist/surfaces/page-state.d.ts +14 -0
- package/dist/surfaces/page-state.d.ts.map +1 -0
- package/dist/surfaces/page-state.js +43 -0
- package/dist/surfaces/page-state.js.map +1 -0
- package/dist/surfaces/preference.d.ts +32 -0
- package/dist/surfaces/preference.d.ts.map +1 -0
- package/dist/surfaces/preference.js +72 -0
- package/dist/surfaces/preference.js.map +1 -0
- package/dist/surfaces/registered.d.ts +33 -0
- package/dist/surfaces/registered.d.ts.map +1 -0
- package/dist/surfaces/registered.js +51 -0
- package/dist/surfaces/registered.js.map +1 -0
- package/dist/surfaces/scripts.d.ts +84 -0
- package/dist/surfaces/scripts.d.ts.map +1 -0
- package/dist/surfaces/scripts.js +28 -0
- package/dist/surfaces/scripts.js.map +1 -0
- package/dist/surfaces/theme-choice.d.ts +31 -0
- package/dist/surfaces/theme-choice.d.ts.map +1 -0
- package/dist/surfaces/theme-choice.js +18 -0
- package/dist/surfaces/theme-choice.js.map +1 -0
- package/dist/surfaces/themes.d.ts +43 -0
- package/dist/surfaces/themes.d.ts.map +1 -0
- package/dist/surfaces/themes.js +110 -0
- package/dist/surfaces/themes.js.map +1 -0
- package/dist/surfaces/translations.d.ts +29 -0
- package/dist/surfaces/translations.d.ts.map +1 -0
- package/dist/surfaces/translations.js +57 -0
- package/dist/surfaces/translations.js.map +1 -0
- package/dist/sync/batch.d.ts +18 -0
- package/dist/sync/batch.d.ts.map +1 -0
- package/dist/sync/batch.js +125 -0
- package/dist/sync/batch.js.map +1 -0
- package/dist/sync/client.d.ts +166 -0
- package/dist/sync/client.d.ts.map +1 -0
- package/dist/sync/client.js +438 -0
- package/dist/sync/client.js.map +1 -0
- package/dist/sync/files.d.ts +46 -0
- package/dist/sync/files.d.ts.map +1 -0
- package/dist/sync/files.js +13 -0
- package/dist/sync/files.js.map +1 -0
- package/dist/sync/filesystem.d.ts +37 -0
- package/dist/sync/filesystem.d.ts.map +1 -0
- package/dist/sync/filesystem.js +185 -0
- package/dist/sync/filesystem.js.map +1 -0
- package/dist/sync/index.d.ts +8 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +9 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/lines.d.ts +18 -0
- package/dist/sync/lines.d.ts.map +1 -0
- package/dist/sync/lines.js +46 -0
- package/dist/sync/lines.js.map +1 -0
- package/dist/sync/remote.d.ts +130 -0
- package/dist/sync/remote.d.ts.map +1 -0
- package/dist/sync/remote.js +46 -0
- package/dist/sync/remote.js.map +1 -0
- package/dist/sync/state.d.ts +17 -0
- package/dist/sync/state.d.ts.map +1 -0
- package/dist/sync/state.js +40 -0
- package/dist/sync/state.js.map +1 -0
- package/dist/telemetry-ingest/batch.d.ts +70 -0
- package/dist/telemetry-ingest/batch.d.ts.map +1 -0
- package/dist/telemetry-ingest/batch.js +110 -0
- package/dist/telemetry-ingest/batch.js.map +1 -0
- package/dist/telemetry-ingest/facet.d.ts +21 -0
- package/dist/telemetry-ingest/facet.d.ts.map +1 -0
- package/dist/telemetry-ingest/facet.js +96 -0
- package/dist/telemetry-ingest/facet.js.map +1 -0
- package/dist/telemetry-ingest/index.d.ts +5 -0
- package/dist/telemetry-ingest/index.d.ts.map +1 -0
- package/dist/telemetry-ingest/index.js +8 -0
- package/dist/telemetry-ingest/index.js.map +1 -0
- package/dist/telemetry-ingest/recorder.d.ts +50 -0
- package/dist/telemetry-ingest/recorder.d.ts.map +1 -0
- package/dist/telemetry-ingest/recorder.js +298 -0
- package/dist/telemetry-ingest/recorder.js.map +1 -0
- package/dist/telemetry-ingest/sender.d.ts +14 -0
- package/dist/telemetry-ingest/sender.d.ts.map +1 -0
- package/dist/telemetry-ingest/sender.js +64 -0
- package/dist/telemetry-ingest/sender.js.map +1 -0
- package/dist/telemetry-sqlite/index.d.ts +13 -4
- package/dist/telemetry-sqlite/index.d.ts.map +1 -1
- package/dist/telemetry-sqlite/index.js +81 -241
- package/dist/telemetry-sqlite/index.js.map +1 -1
- package/dist/telemetry-sqlite/node.d.ts +13 -0
- package/dist/telemetry-sqlite/node.d.ts.map +1 -0
- package/dist/telemetry-sqlite/node.js +27 -0
- package/dist/telemetry-sqlite/node.js.map +1 -0
- package/dist/telemetry-sqlite/schema.d.ts +9 -0
- package/dist/telemetry-sqlite/schema.d.ts.map +1 -0
- package/dist/telemetry-sqlite/schema.js +61 -0
- package/dist/telemetry-sqlite/schema.js.map +1 -0
- package/dist/telemetry-sqlite/store.d.ts +3 -0
- package/dist/telemetry-sqlite/store.d.ts.map +1 -1
- package/dist/telemetry-sqlite/store.js +24 -13
- package/dist/telemetry-sqlite/store.js.map +1 -1
- package/dist/telemetry.d.ts +937 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +470 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tui/bridge.d.ts +112 -0
- package/dist/tui/bridge.d.ts.map +1 -0
- package/dist/tui/bridge.js +9 -0
- package/dist/tui/bridge.js.map +1 -0
- package/dist/tui/channel.d.ts +44 -0
- package/dist/tui/channel.d.ts.map +1 -0
- package/dist/tui/channel.js +150 -0
- package/dist/tui/channel.js.map +1 -0
- package/dist/tui/frames.d.ts +5 -0
- package/dist/tui/frames.d.ts.map +1 -0
- package/dist/tui/frames.js +52 -0
- package/dist/tui/frames.js.map +1 -0
- package/dist/tui/index.d.ts +7 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +8 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/runtime.d.ts +46 -0
- package/dist/tui/runtime.d.ts.map +1 -0
- package/dist/tui/runtime.js +101 -0
- package/dist/tui/runtime.js.map +1 -0
- package/dist/tui/scope.d.ts +46 -0
- package/dist/tui/scope.d.ts.map +1 -0
- package/dist/tui/scope.js +141 -0
- package/dist/tui/scope.js.map +1 -0
- package/dist/tui/terminal.d.ts +15 -0
- package/dist/tui/terminal.d.ts.map +1 -0
- package/dist/tui/terminal.js +37 -0
- package/dist/tui/terminal.js.map +1 -0
- package/dist/tui/theme.d.ts +17 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +38 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/watch.d.ts +194 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +383 -0
- package/dist/watch.js.map +1 -0
- package/dist/web/environment.d.ts +4 -0
- package/dist/web/environment.d.ts.map +1 -0
- package/dist/web/environment.js +37 -0
- package/dist/web/environment.js.map +1 -0
- package/dist/web/index.d.ts +5 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +7 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/language.d.ts +7 -0
- package/dist/web/language.d.ts.map +1 -0
- package/dist/web/language.js +21 -0
- package/dist/web/language.js.map +1 -0
- package/dist/web/page.d.ts +29 -0
- package/dist/web/page.d.ts.map +1 -0
- package/dist/web/page.js +92 -0
- package/dist/web/page.js.map +1 -0
- package/dist/web/scripts.d.ts +23 -0
- package/dist/web/scripts.d.ts.map +1 -0
- package/dist/web/scripts.js +50 -0
- package/dist/web/scripts.js.map +1 -0
- package/dist/web/styles.d.ts +17 -0
- package/dist/web/styles.d.ts.map +1 -0
- package/dist/web/styles.js +218 -0
- package/dist/web/styles.js.map +1 -0
- package/dist/web/themes.d.ts +6 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +31 -0
- package/dist/web/themes.js.map +1 -0
- package/docs/benchmarks.md +1036 -0
- package/docs/decisions.md +3436 -0
- package/docs/dependencies/book.md +1671 -0
- package/docs/dependencies/index.html +2641 -0
- package/docs/dependencies/model.md +330 -0
- package/docs/design.md +3065 -0
- package/docs/durable-observers/book.md +432 -0
- package/docs/durable-observers/index.html +517 -0
- package/docs/flow-control/book.md +333 -0
- package/docs/flow-control/fold/index.html +265 -0
- package/docs/flow-control/index.html +548 -0
- package/docs/flow-control/window/index.html +228 -0
- package/docs/guide-plugins-hosts/book.md +957 -0
- package/docs/guide-plugins-hosts/index.html +952 -0
- package/docs/http-workers/book.md +378 -0
- package/docs/http-workers/index.html +515 -0
- package/docs/i18n/book.md +217 -0
- package/docs/i18n/index.html +344 -0
- package/docs/layer-1.md +311 -0
- package/docs/layer-2.md +216 -0
- package/docs/p3-features/README.md +6 -0
- package/docs/p3-features/book.md +478 -0
- package/docs/plugin-authoring.md +276 -0
- package/docs/plugin-model/book.md +186 -0
- package/docs/plugin-model/index.html +310 -0
- package/docs/plugin-primer/book.md +273 -0
- package/docs/plugin-primer/index.html +430 -0
- package/docs/slice-1.md +236 -0
- package/docs/slice-10.md +288 -0
- package/docs/slice-11.md +114 -0
- package/docs/slice-12.md +132 -0
- package/docs/slice-13.md +121 -0
- package/docs/slice-2.md +174 -0
- package/docs/slice-3a.md +296 -0
- package/docs/slice-3b.md +197 -0
- package/docs/slice-4.md +146 -0
- package/docs/slice-4a.md +418 -0
- package/docs/slice-4b.md +208 -0
- package/docs/slice-5.md +281 -0
- package/docs/slice-6a.md +676 -0
- package/docs/slice-6b.md +332 -0
- package/docs/slice-7a.md +130 -0
- package/docs/slice-7b/book.md +608 -0
- package/docs/slice-7b/index.html +842 -0
- package/docs/slice-7b.md +255 -0
- package/docs/slice-7c.md +165 -0
- package/docs/slice-8.md +194 -0
- package/docs/slice-9.md +110 -0
- package/docs/slices.md +241 -0
- package/docs/store/book.md +670 -0
- package/docs/store/index.html +861 -0
- package/docs/store/walkthrough.md +193 -0
- package/docs/theming/book.md +223 -0
- package/docs/theming/index.html +371 -0
- package/docs/tutorial/book.md +2169 -0
- package/docs/tutorial/index.html +2112 -0
- package/docs/tutorial/screens/click-after.png +0 -0
- package/docs/tutorial/screens/click-before.png +0 -0
- package/docs/tutorial/screens/edited.png +0 -0
- package/docs/tutorial/screens/french.png +0 -0
- package/docs/tutorial/screens/harbor.png +0 -0
- package/docs/tutorial/screens/page.png +0 -0
- package/docs/tutorial/screens/traces-ada.png +0 -0
- package/docs/tutorial/screens/traces.png +0 -0
- package/package.json +114 -20
- package/src/delta/README.md +69 -0
- package/dist/cell.d.ts +0 -122
- package/dist/cell.d.ts.map +0 -1
- package/dist/cell.js +0 -356
- package/dist/cell.js.map +0 -1
- package/dist/cluster.d.ts +0 -27
- package/dist/cluster.d.ts.map +0 -1
- package/dist/cluster.js +0 -230
- package/dist/cluster.js.map +0 -1
- package/dist/connection.d.ts +0 -270
- package/dist/connection.d.ts.map +0 -1
- package/dist/connection.js +0 -1216
- package/dist/connection.js.map +0 -1
- package/dist/contract.d.ts +0 -208
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -246
- package/dist/contract.js.map +0 -1
- package/dist/declare.d.ts +0 -33
- package/dist/declare.d.ts.map +0 -1
- package/dist/declare.js +0 -2
- package/dist/declare.js.map +0 -1
- package/dist/errors.d.ts +0 -28
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -59
- package/dist/errors.js.map +0 -1
- package/dist/host.d.ts +0 -348
- package/dist/host.d.ts.map +0 -1
- package/dist/host.js +0 -1000
- package/dist/host.js.map +0 -1
- package/dist/link.d.ts +0 -107
- package/dist/link.d.ts.map +0 -1
- package/dist/link.js +0 -355
- package/dist/link.js.map +0 -1
- package/dist/loader.d.ts +0 -4
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -73
- package/dist/loader.js.map +0 -1
- package/dist/manager.d.ts +0 -115
- package/dist/manager.d.ts.map +0 -1
- package/dist/manager.js +0 -345
- package/dist/manager.js.map +0 -1
- package/dist/node.d.ts +0 -4
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js +0 -4
- package/dist/node.js.map +0 -1
- package/dist/object.d.ts +0 -438
- package/dist/object.d.ts.map +0 -1
- package/dist/object.js +0 -1571
- package/dist/object.js.map +0 -1
- package/dist/publish.d.ts +0 -5
- package/dist/publish.d.ts.map +0 -1
- package/dist/publish.js +0 -40
- package/dist/publish.js.map +0 -1
- package/dist/registry.d.ts +0 -25
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -6
- package/dist/registry.js.map +0 -1
- package/dist/reload.d.ts +0 -126
- package/dist/reload.d.ts.map +0 -1
- package/dist/reload.js +0 -653
- package/dist/reload.js.map +0 -1
- package/dist/remote.d.ts +0 -165
- package/dist/remote.d.ts.map +0 -1
- package/dist/remote.js +0 -612
- package/dist/remote.js.map +0 -1
- package/dist/schema.d.ts +0 -21
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -228
- package/dist/schema.js.map +0 -1
- package/dist/state.d.ts +0 -92
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -287
- package/dist/state.js.map +0 -1
- package/dist/types.d.ts +0 -88
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/websocket.d.ts +0 -15
- package/dist/websocket.d.ts.map +0 -1
- package/dist/websocket.js +0 -16
- package/dist/websocket.js.map +0 -1
- package/dist/wire.d.ts +0 -216
- package/dist/wire.d.ts.map +0 -1
- package/dist/wire.js +0 -165
- package/dist/wire.js.map +0 -1
- package/docs/guide.md +0 -814
- package/docs/spec.md +0 -288
- package/docs/tutorial.md +0 -931
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/link/text.ts"],"names":[],"mappings":"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","sourcesContent":["// The text codec (2b): one JSON tuple per message, Delta style (a short kind tag, positional fields, no field names),\n// and `describeMessage`, which prints any message in that form. A part's JSON text is spliced into the tuple as it is;\n// decoding parses the tuple and writes each part back as text (one parse per part per hop: a debugging codec). Byte\n// segments of a payload marked as carrying bytes follow the tuple after a newline (JSON text never contains a raw\n// one), their lengths the tuple's last field. A message with an origin is wrapped: `[\"@\", origin, tuple]`. Every part\n// is tagged with its codec, so no JSON value is reserved: `[0, json]`, or `[1, base64]` for a part its origin deflated\n// (the text codec itself never compresses). A `hold`'s or `call`'s trace carrier is an optional element after its\n// other fields (slice 9); a `call`'s old-work flag (`old`) follows it as `true` (the carrier then `null` when absent).\n\nimport {\n\ttype BoundEntry,\n\tCAUSE_KINDS,\n\ttype Codec,\n\ttype FailedMember,\n\ttype Message,\n\tNO_RETIRED,\n\ttype StateEntry,\n} from \"./message.ts\";\nimport type { Part } from \"./part.ts\";\nimport { parseJson, partText, textPart } from \"./values.ts\";\n\nconst UTF8 = new TextEncoder();\n\n/** Messages as JSON tuples: readable on the wire, for debugging links. */\nexport const textCodec: Codec = {\n\tname: \"text\",\n\tencode(message) {\n\t\tconst json = UTF8.encode(tuple(message));\n\t\tconst segments = segmentsOf(message);\n\t\tif (segments === undefined) return json;\n\t\tlet length = json.byteLength + 1;\n\t\tfor (const segment of segments) length += segment.byteLength;\n\t\tconst bytes = new Uint8Array(length);\n\t\tbytes.set(json, 0);\n\t\tbytes[json.byteLength] = NEWLINE;\n\t\tlet offset = json.byteLength + 1;\n\t\tfor (const segment of segments) {\n\t\t\tbytes.set(segment, offset);\n\t\t\toffset += segment.byteLength;\n\t\t}\n\t\treturn bytes;\n\t},\n\tdecode(bytes) {\n\t\tconst newline = bytes.indexOf(NEWLINE);\n\t\tconst json = newline === -1 ? bytes : bytes.subarray(0, newline);\n\t\tconst rest = newline === -1 ? bytes.subarray(bytes.byteLength) : bytes.subarray(newline + 1);\n\t\tconst fields = parseJson(json);\n\t\tif (!Array.isArray(fields)) throw new Error(\"text: a message is a tuple\");\n\t\treturn fromTuple(fields, rest);\n\t},\n};\n\n/** A message in the text codec's tuple form, for logs and tests (byte segments show as `{\"$bytes\": i}`). */\nexport function describeMessage(message: Message): string {\n\treturn tuple(message);\n}\n\nconst NEWLINE = 0x0a;\n\n/** The segments following a payload's tuple; `undefined` without a payload marked as carrying bytes. */\nfunction segmentsOf(message: Message): readonly Uint8Array[] | undefined {\n\treturn message.kind === \"call\" || message.kind === \"result\" ? message.segments : undefined;\n}\n\n/** The tuple's JSON text, parts spliced in; wrapped with its origin when it has one. */\nfunction tuple(message: Message): string {\n\tconst origin = \"origin\" in message ? message.origin : undefined;\n\treturn origin === undefined ? ownTuple(message) : `[\"@\",${origin},${ownTuple(message)}]`;\n}\n\n/** The tuple of a message's own fields. */\nfunction ownTuple(message: Message): string {\n\tswitch (message.kind) {\n\t\tcase \"hello\":\n\t\t\treturn json([\"h\", message.protocol, message.incarnation, message.calls]);\n\t\tcase \"hold\": {\n\t\t\tconst { address, principal, incarnation, chain, limit, trace } = message;\n\t\t\tconst head = json([\"H\", message.hold, message.type, message.version, message.fingerprint]).slice(0, -1);\n\t\t\t// Optional trailing fields: an absent one in the middle is null, absent ones at the end are left out.\n\t\t\tconst optional = [principal ?? null, incarnation ?? null, chain ?? null, limit ?? null, trace ?? null];\n\t\t\twhile (optional.length > 0 && optional.at(-1) === null) optional.pop();\n\t\t\tconst rest = optional.map((field) => `,${json(field)}`).join(\"\");\n\t\t\treturn `${head},${partText(message.params)},${json([address.kind, address.params])}${rest}]`;\n\t\t}\n\t\tcase \"release\":\n\t\t\treturn json([\"R\", message.hold]);\n\t\tcase \"call\": {\n\t\t\tconst head = json([\"c\", message.call, message.hold, message.method]);\n\t\t\tconst { args, segments, trace, old } = message;\n\t\t\tif (trace === undefined && old !== true) return withPayload(head, args, segments);\n\t\t\t// With a trace or the old-work flag the payload's fields are positional (null when absent), the carrier next\n\t\t\t// (null when absent before the flag), the flag last.\n\t\t\tconst lengths = segments === undefined ? \"null\" : json(segments.map((segment) => segment.byteLength));\n\t\t\tconst part = args === undefined ? \"null\" : partText(args);\n\t\t\tconst tail = old === true ? `${json(trace ?? null)},true` : json(trace);\n\t\t\treturn `${head.slice(0, -1)},${part},${lengths},${tail}]`;\n\t\t}\n\t\tcase \"abort\":\n\t\t\treturn json([\"x\", message.call]);\n\t\tcase \"bound\":\n\t\t\treturn `[\"b\",[${message.holds.map(boundEntry).join(\",\")}]]`;\n\t\tcase \"state\":\n\t\t\treturn `[\"s\",[${message.holds.map(stateEntry).join(\",\")}]]`;\n\t\tcase \"failed\": {\n\t\t\tconst kind = message.cause.kind[0];\n\t\t\tconst retryIn = message.retryIn === undefined ? [] : [message.retryIn];\n\t\t\treturn json([\"f\", message.hold, kind, message.cause.error, ...retryIn]);\n\t\t}\n\t\tcase \"result\":\n\t\t\treturn withPayload(json([\"r\", message.call]), message.value, message.segments);\n\t\tcase \"error\":\n\t\t\treturn json([\"e\", message.call, message.error]);\n\t\tcase \"gone\":\n\t\t\treturn json([\"g\", message.hold, message.error]);\n\t\tcase \"revoke\":\n\t\t\treturn json([\"V\", message.revocation]);\n\t\tcase \"retry\":\n\t\t\treturn json([\"T\", message.hold, message.hops]);\n\t\tcase \"loading\":\n\t\t\treturn json([\"l\", message.hold]);\n\t\tcase \"ack\":\n\t\t\treturn json([\"a\"]);\n\t\tcase \"closed\":\n\t\t\treturn json([\"C\"]);\n\t\tcase \"ping\":\n\t\t\treturn json([\"p\"]);\n\t\tcase \"pong\":\n\t\t\treturn json([\"P\"]);\n\t}\n}\n\nfunction json(value: unknown): string {\n\treturn JSON.stringify(value);\n}\n\n/** `[hold, variant, [[member, value]…], failed?]`. */\nfunction boundEntry({ hold, variant, members, failed }: BoundEntry): string {\n\tconst pairs = members.map(({ member, value }) => `[${member},${partText(value)}]`).join(\",\");\n\treturn `[${hold},${variant},[${pairs}]${failedField(failed)}]`;\n}\n\n/** `[hold, [[member, ops]…], failed?, retired?]`; `failed` is `[]` when only `retired` follows. */\nfunction stateEntry({ hold, members, failed, retired }: StateEntry): string {\n\tconst pairs = members.map(({ member, ops }) => `[${member},${partText(ops)}]`).join(\",\");\n\tif (retired.length === 0) return `[${hold},[${pairs}]${failedField(failed)}]`;\n\treturn `[${hold},[${pairs}],${json(failed.map(({ member, error }) => [member, error]))},${json(retired)}]`;\n}\n\n/** The failures as an entry's optional last field: left out when there are none. */\nfunction failedField(failed: readonly FailedMember[]): string {\n\treturn failed.length === 0 ? \"\" : `,${json(failed.map(({ member, error }) => [member, error]))}`;\n}\n\n/**\n * A tuple (its closed JSON `head`) ending in a payload part; one marked as carrying bytes adds the segments' lengths\n * as the last field.\n */\nfunction withPayload(head: string, part: Part | undefined, segments: readonly Uint8Array[] | undefined): string {\n\tif (part === undefined) return head;\n\tconst prefix = `${head.slice(0, -1)},${partText(part)}`;\n\tif (segments === undefined) return `${prefix}]`;\n\treturn `${prefix},${json(segments.map((segment) => segment.byteLength))}]`;\n}\n\n/**\n * A message from its tuple: the tag and arity checked, lists of pairs checked as lists, parts written back as text;\n * the field types are the message schema's to check. `rest` holds the segments, which only a payload marked as\n * carrying bytes may have.\n */\nfunction fromTuple(fields: unknown[], rest: Uint8Array): Message {\n\tif (fields[0] !== \"@\") return fromFields(fields, rest);\n\tconst inner = fields.length === 3 ? list(fields[2]) : [];\n\tif (inner[0] === \"@\" || inner.length === 0) throw new Error(\"text: an origin wraps one message\");\n\tconst message = fromFields(inner, rest);\n\t// A fresh object; the message schema checks the origin and refuses one on a kind without it.\n\t(message as { origin?: unknown }).origin = fields[1];\n\treturn message;\n}\n\n/** A message from its own fields' tuple (see `fromTuple`). */\nfunction fromFields(fields: unknown[], rest: Uint8Array): Message {\n\tconst [tag, ...f] = fields;\n\tconst arity = (...allowed: number[]): void => {\n\t\tif (!allowed.includes(f.length)) throw new Error(`text: a \"${String(tag)}\" message with ${f.length} fields`);\n\t};\n\tif (tag !== \"c\" && tag !== \"r\" && rest.byteLength > 0) {\n\t\tthrow new Error(\"text: byte segments without a payload that carries them\");\n\t}\n\t// The message schema establishes the types of the fields taken here.\n\tconst field = <T>(index: number): T => f[index] as T;\n\tswitch (tag) {\n\t\tcase \"h\":\n\t\t\tarity(3);\n\t\t\treturn { kind: \"hello\", protocol: field(0), incarnation: field(1), calls: field(2) };\n\t\tcase \"H\": {\n\t\t\tarity(6, 7, 8, 9, 10, 11);\n\t\t\tconst address = list(f[5]);\n\t\t\tif (address.length !== 2) throw new Error(\"text: an address is a pair\");\n\t\t\tconst [principal, incarnation, chain, limit, trace] = [6, 7, 8, 9, 10].map((index) => f[index] ?? null);\n\t\t\treturn {\n\t\t\t\tkind: \"hold\",\n\t\t\t\thold: field(0),\n\t\t\t\ttype: field(1),\n\t\t\t\tversion: field(2),\n\t\t\t\tfingerprint: field(3),\n\t\t\t\tparams: textPart(f[4]),\n\t\t\t\taddress: { kind: address[0] as string, params: address[1] },\n\t\t\t\t...(principal === null ? {} : { principal: principal as { kind: string } }),\n\t\t\t\t...(incarnation === null ? {} : { incarnation: incarnation as string }),\n\t\t\t\t...(chain === null ? {} : { chain: chain as string[] }),\n\t\t\t\t...(limit === null ? {} : { limit: limit as number }),\n\t\t\t\t...(trace === null ? {} : { trace: trace as Record<string, string> }),\n\t\t\t};\n\t\t}\n\t\tcase \"R\":\n\t\t\tarity(1);\n\t\t\treturn { kind: \"release\", hold: field(0) };\n\t\tcase \"c\": {\n\t\t\tarity(3, 4, 5, 6, 7);\n\t\t\tconst call = {\n\t\t\t\tkind: \"call\",\n\t\t\t\tcall: field<number>(0),\n\t\t\t\thold: field<number>(1),\n\t\t\t\tmethod: field<number>(2),\n\t\t\t} as const;\n\t\t\tif (f.length < 6) return { ...call, ...payload(\"args\", f.slice(3), rest) };\n\t\t\t// With a trace or the old-work flag: the payload's fields positional, null when absent.\n\t\t\tconst fields = f[3] === null ? [] : f[4] === null ? [f[3]] : [f[3], f[4]];\n\t\t\t// The message schema checks the carrier and the flag (`true` only).\n\t\t\tconst trace = f[5] === null ? {} : { trace: f[5] as Record<string, string> };\n\t\t\tconst old = f.length === 7 ? { old: f[6] as true } : {};\n\t\t\treturn { ...call, ...payload(\"args\", fields, rest), ...trace, ...old };\n\t\t}\n\t\tcase \"x\":\n\t\t\tarity(1);\n\t\t\treturn { kind: \"abort\", call: field(0) };\n\t\tcase \"b\":\n\t\t\tarity(1);\n\t\t\treturn {\n\t\t\t\tkind: \"bound\",\n\t\t\t\tholds: list(f[0]).map((entry): BoundEntry => {\n\t\t\t\t\tconst fields = list(entry);\n\t\t\t\t\tif (fields.length !== 3 && fields.length !== 4) {\n\t\t\t\t\t\tthrow new Error(`text: a bound entry with ${fields.length} fields`);\n\t\t\t\t\t}\n\t\t\t\t\tconst [hold, variant, members, failed] = fields;\n\t\t\t\t\treturn {\n\t\t\t\t\t\thold: hold as number,\n\t\t\t\t\t\tvariant: variant as number,\n\t\t\t\t\t\tmembers: pairs(members).map(([member, value]) => ({\n\t\t\t\t\t\t\tmember: member as number,\n\t\t\t\t\t\t\tvalue: textPart(value),\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tfailed: failures(failed),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t};\n\t\tcase \"s\":\n\t\t\tarity(1);\n\t\t\treturn {\n\t\t\t\tkind: \"state\",\n\t\t\t\tholds: list(f[0]).map((entry): StateEntry => {\n\t\t\t\t\tconst fields = list(entry);\n\t\t\t\t\tif (fields.length < 2 || fields.length > 4) {\n\t\t\t\t\t\tthrow new Error(`text: a state entry with ${fields.length} fields`);\n\t\t\t\t\t}\n\t\t\t\t\tconst [hold, members, failed, retired] = fields;\n\t\t\t\t\treturn {\n\t\t\t\t\t\thold: hold as number,\n\t\t\t\t\t\tmembers: pairs(members).map(([member, ops]) => ({ member: member as number, ops: textPart(ops) })),\n\t\t\t\t\t\tfailed: failures(failed),\n\t\t\t\t\t\t// The message schema checks each index.\n\t\t\t\t\t\tretired: retired === undefined ? NO_RETIRED : (list(retired) as number[]),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t};\n\t\tcase \"f\": {\n\t\t\tarity(3, 4);\n\t\t\tconst causeKind = CAUSE_KINDS.find((each) => each[0] === f[1]);\n\t\t\tif (causeKind === undefined) throw new Error(\"text: an unknown failure kind\");\n\t\t\t// The schema check after decoding establishes the wire error.\n\t\t\tconst error = f[2] as Extract<Message, { kind: \"error\" }>[\"error\"];\n\t\t\tconst cause = { kind: causeKind, error };\n\t\t\treturn { kind: \"failed\", hold: field(0), cause, ...(f.length === 4 ? { retryIn: field<number>(3) } : {}) };\n\t\t}\n\t\tcase \"r\":\n\t\t\tarity(1, 2, 3);\n\t\t\treturn { kind: \"result\", call: field(0), ...payload(\"value\", f.slice(1), rest) };\n\t\tcase \"e\":\n\t\t\tarity(2);\n\t\t\treturn { kind: \"error\", call: field(0), error: field(1) };\n\t\tcase \"g\":\n\t\t\tarity(2);\n\t\t\treturn { kind: \"gone\", hold: field(0), error: field(1) };\n\t\tcase \"V\":\n\t\t\tarity(1);\n\t\t\treturn { kind: \"revoke\", revocation: f[0] };\n\t\tcase \"T\":\n\t\t\tarity(2);\n\t\t\treturn { kind: \"retry\", hold: field(0), hops: field(1) };\n\t\tcase \"l\":\n\t\t\tarity(1);\n\t\t\treturn { kind: \"loading\", hold: field(0) };\n\t\tcase \"a\":\n\t\t\tarity(0);\n\t\t\treturn { kind: \"ack\" };\n\t\tcase \"C\":\n\t\t\tarity(0);\n\t\t\t// Its origin is the wrapper's; 0 without one, which the message schema refuses.\n\t\t\treturn { kind: \"closed\", origin: 0 };\n\t\tcase \"p\":\n\t\t\tarity(0);\n\t\t\treturn { kind: \"ping\" };\n\t\tcase \"P\":\n\t\t\tarity(0);\n\t\t\treturn { kind: \"pong\" };\n\t\tdefault:\n\t\t\tthrow new Error(\"text: an unknown kind\");\n\t}\n}\n\n/**\n * A payload part from its fields: none, the value, or the value and its segments' lengths (marked as carrying bytes,\n * the segments views of `rest`).\n */\nfunction payload<K extends string>(\n\tkey: K,\n\tfields: unknown[],\n\trest: Uint8Array,\n): { [P in K]?: Part } & { segments?: Uint8Array[] } {\n\tif (fields.length < 2) {\n\t\tif (rest.byteLength > 0) throw new Error(\"text: byte segments without a payload that carries them\");\n\t\treturn (fields.length === 0 ? {} : { [key]: textPart(fields[0]) }) as { [P in K]?: Part };\n\t}\n\tconst lengths = list(fields[1]);\n\tlet offset = 0;\n\tconst segments = lengths.map((length) => {\n\t\tif (!Number.isSafeInteger(length) || (length as number) < 0) throw new Error(\"text: a segment length\");\n\t\tconst segment = rest.subarray(offset, offset + (length as number));\n\t\toffset += length as number;\n\t\treturn segment;\n\t});\n\tif (offset !== rest.byteLength) throw new Error(\"text: the segments do not fill the message\");\n\treturn { [key]: textPart(fields[0]), segments } as { [P in K]?: Part } & { segments: Uint8Array[] };\n}\n\nfunction list(value: unknown): unknown[] {\n\tif (!Array.isArray(value)) throw new Error(\"text: expected a list\");\n\treturn value;\n}\n\n/** A list of `[index, value]` pairs. */\nfunction pairs(value: unknown): [unknown, unknown][] {\n\treturn list(value).map((pair) => {\n\t\tconst entry = list(pair);\n\t\tif (entry.length !== 2) throw new Error(\"text: expected a pair\");\n\t\treturn entry as [unknown, unknown];\n\t});\n}\n\n/** The optional failures field; absent means none. */\nfunction failures(value: unknown): FailedMember[] {\n\tif (value === undefined) return [];\n\t// The message schema checks each error's shape.\n\treturn pairs(value).map(([member, error]) => ({ member, error }) as FailedMember);\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type Part } from "./part.ts";
|
|
2
|
+
/** A JSON part at its origin: the value's JSON text (state and params are JSON only). */
|
|
3
|
+
export declare function jsonPart(value: unknown): string;
|
|
4
|
+
/**
|
|
5
|
+
* A payload part at its origin (arguments, a result): its JSON and, when `bytes` (its method's schema has a `bytes()`
|
|
6
|
+
* leaf), its byte segments: each `Uint8Array` leaf becomes a segment, and an own key `$bytes`, reserved there, fails
|
|
7
|
+
* `invalid/args`; otherwise plain JSON, where `$bytes` is ordinary data. `undefined` (a handler returning nothing) is
|
|
8
|
+
* `null`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function payloadPart(value: unknown, bytes: boolean): {
|
|
11
|
+
readonly json: string;
|
|
12
|
+
readonly segments: Uint8Array[] | undefined;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Parses a part's JSON where it is owned, once opened (`openPart`). Throws on a part that is no strict UTF-8 JSON (a
|
|
16
|
+
* protocol error).
|
|
17
|
+
*/
|
|
18
|
+
export declare function parsePart(json: string | Uint8Array): unknown;
|
|
19
|
+
/**
|
|
20
|
+
* Parses a payload part's JSON where it is owned, once opened, its `{"$bytes": i}` references resolved to views of
|
|
21
|
+
* `segments` when it has them. Throws on a malformed part (a protocol error).
|
|
22
|
+
*/
|
|
23
|
+
export declare function parsePayload(json: string | Uint8Array, segments: readonly Uint8Array[] | undefined): unknown;
|
|
24
|
+
/**
|
|
25
|
+
* A part as the text codec splices it into its tuple, tagged so that no JSON value is reserved: `[0, json]` for a plain
|
|
26
|
+
* part, `[1, base64]` for a deflated one. Throws on invalid UTF-8.
|
|
27
|
+
*/
|
|
28
|
+
export declare function partText(part: Part): string;
|
|
29
|
+
/** A part from its place in a text tuple (`partText` reversed). Throws on anything else (a protocol error). */
|
|
30
|
+
export declare function textPart(value: unknown): Part;
|
|
31
|
+
/** Strict UTF-8 JSON. Throws on anything else (a protocol error). */
|
|
32
|
+
export declare function parseJson(bytes: Uint8Array): unknown;
|
|
33
|
+
/** Strict UTF-8 text. Throws on invalid UTF-8 (a protocol error). */
|
|
34
|
+
export declare function readUtf8(bytes: Uint8Array): string;
|
|
35
|
+
/**
|
|
36
|
+
* Replaces every `{"$bytes": i}` in a freshly decoded payload with segment `i`, in place. Throws on a malformed
|
|
37
|
+
* reference (a protocol error).
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveSegments(value: unknown, segments: readonly Uint8Array[]): unknown;
|
|
40
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/link/values.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAKpD,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;CAAE,CAiBxE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,GAAG,OAAO,CAG5G;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAG3C;AAED,+GAA+G;AAC/G,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAO7C;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEpD;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAmBxF"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// Values in messages (§3 values, §22): JSON text, and for payloads marked as carrying bytes raw byte segments, a
|
|
2
|
+
// `Uint8Array` leaf written as `{"$bytes": i}` and read back as a view of the received message (no copy, never
|
|
3
|
+
// base64); a part as the text codec splices it. Shared by the codecs.
|
|
4
|
+
import { invalid } from "../data/internal.js";
|
|
5
|
+
import { DeflatedPart } from "./part.js";
|
|
6
|
+
/** Strict, and a leading U+FEFF is data, not a byte order mark to strip. */
|
|
7
|
+
const STRICT_UTF8 = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
|
|
8
|
+
/** A JSON part at its origin: the value's JSON text (state and params are JSON only). */
|
|
9
|
+
export function jsonPart(value) {
|
|
10
|
+
return JSON.stringify(value) ?? "null";
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A payload part at its origin (arguments, a result): its JSON and, when `bytes` (its method's schema has a `bytes()`
|
|
14
|
+
* leaf), its byte segments: each `Uint8Array` leaf becomes a segment, and an own key `$bytes`, reserved there, fails
|
|
15
|
+
* `invalid/args`; otherwise plain JSON, where `$bytes` is ordinary data. `undefined` (a handler returning nothing) is
|
|
16
|
+
* `null`.
|
|
17
|
+
*/
|
|
18
|
+
export function payloadPart(value, bytes) {
|
|
19
|
+
if (!bytes)
|
|
20
|
+
return { json: jsonPart(value), segments: undefined };
|
|
21
|
+
const segments = [];
|
|
22
|
+
const json = JSON.stringify(value, function (key, leaf) {
|
|
23
|
+
if (typeof leaf !== "object" || leaf === null)
|
|
24
|
+
return leaf;
|
|
25
|
+
// The holder's own value: a `Uint8Array` subclass with a `toJSON` (Node's `Buffer`) reaches the replacer as
|
|
26
|
+
// what its `toJSON` made (a Buffer pays that copy: 3.6 ms per MiB; a plain `Uint8Array` none).
|
|
27
|
+
const original = this[key];
|
|
28
|
+
if (original instanceof Uint8Array) {
|
|
29
|
+
segments.push(original);
|
|
30
|
+
return { $bytes: segments.length - 1 };
|
|
31
|
+
}
|
|
32
|
+
// The replacer does not see the markers it returns, only their fields.
|
|
33
|
+
if (Object.hasOwn(leaf, "$bytes"))
|
|
34
|
+
throw invalid("args", '"$bytes" is reserved in values crossing a link');
|
|
35
|
+
return leaf;
|
|
36
|
+
});
|
|
37
|
+
return { json: json ?? "null", segments };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parses a part's JSON where it is owned, once opened (`openPart`). Throws on a part that is no strict UTF-8 JSON (a
|
|
41
|
+
* protocol error).
|
|
42
|
+
*/
|
|
43
|
+
export function parsePart(json) {
|
|
44
|
+
return typeof json === "string" ? JSON.parse(json) : parseJson(json);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parses a payload part's JSON where it is owned, once opened, its `{"$bytes": i}` references resolved to views of
|
|
48
|
+
* `segments` when it has them. Throws on a malformed part (a protocol error).
|
|
49
|
+
*/
|
|
50
|
+
export function parsePayload(json, segments) {
|
|
51
|
+
const value = parsePart(json);
|
|
52
|
+
return segments === undefined ? value : resolveSegments(value, segments);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A part as the text codec splices it into its tuple, tagged so that no JSON value is reserved: `[0, json]` for a plain
|
|
56
|
+
* part, `[1, base64]` for a deflated one. Throws on invalid UTF-8.
|
|
57
|
+
*/
|
|
58
|
+
export function partText(part) {
|
|
59
|
+
if (part instanceof DeflatedPart)
|
|
60
|
+
return `[1,"${base64(part.bytes)}"]`;
|
|
61
|
+
return `[0,${typeof part === "string" ? part : readUtf8(part)}]`;
|
|
62
|
+
}
|
|
63
|
+
/** A part from its place in a text tuple (`partText` reversed). Throws on anything else (a protocol error). */
|
|
64
|
+
export function textPart(value) {
|
|
65
|
+
// Trust boundary: fresh JSON from the text decoder.
|
|
66
|
+
if (!Array.isArray(value) || value.length !== 2)
|
|
67
|
+
throw new Error("text: a part is no [codec, payload] pair");
|
|
68
|
+
const [codec, payload] = value;
|
|
69
|
+
if (codec === 0)
|
|
70
|
+
return JSON.stringify(payload);
|
|
71
|
+
if (codec === 1 && typeof payload === "string")
|
|
72
|
+
return new DeflatedPart(fromBase64(payload));
|
|
73
|
+
throw new Error("text: a part of an unknown codec");
|
|
74
|
+
}
|
|
75
|
+
/** Strict UTF-8 JSON. Throws on anything else (a protocol error). */
|
|
76
|
+
export function parseJson(bytes) {
|
|
77
|
+
return JSON.parse(STRICT_UTF8.decode(bytes));
|
|
78
|
+
}
|
|
79
|
+
/** Strict UTF-8 text. Throws on invalid UTF-8 (a protocol error). */
|
|
80
|
+
export function readUtf8(bytes) {
|
|
81
|
+
return STRICT_UTF8.decode(bytes);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Replaces every `{"$bytes": i}` in a freshly decoded payload with segment `i`, in place. Throws on a malformed
|
|
85
|
+
* reference (a protocol error).
|
|
86
|
+
*/
|
|
87
|
+
export function resolveSegments(value, segments) {
|
|
88
|
+
if (typeof value !== "object" || value === null)
|
|
89
|
+
return value;
|
|
90
|
+
// Trust boundary: fresh JSON from the link, owned by this decode.
|
|
91
|
+
const node = value;
|
|
92
|
+
if (!Array.isArray(node) && Object.hasOwn(node, "$bytes")) {
|
|
93
|
+
const index = node.$bytes;
|
|
94
|
+
if (Object.keys(node).length !== 1 || typeof index !== "number" || segments[index] === undefined) {
|
|
95
|
+
throw new Error("payload: a malformed byte segment reference");
|
|
96
|
+
}
|
|
97
|
+
return segments[index];
|
|
98
|
+
}
|
|
99
|
+
for (const key of Object.keys(node)) {
|
|
100
|
+
const child = node[key];
|
|
101
|
+
const resolved = resolveSegments(child, segments);
|
|
102
|
+
// Defined, not assigned: a key `__proto__` is an own property of parsed JSON.
|
|
103
|
+
if (resolved !== child)
|
|
104
|
+
Object.defineProperty(node, key, { value: resolved, writable: true, enumerable: true, configurable: true });
|
|
105
|
+
}
|
|
106
|
+
return node;
|
|
107
|
+
}
|
|
108
|
+
/** Bytes as base64 (the text codec's deflated parts; portable: `btoa` over a binary string, in chunks). */
|
|
109
|
+
function base64(bytes) {
|
|
110
|
+
let binary = "";
|
|
111
|
+
for (let offset = 0; offset < bytes.byteLength; offset += 0x8000) {
|
|
112
|
+
binary += String.fromCharCode(...bytes.subarray(offset, offset + 0x8000));
|
|
113
|
+
}
|
|
114
|
+
return btoa(binary);
|
|
115
|
+
}
|
|
116
|
+
/** Bytes from base64. Throws on text that is no base64 (a protocol error). */
|
|
117
|
+
function fromBase64(text) {
|
|
118
|
+
const binary = atob(text);
|
|
119
|
+
return Uint8Array.from(binary, (char) => char.charCodeAt(0));
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/link/values.ts"],"names":[],"mappings":"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","sourcesContent":["// Values in messages (§3 values, §22): JSON text, and for payloads marked as carrying bytes raw byte segments, a\n// `Uint8Array` leaf written as `{\"$bytes\": i}` and read back as a view of the received message (no copy, never\n// base64); a part as the text codec splices it. Shared by the codecs.\n\nimport { invalid } from \"../data/internal.ts\";\nimport { DeflatedPart, type Part } from \"./part.ts\";\n\n/** Strict, and a leading U+FEFF is data, not a byte order mark to strip. */\nconst STRICT_UTF8 = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true });\n\n/** A JSON part at its origin: the value's JSON text (state and params are JSON only). */\nexport function jsonPart(value: unknown): string {\n\treturn JSON.stringify(value) ?? \"null\";\n}\n\n/**\n * A payload part at its origin (arguments, a result): its JSON and, when `bytes` (its method's schema has a `bytes()`\n * leaf), its byte segments: each `Uint8Array` leaf becomes a segment, and an own key `$bytes`, reserved there, fails\n * `invalid/args`; otherwise plain JSON, where `$bytes` is ordinary data. `undefined` (a handler returning nothing) is\n * `null`.\n */\nexport function payloadPart(\n\tvalue: unknown,\n\tbytes: boolean,\n): { readonly json: string; readonly segments: Uint8Array[] | undefined } {\n\tif (!bytes) return { json: jsonPart(value), segments: undefined };\n\tconst segments: Uint8Array[] = [];\n\tconst json = JSON.stringify(value, function (this: Record<string, unknown>, key: string, leaf: unknown) {\n\t\tif (typeof leaf !== \"object\" || leaf === null) return leaf;\n\t\t// The holder's own value: a `Uint8Array` subclass with a `toJSON` (Node's `Buffer`) reaches the replacer as\n\t\t// what its `toJSON` made (a Buffer pays that copy: 3.6 ms per MiB; a plain `Uint8Array` none).\n\t\tconst original = this[key];\n\t\tif (original instanceof Uint8Array) {\n\t\t\tsegments.push(original);\n\t\t\treturn { $bytes: segments.length - 1 };\n\t\t}\n\t\t// The replacer does not see the markers it returns, only their fields.\n\t\tif (Object.hasOwn(leaf, \"$bytes\")) throw invalid(\"args\", '\"$bytes\" is reserved in values crossing a link');\n\t\treturn leaf;\n\t});\n\treturn { json: json ?? \"null\", segments };\n}\n\n/**\n * Parses a part's JSON where it is owned, once opened (`openPart`). Throws on a part that is no strict UTF-8 JSON (a\n * protocol error).\n */\nexport function parsePart(json: string | Uint8Array): unknown {\n\treturn typeof json === \"string\" ? JSON.parse(json) : parseJson(json);\n}\n\n/**\n * Parses a payload part's JSON where it is owned, once opened, its `{\"$bytes\": i}` references resolved to views of\n * `segments` when it has them. Throws on a malformed part (a protocol error).\n */\nexport function parsePayload(json: string | Uint8Array, segments: readonly Uint8Array[] | undefined): unknown {\n\tconst value = parsePart(json);\n\treturn segments === undefined ? value : resolveSegments(value, segments);\n}\n\n/**\n * A part as the text codec splices it into its tuple, tagged so that no JSON value is reserved: `[0, json]` for a plain\n * part, `[1, base64]` for a deflated one. Throws on invalid UTF-8.\n */\nexport function partText(part: Part): string {\n\tif (part instanceof DeflatedPart) return `[1,\"${base64(part.bytes)}\"]`;\n\treturn `[0,${typeof part === \"string\" ? part : readUtf8(part)}]`;\n}\n\n/** A part from its place in a text tuple (`partText` reversed). Throws on anything else (a protocol error). */\nexport function textPart(value: unknown): Part {\n\t// Trust boundary: fresh JSON from the text decoder.\n\tif (!Array.isArray(value) || value.length !== 2) throw new Error(\"text: a part is no [codec, payload] pair\");\n\tconst [codec, payload] = value as [unknown, unknown];\n\tif (codec === 0) return JSON.stringify(payload);\n\tif (codec === 1 && typeof payload === \"string\") return new DeflatedPart(fromBase64(payload));\n\tthrow new Error(\"text: a part of an unknown codec\");\n}\n\n/** Strict UTF-8 JSON. Throws on anything else (a protocol error). */\nexport function parseJson(bytes: Uint8Array): unknown {\n\treturn JSON.parse(STRICT_UTF8.decode(bytes));\n}\n\n/** Strict UTF-8 text. Throws on invalid UTF-8 (a protocol error). */\nexport function readUtf8(bytes: Uint8Array): string {\n\treturn STRICT_UTF8.decode(bytes);\n}\n\n/**\n * Replaces every `{\"$bytes\": i}` in a freshly decoded payload with segment `i`, in place. Throws on a malformed\n * reference (a protocol error).\n */\nexport function resolveSegments(value: unknown, segments: readonly Uint8Array[]): unknown {\n\tif (typeof value !== \"object\" || value === null) return value;\n\t// Trust boundary: fresh JSON from the link, owned by this decode.\n\tconst node = value as Record<string, unknown>;\n\tif (!Array.isArray(node) && Object.hasOwn(node, \"$bytes\")) {\n\t\tconst index = node.$bytes;\n\t\tif (Object.keys(node).length !== 1 || typeof index !== \"number\" || segments[index] === undefined) {\n\t\t\tthrow new Error(\"payload: a malformed byte segment reference\");\n\t\t}\n\t\treturn segments[index];\n\t}\n\tfor (const key of Object.keys(node)) {\n\t\tconst child = node[key];\n\t\tconst resolved = resolveSegments(child, segments);\n\t\t// Defined, not assigned: a key `__proto__` is an own property of parsed JSON.\n\t\tif (resolved !== child)\n\t\t\tObject.defineProperty(node, key, { value: resolved, writable: true, enumerable: true, configurable: true });\n\t}\n\treturn node;\n}\n\n/** Bytes as base64 (the text codec's deflated parts; portable: `btoa` over a binary string, in chunks). */\nfunction base64(bytes: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (let offset = 0; offset < bytes.byteLength; offset += 0x8000) {\n\t\tbinary += String.fromCharCode(...bytes.subarray(offset, offset + 0x8000));\n\t}\n\treturn btoa(binary);\n}\n\n/** Bytes from base64. Throws on text that is no base64 (a protocol error). */\nfunction fromBase64(text: string): Uint8Array {\n\tconst binary = atob(text);\n\treturn Uint8Array.from(binary, (char) => char.charCodeAt(0));\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Link } from "./link.ts";
|
|
2
|
+
/** The part of a WebSocket a link uses (the browser's `WebSocket`, `ws`'s `WebSocket`). */
|
|
3
|
+
export interface WebSocketLike {
|
|
4
|
+
/** 0 connecting, 1 open, 2 closing, 3 closed. */
|
|
5
|
+
readonly readyState: number;
|
|
6
|
+
binaryType: string;
|
|
7
|
+
/** Typed as the browser's `WebSocket` takes bytes: on an `ArrayBuffer`, never shared memory. */
|
|
8
|
+
send(data: Uint8Array<ArrayBuffer>): void;
|
|
9
|
+
close(): void;
|
|
10
|
+
addEventListener(type: "open" | "close" | "error", listener: () => void): void;
|
|
11
|
+
addEventListener(type: "message", listener: (event: {
|
|
12
|
+
readonly data: unknown;
|
|
13
|
+
}) => void): void;
|
|
14
|
+
removeEventListener(type: "open" | "close" | "error", listener: () => void): void;
|
|
15
|
+
removeEventListener(type: "message", listener: (event: {
|
|
16
|
+
readonly data: unknown;
|
|
17
|
+
}) => void): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A link over `socket`, one binary frame per message (`binaryType = "arraybuffer"`). Messages sent while it connects
|
|
21
|
+
* wait for `open`; a socket closing or closed already gives a closed link; `close` and `error` close the link once, and
|
|
22
|
+
* so does a text frame (no message of this protocol). A frame above the transport's `maxPayload` closes the socket
|
|
23
|
+
* (code 1009), which closes the link.
|
|
24
|
+
*/
|
|
25
|
+
export declare function webSocketLink(socket: WebSocketLike): Link;
|
|
26
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/link/websocket.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,IAAI,EAAW,MAAM,WAAW,CAAC;AAE/C,2FAA2F;AAC3F,MAAM,WAAW,aAAa;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;IACd,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/E,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/F,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClF,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAClG;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEzD"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// WebSocket links (§3): a link over a WebSocket, the browser's or `ws` in Node, typed structurally; binary frames,
|
|
2
|
+
// messages sent while it still connects buffered until it opens.
|
|
3
|
+
import { LinkEnd } from "./link.js";
|
|
4
|
+
const CONNECTING = 0;
|
|
5
|
+
const OPEN = 1;
|
|
6
|
+
/**
|
|
7
|
+
* A link over `socket`, one binary frame per message (`binaryType = "arraybuffer"`). Messages sent while it connects
|
|
8
|
+
* wait for `open`; a socket closing or closed already gives a closed link; `close` and `error` close the link once, and
|
|
9
|
+
* so does a text frame (no message of this protocol). A frame above the transport's `maxPayload` closes the socket
|
|
10
|
+
* (code 1009), which closes the link.
|
|
11
|
+
*/
|
|
12
|
+
export function webSocketLink(socket) {
|
|
13
|
+
return new WebSocketLink(socket);
|
|
14
|
+
}
|
|
15
|
+
class WebSocketLink extends LinkEnd {
|
|
16
|
+
/** The socket while the link is open. */
|
|
17
|
+
#socket;
|
|
18
|
+
/** Messages sent while the socket connects; `undefined` once it is open. */
|
|
19
|
+
#connecting;
|
|
20
|
+
#onOpen = () => {
|
|
21
|
+
const queued = this.#connecting ?? [];
|
|
22
|
+
this.#connecting = undefined;
|
|
23
|
+
for (const message of queued)
|
|
24
|
+
this.send(message);
|
|
25
|
+
};
|
|
26
|
+
#onMessage = (event) => {
|
|
27
|
+
if (event.data instanceof ArrayBuffer)
|
|
28
|
+
this.deliver(new Uint8Array(event.data));
|
|
29
|
+
else
|
|
30
|
+
this.close();
|
|
31
|
+
};
|
|
32
|
+
#onError = () => this.#end();
|
|
33
|
+
constructor(socket) {
|
|
34
|
+
super();
|
|
35
|
+
if (socket.readyState !== CONNECTING && socket.readyState !== OPEN) {
|
|
36
|
+
this.ended();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.#socket = socket;
|
|
40
|
+
socket.binaryType = "arraybuffer";
|
|
41
|
+
if (socket.readyState === CONNECTING) {
|
|
42
|
+
this.#connecting = [];
|
|
43
|
+
socket.addEventListener("open", this.#onOpen);
|
|
44
|
+
}
|
|
45
|
+
socket.addEventListener("message", this.#onMessage);
|
|
46
|
+
// `error` and `close` stay handled until the socket's own close, after this end closed: `ws` emits an `error`
|
|
47
|
+
// for a socket closed while it connects, and an unhandled one would end the process.
|
|
48
|
+
const onClose = () => {
|
|
49
|
+
socket.removeEventListener("close", onClose);
|
|
50
|
+
socket.removeEventListener("error", this.#onError);
|
|
51
|
+
this.#end();
|
|
52
|
+
};
|
|
53
|
+
socket.addEventListener("close", onClose);
|
|
54
|
+
socket.addEventListener("error", this.#onError);
|
|
55
|
+
}
|
|
56
|
+
send(message) {
|
|
57
|
+
const socket = this.#socket;
|
|
58
|
+
if (socket === undefined)
|
|
59
|
+
return;
|
|
60
|
+
if (this.#connecting !== undefined) {
|
|
61
|
+
this.#connecting.push(message);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
// A link's messages are codec output or received frames, both on plain `ArrayBuffer`s.
|
|
66
|
+
socket.send(message);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
this.close();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
close() {
|
|
73
|
+
const socket = this.#socket;
|
|
74
|
+
if (socket === undefined)
|
|
75
|
+
return;
|
|
76
|
+
this.#end();
|
|
77
|
+
socket.close();
|
|
78
|
+
}
|
|
79
|
+
/** Stops listening for frames, drops what waits to be sent and closes this end. */
|
|
80
|
+
#end() {
|
|
81
|
+
const socket = this.#socket;
|
|
82
|
+
if (socket === undefined)
|
|
83
|
+
return;
|
|
84
|
+
this.#socket = undefined;
|
|
85
|
+
this.#connecting = undefined;
|
|
86
|
+
socket.removeEventListener("open", this.#onOpen);
|
|
87
|
+
socket.removeEventListener("message", this.#onMessage);
|
|
88
|
+
this.ended();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/link/websocket.ts"],"names":[],"mappings":"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","sourcesContent":["// WebSocket links (§3): a link over a WebSocket, the browser's or `ws` in Node, typed structurally; binary frames,\n// messages sent while it still connects buffered until it opens.\n\nimport { type Link, LinkEnd } from \"./link.ts\";\n\n/** The part of a WebSocket a link uses (the browser's `WebSocket`, `ws`'s `WebSocket`). */\nexport interface WebSocketLike {\n\t/** 0 connecting, 1 open, 2 closing, 3 closed. */\n\treadonly readyState: number;\n\tbinaryType: string;\n\t/** Typed as the browser's `WebSocket` takes bytes: on an `ArrayBuffer`, never shared memory. */\n\tsend(data: Uint8Array<ArrayBuffer>): void;\n\tclose(): void;\n\taddEventListener(type: \"open\" | \"close\" | \"error\", listener: () => void): void;\n\taddEventListener(type: \"message\", listener: (event: { readonly data: unknown }) => void): void;\n\tremoveEventListener(type: \"open\" | \"close\" | \"error\", listener: () => void): void;\n\tremoveEventListener(type: \"message\", listener: (event: { readonly data: unknown }) => void): void;\n}\n\nconst CONNECTING = 0;\n\nconst OPEN = 1;\n\n/**\n * A link over `socket`, one binary frame per message (`binaryType = \"arraybuffer\"`). Messages sent while it connects\n * wait for `open`; a socket closing or closed already gives a closed link; `close` and `error` close the link once, and\n * so does a text frame (no message of this protocol). A frame above the transport's `maxPayload` closes the socket\n * (code 1009), which closes the link.\n */\nexport function webSocketLink(socket: WebSocketLike): Link {\n\treturn new WebSocketLink(socket);\n}\n\nclass WebSocketLink extends LinkEnd {\n\t/** The socket while the link is open. */\n\t#socket: WebSocketLike | undefined;\n\t/** Messages sent while the socket connects; `undefined` once it is open. */\n\t#connecting: Uint8Array[] | undefined;\n\treadonly #onOpen = (): void => {\n\t\tconst queued = this.#connecting ?? [];\n\t\tthis.#connecting = undefined;\n\t\tfor (const message of queued) this.send(message);\n\t};\n\treadonly #onMessage = (event: { readonly data: unknown }): void => {\n\t\tif (event.data instanceof ArrayBuffer) this.deliver(new Uint8Array(event.data));\n\t\telse this.close();\n\t};\n\treadonly #onError = (): void => this.#end();\n\n\tconstructor(socket: WebSocketLike) {\n\t\tsuper();\n\t\tif (socket.readyState !== CONNECTING && socket.readyState !== OPEN) {\n\t\t\tthis.ended();\n\t\t\treturn;\n\t\t}\n\t\tthis.#socket = socket;\n\t\tsocket.binaryType = \"arraybuffer\";\n\t\tif (socket.readyState === CONNECTING) {\n\t\t\tthis.#connecting = [];\n\t\t\tsocket.addEventListener(\"open\", this.#onOpen);\n\t\t}\n\t\tsocket.addEventListener(\"message\", this.#onMessage);\n\t\t// `error` and `close` stay handled until the socket's own close, after this end closed: `ws` emits an `error`\n\t\t// for a socket closed while it connects, and an unhandled one would end the process.\n\t\tconst onClose = (): void => {\n\t\t\tsocket.removeEventListener(\"close\", onClose);\n\t\t\tsocket.removeEventListener(\"error\", this.#onError);\n\t\t\tthis.#end();\n\t\t};\n\t\tsocket.addEventListener(\"close\", onClose);\n\t\tsocket.addEventListener(\"error\", this.#onError);\n\t}\n\n\tsend(message: Uint8Array): void {\n\t\tconst socket = this.#socket;\n\t\tif (socket === undefined) return;\n\t\tif (this.#connecting !== undefined) {\n\t\t\tthis.#connecting.push(message);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\t// A link's messages are codec output or received frames, both on plain `ArrayBuffer`s.\n\t\t\tsocket.send(message as Uint8Array<ArrayBuffer>);\n\t\t} catch {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tconst socket = this.#socket;\n\t\tif (socket === undefined) return;\n\t\tthis.#end();\n\t\tsocket.close();\n\t}\n\n\t/** Stops listening for frames, drops what waits to be sent and closes this end. */\n\t#end(): void {\n\t\tconst socket = this.#socket;\n\t\tif (socket === undefined) return;\n\t\tthis.#socket = undefined;\n\t\tthis.#connecting = undefined;\n\t\tsocket.removeEventListener(\"open\", this.#onOpen);\n\t\tsocket.removeEventListener(\"message\", this.#onMessage);\n\t\tthis.ended();\n\t}\n}\n"]}
|