@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,143 @@
|
|
|
1
|
+
/** Pending ops past which only "replace with the current value" stays pending. */
|
|
2
|
+
export const MAX_PENDING_OPS = 10_000;
|
|
3
|
+
const EMPTY = { kind: "empty" };
|
|
4
|
+
const REPLACE = { kind: "replace" };
|
|
5
|
+
const NO_OPS = { kind: "ops", ops: [] };
|
|
6
|
+
const REPLACE_TAKE = { kind: "replace" };
|
|
7
|
+
/**
|
|
8
|
+
* Pending ops of one state for one consumer, in order and raw (never encoded while they wait). `r` drops everything
|
|
9
|
+
* before it. A leaf op merges into the last pending leaf op on the same path (`a` + `a` joined, `s` replaces `s` or `a`,
|
|
10
|
+
* `a` after a string `s` appends into it); any other op clears the leaf index. Leaf ops on different paths commute,
|
|
11
|
+
* except after an ancestor primitive `s`, after which the descendant cannot be written until a structural op clears the
|
|
12
|
+
* index. Past `MAX_PENDING_OPS` only "replace with the current value" stays pending.
|
|
13
|
+
*
|
|
14
|
+
* Ops are only those of Delta's tracker, `diffRevisions()` and `appendText()`; received op arrays and tuples are never
|
|
15
|
+
* mutated (they feed other consumers too), a merge makes a new tuple.
|
|
16
|
+
*/
|
|
17
|
+
export class PendingOps {
|
|
18
|
+
#state = EMPTY;
|
|
19
|
+
/** Queue the ops of one commit. */
|
|
20
|
+
push(ops) {
|
|
21
|
+
if (ops.length === 0)
|
|
22
|
+
return;
|
|
23
|
+
const state = this.#state;
|
|
24
|
+
// A batch that starts with `r` (the tracker's and `diffRevisions()`'s only place for it) drops everything
|
|
25
|
+
// pending, also an overflow, and is kept as received.
|
|
26
|
+
if (ops[0][0] === "r") {
|
|
27
|
+
this.#state = { kind: "batch", ops };
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
switch (state.kind) {
|
|
31
|
+
case "empty":
|
|
32
|
+
this.#state = { kind: "batch", ops };
|
|
33
|
+
return;
|
|
34
|
+
case "batch": {
|
|
35
|
+
const folding = { kind: "folding", ops: [], leaves: new Map() };
|
|
36
|
+
this.#state = folding;
|
|
37
|
+
if (this.#fold(state.ops, folding))
|
|
38
|
+
this.#fold(ops, folding);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
case "folding":
|
|
42
|
+
this.#fold(ops, state);
|
|
43
|
+
return;
|
|
44
|
+
case "replace":
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Pending ops after folding; 1 once overflowed (the replacement the owner sends). One batch is counted as received,
|
|
50
|
+
* so a single commit larger than `MAX_PENDING_OPS` counts in full until a second one arrives and overflows.
|
|
51
|
+
*/
|
|
52
|
+
get size() {
|
|
53
|
+
const state = this.#state;
|
|
54
|
+
if (state.kind === "empty")
|
|
55
|
+
return 0;
|
|
56
|
+
return state.kind === "replace" ? 1 : state.ops.length;
|
|
57
|
+
}
|
|
58
|
+
/** Hand over everything pending and start empty. */
|
|
59
|
+
take() {
|
|
60
|
+
const state = this.#state;
|
|
61
|
+
this.#state = EMPTY;
|
|
62
|
+
switch (state.kind) {
|
|
63
|
+
case "empty":
|
|
64
|
+
return NO_OPS;
|
|
65
|
+
case "batch":
|
|
66
|
+
case "folding":
|
|
67
|
+
return { kind: "ops", ops: state.ops };
|
|
68
|
+
case "replace":
|
|
69
|
+
return REPLACE_TAKE;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Fold `ops` into `folding`; false once the queue overflowed into `replace`. */
|
|
73
|
+
#fold(ops, folding) {
|
|
74
|
+
for (const op of ops) {
|
|
75
|
+
switch (op[0]) {
|
|
76
|
+
case "r":
|
|
77
|
+
folding.ops.length = 0;
|
|
78
|
+
folding.leaves.clear();
|
|
79
|
+
break;
|
|
80
|
+
case "a":
|
|
81
|
+
if (mergeLeaf(op, folding))
|
|
82
|
+
continue;
|
|
83
|
+
break;
|
|
84
|
+
case "s":
|
|
85
|
+
if (isPrimitive(op[2])) {
|
|
86
|
+
if (mergeLeaf(op, folding))
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
else if (folding.leaves.size > 0)
|
|
90
|
+
folding.leaves.clear();
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
if (folding.leaves.size > 0)
|
|
94
|
+
folding.leaves.clear();
|
|
95
|
+
}
|
|
96
|
+
folding.ops.push(op);
|
|
97
|
+
if (folding.ops.length > MAX_PENDING_OPS) {
|
|
98
|
+
this.#state = REPLACE;
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const isPrimitive = (value) => value === null || typeof value !== "object";
|
|
106
|
+
/**
|
|
107
|
+
* Merge the leaf op `op` into the last pending leaf op on its path, or index it as that op at the position it is about
|
|
108
|
+
* to be pushed to. True when merged.
|
|
109
|
+
*/
|
|
110
|
+
function mergeLeaf(op, folding) {
|
|
111
|
+
const key = pathKey(op[1]);
|
|
112
|
+
const at = folding.leaves.get(key);
|
|
113
|
+
if (at !== undefined) {
|
|
114
|
+
// The index points at leaf ops only.
|
|
115
|
+
const merged = merge(folding.ops[at], op);
|
|
116
|
+
if (merged !== undefined) {
|
|
117
|
+
folding.ops[at] = merged;
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
folding.leaves.set(key, folding.ops.length);
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* The key of a path in the leaf index. Injective, as merging two distinct paths would lose a write: `["a.b"]` and
|
|
126
|
+
* `["a", "b"]` are different keys. A number and its string (`1`, `"1"`) may share one: within one index lifetime a
|
|
127
|
+
* parent is either an array or an object, as changing it is a structural op that clears the index.
|
|
128
|
+
*/
|
|
129
|
+
function pathKey(path) {
|
|
130
|
+
return JSON.stringify(path);
|
|
131
|
+
}
|
|
132
|
+
/** `next` folded into `previous` (same path), or undefined when they do not fold. */
|
|
133
|
+
function merge(previous, next) {
|
|
134
|
+
if (next[0] === "s")
|
|
135
|
+
return next;
|
|
136
|
+
if (previous[0] === "a")
|
|
137
|
+
return ["a", previous[1], previous[2] + next[2]];
|
|
138
|
+
// Only a string set takes an append; the tracker never appends to another primitive.
|
|
139
|
+
if (typeof previous[2] === "string")
|
|
140
|
+
return ["s", previous[1], previous[2] + next[2]];
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=pending.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/delta/pending.ts"],"names":[],"mappings":"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","sourcesContent":["// The pending queue: the ops a slow consumer of one state has not taken yet, folded while they wait.\nimport type { JsonValue } from \"../json.ts\";\nimport type { NonEmptyPath, Op, Path } from \"./index.ts\";\n\n/**\n * What `PendingOps.take()` hands over: the pending ops, folded, or `replace` after an overflow, which the owner of the\n * queue turns into a root replacement with the current value.\n */\nexport type PendingTake = { readonly kind: \"ops\"; readonly ops: readonly Op[] } | { readonly kind: \"replace\" };\n\n/** Pending ops past which only \"replace with the current value\" stays pending. */\nexport const MAX_PENDING_OPS = 10_000;\n\n/** A leaf op: an append, or a set of a primitive. The leaf index points at these only. */\ntype LeafOp = readonly [\"a\", NonEmptyPath, string] | readonly [\"s\", NonEmptyPath, JsonValue];\n\ntype Folding = {\n\treadonly kind: \"folding\";\n\t/** Owned by the queue until `take()` hands it over; never one of the received op arrays. */\n\treadonly ops: Op[];\n\t/** Path key to the position of the last pending leaf op on that path. */\n\treadonly leaves: Map<string, number>;\n};\n\ntype State =\n\t| { readonly kind: \"empty\" }\n\t/** One batch, kept by reference: a consumer that keeps up never pays for folding. */\n\t| { readonly kind: \"batch\"; readonly ops: readonly Op[] }\n\t| Folding\n\t/** Overflowed: nothing more accumulates until `take()` or a batch that starts with `r`. */\n\t| { readonly kind: \"replace\" };\n\nconst EMPTY: State = { kind: \"empty\" };\n\nconst REPLACE: State = { kind: \"replace\" };\n\nconst NO_OPS: PendingTake = { kind: \"ops\", ops: [] };\n\nconst REPLACE_TAKE: PendingTake = { kind: \"replace\" };\n\n/**\n * Pending ops of one state for one consumer, in order and raw (never encoded while they wait). `r` drops everything\n * before it. A leaf op merges into the last pending leaf op on the same path (`a` + `a` joined, `s` replaces `s` or `a`,\n * `a` after a string `s` appends into it); any other op clears the leaf index. Leaf ops on different paths commute,\n * except after an ancestor primitive `s`, after which the descendant cannot be written until a structural op clears the\n * index. Past `MAX_PENDING_OPS` only \"replace with the current value\" stays pending.\n *\n * Ops are only those of Delta's tracker, `diffRevisions()` and `appendText()`; received op arrays and tuples are never\n * mutated (they feed other consumers too), a merge makes a new tuple.\n */\nexport class PendingOps {\n\t#state: State = EMPTY;\n\n\t/** Queue the ops of one commit. */\n\tpush(ops: readonly Op[]): void {\n\t\tif (ops.length === 0) return;\n\t\tconst state = this.#state;\n\t\t// A batch that starts with `r` (the tracker's and `diffRevisions()`'s only place for it) drops everything\n\t\t// pending, also an overflow, and is kept as received.\n\t\tif (ops[0]![0] === \"r\") {\n\t\t\tthis.#state = { kind: \"batch\", ops };\n\t\t\treturn;\n\t\t}\n\t\tswitch (state.kind) {\n\t\t\tcase \"empty\":\n\t\t\t\tthis.#state = { kind: \"batch\", ops };\n\t\t\t\treturn;\n\t\t\tcase \"batch\": {\n\t\t\t\tconst folding: Folding = { kind: \"folding\", ops: [], leaves: new Map() };\n\t\t\t\tthis.#state = folding;\n\t\t\t\tif (this.#fold(state.ops, folding)) this.#fold(ops, folding);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"folding\":\n\t\t\t\tthis.#fold(ops, state);\n\t\t\t\treturn;\n\t\t\tcase \"replace\":\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Pending ops after folding; 1 once overflowed (the replacement the owner sends). One batch is counted as received,\n\t * so a single commit larger than `MAX_PENDING_OPS` counts in full until a second one arrives and overflows.\n\t */\n\tget size(): number {\n\t\tconst state = this.#state;\n\t\tif (state.kind === \"empty\") return 0;\n\t\treturn state.kind === \"replace\" ? 1 : state.ops.length;\n\t}\n\n\t/** Hand over everything pending and start empty. */\n\ttake(): PendingTake {\n\t\tconst state = this.#state;\n\t\tthis.#state = EMPTY;\n\t\tswitch (state.kind) {\n\t\t\tcase \"empty\":\n\t\t\t\treturn NO_OPS;\n\t\t\tcase \"batch\":\n\t\t\tcase \"folding\":\n\t\t\t\treturn { kind: \"ops\", ops: state.ops };\n\t\t\tcase \"replace\":\n\t\t\t\treturn REPLACE_TAKE;\n\t\t}\n\t}\n\n\t/** Fold `ops` into `folding`; false once the queue overflowed into `replace`. */\n\t#fold(ops: readonly Op[], folding: Folding): boolean {\n\t\tfor (const op of ops) {\n\t\t\tswitch (op[0]) {\n\t\t\t\tcase \"r\":\n\t\t\t\t\tfolding.ops.length = 0;\n\t\t\t\t\tfolding.leaves.clear();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"a\":\n\t\t\t\t\tif (mergeLeaf(op, folding)) continue;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"s\":\n\t\t\t\t\tif (isPrimitive(op[2])) {\n\t\t\t\t\t\tif (mergeLeaf(op, folding)) continue;\n\t\t\t\t\t} else if (folding.leaves.size > 0) folding.leaves.clear();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (folding.leaves.size > 0) folding.leaves.clear();\n\t\t\t}\n\t\t\tfolding.ops.push(op);\n\t\t\tif (folding.ops.length > MAX_PENDING_OPS) {\n\t\t\t\tthis.#state = REPLACE;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n}\n\nconst isPrimitive = (value: JsonValue): boolean => value === null || typeof value !== \"object\";\n\n/**\n * Merge the leaf op `op` into the last pending leaf op on its path, or index it as that op at the position it is about\n * to be pushed to. True when merged.\n */\nfunction mergeLeaf(op: LeafOp, folding: Folding): boolean {\n\tconst key = pathKey(op[1]);\n\tconst at = folding.leaves.get(key);\n\tif (at !== undefined) {\n\t\t// The index points at leaf ops only.\n\t\tconst merged = merge(folding.ops[at] as LeafOp, op);\n\t\tif (merged !== undefined) {\n\t\t\tfolding.ops[at] = merged;\n\t\t\treturn true;\n\t\t}\n\t}\n\tfolding.leaves.set(key, folding.ops.length);\n\treturn false;\n}\n\n/**\n * The key of a path in the leaf index. Injective, as merging two distinct paths would lose a write: `[\"a.b\"]` and\n * `[\"a\", \"b\"]` are different keys. A number and its string (`1`, `\"1\"`) may share one: within one index lifetime a\n * parent is either an array or an object, as changing it is a structural op that clears the index.\n */\nfunction pathKey(path: Path): string {\n\treturn JSON.stringify(path);\n}\n\n/** `next` folded into `previous` (same path), or undefined when they do not fold. */\nfunction merge(previous: LeafOp, next: LeafOp): LeafOp | undefined {\n\tif (next[0] === \"s\") return next;\n\tif (previous[0] === \"a\") return [\"a\", previous[1], previous[2] + next[2]];\n\t// Only a string set takes an append; the tracker never appends to another primitive.\n\tif (typeof previous[2] === \"string\") return [\"s\", previous[1], previous[2] + next[2]];\n\treturn undefined;\n}\n"]}
|
package/dist/delta/tracker.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ import type { JsonValue } from "../json.ts";
|
|
|
2
2
|
import type { Draft } from "./draft.ts";
|
|
3
3
|
import { type Op } from "./index.ts";
|
|
4
4
|
export type { Draft, JsonValue, Op };
|
|
5
|
+
/** Keys of `T` whose value type is exactly `string`: required, and not a string literal type. */
|
|
6
|
+
export type StringKeys<T> = T extends readonly unknown[] ? never : {
|
|
7
|
+
[Key in keyof T]: string extends T[Key] ? (T[Key] extends string ? Key : never) : never;
|
|
8
|
+
}[keyof T];
|
|
5
9
|
export interface Prepared<T extends object> {
|
|
6
10
|
readonly base: T;
|
|
7
11
|
readonly value: T;
|
|
@@ -23,4 +27,12 @@ export interface Tracker<T extends object> {
|
|
|
23
27
|
}
|
|
24
28
|
/** Take immutable ownership of an alias-free strict-JSON root in O(1). */
|
|
25
29
|
export declare function track<T extends object>(initial: T): Tracker<T>;
|
|
30
|
+
/**
|
|
31
|
+
* Append `text` to the string at `draft[key]`, costing O(text.length). The change is recorded as one append op
|
|
32
|
+
* (several appends to the same key in one change join into one op) without comparing the old and new strings. A plain
|
|
33
|
+
* assignment such as `draft[key] += text` gives the same op, but `prepare()` then has to check that the new string
|
|
34
|
+
* extends the old one, which reads the whole string: O(length) per change. A plain assignment or deletion of the key in
|
|
35
|
+
* the same change falls back to that check.
|
|
36
|
+
*/
|
|
37
|
+
export declare function appendText<T extends object>(draft: Draft<T>, key: StringKeys<T>, text: string): void;
|
|
26
38
|
//# sourceMappingURL=tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/delta/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/delta/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAGN,KAAK,EAAE,EAKP,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAErC,iGAAiG;AACjG,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,OAAO,EAAE,GACrD,KAAK,GACL;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAuHxG,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,MAAM;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,KAAK,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,MAAM;IACvC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,MAAM;IACxC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACnC;AAuMD,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAkBpG"}
|
package/dist/delta/tracker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { copyJson } from "../json.js";
|
|
2
2
|
import { applyImmutableTrusted } from "./apply-immutable-trusted.js";
|
|
3
|
-
import { applyImmutable, overlap, RESERVED_SEGMENTS } from "./index.js";
|
|
3
|
+
import { applyImmutable, overlap, ownedSlice, RESERVED_SEGMENTS, } from "./index.js";
|
|
4
4
|
const NODE = Symbol("chord.delta.overlay.node");
|
|
5
5
|
const PREPARED = new WeakMap();
|
|
6
6
|
const RELEASED = {};
|
|
@@ -91,9 +91,20 @@ class ChangeImpl {
|
|
|
91
91
|
this.#context = undefined;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Open drafts are tracked so that adopting one change makes its open competitors stale at once. Prepared contexts need
|
|
96
|
+
* no tracking: `prepare()` releases their overlay, and `adopt()` rejects them by revision.
|
|
97
|
+
*
|
|
98
|
+
* The most recent open context is held strongly in `#open`: with one transaction at a time per tracker, the common case,
|
|
99
|
+
* that is the only one, and it costs no `WeakRef` (each `WeakRef` target survives the scavenges of the current job, and
|
|
100
|
+
* V8 then pretenures the context allocation site). A second `beginChange()` while one is open moves the older context
|
|
101
|
+
* into `#competitors` through a `WeakRef`, so a draft the caller drops can be collected. A dropped draft that was never
|
|
102
|
+
* settled stays held by `#open` until the tracker's next `beginChange()` or `adopt()`: at most one per tracker.
|
|
103
|
+
*/
|
|
94
104
|
class TrackerImpl {
|
|
95
105
|
#owner = {};
|
|
96
|
-
#
|
|
106
|
+
#open;
|
|
107
|
+
#competitors;
|
|
97
108
|
#selfRef;
|
|
98
109
|
#value;
|
|
99
110
|
#revision = 0;
|
|
@@ -110,13 +121,15 @@ class TrackerImpl {
|
|
|
110
121
|
}
|
|
111
122
|
beginChange() {
|
|
112
123
|
const context = createContext(this.#selfRef, this.#owner, this.#revision, this.#value, false, this.#value);
|
|
113
|
-
this.#
|
|
124
|
+
if (this.#open !== undefined)
|
|
125
|
+
this.#demote(this.#open);
|
|
126
|
+
this.#open = context;
|
|
114
127
|
return new ChangeImpl(context);
|
|
115
128
|
}
|
|
116
129
|
prepareReplace(value) {
|
|
130
|
+
// Not tracked: materialization below releases the context before this returns, as `prepare()` does.
|
|
117
131
|
const context = createContext(this.#selfRef, this.#owner, this.#revision, value, true, this.#value);
|
|
118
132
|
context.status.value = "prepared";
|
|
119
|
-
this.#register(context);
|
|
120
133
|
try {
|
|
121
134
|
return materializePrepared(context);
|
|
122
135
|
}
|
|
@@ -155,49 +168,90 @@ class TrackerImpl {
|
|
|
155
168
|
this.#invalidate(context);
|
|
156
169
|
}
|
|
157
170
|
releaseContext(context) {
|
|
158
|
-
if (
|
|
159
|
-
this.#
|
|
171
|
+
if (this.#open === context)
|
|
172
|
+
this.#open = undefined;
|
|
173
|
+
else if (context.registryRef !== undefined)
|
|
174
|
+
this.#competitors?.delete(context.registryRef);
|
|
160
175
|
context.registryRef = undefined;
|
|
161
176
|
}
|
|
162
|
-
#
|
|
177
|
+
#demote(context) {
|
|
163
178
|
const reference = new WeakRef(context);
|
|
164
179
|
context.registryRef = reference;
|
|
165
|
-
this.#
|
|
180
|
+
this.#competitors ??= new Set();
|
|
181
|
+
this.#competitors.add(reference);
|
|
166
182
|
this.#pruneBudget -= 1;
|
|
167
183
|
if (this.#pruneBudget === 0) {
|
|
168
|
-
this.#
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
for (const reference of this.#contexts) {
|
|
174
|
-
if (reference.deref() === undefined)
|
|
175
|
-
this.#contexts.delete(reference);
|
|
184
|
+
for (const entry of this.#competitors) {
|
|
185
|
+
if (entry.deref() === undefined)
|
|
186
|
+
this.#competitors.delete(entry);
|
|
187
|
+
}
|
|
188
|
+
this.#pruneBudget = Math.max(256, this.#competitors.size);
|
|
176
189
|
}
|
|
177
190
|
}
|
|
178
191
|
#invalidate(winner) {
|
|
179
|
-
|
|
192
|
+
const open = this.#open;
|
|
193
|
+
const competitors = this.#competitors;
|
|
194
|
+
this.#open = undefined;
|
|
195
|
+
this.#competitors = undefined;
|
|
196
|
+
this.#pruneBudget = 256;
|
|
197
|
+
if (open !== undefined)
|
|
198
|
+
staleCompetitor(open, winner);
|
|
199
|
+
if (competitors === undefined)
|
|
200
|
+
return;
|
|
201
|
+
for (const reference of competitors) {
|
|
180
202
|
const context = reference.deref();
|
|
181
|
-
if (context
|
|
182
|
-
|
|
183
|
-
if (context.status.value === "open" || context.status.value === "prepared")
|
|
184
|
-
context.status.value = "stale";
|
|
185
|
-
// Adoption must not walk every node touched by a competing draft. Drop the
|
|
186
|
-
// context's strong overlay references in O(1); externally retained proxies
|
|
187
|
-
// still see the stale status and are reclaimed with their holders.
|
|
188
|
-
releaseOverlayReferences(context);
|
|
203
|
+
if (context !== undefined)
|
|
204
|
+
staleCompetitor(context, winner);
|
|
189
205
|
}
|
|
190
|
-
this.#contexts.clear();
|
|
191
|
-
this.#pruneBudget = 256;
|
|
192
206
|
}
|
|
193
207
|
replacementBase(context) {
|
|
194
208
|
return context.baseRevision === this.#revision ? this.#value : undefined;
|
|
195
209
|
}
|
|
196
210
|
}
|
|
211
|
+
function staleCompetitor(context, winner) {
|
|
212
|
+
if (context === winner)
|
|
213
|
+
return;
|
|
214
|
+
if (context.status.value === "open" || context.status.value === "prepared")
|
|
215
|
+
context.status.value = "stale";
|
|
216
|
+
// Adoption must not walk every node touched by a competing draft. Drop the
|
|
217
|
+
// context's strong overlay references in O(1); externally retained proxies
|
|
218
|
+
// still see the stale status and are reclaimed with their holders.
|
|
219
|
+
context.registryRef = undefined;
|
|
220
|
+
releaseOverlayReferences(context);
|
|
221
|
+
}
|
|
197
222
|
/** Take immutable ownership of an alias-free strict-JSON root in O(1). */
|
|
198
223
|
export function track(initial) {
|
|
199
224
|
return new TrackerImpl(initial);
|
|
200
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Append `text` to the string at `draft[key]`, costing O(text.length). The change is recorded as one append op
|
|
228
|
+
* (several appends to the same key in one change join into one op) without comparing the old and new strings. A plain
|
|
229
|
+
* assignment such as `draft[key] += text` gives the same op, but `prepare()` then has to check that the new string
|
|
230
|
+
* extends the old one, which reads the whole string: O(length) per change. A plain assignment or deletion of the key in
|
|
231
|
+
* the same change falls back to that check.
|
|
232
|
+
*/
|
|
233
|
+
export function appendText(draft, key, text) {
|
|
234
|
+
// Trust boundary: JavaScript callers can pass any object and key; the types cover TypeScript callers.
|
|
235
|
+
const node = draft[NODE];
|
|
236
|
+
if (node === undefined)
|
|
237
|
+
throw new TypeError("appendText() needs a draft");
|
|
238
|
+
assertWritable(node.context);
|
|
239
|
+
const name = String(key);
|
|
240
|
+
const current = Array.isArray(nodeBase(node)) || !objectHas(node, name) ? undefined : objectValue(node, name);
|
|
241
|
+
if (typeof current !== "string")
|
|
242
|
+
throw new TypeError(`appendText() needs a string at ${JSON.stringify(name)}`);
|
|
243
|
+
if (text.length === 0)
|
|
244
|
+
return;
|
|
245
|
+
// The op and the new value keep the text; a copy, so they never keep a larger string the caller cut it from alive.
|
|
246
|
+
const owned = ownedSlice(text, 0);
|
|
247
|
+
const appended = node.appends?.get(name) ?? (hasObjectWrite(node, name) ? undefined : "");
|
|
248
|
+
setObjectWrite(node, name, current + owned);
|
|
249
|
+
markDirty(node);
|
|
250
|
+
if (appended !== undefined) {
|
|
251
|
+
node.appends ??= new Map();
|
|
252
|
+
node.appends.set(name, appended + owned);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
201
255
|
function materializePrepared(context) {
|
|
202
256
|
const operations = ensureOperations(context);
|
|
203
257
|
const base = context.baseValue;
|
|
@@ -232,10 +286,10 @@ function createContext(tracker, owner, baseRevision, root, replacement, base) {
|
|
|
232
286
|
status: { value: "open" },
|
|
233
287
|
root: undefined,
|
|
234
288
|
bases: [],
|
|
235
|
-
stored:
|
|
289
|
+
stored: undefined,
|
|
236
290
|
dirty: [],
|
|
237
291
|
nodes: [],
|
|
238
|
-
rawNodes:
|
|
292
|
+
rawNodes: undefined,
|
|
239
293
|
ops: undefined,
|
|
240
294
|
replacement,
|
|
241
295
|
replacementNoop: false,
|
|
@@ -298,7 +352,7 @@ const sharedObjectHandler = {
|
|
|
298
352
|
};
|
|
299
353
|
const sharedArrayHandler = sharedObjectHandler;
|
|
300
354
|
function createNode(context, base, parent, parentKind = 0, parentKey = "", parentSource = undefined, parentPlacement = false) {
|
|
301
|
-
const existing = context.rawNodes
|
|
355
|
+
const existing = context.rawNodes?.get(base);
|
|
302
356
|
if (existing !== undefined)
|
|
303
357
|
return existing;
|
|
304
358
|
const target = Array.isArray(base) ? [] : {};
|
|
@@ -319,7 +373,12 @@ function createNode(context, base, parent, parentKind = 0, parentKey = "", paren
|
|
|
319
373
|
node.parentSource = parentSource;
|
|
320
374
|
target[NODE] = node;
|
|
321
375
|
node.proxy = new Proxy(target, Array.isArray(base) ? sharedArrayHandler : sharedObjectHandler);
|
|
322
|
-
|
|
376
|
+
// The root is never reached again through a child value (tracked values are alias-free), so a change that touches
|
|
377
|
+
// only the root needs no map.
|
|
378
|
+
if (parent !== undefined) {
|
|
379
|
+
context.rawNodes ??= new WeakMap();
|
|
380
|
+
context.rawNodes.set(base, node);
|
|
381
|
+
}
|
|
323
382
|
context.nodes.push(node);
|
|
324
383
|
return node;
|
|
325
384
|
}
|
|
@@ -332,6 +391,8 @@ function nodeParent(node) {
|
|
|
332
391
|
function storeValue(context, value) {
|
|
333
392
|
if (!isContainer(value))
|
|
334
393
|
return value;
|
|
394
|
+
// Created on the first container write: primitive writes never store.
|
|
395
|
+
context.stored ??= [];
|
|
335
396
|
const index = context.stored.length;
|
|
336
397
|
context.stored.push(value);
|
|
337
398
|
return { index };
|
|
@@ -438,6 +499,7 @@ function setProperty(node, property, supplied) {
|
|
|
438
499
|
const wasDeleted = isObjectDeleted(node, key);
|
|
439
500
|
if (!wasDeleted && !isContainer(stored) && current === stored)
|
|
440
501
|
return true;
|
|
502
|
+
node.appends?.delete(key);
|
|
441
503
|
setObjectWrite(node, key, stored);
|
|
442
504
|
if (wasDeleted && Object.hasOwn(nodeBase(node), key)) {
|
|
443
505
|
if (node.readded === undefined)
|
|
@@ -457,6 +519,7 @@ function deleteProperty(node, property) {
|
|
|
457
519
|
const key = String(property);
|
|
458
520
|
if (!objectHas(node, key))
|
|
459
521
|
return true;
|
|
522
|
+
node.appends?.delete(key);
|
|
460
523
|
deleteObjectWrite(node, key);
|
|
461
524
|
node.readded?.delete(key);
|
|
462
525
|
setObjectDeletion(node, key);
|
|
@@ -930,13 +993,14 @@ function insertPiece(node, items, start = 0) {
|
|
|
930
993
|
function insertPlacementPiece(node, values, start = 0) {
|
|
931
994
|
if (values.length === start)
|
|
932
995
|
return [];
|
|
933
|
-
const storedLength = node.context.stored
|
|
996
|
+
const storedLength = node.context.stored?.length ?? 0;
|
|
934
997
|
try {
|
|
935
998
|
for (let index = start; index < values.length; index++)
|
|
936
999
|
values[index] = storeValue(node.context, clonePlacement(values[index]));
|
|
937
1000
|
}
|
|
938
1001
|
catch (error) {
|
|
939
|
-
node.context.stored
|
|
1002
|
+
if (node.context.stored !== undefined)
|
|
1003
|
+
node.context.stored.length = storedLength;
|
|
940
1004
|
throw error;
|
|
941
1005
|
}
|
|
942
1006
|
return [
|
|
@@ -1396,7 +1460,7 @@ function cloneNode(node) {
|
|
|
1396
1460
|
function cloneStored(value, context) {
|
|
1397
1461
|
if (!isContainer(value))
|
|
1398
1462
|
return value;
|
|
1399
|
-
const node = context.rawNodes
|
|
1463
|
+
const node = context.rawNodes?.get(value);
|
|
1400
1464
|
return node === undefined || (!node.dirty && !node.subtreeDirty) ? value : cloneNode(node);
|
|
1401
1465
|
}
|
|
1402
1466
|
function clonePlacementNode(node) {
|
|
@@ -1420,7 +1484,7 @@ function clonePlacementNode(node) {
|
|
|
1420
1484
|
function clonePlacementStored(value, context) {
|
|
1421
1485
|
if (!isContainer(value))
|
|
1422
1486
|
return copyJson(value);
|
|
1423
|
-
const node = context.rawNodes
|
|
1487
|
+
const node = context.rawNodes?.get(value);
|
|
1424
1488
|
return node === undefined ? copyJson(value) : clonePlacementNode(node);
|
|
1425
1489
|
}
|
|
1426
1490
|
function defineData(target, key, value) {
|
|
@@ -1696,6 +1760,11 @@ function hasPlacementAncestor(node) {
|
|
|
1696
1760
|
}
|
|
1697
1761
|
function emitObjectWrite(node, path, operations, key, value) {
|
|
1698
1762
|
const nextPath = [...path, key];
|
|
1763
|
+
const appended = node.appends?.get(key);
|
|
1764
|
+
if (appended !== undefined) {
|
|
1765
|
+
operations.push(["a", nextPath, appended]);
|
|
1766
|
+
return false;
|
|
1767
|
+
}
|
|
1699
1768
|
const before = node.readded?.has(key) || !Object.hasOwn(nodeBase(node), key)
|
|
1700
1769
|
? undefined
|
|
1701
1770
|
: nodeBase(node)[key];
|
|
@@ -1895,17 +1964,18 @@ function emitChangedValue(operations, path, before, after) {
|
|
|
1895
1964
|
if (isContainer(before) && isContainer(after) && equalTrustedJson(before, after))
|
|
1896
1965
|
return false;
|
|
1897
1966
|
if (typeof before === "string" && typeof after === "string") {
|
|
1898
|
-
//
|
|
1899
|
-
//
|
|
1967
|
+
// O(length): any slice of a rope makes V8 flatten all of it, so this prefix check copies the whole string once per
|
|
1968
|
+
// change, even when the writer only appended. Streaming writers use appendText(), which skips it. The op text gets
|
|
1969
|
+
// a copy of its own, so it does not keep the whole of `after` alive.
|
|
1900
1970
|
if (after.length > before.length && after.slice(0, before.length) === before) {
|
|
1901
|
-
operations.push(["a", path, after
|
|
1971
|
+
operations.push(["a", path, ownedSlice(after, before.length)]);
|
|
1902
1972
|
return true;
|
|
1903
1973
|
}
|
|
1904
1974
|
const shared = overlap(before, after, 65_536);
|
|
1905
1975
|
if (shared > 0) {
|
|
1906
1976
|
operations.push(["t", path, before.length - shared]);
|
|
1907
1977
|
if (after.length > shared)
|
|
1908
|
-
operations.push(["a", path, after
|
|
1978
|
+
operations.push(["a", path, ownedSlice(after, shared)]);
|
|
1909
1979
|
return true;
|
|
1910
1980
|
}
|
|
1911
1981
|
}
|