@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,70 @@
|
|
|
1
|
+
import type { StoredMetric, StoredSpan } from "@earendil-works/pi-telemetry";
|
|
2
|
+
import { type Schema } from "../contracts/index.ts";
|
|
3
|
+
/** At most this many spans in a page's batch. */
|
|
4
|
+
export declare const PAGE_BATCH_SPANS = 100;
|
|
5
|
+
/** At most this many spans and metric rows in a worker's batch. */
|
|
6
|
+
export declare const WORKER_BATCH_ROWS = 1000;
|
|
7
|
+
/** A page's batch (spans only: a page sends no metrics). */
|
|
8
|
+
export declare const PageBatch: Schema<{
|
|
9
|
+
spans: StoredSpan[];
|
|
10
|
+
}>;
|
|
11
|
+
/** A worker's batch: its spans and its metric rows. */
|
|
12
|
+
export declare const WorkerBatch: Schema<{
|
|
13
|
+
spans: StoredSpan[];
|
|
14
|
+
metrics: StoredMetric[];
|
|
15
|
+
}>;
|
|
16
|
+
/** The server's telemetry object for pages: any principal's page sends its batches to it, untrusted. */
|
|
17
|
+
export declare const PageTelemetry: import("../contracts/contract.ts").Contract<{
|
|
18
|
+
kind: "remote";
|
|
19
|
+
name: "chord.telemetry.page";
|
|
20
|
+
params: {};
|
|
21
|
+
history: [{
|
|
22
|
+
version: "1";
|
|
23
|
+
variants: {
|
|
24
|
+
readonly main: {
|
|
25
|
+
state: Record<never, never>;
|
|
26
|
+
methods: {
|
|
27
|
+
readonly ingest: import("../contracts/schema.ts").Method<Schema<{
|
|
28
|
+
spans: StoredSpan[];
|
|
29
|
+
}>, Schema<{
|
|
30
|
+
written: number;
|
|
31
|
+
dropped: number;
|
|
32
|
+
}>>;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
changes: never;
|
|
37
|
+
}];
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* The server's telemetry object for workers: `worker` for a worker's principal (its batches written as they are),
|
|
41
|
+
* `other` for everyone else (nothing to call).
|
|
42
|
+
*/
|
|
43
|
+
export declare const WorkerTelemetry: import("../contracts/contract.ts").Contract<{
|
|
44
|
+
kind: "remote";
|
|
45
|
+
name: "chord.telemetry.worker";
|
|
46
|
+
params: {};
|
|
47
|
+
history: [{
|
|
48
|
+
version: "1";
|
|
49
|
+
variants: {
|
|
50
|
+
readonly worker: {
|
|
51
|
+
state: Record<never, never>;
|
|
52
|
+
methods: {
|
|
53
|
+
readonly ingest: import("../contracts/schema.ts").Method<Schema<{
|
|
54
|
+
spans: StoredSpan[];
|
|
55
|
+
metrics: StoredMetric[];
|
|
56
|
+
}>, Schema<{
|
|
57
|
+
written: number;
|
|
58
|
+
dropped: number;
|
|
59
|
+
}>>;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
readonly other: {
|
|
63
|
+
state: Record<never, never>;
|
|
64
|
+
methods: Record<never, never>;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
changes: never;
|
|
68
|
+
}];
|
|
69
|
+
}>;
|
|
70
|
+
//# sourceMappingURL=batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/telemetry-ingest/batch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkB,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAA0D,KAAK,MAAM,EAAc,MAAM,uBAAuB,CAAC;AAExH,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,OAAO,CAAC;AA8FtC,4DAA4D;AAC5D,eAAO,MAAM,SAAS;;EAA4D,CAAC;AAEnF,uDAAuD;AACvD,eAAO,MAAM,WAAW;;;EAGtB,CAAC;AAKH,wGAAwG;AACxG,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;EAK1B,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// What pages and workers send the server's telemetry objects (decisions "Telemetry from browser pages", "The server is
|
|
2
|
+
// the one place telemetry is stored"): a batch of finished spans (a worker's with its metric aggregates), its schemas
|
|
3
|
+
// (a page's strict: every field bounded, ids printable ASCII, no control characters; a worker's, the server's own
|
|
4
|
+
// child, generous), and the two remote objects on the server that take them, `PageTelemetry` and `WorkerTelemetry`.
|
|
5
|
+
import { arr, hostKind, int, lit, method, num, obj, opt, remote, str, union } from "../contracts/index.js";
|
|
6
|
+
/** At most this many spans in a page's batch. */
|
|
7
|
+
export const PAGE_BATCH_SPANS = 100;
|
|
8
|
+
/** At most this many spans and metric rows in a worker's batch. */
|
|
9
|
+
export const WORKER_BATCH_ROWS = 1000;
|
|
10
|
+
/** An id: printable ASCII, no spaces (a page's are `browser:<incarnation>:<n>`). */
|
|
11
|
+
function id(max) {
|
|
12
|
+
return str({ min: 1, max, pattern: "^[\\x21-\\x7e]+$" });
|
|
13
|
+
}
|
|
14
|
+
/** Text: no control characters (C0, DEL, C1), at most `max` characters. */
|
|
15
|
+
function text(max, min = 0) {
|
|
16
|
+
return str({ min, max, pattern: "^[^\\u0000-\\u001f\\u007f-\\u009f]*$" });
|
|
17
|
+
}
|
|
18
|
+
/** A record of attributes: at most `count` keys of 1 to 64 characters of text (other keys refused), values of `value`. */
|
|
19
|
+
function attributes(count, value) {
|
|
20
|
+
return {
|
|
21
|
+
type: "object",
|
|
22
|
+
maxProperties: count,
|
|
23
|
+
patternProperties: { "^[^\\u0000-\\u001f\\u007f-\\u009f]{1,64}$": value },
|
|
24
|
+
additionalProperties: false,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** A finished span as `span`'s fields allow: ids, a name, times, attributes, events, links and a status. */
|
|
28
|
+
function spanSchema(limits) {
|
|
29
|
+
const record = attributes(limits.attributes, limits.value);
|
|
30
|
+
const span = obj({
|
|
31
|
+
id: id(limits.id),
|
|
32
|
+
traceId: id(limits.id),
|
|
33
|
+
parentId: opt(id(limits.id)),
|
|
34
|
+
name: text(limits.name, 1),
|
|
35
|
+
startedMs: num({ min: 0 }),
|
|
36
|
+
endedMs: num({ min: 0 }),
|
|
37
|
+
attributes: record,
|
|
38
|
+
events: arr(obj({ name: text(limits.name, 1), timeMs: num({ min: 0 }), attributes: record }), {
|
|
39
|
+
max: limits.events,
|
|
40
|
+
}),
|
|
41
|
+
links: arr(obj({ traceId: id(limits.id), spanId: id(limits.id), attributes: opt(record) }), {
|
|
42
|
+
max: limits.links,
|
|
43
|
+
}),
|
|
44
|
+
status: union([
|
|
45
|
+
obj({ status: lit("ok") }),
|
|
46
|
+
obj({ status: lit("error"), error: opt(obj({ name: text(64), message: text(500) })) }),
|
|
47
|
+
]),
|
|
48
|
+
});
|
|
49
|
+
// The object schema's static type is StoredSpan's shape: the same fields, optional ones `opt`.
|
|
50
|
+
return span;
|
|
51
|
+
}
|
|
52
|
+
/** A page's spans: what a recorded click needs, little more (decision "Telemetry from browser pages"). */
|
|
53
|
+
const PAGE_SPAN = spanSchema({
|
|
54
|
+
id: 128,
|
|
55
|
+
name: 128,
|
|
56
|
+
attributes: 32,
|
|
57
|
+
value: union([text(256), num(), { type: "boolean" }]),
|
|
58
|
+
events: 16,
|
|
59
|
+
links: 8,
|
|
60
|
+
});
|
|
61
|
+
/** A worker's spans: bounded generously (its spans are Chord's and its plugins'). */
|
|
62
|
+
const WORKER_SPAN = spanSchema({
|
|
63
|
+
id: 256,
|
|
64
|
+
name: 1024,
|
|
65
|
+
attributes: 256,
|
|
66
|
+
value: union([str({ max: 65_536 }), num(), { type: "boolean" }, arr(union([str(), num()]))]),
|
|
67
|
+
events: 1024,
|
|
68
|
+
links: 256,
|
|
69
|
+
});
|
|
70
|
+
/** A worker's metric row: one series' aggregate of one 10 s interval. */
|
|
71
|
+
const METRIC = obj({
|
|
72
|
+
intervalMs: int({ min: 0 }),
|
|
73
|
+
name: text(256, 1),
|
|
74
|
+
kind: union([lit("counter"), lit("upDownCounter"), lit("histogram")]),
|
|
75
|
+
unit: opt(text(64)),
|
|
76
|
+
attributes: attributes(64, union([str({ max: 4096 }), num(), { type: "boolean" }])),
|
|
77
|
+
count: int({ min: 0 }),
|
|
78
|
+
sum: num(),
|
|
79
|
+
min: num(),
|
|
80
|
+
max: num(),
|
|
81
|
+
});
|
|
82
|
+
/** What `ingest` answers: the spans the store queued and the ones it dropped (refused, over the rate, over its bound). */
|
|
83
|
+
const RECEIPT = obj({ written: int(), dropped: int() });
|
|
84
|
+
/** A page's batch (spans only: a page sends no metrics). */
|
|
85
|
+
export const PageBatch = obj({ spans: arr(PAGE_SPAN, { max: PAGE_BATCH_SPANS }) });
|
|
86
|
+
/** A worker's batch: its spans and its metric rows. */
|
|
87
|
+
export const WorkerBatch = obj({
|
|
88
|
+
spans: arr(WORKER_SPAN, { max: WORKER_BATCH_ROWS }),
|
|
89
|
+
metrics: arr(METRIC, { max: WORKER_BATCH_ROWS }),
|
|
90
|
+
});
|
|
91
|
+
/** The server's host kind as the app kit names it. */
|
|
92
|
+
const Server = hostKind("server");
|
|
93
|
+
/** The server's telemetry object for pages: any principal's page sends its batches to it, untrusted. */
|
|
94
|
+
export const PageTelemetry = remote("chord.telemetry.page", {
|
|
95
|
+
version: 1,
|
|
96
|
+
params: {},
|
|
97
|
+
hostAddress: () => Server(),
|
|
98
|
+
variants: { main: { methods: { ingest: method(PageBatch, RECEIPT) } } },
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* The server's telemetry object for workers: `worker` for a worker's principal (its batches written as they are),
|
|
102
|
+
* `other` for everyone else (nothing to call).
|
|
103
|
+
*/
|
|
104
|
+
export const WorkerTelemetry = remote("chord.telemetry.worker", {
|
|
105
|
+
version: 1,
|
|
106
|
+
params: {},
|
|
107
|
+
hostAddress: () => Server(),
|
|
108
|
+
variants: { worker: { methods: { ingest: method(WorkerBatch, RECEIPT) } }, other: {} },
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/telemetry-ingest/batch.ts"],"names":[],"mappings":"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","sourcesContent":["// What pages and workers send the server's telemetry objects (decisions \"Telemetry from browser pages\", \"The server is\n// the one place telemetry is stored\"): a batch of finished spans (a worker's with its metric aggregates), its schemas\n// (a page's strict: every field bounded, ids printable ASCII, no control characters; a worker's, the server's own\n// child, generous), and the two remote objects on the server that take them, `PageTelemetry` and `WorkerTelemetry`.\n\nimport type { AttributeValue, StoredMetric, StoredSpan } from \"@earendil-works/pi-telemetry\";\nimport { arr, hostKind, int, lit, method, num, obj, opt, remote, type Schema, str, union } from \"../contracts/index.ts\";\n\n/** At most this many spans in a page's batch. */\nexport const PAGE_BATCH_SPANS = 100;\n\n/** At most this many spans and metric rows in a worker's batch. */\nexport const WORKER_BATCH_ROWS = 1000;\n\n/** An id: printable ASCII, no spaces (a page's are `browser:<incarnation>:<n>`). */\nfunction id(max: number): Schema<string> {\n\treturn str({ min: 1, max, pattern: \"^[\\\\x21-\\\\x7e]+$\" });\n}\n\n/** Text: no control characters (C0, DEL, C1), at most `max` characters. */\nfunction text(max: number, min = 0): Schema<string> {\n\treturn str({ min, max, pattern: \"^[^\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f]*$\" });\n}\n\n/** A record of attributes: at most `count` keys of 1 to 64 characters of text (other keys refused), values of `value`. */\nfunction attributes(count: number, value: Schema): Schema<Record<string, AttributeValue>> {\n\treturn {\n\t\ttype: \"object\",\n\t\tmaxProperties: count,\n\t\tpatternProperties: { \"^[^\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f]{1,64}$\": value },\n\t\tadditionalProperties: false,\n\t};\n}\n\n/** A finished span as `span`'s fields allow: ids, a name, times, attributes, events, links and a status. */\nfunction spanSchema(limits: SpanLimits): Schema<StoredSpan> {\n\tconst record = attributes(limits.attributes, limits.value);\n\tconst span = obj({\n\t\tid: id(limits.id),\n\t\ttraceId: id(limits.id),\n\t\tparentId: opt(id(limits.id)),\n\t\tname: text(limits.name, 1),\n\t\tstartedMs: num({ min: 0 }),\n\t\tendedMs: num({ min: 0 }),\n\t\tattributes: record,\n\t\tevents: arr(obj({ name: text(limits.name, 1), timeMs: num({ min: 0 }), attributes: record }), {\n\t\t\tmax: limits.events,\n\t\t}),\n\t\tlinks: arr(obj({ traceId: id(limits.id), spanId: id(limits.id), attributes: opt(record) }), {\n\t\t\tmax: limits.links,\n\t\t}),\n\t\tstatus: union([\n\t\t\tobj({ status: lit(\"ok\") }),\n\t\t\tobj({ status: lit(\"error\"), error: opt(obj({ name: text(64), message: text(500) })) }),\n\t\t]),\n\t});\n\t// The object schema's static type is StoredSpan's shape: the same fields, optional ones `opt`.\n\treturn span as unknown as Schema<StoredSpan>;\n}\n\n/** The bounds of one span's fields. */\ntype SpanLimits = {\n\treadonly id: number;\n\treadonly name: number;\n\treadonly attributes: number;\n\treadonly value: Schema;\n\treadonly events: number;\n\treadonly links: number;\n};\n\n/** A page's spans: what a recorded click needs, little more (decision \"Telemetry from browser pages\"). */\nconst PAGE_SPAN = spanSchema({\n\tid: 128,\n\tname: 128,\n\tattributes: 32,\n\tvalue: union([text(256), num(), { type: \"boolean\" } as Schema<boolean>]),\n\tevents: 16,\n\tlinks: 8,\n});\n\n/** A worker's spans: bounded generously (its spans are Chord's and its plugins'). */\nconst WORKER_SPAN = spanSchema({\n\tid: 256,\n\tname: 1024,\n\tattributes: 256,\n\tvalue: union([str({ max: 65_536 }), num(), { type: \"boolean\" } as Schema<boolean>, arr(union([str(), num()]))]),\n\tevents: 1024,\n\tlinks: 256,\n});\n\n/** A worker's metric row: one series' aggregate of one 10 s interval. */\nconst METRIC = obj({\n\tintervalMs: int({ min: 0 }),\n\tname: text(256, 1),\n\tkind: union([lit(\"counter\"), lit(\"upDownCounter\"), lit(\"histogram\")]),\n\tunit: opt(text(64)),\n\tattributes: attributes(64, union([str({ max: 4096 }), num(), { type: \"boolean\" } as Schema<boolean>])),\n\tcount: int({ min: 0 }),\n\tsum: num(),\n\tmin: num(),\n\tmax: num(),\n}) as unknown as Schema<StoredMetric>;\n\n/** What `ingest` answers: the spans the store queued and the ones it dropped (refused, over the rate, over its bound). */\nconst RECEIPT = obj({ written: int(), dropped: int() });\n\n/** A page's batch (spans only: a page sends no metrics). */\nexport const PageBatch = obj({ spans: arr(PAGE_SPAN, { max: PAGE_BATCH_SPANS }) });\n\n/** A worker's batch: its spans and its metric rows. */\nexport const WorkerBatch = obj({\n\tspans: arr(WORKER_SPAN, { max: WORKER_BATCH_ROWS }),\n\tmetrics: arr(METRIC, { max: WORKER_BATCH_ROWS }),\n});\n\n/** The server's host kind as the app kit names it. */\nconst Server = hostKind(\"server\");\n\n/** The server's telemetry object for pages: any principal's page sends its batches to it, untrusted. */\nexport const PageTelemetry = remote(\"chord.telemetry.page\", {\n\tversion: 1,\n\tparams: {},\n\thostAddress: () => Server(),\n\tvariants: { main: { methods: { ingest: method(PageBatch, RECEIPT) } } },\n});\n\n/**\n * The server's telemetry object for workers: `worker` for a worker's principal (its batches written as they are),\n * `other` for everyone else (nothing to call).\n */\nexport const WorkerTelemetry = remote(\"chord.telemetry.worker\", {\n\tversion: 1,\n\tparams: {},\n\thostAddress: () => Server(),\n\tvariants: { worker: { methods: { ingest: method(WorkerBatch, RECEIPT) } }, other: {} },\n});\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SpanAttributes } from "@earendil-works/pi-telemetry";
|
|
2
|
+
import type { Principal } from "../data/index.ts";
|
|
3
|
+
import { type Facet } from "../host/index.ts";
|
|
4
|
+
import type { TelemetryBatch } from "./recorder.ts";
|
|
5
|
+
/** Where ingested batches go: the server's store (`SqliteTelemetry`), which queues them; how many spans it queued. */
|
|
6
|
+
export type TelemetryIngestTarget = {
|
|
7
|
+
ingest(batch: TelemetryBatch): number;
|
|
8
|
+
};
|
|
9
|
+
/** What the ingest facet takes. */
|
|
10
|
+
export type TelemetryIngestOptions<P extends Principal> = {
|
|
11
|
+
readonly target: TelemetryIngestTarget;
|
|
12
|
+
/** The address key of the worker whose link stamps `principal`; `undefined` for any other principal. */
|
|
13
|
+
readonly workerHost: (principal: P) => string | undefined;
|
|
14
|
+
/** The attributes a page's spans record for the principal of their link (the server host's `principalAttributes`). */
|
|
15
|
+
readonly principalAttributes: (principal: P) => Readonly<SpanAttributes>;
|
|
16
|
+
};
|
|
17
|
+
/** How many spans one page may send per minute; past it they are dropped (and counted in its receipts). */
|
|
18
|
+
export declare const PAGE_SPANS_PER_MINUTE = 1200;
|
|
19
|
+
/** The ingest facet: `PageTelemetry` and `WorkerTelemetry` on the server, writing to `options.target`. */
|
|
20
|
+
export declare function telemetryIngestFacet<P extends Principal>(options: TelemetryIngestOptions<P>): Facet<P>;
|
|
21
|
+
//# sourceMappingURL=facet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facet.d.ts","sourceRoot":"","sources":["../../src/telemetry-ingest/facet.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,8BAA8B,CAAC;AAE/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,sHAAsH;AACtH,MAAM,MAAM,qBAAqB,GAAG;IAAE,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAA;CAAE,CAAC;AAE9E,mCAAmC;AACnC,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,IAAI;IACzD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,wGAAwG;IACxG,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,sHAAsH;IACtH,QAAQ,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,QAAQ,CAAC,cAAc,CAAC,CAAC;CACzE,CAAC;AAEF,2GAA2G;AAC3G,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAO1C,0GAA0G;AAC1G,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CA6CtG"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// The server's telemetry ingest (decisions "Telemetry from browser pages", "The server is the one place telemetry is
|
|
2
|
+
// stored", "Who a span was for"): a facet serving `PageTelemetry` and `WorkerTelemetry`, whose `ingest(batch)` writes
|
|
3
|
+
// what pages and workers recorded to the server's store. A page is untrusted: its spans must carry its own ids
|
|
4
|
+
// (`browser:<its incarnation>:...`), are capped per page and minute, marked `chord.host: browser` and stamped with the
|
|
5
|
+
// principal of the link they came over; a worker's are written as they are, stamped with its host.
|
|
6
|
+
import { defineFacet } from "../host/index.js";
|
|
7
|
+
import { PageTelemetry, WorkerTelemetry } from "./batch.js";
|
|
8
|
+
/** How many spans one page may send per minute; past it they are dropped (and counted in its receipts). */
|
|
9
|
+
export const PAGE_SPANS_PER_MINUTE = 1200;
|
|
10
|
+
/** How many pages' minute counts one principal's object keeps (the earliest goes first). */
|
|
11
|
+
const PAGES = 1000;
|
|
12
|
+
const MINUTE_MS = 60_000;
|
|
13
|
+
/** The ingest facet: `PageTelemetry` and `WorkerTelemetry` on the server, writing to `options.target`. */
|
|
14
|
+
export function telemetryIngestFacet(options) {
|
|
15
|
+
return defineFacet((host) => {
|
|
16
|
+
host.serve(PageTelemetry, (_params, principal) => {
|
|
17
|
+
// Per span, as for every span Chord records with a principal: caching is the hook's own.
|
|
18
|
+
const who = () => options.principalAttributes(principal);
|
|
19
|
+
const budgets = new PageBudgets();
|
|
20
|
+
return {
|
|
21
|
+
variant: "main",
|
|
22
|
+
members: {
|
|
23
|
+
ingest: async (batch, ctx) => {
|
|
24
|
+
const budget = budgets.of(ctx.incarnation, Date.now());
|
|
25
|
+
const accepted = pageSpans(batch, `browser:${ctx.incarnation}:`, who, budget);
|
|
26
|
+
const written = options.target.ingest({ spans: accepted, metrics: [] });
|
|
27
|
+
return { written, dropped: batch.spans.length - written };
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
// A span per batch would be telemetry about telemetry, written back with the next batch.
|
|
33
|
+
{ untraced: true });
|
|
34
|
+
host.serve(WorkerTelemetry, (_params, principal) => {
|
|
35
|
+
const worker = options.workerHost(principal);
|
|
36
|
+
if (worker === undefined)
|
|
37
|
+
return { variant: "other", members: {} };
|
|
38
|
+
return {
|
|
39
|
+
variant: "worker",
|
|
40
|
+
members: {
|
|
41
|
+
ingest: async ({ spans, metrics }, _ctx) => {
|
|
42
|
+
const stamped = spans.map((span) => ({
|
|
43
|
+
...span,
|
|
44
|
+
attributes: { ...span.attributes, "chord.host": worker },
|
|
45
|
+
}));
|
|
46
|
+
const written = options.target.ingest({ spans: stamped, metrics });
|
|
47
|
+
return { written, dropped: spans.length - written };
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}, { untraced: true });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/** The minute budgets of one principal's pages, by incarnation, bounded (the earliest page goes first). */
|
|
55
|
+
class PageBudgets {
|
|
56
|
+
#budgets = new Map();
|
|
57
|
+
/** The budget of the page `incarnation` at `now`: a new minute starts a new one. */
|
|
58
|
+
of(incarnation, now) {
|
|
59
|
+
let budget = this.#budgets.get(incarnation);
|
|
60
|
+
if (budget === undefined || now - budget.start >= MINUTE_MS) {
|
|
61
|
+
this.#budgets.delete(incarnation);
|
|
62
|
+
if (this.#budgets.size >= PAGES)
|
|
63
|
+
this.#budgets.delete(this.#budgets.keys().next().value);
|
|
64
|
+
budget = { start: now, spans: 0 };
|
|
65
|
+
this.#budgets.set(incarnation, budget);
|
|
66
|
+
}
|
|
67
|
+
return budget;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The spans of a page's `batch` the store takes: its own (ids, trace and parent under `prefix`, so it never writes
|
|
72
|
+
* into another sender's trace or poses as a server span), ending after they start, within its minute's `budget`; each
|
|
73
|
+
* marked `chord.host: browser` and stamped with `who()` (the link's principal's attributes), which no attribute of the
|
|
74
|
+
* page's may override: the page's own `chord.*` attributes are dropped (a claimed `chord.principal` too, when the hook
|
|
75
|
+
* records none).
|
|
76
|
+
*/
|
|
77
|
+
function pageSpans(batch, prefix, who, budget) {
|
|
78
|
+
const accepted = [];
|
|
79
|
+
for (const span of batch.spans) {
|
|
80
|
+
if (budget.spans >= PAGE_SPANS_PER_MINUTE)
|
|
81
|
+
break;
|
|
82
|
+
const own = span.id.startsWith(prefix) &&
|
|
83
|
+
span.traceId.startsWith(prefix) &&
|
|
84
|
+
(span.parentId === undefined || span.parentId.startsWith(prefix));
|
|
85
|
+
if (!own || span.endedMs < span.startedMs)
|
|
86
|
+
continue;
|
|
87
|
+
budget.spans++;
|
|
88
|
+
accepted.push({ ...span, attributes: { "chord.host": "browser", ...ownAttributes(span.attributes), ...who() } });
|
|
89
|
+
}
|
|
90
|
+
return accepted;
|
|
91
|
+
}
|
|
92
|
+
/** A page's attributes without Chord's (`chord.*`): what Chord records about a span, the server stamps itself. */
|
|
93
|
+
function ownAttributes(attributes) {
|
|
94
|
+
return Object.fromEntries(Object.entries(attributes).filter(([key]) => !key.startsWith("chord.")));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=facet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facet.js","sourceRoot":"","sources":["../../src/telemetry-ingest/facet.ts"],"names":[],"mappings":"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","sourcesContent":["// The server's telemetry ingest (decisions \"Telemetry from browser pages\", \"The server is the one place telemetry is\n// stored\", \"Who a span was for\"): a facet serving `PageTelemetry` and `WorkerTelemetry`, whose `ingest(batch)` writes\n// what pages and workers recorded to the server's store. A page is untrusted: its spans must carry its own ids\n// (`browser:<its incarnation>:...`), are capped per page and minute, marked `chord.host: browser` and stamped with the\n// principal of the link they came over; a worker's are written as they are, stamped with its host.\n\nimport type { SpanAttributes, StoredSpan } from \"@earendil-works/pi-telemetry\";\nimport type { Static } from \"../contracts/index.ts\";\nimport type { Principal } from \"../data/index.ts\";\nimport { defineFacet, type Facet } from \"../host/index.ts\";\nimport { type PageBatch, PageTelemetry, WorkerTelemetry } from \"./batch.ts\";\nimport type { TelemetryBatch } from \"./recorder.ts\";\n\n/** Where ingested batches go: the server's store (`SqliteTelemetry`), which queues them; how many spans it queued. */\nexport type TelemetryIngestTarget = { ingest(batch: TelemetryBatch): number };\n\n/** What the ingest facet takes. */\nexport type TelemetryIngestOptions<P extends Principal> = {\n\treadonly target: TelemetryIngestTarget;\n\t/** The address key of the worker whose link stamps `principal`; `undefined` for any other principal. */\n\treadonly workerHost: (principal: P) => string | undefined;\n\t/** The attributes a page's spans record for the principal of their link (the server host's `principalAttributes`). */\n\treadonly principalAttributes: (principal: P) => Readonly<SpanAttributes>;\n};\n\n/** How many spans one page may send per minute; past it they are dropped (and counted in its receipts). */\nexport const PAGE_SPANS_PER_MINUTE = 1200;\n\n/** How many pages' minute counts one principal's object keeps (the earliest goes first). */\nconst PAGES = 1000;\n\nconst MINUTE_MS = 60_000;\n\n/** The ingest facet: `PageTelemetry` and `WorkerTelemetry` on the server, writing to `options.target`. */\nexport function telemetryIngestFacet<P extends Principal>(options: TelemetryIngestOptions<P>): Facet<P> {\n\treturn defineFacet<P>((host) => {\n\t\thost.serve(\n\t\t\tPageTelemetry,\n\t\t\t(_params, principal) => {\n\t\t\t\t// Per span, as for every span Chord records with a principal: caching is the hook's own.\n\t\t\t\tconst who = () => options.principalAttributes(principal);\n\t\t\t\tconst budgets = new PageBudgets();\n\t\t\t\treturn {\n\t\t\t\t\tvariant: \"main\",\n\t\t\t\t\tmembers: {\n\t\t\t\t\t\tingest: async (batch, ctx) => {\n\t\t\t\t\t\t\tconst budget = budgets.of(ctx.incarnation, Date.now());\n\t\t\t\t\t\t\tconst accepted = pageSpans(batch, `browser:${ctx.incarnation}:`, who, budget);\n\t\t\t\t\t\t\tconst written = options.target.ingest({ spans: accepted, metrics: [] });\n\t\t\t\t\t\t\treturn { written, dropped: batch.spans.length - written };\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t\t// A span per batch would be telemetry about telemetry, written back with the next batch.\n\t\t\t{ untraced: true },\n\t\t);\n\t\thost.serve(\n\t\t\tWorkerTelemetry,\n\t\t\t(_params, principal) => {\n\t\t\t\tconst worker = options.workerHost(principal);\n\t\t\t\tif (worker === undefined) return { variant: \"other\", members: {} };\n\t\t\t\treturn {\n\t\t\t\t\tvariant: \"worker\",\n\t\t\t\t\tmembers: {\n\t\t\t\t\t\tingest: async ({ spans, metrics }, _ctx) => {\n\t\t\t\t\t\t\tconst stamped = spans.map((span) => ({\n\t\t\t\t\t\t\t\t...span,\n\t\t\t\t\t\t\t\tattributes: { ...span.attributes, \"chord.host\": worker },\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\tconst written = options.target.ingest({ spans: stamped, metrics });\n\t\t\t\t\t\t\treturn { written, dropped: spans.length - written };\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t\t{ untraced: true },\n\t\t);\n\t});\n}\n\n/** One page's spans of the current minute. */\ntype Budget = { readonly start: number; spans: number };\n\n/** The minute budgets of one principal's pages, by incarnation, bounded (the earliest page goes first). */\nclass PageBudgets {\n\treadonly #budgets = new Map<string, Budget>();\n\n\t/** The budget of the page `incarnation` at `now`: a new minute starts a new one. */\n\tof(incarnation: string, now: number): Budget {\n\t\tlet budget = this.#budgets.get(incarnation);\n\t\tif (budget === undefined || now - budget.start >= MINUTE_MS) {\n\t\t\tthis.#budgets.delete(incarnation);\n\t\t\tif (this.#budgets.size >= PAGES) this.#budgets.delete(this.#budgets.keys().next().value!);\n\t\t\tbudget = { start: now, spans: 0 };\n\t\t\tthis.#budgets.set(incarnation, budget);\n\t\t}\n\t\treturn budget;\n\t}\n}\n\n/**\n * The spans of a page's `batch` the store takes: its own (ids, trace and parent under `prefix`, so it never writes\n * into another sender's trace or poses as a server span), ending after they start, within its minute's `budget`; each\n * marked `chord.host: browser` and stamped with `who()` (the link's principal's attributes), which no attribute of the\n * page's may override: the page's own `chord.*` attributes are dropped (a claimed `chord.principal` too, when the hook\n * records none).\n */\nfunction pageSpans(\n\tbatch: Static<typeof PageBatch>,\n\tprefix: string,\n\twho: () => Readonly<SpanAttributes>,\n\tbudget: Budget,\n): StoredSpan[] {\n\tconst accepted: StoredSpan[] = [];\n\tfor (const span of batch.spans) {\n\t\tif (budget.spans >= PAGE_SPANS_PER_MINUTE) break;\n\t\tconst own =\n\t\t\tspan.id.startsWith(prefix) &&\n\t\t\tspan.traceId.startsWith(prefix) &&\n\t\t\t(span.parentId === undefined || span.parentId.startsWith(prefix));\n\t\tif (!own || span.endedMs < span.startedMs) continue;\n\t\tbudget.spans++;\n\t\taccepted.push({ ...span, attributes: { \"chord.host\": \"browser\", ...ownAttributes(span.attributes), ...who() } });\n\t}\n\treturn accepted;\n}\n\n/** A page's attributes without Chord's (`chord.*`): what Chord records about a span, the server stamps itself. */\nfunction ownAttributes(attributes: SpanAttributes): SpanAttributes {\n\treturn Object.fromEntries(Object.entries(attributes).filter(([key]) => !key.startsWith(\"chord.\")));\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { PAGE_BATCH_SPANS, PageBatch, PageTelemetry, WORKER_BATCH_ROWS, WorkerBatch, WorkerTelemetry, } from "./batch.ts";
|
|
2
|
+
export { PAGE_SPANS_PER_MINUTE, type TelemetryIngestOptions, type TelemetryIngestTarget, telemetryIngestFacet, } from "./facet.ts";
|
|
3
|
+
export { type TelemetryBatch, TelemetryRecorder } from "./recorder.ts";
|
|
4
|
+
export { sendPageTelemetry, sendWorkerTelemetry, type TelemetrySender } from "./sender.ts";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry-ingest/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,eAAe,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,oBAAoB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Telemetry from pages and workers to the server's store (decisions "Telemetry from browser pages", "The server is
|
|
2
|
+
// the one place telemetry is stored"): the recorder pages and workers keep their spans in, the batches and the
|
|
3
|
+
// server's objects that take them, the facet serving those, and the senders.
|
|
4
|
+
export { PAGE_BATCH_SPANS, PageBatch, PageTelemetry, WORKER_BATCH_ROWS, WorkerBatch, WorkerTelemetry, } from "./batch.js";
|
|
5
|
+
export { PAGE_SPANS_PER_MINUTE, telemetryIngestFacet, } from "./facet.js";
|
|
6
|
+
export { TelemetryRecorder } from "./recorder.js";
|
|
7
|
+
export { sendPageTelemetry, sendWorkerTelemetry } from "./sender.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry-ingest/index.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,+GAA+G;AAC/G,6EAA6E;AAE7E,OAAO,EACN,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,eAAe,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,qBAAqB,EAGrB,oBAAoB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAuB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAwB,MAAM,aAAa,CAAC","sourcesContent":["// Telemetry from pages and workers to the server's store (decisions \"Telemetry from browser pages\", \"The server is\n// the one place telemetry is stored\"): the recorder pages and workers keep their spans in, the batches and the\n// server's objects that take them, the facet serving those, and the senders.\n\nexport {\n\tPAGE_BATCH_SPANS,\n\tPageBatch,\n\tPageTelemetry,\n\tWORKER_BATCH_ROWS,\n\tWorkerBatch,\n\tWorkerTelemetry,\n} from \"./batch.ts\";\nexport {\n\tPAGE_SPANS_PER_MINUTE,\n\ttype TelemetryIngestOptions,\n\ttype TelemetryIngestTarget,\n\ttelemetryIngestFacet,\n} from \"./facet.ts\";\nexport { type TelemetryBatch, TelemetryRecorder } from \"./recorder.ts\";\nexport { sendPageTelemetry, sendWorkerTelemetry, type TelemetrySender } from \"./sender.ts\";\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type SpanAttributes, type SpanOptions, type StoredMetric, type StoredSpan, type TelemetryCarrier, type TelemetryContext, type TelemetryMetrics, type TelemetryPropagation, type TelemetrySpan } from "@earendil-works/pi-telemetry";
|
|
2
|
+
/** What a recorder hands its owner at once: settled spans and metric aggregates. */
|
|
3
|
+
export type TelemetryBatch = {
|
|
4
|
+
readonly spans: StoredSpan[];
|
|
5
|
+
readonly metrics: StoredMetric[];
|
|
6
|
+
};
|
|
7
|
+
/** The metric interval. */
|
|
8
|
+
export declare const INTERVAL_MS = 10000;
|
|
9
|
+
/**
|
|
10
|
+
* Records spans and metrics in memory for its owner, who takes them in batches (`take`, then `release` once they are
|
|
11
|
+
* written or given up). Span ids are `<scope>:<n>`, `scope` read at the first span (a page's names its host's
|
|
12
|
+
* incarnation, made after the recorder). `capacity` bounds the queued spans, a taken batch's included, and separately
|
|
13
|
+
* the pending metric series.
|
|
14
|
+
*/
|
|
15
|
+
export declare class TelemetryRecorder implements TelemetryContext, TelemetryPropagation {
|
|
16
|
+
#private;
|
|
17
|
+
readonly propagation: TelemetryPropagation;
|
|
18
|
+
readonly metrics: TelemetryMetrics;
|
|
19
|
+
droppedSpans: number;
|
|
20
|
+
droppedMeasurements: number;
|
|
21
|
+
constructor(scope: () => string, capacity: number);
|
|
22
|
+
/** Whether it stopped: later spans are inert, later measurements ignored. */
|
|
23
|
+
get stopped(): boolean;
|
|
24
|
+
startSpan<T>(options: SpanOptions, callback: (span: TelemetrySpan) => T | Promise<T>): Promise<T>;
|
|
25
|
+
inject(context: TelemetryContext): TelemetryCarrier | undefined;
|
|
26
|
+
extract(carrier: TelemetryCarrier | undefined): TelemetryContext;
|
|
27
|
+
/**
|
|
28
|
+
* Takes the queued spans (at most `limit`, the oldest) and the metric intervals that are over (every one with
|
|
29
|
+
* `partial`); the spans keep counting against the capacity until `release`.
|
|
30
|
+
*/
|
|
31
|
+
take(partial: boolean, limit?: number): TelemetryBatch;
|
|
32
|
+
/** The batch taken last was written or given up: its capacity is free again. */
|
|
33
|
+
release(): void;
|
|
34
|
+
/** How many settled spans wait to be taken. */
|
|
35
|
+
get queuedSpans(): number;
|
|
36
|
+
/** Whether spans, or metric intervals that are over (all of them with `partial`), wait to be taken. */
|
|
37
|
+
pending(partial: boolean): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Queues spans and metric rows another process recorded (an ingest), within the capacity; returns how many spans
|
|
40
|
+
* it queued (the rest dropped and counted).
|
|
41
|
+
*/
|
|
42
|
+
ingest(batch: TelemetryBatch): number;
|
|
43
|
+
/** Stops recording; with `discard`, what waits is dropped too (a failed store). */
|
|
44
|
+
stop(discard: "keep" | "discard"): void;
|
|
45
|
+
}
|
|
46
|
+
/** A metric's series: its name, kind, unit and attributes (sorted by key), as JSON. */
|
|
47
|
+
export declare function seriesKey(metric: StoredMetric): string;
|
|
48
|
+
/** `attributes` with their keys in order (a series' attributes as stored). */
|
|
49
|
+
export declare function sortedAttributes(attributes: SpanAttributes): SpanAttributes;
|
|
50
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/telemetry-ingest/recorder.ts"],"names":[],"mappings":"AAKA,OAAO,EAGN,KAAK,cAAc,EAEnB,KAAK,WAAW,EAEhB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAElB,MAAM,8BAA8B,CAAC;AAEtC,oFAAoF;AACpF,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC;AAchG,2BAA2B;AAC3B,eAAO,MAAM,WAAW,QAAS,CAAC;AAElC;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,gBAAgB,EAAE,oBAAoB;;IAC/E,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAQ;IAClD,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAIhC;IACF,YAAY,SAAK;IACjB,mBAAmB,SAAK;IAWxB,YAAY,KAAK,EAAE,MAAM,MAAM,EAAE,QAAQ,EAAE,MAAM,EAGhD;IAED,6EAA6E;IAC7E,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhG;IAED,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAG9D;IAED,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,gBAAgB,CAa/D;IAED;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,SAA2B,GAAG,cAAc,CAavE;IAED,gFAAgF;IAChF,OAAO,IAAI,IAAI,CAGd;IAED,+CAA+C;IAC/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,uGAAuG;IACvG,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAKjC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAYpC;IAED,mFAAmF;IACnF,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMtC;CA6ID;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAOtD;AAOD,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,CAM3E"}
|