@earendil-works/chord 1.5.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 +51 -0
- package/README.md +50 -90
- package/dist/contracts/accepts.d.ts +81 -0
- package/dist/contracts/accepts.d.ts.map +1 -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.map +1 -0
- package/dist/contracts/declare.d.ts.map +1 -0
- package/dist/contracts/declare.js.map +1 -0
- package/dist/contracts/evolve.d.ts.map +1 -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.map +1 -0
- package/dist/contracts/history.d.ts.map +1 -0
- package/dist/contracts/history.js.map +1 -0
- package/dist/contracts/host-kind.d.ts.map +1 -0
- package/dist/contracts/host-kind.js.map +1 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/internal.d.ts.map +1 -0
- package/dist/contracts/internal.js.map +1 -0
- package/dist/contracts/names.d.ts.map +1 -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.map +1 -0
- package/dist/contracts/schema.d.ts.map +1 -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.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.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.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/documents/address-source.d.ts +20 -0
- package/dist/documents/address-source.d.ts.map +1 -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.map +1 -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.map +1 -0
- package/dist/documents/index.d.ts.map +1 -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.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.map +1 -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.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.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.map +1 -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.map +1 -0
- package/dist/host/deadline.js.map +1 -0
- package/dist/host/dependencies.d.ts.map +1 -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.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.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.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.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.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.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.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.map +1 -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.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.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.map +1 -0
- package/dist/host/uuid.js.map +1 -0
- package/dist/index.d.ts +29 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -10
- package/dist/index.js.map +1 -1
- package/dist/jobs/definition.d.ts.map +1 -0
- package/dist/jobs/definition.js.map +1 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/internal.d.ts.map +1 -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.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.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.map +1 -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.map +1 -0
- package/dist/link/errors.js.map +1 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js.map +1 -0
- package/dist/link/internal.d.ts.map +1 -0
- package/dist/link/internal.js.map +1 -0
- package/dist/link/ipc.d.ts.map +1 -0
- package/dist/link/ipc.js.map +1 -0
- package/dist/link/link.d.ts.map +1 -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.map +1 -0
- package/dist/link/text.js +355 -0
- package/dist/link/text.js.map +1 -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.map +1 -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.map +1 -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.map +1 -0
- package/dist/node/http/file.js.map +1 -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.map +1 -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.map +1 -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.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.map +1 -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/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.map +1 -0
- package/dist/registries/contribution.js.map +1 -0
- package/dist/registries/entries.d.ts.map +1 -0
- package/dist/registries/entries.js.map +1 -0
- package/dist/registries/index.d.ts.map +1 -0
- package/dist/registries/index.js.map +1 -0
- package/dist/registries/internal.d.ts.map +1 -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.map +1 -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.map +1 -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.map +1 -0
- package/dist/remote/internal.js.map +1 -0
- package/dist/remote/path.d.ts.map +1 -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/node.d.ts +9 -1
- package/dist/sqlite/node.d.ts.map +1 -1
- package/dist/sqlite/node.js +9 -3
- 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.map +1 -0
- package/dist/state/internal.d.ts.map +1 -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.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.map +1 -0
- package/dist/store/allocator.d.ts.map +1 -0
- package/dist/store/allocator.js.map +1 -0
- package/dist/store/applier.d.ts.map +1 -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.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.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.map +1 -0
- package/dist/store/claims.d.ts.map +1 -0
- package/dist/store/claims.js.map +1 -0
- package/dist/store/columns.d.ts.map +1 -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.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.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.map +1 -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.map +1 -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.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.map +1 -0
- package/dist/store/refusal.d.ts.map +1 -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.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.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.map +1 -0
- package/dist/store/table-evolve.d.ts.map +1 -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.map +1 -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.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.map +1 -0
- package/dist/store/text.d.ts.map +1 -0
- package/dist/store/text.js.map +1 -0
- package/dist/store/writes.d.ts.map +1 -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/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/design.md +3065 -0
- package/docs/durable-observers/book.md +432 -0
- package/docs/durable-observers/index.html +517 -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-4a.md +418 -0
- package/docs/slice-4b.md +208 -0
- package/docs/slice-6a.md +676 -0
- package/docs/slice-6b.md +332 -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-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 +99 -21
- 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 -207
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -241
- 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 -1002
- 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/next/contracts/accepts.d.ts +0 -81
- package/dist/next/contracts/accepts.d.ts.map +0 -1
- package/dist/next/contracts/accepts.js.map +0 -1
- package/dist/next/contracts/contract.d.ts +0 -121
- package/dist/next/contracts/contract.d.ts.map +0 -1
- package/dist/next/contracts/contract.js.map +0 -1
- package/dist/next/contracts/declare.d.ts.map +0 -1
- package/dist/next/contracts/declare.js.map +0 -1
- package/dist/next/contracts/evolve.d.ts.map +0 -1
- package/dist/next/contracts/evolve.js.map +0 -1
- package/dist/next/contracts/fingerprint.d.ts +0 -16
- package/dist/next/contracts/fingerprint.d.ts.map +0 -1
- package/dist/next/contracts/fingerprint.js.map +0 -1
- package/dist/next/contracts/history.d.ts.map +0 -1
- package/dist/next/contracts/history.js.map +0 -1
- package/dist/next/contracts/host-kind.d.ts.map +0 -1
- package/dist/next/contracts/host-kind.js.map +0 -1
- package/dist/next/contracts/index.d.ts.map +0 -1
- package/dist/next/contracts/index.js.map +0 -1
- package/dist/next/contracts/internal.d.ts.map +0 -1
- package/dist/next/contracts/internal.js.map +0 -1
- package/dist/next/contracts/names.d.ts.map +0 -1
- package/dist/next/contracts/names.js.map +0 -1
- package/dist/next/contracts/params.d.ts +0 -28
- package/dist/next/contracts/params.d.ts.map +0 -1
- package/dist/next/contracts/params.js.map +0 -1
- package/dist/next/contracts/schema.d.ts.map +0 -1
- package/dist/next/contracts/schema.js.map +0 -1
- package/dist/next/contracts/snapshot.d.ts +0 -16
- package/dist/next/contracts/snapshot.d.ts.map +0 -1
- package/dist/next/contracts/snapshot.js +0 -167
- package/dist/next/contracts/snapshot.js.map +0 -1
- package/dist/next/data/args.d.ts +0 -50
- package/dist/next/data/args.d.ts.map +0 -1
- package/dist/next/data/args.js.map +0 -1
- package/dist/next/data/errors.d.ts +0 -73
- package/dist/next/data/errors.d.ts.map +0 -1
- package/dist/next/data/errors.js +0 -107
- package/dist/next/data/errors.js.map +0 -1
- package/dist/next/data/failure.d.ts.map +0 -1
- package/dist/next/data/failure.js +0 -72
- package/dist/next/data/failure.js.map +0 -1
- package/dist/next/data/index.d.ts +0 -4
- package/dist/next/data/index.d.ts.map +0 -1
- package/dist/next/data/index.js +0 -4
- package/dist/next/data/index.js.map +0 -1
- package/dist/next/data/internal.d.ts +0 -7
- package/dist/next/data/internal.d.ts.map +0 -1
- package/dist/next/data/internal.js +0 -8
- package/dist/next/data/internal.js.map +0 -1
- package/dist/next/data/params.d.ts +0 -20
- package/dist/next/data/params.d.ts.map +0 -1
- package/dist/next/data/params.js.map +0 -1
- package/dist/next/data/principal.d.ts +0 -17
- package/dist/next/data/principal.d.ts.map +0 -1
- package/dist/next/data/principal.js +0 -41
- package/dist/next/data/principal.js.map +0 -1
- package/dist/next/data/validator.d.ts +0 -12
- package/dist/next/data/validator.d.ts.map +0 -1
- package/dist/next/data/validator.js +0 -34
- package/dist/next/data/validator.js.map +0 -1
- package/dist/next/documents/address-source.d.ts +0 -20
- package/dist/next/documents/address-source.d.ts.map +0 -1
- package/dist/next/documents/address-source.js.map +0 -1
- package/dist/next/documents/definition.d.ts +0 -84
- package/dist/next/documents/definition.d.ts.map +0 -1
- package/dist/next/documents/definition.js +0 -73
- package/dist/next/documents/definition.js.map +0 -1
- package/dist/next/documents/documents.d.ts +0 -106
- package/dist/next/documents/documents.d.ts.map +0 -1
- package/dist/next/documents/documents.js +0 -224
- package/dist/next/documents/documents.js.map +0 -1
- package/dist/next/documents/fence.d.ts.map +0 -1
- package/dist/next/documents/fence.js.map +0 -1
- package/dist/next/documents/handles.d.ts +0 -76
- package/dist/next/documents/handles.d.ts.map +0 -1
- package/dist/next/documents/handles.js.map +0 -1
- package/dist/next/documents/index.d.ts.map +0 -1
- package/dist/next/documents/index.js.map +0 -1
- package/dist/next/documents/internal.d.ts +0 -9
- package/dist/next/documents/internal.d.ts.map +0 -1
- package/dist/next/documents/internal.js.map +0 -1
- package/dist/next/documents/keyed-slot.d.ts +0 -103
- package/dist/next/documents/keyed-slot.d.ts.map +0 -1
- package/dist/next/documents/keyed-slot.js +0 -395
- package/dist/next/documents/keyed-slot.js.map +0 -1
- package/dist/next/documents/line.d.ts.map +0 -1
- package/dist/next/documents/line.js.map +0 -1
- package/dist/next/documents/persistence.d.ts +0 -104
- package/dist/next/documents/persistence.d.ts.map +0 -1
- package/dist/next/documents/persistence.js +0 -128
- package/dist/next/documents/persistence.js.map +0 -1
- package/dist/next/documents/residency.d.ts +0 -31
- package/dist/next/documents/residency.d.ts.map +0 -1
- package/dist/next/documents/residency.js.map +0 -1
- package/dist/next/documents/slot.d.ts +0 -109
- package/dist/next/documents/slot.d.ts.map +0 -1
- package/dist/next/documents/slot.js +0 -181
- package/dist/next/documents/slot.js.map +0 -1
- package/dist/next/documents/transaction.d.ts +0 -133
- package/dist/next/documents/transaction.d.ts.map +0 -1
- package/dist/next/documents/transaction.js +0 -409
- package/dist/next/documents/transaction.js.map +0 -1
- package/dist/next/host/activity.d.ts +0 -31
- package/dist/next/host/activity.d.ts.map +0 -1
- package/dist/next/host/activity.js +0 -40
- package/dist/next/host/activity.js.map +0 -1
- package/dist/next/host/adapted.d.ts +0 -49
- package/dist/next/host/adapted.d.ts.map +0 -1
- package/dist/next/host/adapted.js.map +0 -1
- package/dist/next/host/attempt.d.ts +0 -278
- package/dist/next/host/attempt.d.ts.map +0 -1
- package/dist/next/host/attempt.js +0 -1072
- package/dist/next/host/attempt.js.map +0 -1
- package/dist/next/host/backoff.d.ts.map +0 -1
- package/dist/next/host/backoff.js.map +0 -1
- package/dist/next/host/ctx.d.ts +0 -47
- package/dist/next/host/ctx.d.ts.map +0 -1
- package/dist/next/host/ctx.js +0 -108
- package/dist/next/host/ctx.js.map +0 -1
- package/dist/next/host/deadline.d.ts.map +0 -1
- package/dist/next/host/deadline.js.map +0 -1
- package/dist/next/host/dependencies.d.ts.map +0 -1
- package/dist/next/host/dependencies.js.map +0 -1
- package/dist/next/host/destination.d.ts +0 -48
- package/dist/next/host/destination.d.ts.map +0 -1
- package/dist/next/host/destination.js.map +0 -1
- package/dist/next/host/facet.d.ts +0 -79
- package/dist/next/host/facet.d.ts.map +0 -1
- package/dist/next/host/facet.js.map +0 -1
- package/dist/next/host/follow.d.ts +0 -52
- package/dist/next/host/follow.d.ts.map +0 -1
- package/dist/next/host/follow.js.map +0 -1
- package/dist/next/host/host.d.ts +0 -495
- package/dist/next/host/host.d.ts.map +0 -1
- package/dist/next/host/host.js +0 -1075
- package/dist/next/host/host.js.map +0 -1
- package/dist/next/host/index.d.ts +0 -17
- package/dist/next/host/index.d.ts.map +0 -1
- package/dist/next/host/index.js.map +0 -1
- package/dist/next/host/internal.d.ts +0 -10
- package/dist/next/host/internal.d.ts.map +0 -1
- package/dist/next/host/internal.js +0 -8
- package/dist/next/host/internal.js.map +0 -1
- package/dist/next/host/members.d.ts +0 -50
- package/dist/next/host/members.d.ts.map +0 -1
- package/dist/next/host/members.js.map +0 -1
- package/dist/next/host/native.d.ts +0 -55
- package/dist/next/host/native.d.ts.map +0 -1
- package/dist/next/host/native.js +0 -92
- package/dist/next/host/native.js.map +0 -1
- package/dist/next/host/object.d.ts +0 -290
- package/dist/next/host/object.d.ts.map +0 -1
- package/dist/next/host/object.js +0 -1127
- package/dist/next/host/object.js.map +0 -1
- package/dist/next/host/parked.d.ts +0 -23
- package/dist/next/host/parked.d.ts.map +0 -1
- package/dist/next/host/parked.js.map +0 -1
- package/dist/next/host/presence.d.ts +0 -34
- package/dist/next/host/presence.d.ts.map +0 -1
- package/dist/next/host/presence.js.map +0 -1
- package/dist/next/host/ref-state.d.ts +0 -53
- package/dist/next/host/ref-state.d.ts.map +0 -1
- package/dist/next/host/ref-state.js +0 -83
- package/dist/next/host/ref-state.js.map +0 -1
- package/dist/next/host/reference-keys.d.ts +0 -36
- package/dist/next/host/reference-keys.d.ts.map +0 -1
- package/dist/next/host/reference-keys.js +0 -168
- package/dist/next/host/reference-keys.js.map +0 -1
- package/dist/next/host/reference-source.d.ts +0 -65
- package/dist/next/host/reference-source.d.ts.map +0 -1
- package/dist/next/host/reference-source.js +0 -285
- package/dist/next/host/reference-source.js.map +0 -1
- package/dist/next/host/reference.d.ts +0 -308
- package/dist/next/host/reference.d.ts.map +0 -1
- package/dist/next/host/reference.js +0 -775
- package/dist/next/host/reference.js.map +0 -1
- package/dist/next/host/retry-on.d.ts.map +0 -1
- package/dist/next/host/retry-on.js.map +0 -1
- package/dist/next/host/revocation.d.ts +0 -16
- package/dist/next/host/revocation.d.ts.map +0 -1
- package/dist/next/host/revocation.js.map +0 -1
- package/dist/next/host/root.d.ts +0 -27
- package/dist/next/host/root.d.ts.map +0 -1
- package/dist/next/host/root.js +0 -68
- package/dist/next/host/root.js.map +0 -1
- package/dist/next/host/route.d.ts +0 -64
- package/dist/next/host/route.d.ts.map +0 -1
- package/dist/next/host/route.js +0 -190
- package/dist/next/host/route.js.map +0 -1
- package/dist/next/host/routines.d.ts +0 -76
- package/dist/next/host/routines.d.ts.map +0 -1
- package/dist/next/host/routines.js +0 -350
- package/dist/next/host/routines.js.map +0 -1
- package/dist/next/host/sleep.d.ts +0 -9
- package/dist/next/host/sleep.d.ts.map +0 -1
- package/dist/next/host/sleep.js.map +0 -1
- package/dist/next/host/staging.d.ts +0 -94
- package/dist/next/host/staging.d.ts.map +0 -1
- package/dist/next/host/staging.js +0 -302
- package/dist/next/host/staging.js.map +0 -1
- package/dist/next/host/unbound.d.ts +0 -30
- package/dist/next/host/unbound.d.ts.map +0 -1
- package/dist/next/host/unbound.js +0 -67
- package/dist/next/host/unbound.js.map +0 -1
- package/dist/next/host/uuid.d.ts.map +0 -1
- package/dist/next/host/uuid.js.map +0 -1
- package/dist/next/index.d.ts +0 -28
- package/dist/next/index.d.ts.map +0 -1
- package/dist/next/index.js +0 -18
- package/dist/next/index.js.map +0 -1
- package/dist/next/jobs/definition.d.ts.map +0 -1
- package/dist/next/jobs/definition.js.map +0 -1
- package/dist/next/jobs/index.d.ts.map +0 -1
- package/dist/next/jobs/index.js.map +0 -1
- package/dist/next/jobs/internal.d.ts.map +0 -1
- package/dist/next/jobs/internal.js.map +0 -1
- package/dist/next/jobs/job.d.ts +0 -152
- package/dist/next/jobs/job.d.ts.map +0 -1
- package/dist/next/jobs/job.js +0 -320
- package/dist/next/jobs/job.js.map +0 -1
- package/dist/next/jobs/persisted.d.ts +0 -38
- package/dist/next/jobs/persisted.d.ts.map +0 -1
- package/dist/next/jobs/persisted.js.map +0 -1
- package/dist/next/jobs/records.d.ts +0 -231
- package/dist/next/jobs/records.d.ts.map +0 -1
- package/dist/next/jobs/records.js +0 -869
- package/dist/next/jobs/records.js.map +0 -1
- package/dist/next/jobs/run-states.d.ts +0 -69
- package/dist/next/jobs/run-states.d.ts.map +0 -1
- package/dist/next/jobs/run-states.js +0 -228
- package/dist/next/jobs/run-states.js.map +0 -1
- package/dist/next/jobs/run.d.ts +0 -113
- package/dist/next/jobs/run.d.ts.map +0 -1
- package/dist/next/jobs/run.js +0 -200
- package/dist/next/jobs/run.js.map +0 -1
- package/dist/next/jobs/running.d.ts +0 -44
- package/dist/next/jobs/running.d.ts.map +0 -1
- package/dist/next/jobs/running.js.map +0 -1
- package/dist/next/jobs/stored.d.ts +0 -63
- package/dist/next/jobs/stored.d.ts.map +0 -1
- package/dist/next/jobs/stored.js.map +0 -1
- package/dist/next/link/binary.d.ts.map +0 -1
- package/dist/next/link/binary.js +0 -534
- package/dist/next/link/binary.js.map +0 -1
- package/dist/next/link/channel.d.ts +0 -63
- package/dist/next/link/channel.d.ts.map +0 -1
- package/dist/next/link/channel.js +0 -202
- package/dist/next/link/channel.js.map +0 -1
- package/dist/next/link/errors.d.ts.map +0 -1
- package/dist/next/link/errors.js.map +0 -1
- package/dist/next/link/index.d.ts.map +0 -1
- package/dist/next/link/index.js.map +0 -1
- package/dist/next/link/internal.d.ts.map +0 -1
- package/dist/next/link/internal.js.map +0 -1
- package/dist/next/link/ipc.d.ts.map +0 -1
- package/dist/next/link/ipc.js.map +0 -1
- package/dist/next/link/link.d.ts.map +0 -1
- package/dist/next/link/link.js.map +0 -1
- package/dist/next/link/message.d.ts +0 -249
- package/dist/next/link/message.d.ts.map +0 -1
- package/dist/next/link/message.js +0 -123
- package/dist/next/link/message.js.map +0 -1
- package/dist/next/link/part.d.ts +0 -80
- package/dist/next/link/part.d.ts.map +0 -1
- package/dist/next/link/part.js +0 -164
- package/dist/next/link/part.js.map +0 -1
- package/dist/next/link/text.d.ts.map +0 -1
- package/dist/next/link/text.js +0 -335
- package/dist/next/link/text.js.map +0 -1
- package/dist/next/link/values.d.ts.map +0 -1
- package/dist/next/link/values.js +0 -117
- package/dist/next/link/values.js.map +0 -1
- package/dist/next/link/websocket.d.ts.map +0 -1
- package/dist/next/link/websocket.js.map +0 -1
- package/dist/next/registries/contribution.d.ts.map +0 -1
- package/dist/next/registries/contribution.js.map +0 -1
- package/dist/next/registries/entries.d.ts.map +0 -1
- package/dist/next/registries/entries.js.map +0 -1
- package/dist/next/registries/index.d.ts.map +0 -1
- package/dist/next/registries/index.js.map +0 -1
- package/dist/next/registries/internal.d.ts.map +0 -1
- package/dist/next/registries/internal.js.map +0 -1
- package/dist/next/registries/record.d.ts +0 -94
- package/dist/next/registries/record.d.ts.map +0 -1
- package/dist/next/registries/record.js +0 -253
- package/dist/next/registries/record.js.map +0 -1
- package/dist/next/registries/registry.d.ts +0 -74
- package/dist/next/registries/registry.d.ts.map +0 -1
- package/dist/next/registries/registry.js.map +0 -1
- package/dist/next/registries/value.d.ts.map +0 -1
- package/dist/next/registries/value.js +0 -199
- package/dist/next/registries/value.js.map +0 -1
- package/dist/next/remote/calls.d.ts.map +0 -1
- package/dist/next/remote/calls.js.map +0 -1
- package/dist/next/remote/consumer.d.ts +0 -42
- package/dist/next/remote/consumer.d.ts.map +0 -1
- package/dist/next/remote/consumer.js +0 -343
- package/dist/next/remote/consumer.js.map +0 -1
- package/dist/next/remote/hold.d.ts +0 -130
- package/dist/next/remote/hold.d.ts.map +0 -1
- package/dist/next/remote/hold.js +0 -537
- package/dist/next/remote/hold.js.map +0 -1
- package/dist/next/remote/host-link.d.ts +0 -77
- package/dist/next/remote/host-link.d.ts.map +0 -1
- package/dist/next/remote/host-link.js +0 -182
- package/dist/next/remote/host-link.js.map +0 -1
- package/dist/next/remote/internal.d.ts.map +0 -1
- package/dist/next/remote/internal.js.map +0 -1
- package/dist/next/remote/path.d.ts.map +0 -1
- package/dist/next/remote/path.js.map +0 -1
- package/dist/next/remote/provider.d.ts +0 -76
- package/dist/next/remote/provider.d.ts.map +0 -1
- package/dist/next/remote/provider.js +0 -506
- package/dist/next/remote/provider.js.map +0 -1
- package/dist/next/remote/relay.d.ts +0 -58
- package/dist/next/remote/relay.d.ts.map +0 -1
- package/dist/next/remote/relay.js +0 -117
- package/dist/next/remote/relay.js.map +0 -1
- package/dist/next/remote/remote-object.d.ts +0 -133
- package/dist/next/remote/remote-object.d.ts.map +0 -1
- package/dist/next/remote/remote-object.js +0 -411
- package/dist/next/remote/remote-object.js.map +0 -1
- package/dist/next/remote/replica.d.ts +0 -59
- package/dist/next/remote/replica.d.ts.map +0 -1
- package/dist/next/remote/replica.js +0 -125
- package/dist/next/remote/replica.js.map +0 -1
- package/dist/next/state/batch.d.ts +0 -64
- package/dist/next/state/batch.d.ts.map +0 -1
- package/dist/next/state/batch.js +0 -163
- package/dist/next/state/batch.js.map +0 -1
- package/dist/next/state/derive.d.ts +0 -52
- package/dist/next/state/derive.d.ts.map +0 -1
- package/dist/next/state/derive.js +0 -182
- package/dist/next/state/derive.js.map +0 -1
- package/dist/next/state/index.d.ts +0 -6
- package/dist/next/state/index.d.ts.map +0 -1
- package/dist/next/state/index.js.map +0 -1
- package/dist/next/state/internal.d.ts.map +0 -1
- package/dist/next/state/internal.js.map +0 -1
- package/dist/next/state/native-source.d.ts +0 -106
- package/dist/next/state/native-source.d.ts.map +0 -1
- package/dist/next/state/native-source.js +0 -240
- package/dist/next/state/native-source.js.map +0 -1
- package/dist/next/state/watchable.d.ts +0 -114
- package/dist/next/state/watchable.d.ts.map +0 -1
- package/dist/next/state/watchable.js +0 -156
- package/dist/next/state/watchable.js.map +0 -1
- package/dist/next/state/writable.d.ts +0 -32
- package/dist/next/state/writable.d.ts.map +0 -1
- package/dist/next/state/writable.js.map +0 -1
- package/dist/next/store/adapter.d.ts +0 -67
- package/dist/next/store/adapter.d.ts.map +0 -1
- package/dist/next/store/adapter.js.map +0 -1
- package/dist/next/store/allocator.d.ts.map +0 -1
- package/dist/next/store/allocator.js.map +0 -1
- package/dist/next/store/applier.d.ts.map +0 -1
- package/dist/next/store/applier.js.map +0 -1
- package/dist/next/store/apply-batch.d.ts +0 -12
- package/dist/next/store/apply-batch.d.ts.map +0 -1
- package/dist/next/store/apply-batch.js.map +0 -1
- package/dist/next/store/archive.d.ts +0 -32
- package/dist/next/store/archive.d.ts.map +0 -1
- package/dist/next/store/archive.js +0 -129
- package/dist/next/store/archive.js.map +0 -1
- package/dist/next/store/backend.d.ts +0 -10
- package/dist/next/store/backend.d.ts.map +0 -1
- package/dist/next/store/backend.js.map +0 -1
- package/dist/next/store/catalog.d.ts +0 -24
- package/dist/next/store/catalog.d.ts.map +0 -1
- package/dist/next/store/catalog.js.map +0 -1
- package/dist/next/store/claims.d.ts.map +0 -1
- package/dist/next/store/claims.js.map +0 -1
- package/dist/next/store/columns.d.ts.map +0 -1
- package/dist/next/store/columns.js.map +0 -1
- package/dist/next/store/engine.d.ts +0 -176
- package/dist/next/store/engine.d.ts.map +0 -1
- package/dist/next/store/engine.js +0 -283
- package/dist/next/store/engine.js.map +0 -1
- package/dist/next/store/evaluate.d.ts +0 -17
- package/dist/next/store/evaluate.d.ts.map +0 -1
- package/dist/next/store/evaluate.js.map +0 -1
- package/dist/next/store/export.d.ts +0 -17
- package/dist/next/store/export.d.ts.map +0 -1
- package/dist/next/store/export.js +0 -200
- package/dist/next/store/export.js.map +0 -1
- package/dist/next/store/expression.d.ts +0 -150
- package/dist/next/store/expression.d.ts.map +0 -1
- package/dist/next/store/expression.js.map +0 -1
- package/dist/next/store/import.d.ts +0 -10
- package/dist/next/store/import.d.ts.map +0 -1
- package/dist/next/store/import.js +0 -276
- package/dist/next/store/import.js.map +0 -1
- package/dist/next/store/index.d.ts.map +0 -1
- package/dist/next/store/index.js.map +0 -1
- package/dist/next/store/json-column.d.ts +0 -33
- package/dist/next/store/json-column.d.ts.map +0 -1
- package/dist/next/store/json-column.js +0 -61
- package/dist/next/store/json-column.js.map +0 -1
- package/dist/next/store/jsonl.d.ts.map +0 -1
- package/dist/next/store/jsonl.js.map +0 -1
- package/dist/next/store/outbox.d.ts +0 -26
- package/dist/next/store/outbox.d.ts.map +0 -1
- package/dist/next/store/outbox.js.map +0 -1
- package/dist/next/store/query.d.ts +0 -39
- package/dist/next/store/query.d.ts.map +0 -1
- package/dist/next/store/query.js.map +0 -1
- package/dist/next/store/refusal.d.ts.map +0 -1
- package/dist/next/store/refusal.js.map +0 -1
- package/dist/next/store/rows.d.ts +0 -80
- package/dist/next/store/rows.d.ts.map +0 -1
- package/dist/next/store/rows.js.map +0 -1
- package/dist/next/store/schema.d.ts +0 -25
- package/dist/next/store/schema.d.ts.map +0 -1
- package/dist/next/store/schema.js +0 -115
- package/dist/next/store/schema.js.map +0 -1
- package/dist/next/store/sql.d.ts +0 -73
- package/dist/next/store/sql.d.ts.map +0 -1
- package/dist/next/store/sql.js.map +0 -1
- package/dist/next/store/step.d.ts +0 -48
- package/dist/next/store/step.d.ts.map +0 -1
- package/dist/next/store/step.js +0 -50
- package/dist/next/store/step.js.map +0 -1
- package/dist/next/store/store.d.ts +0 -161
- package/dist/next/store/store.d.ts.map +0 -1
- package/dist/next/store/store.js +0 -627
- package/dist/next/store/store.js.map +0 -1
- package/dist/next/store/table-changes.d.ts +0 -29
- package/dist/next/store/table-changes.d.ts.map +0 -1
- package/dist/next/store/table-changes.js.map +0 -1
- package/dist/next/store/table-evolve.d.ts.map +0 -1
- package/dist/next/store/table-evolve.js.map +0 -1
- package/dist/next/store/table-handle.d.ts +0 -67
- package/dist/next/store/table-handle.d.ts.map +0 -1
- package/dist/next/store/table-handle.js +0 -101
- package/dist/next/store/table-handle.js.map +0 -1
- package/dist/next/store/table-history.d.ts.map +0 -1
- package/dist/next/store/table-history.js.map +0 -1
- package/dist/next/store/table-migration.d.ts +0 -16
- package/dist/next/store/table-migration.d.ts.map +0 -1
- package/dist/next/store/table-migration.js +0 -202
- package/dist/next/store/table-migration.js.map +0 -1
- package/dist/next/store/table-writes.d.ts.map +0 -1
- package/dist/next/store/table-writes.js +0 -165
- package/dist/next/store/table-writes.js.map +0 -1
- package/dist/next/store/table.d.ts +0 -80
- package/dist/next/store/table.d.ts.map +0 -1
- package/dist/next/store/table.js.map +0 -1
- package/dist/next/store/text.d.ts.map +0 -1
- package/dist/next/store/text.js.map +0 -1
- package/dist/next/store/writes.d.ts.map +0 -1
- package/dist/next/store/writes.js.map +0 -1
- package/dist/next-node/compression.d.ts +0 -7
- package/dist/next-node/compression.d.ts.map +0 -1
- package/dist/next-node/compression.js +0 -24
- package/dist/next-node/compression.js.map +0 -1
- package/dist/next-node/http/admission.d.ts.map +0 -1
- package/dist/next-node/http/admission.js.map +0 -1
- package/dist/next-node/http/authenticate.d.ts +0 -21
- package/dist/next-node/http/authenticate.d.ts.map +0 -1
- package/dist/next-node/http/authenticate.js +0 -34
- package/dist/next-node/http/authenticate.js.map +0 -1
- package/dist/next-node/http/cookies.d.ts +0 -24
- package/dist/next-node/http/cookies.d.ts.map +0 -1
- package/dist/next-node/http/cookies.js +0 -62
- package/dist/next-node/http/cookies.js.map +0 -1
- package/dist/next-node/http/file.d.ts.map +0 -1
- package/dist/next-node/http/file.js.map +0 -1
- package/dist/next-node/http/headers.d.ts.map +0 -1
- package/dist/next-node/http/headers.js +0 -129
- package/dist/next-node/http/headers.js.map +0 -1
- package/dist/next-node/http/http.d.ts +0 -100
- package/dist/next-node/http/http.d.ts.map +0 -1
- package/dist/next-node/http/http.js +0 -462
- package/dist/next-node/http/http.js.map +0 -1
- package/dist/next-node/http/incoming.d.ts.map +0 -1
- package/dist/next-node/http/incoming.js.map +0 -1
- package/dist/next-node/http/index.d.ts +0 -11
- package/dist/next-node/http/index.d.ts.map +0 -1
- package/dist/next-node/http/index.js +0 -12
- package/dist/next-node/http/index.js.map +0 -1
- package/dist/next-node/http/node.d.ts.map +0 -1
- package/dist/next-node/http/node.js.map +0 -1
- package/dist/next-node/http/request.d.ts +0 -54
- package/dist/next-node/http/request.d.ts.map +0 -1
- package/dist/next-node/http/request.js +0 -116
- package/dist/next-node/http/request.js.map +0 -1
- package/dist/next-node/http/response.d.ts +0 -63
- package/dist/next-node/http/response.d.ts.map +0 -1
- package/dist/next-node/http/response.js.map +0 -1
- package/dist/next-node/http/router.d.ts +0 -114
- package/dist/next-node/http/router.d.ts.map +0 -1
- package/dist/next-node/http/router.js +0 -261
- package/dist/next-node/http/router.js.map +0 -1
- package/dist/next-node/http/upgrades.d.ts +0 -58
- package/dist/next-node/http/upgrades.d.ts.map +0 -1
- package/dist/next-node/http/upgrades.js +0 -184
- package/dist/next-node/http/upgrades.js.map +0 -1
- package/dist/next-node/plugins/build.d.ts +0 -57
- package/dist/next-node/plugins/build.d.ts.map +0 -1
- package/dist/next-node/plugins/build.js +0 -334
- package/dist/next-node/plugins/build.js.map +0 -1
- package/dist/next-node/plugins/discover.d.ts +0 -36
- package/dist/next-node/plugins/discover.d.ts.map +0 -1
- package/dist/next-node/plugins/discover.js +0 -91
- package/dist/next-node/plugins/discover.js.map +0 -1
- package/dist/next-node/plugins/evaluate.d.ts +0 -33
- package/dist/next-node/plugins/evaluate.d.ts.map +0 -1
- package/dist/next-node/plugins/evaluate.js +0 -98
- package/dist/next-node/plugins/evaluate.js.map +0 -1
- package/dist/next-node/plugins/index.d.ts +0 -9
- package/dist/next-node/plugins/index.d.ts.map +0 -1
- package/dist/next-node/plugins/index.js +0 -11
- package/dist/next-node/plugins/index.js.map +0 -1
- package/dist/next-node/plugins/install.d.ts +0 -13
- package/dist/next-node/plugins/install.d.ts.map +0 -1
- package/dist/next-node/plugins/install.js +0 -37
- package/dist/next-node/plugins/install.js.map +0 -1
- package/dist/next-node/plugins/plugins.d.ts +0 -135
- package/dist/next-node/plugins/plugins.d.ts.map +0 -1
- package/dist/next-node/plugins/plugins.js +0 -206
- package/dist/next-node/plugins/plugins.js.map +0 -1
- package/dist/next-node/plugins/runtime.d.ts +0 -41
- package/dist/next-node/plugins/runtime.d.ts.map +0 -1
- package/dist/next-node/plugins/runtime.js +0 -136
- package/dist/next-node/plugins/runtime.js.map +0 -1
- package/dist/next-node/plugins/stack.d.ts.map +0 -1
- package/dist/next-node/plugins/stack.js.map +0 -1
- package/dist/next-node/plugins/watcher.d.ts +0 -58
- package/dist/next-node/plugins/watcher.d.ts.map +0 -1
- package/dist/next-node/plugins/watcher.js +0 -281
- package/dist/next-node/plugins/watcher.js.map +0 -1
- package/dist/next-node/workers/control.d.ts +0 -83
- package/dist/next-node/workers/control.d.ts.map +0 -1
- package/dist/next-node/workers/control.js +0 -77
- package/dist/next-node/workers/control.js.map +0 -1
- package/dist/next-node/workers/index.d.ts +0 -5
- package/dist/next-node/workers/index.d.ts.map +0 -1
- package/dist/next-node/workers/index.js +0 -7
- package/dist/next-node/workers/index.js.map +0 -1
- package/dist/next-node/workers/lock.d.ts +0 -21
- package/dist/next-node/workers/lock.d.ts.map +0 -1
- package/dist/next-node/workers/lock.js +0 -137
- package/dist/next-node/workers/lock.js.map +0 -1
- package/dist/next-node/workers/main.d.ts +0 -46
- package/dist/next-node/workers/main.d.ts.map +0 -1
- package/dist/next-node/workers/main.js +0 -230
- package/dist/next-node/workers/main.js.map +0 -1
- package/dist/next-node/workers/process.d.ts +0 -42
- package/dist/next-node/workers/process.d.ts.map +0 -1
- package/dist/next-node/workers/process.js +0 -125
- package/dist/next-node/workers/process.js.map +0 -1
- package/dist/next-node/workers/workers.d.ts +0 -80
- package/dist/next-node/workers/workers.d.ts.map +0 -1
- package/dist/next-node/workers/workers.js +0 -572
- package/dist/next-node/workers/workers.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 -1570
- 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 -25
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -403
- 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 -197
- package/dist/wire.d.ts.map +0 -1
- package/dist/wire.js +0 -166
- package/dist/wire.js.map +0 -1
- package/docs/guide.md +0 -814
- package/docs/next/benchmarks.md +0 -959
- package/docs/next/decisions.md +0 -2957
- package/docs/next/dependencies/book.md +0 -1671
- package/docs/next/dependencies/index.html +0 -2641
- package/docs/next/design.md +0 -2554
- package/docs/next/durable-observers/book.md +0 -432
- package/docs/next/durable-observers/index.html +0 -517
- package/docs/next/guide-plugins-hosts/book.md +0 -607
- package/docs/next/guide-plugins-hosts/index.html +0 -652
- package/docs/next/http-workers/book.md +0 -378
- package/docs/next/http-workers/index.html +0 -515
- package/docs/next/layer-1.md +0 -311
- package/docs/next/layer-2.md +0 -216
- package/docs/next/plugin-model/book.md +0 -186
- package/docs/next/plugin-model/index.html +0 -310
- package/docs/next/plugin-primer/book.md +0 -273
- package/docs/next/plugin-primer/index.html +0 -430
- package/docs/next/slice-1.md +0 -236
- package/docs/next/slice-10.md +0 -285
- package/docs/next/slice-11.md +0 -93
- package/docs/next/slice-2.md +0 -174
- package/docs/next/slice-3a.md +0 -296
- package/docs/next/slice-3b.md +0 -197
- package/docs/next/slice-4a.md +0 -418
- package/docs/next/slice-4b.md +0 -208
- package/docs/next/slice-6a.md +0 -676
- package/docs/next/slice-6b.md +0 -332
- package/docs/next/slice-7b/book.md +0 -608
- package/docs/next/slice-7b/index.html +0 -842
- package/docs/next/slice-7b.md +0 -255
- package/docs/next/slice-7c.md +0 -165
- package/docs/next/slices.md +0 -230
- package/docs/next/store/book.md +0 -665
- package/docs/next/store/index.html +0 -861
- package/docs/next/store/walkthrough.md +0 -193
- package/docs/spec.md +0 -288
- package/docs/tutorial.md +0 -932
- /package/dist/{next/contracts → contracts}/accepts.js +0 -0
- /package/dist/{next/contracts → contracts}/contract.js +0 -0
- /package/dist/{next/contracts → contracts}/declare.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/declare.js +0 -0
- /package/dist/{next/contracts → contracts}/evolve.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/evolve.js +0 -0
- /package/dist/{next/contracts → contracts}/fingerprint.js +0 -0
- /package/dist/{next/contracts → contracts}/history.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/history.js +0 -0
- /package/dist/{next/contracts → contracts}/host-kind.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/host-kind.js +0 -0
- /package/dist/{next/contracts → contracts}/index.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/index.js +0 -0
- /package/dist/{next/contracts → contracts}/internal.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/internal.js +0 -0
- /package/dist/{next/contracts → contracts}/names.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/names.js +0 -0
- /package/dist/{next/contracts → contracts}/params.js +0 -0
- /package/dist/{next/contracts → contracts}/schema.d.ts +0 -0
- /package/dist/{next/contracts → contracts}/schema.js +0 -0
- /package/dist/{next/data → data}/args.js +0 -0
- /package/dist/{next/data → data}/failure.d.ts +0 -0
- /package/dist/{next/data → data}/params.js +0 -0
- /package/dist/{next/documents → documents}/address-source.js +0 -0
- /package/dist/{next/documents → documents}/fence.d.ts +0 -0
- /package/dist/{next/documents → documents}/fence.js +0 -0
- /package/dist/{next/documents → documents}/handles.js +0 -0
- /package/dist/{next/documents → documents}/index.d.ts +0 -0
- /package/dist/{next/documents → documents}/index.js +0 -0
- /package/dist/{next/documents → documents}/internal.js +0 -0
- /package/dist/{next/documents → documents}/line.d.ts +0 -0
- /package/dist/{next/documents → documents}/line.js +0 -0
- /package/dist/{next/documents → documents}/residency.js +0 -0
- /package/dist/{next/host → host}/adapted.js +0 -0
- /package/dist/{next/host → host}/backoff.d.ts +0 -0
- /package/dist/{next/host → host}/backoff.js +0 -0
- /package/dist/{next/host → host}/deadline.d.ts +0 -0
- /package/dist/{next/host → host}/deadline.js +0 -0
- /package/dist/{next/host → host}/dependencies.d.ts +0 -0
- /package/dist/{next/host → host}/dependencies.js +0 -0
- /package/dist/{next/host → host}/destination.js +0 -0
- /package/dist/{next/host → host}/facet.js +0 -0
- /package/dist/{next/host → host}/follow.js +0 -0
- /package/dist/{next/host → host}/index.js +0 -0
- /package/dist/{next/host → host}/members.js +0 -0
- /package/dist/{next/host → host}/parked.js +0 -0
- /package/dist/{next/host → host}/presence.js +0 -0
- /package/dist/{next/host → host}/retry-on.d.ts +0 -0
- /package/dist/{next/host → host}/retry-on.js +0 -0
- /package/dist/{next/host → host}/revocation.js +0 -0
- /package/dist/{next/host → host}/sleep.js +0 -0
- /package/dist/{next/host → host}/uuid.d.ts +0 -0
- /package/dist/{next/host → host}/uuid.js +0 -0
- /package/dist/{next/jobs → jobs}/definition.d.ts +0 -0
- /package/dist/{next/jobs → jobs}/definition.js +0 -0
- /package/dist/{next/jobs → jobs}/index.d.ts +0 -0
- /package/dist/{next/jobs → jobs}/index.js +0 -0
- /package/dist/{next/jobs → jobs}/internal.d.ts +0 -0
- /package/dist/{next/jobs → jobs}/internal.js +0 -0
- /package/dist/{next/jobs → jobs}/persisted.js +0 -0
- /package/dist/{next/jobs → jobs}/running.js +0 -0
- /package/dist/{next/jobs → jobs}/stored.js +0 -0
- /package/dist/{next/link → link}/binary.d.ts +0 -0
- /package/dist/{next/link → link}/errors.d.ts +0 -0
- /package/dist/{next/link → link}/errors.js +0 -0
- /package/dist/{next/link → link}/index.d.ts +0 -0
- /package/dist/{next/link → link}/index.js +0 -0
- /package/dist/{next/link → link}/internal.d.ts +0 -0
- /package/dist/{next/link → link}/internal.js +0 -0
- /package/dist/{next/link → link}/ipc.d.ts +0 -0
- /package/dist/{next/link → link}/ipc.js +0 -0
- /package/dist/{next/link → link}/link.d.ts +0 -0
- /package/dist/{next/link → link}/link.js +0 -0
- /package/dist/{next/link → link}/text.d.ts +0 -0
- /package/dist/{next/link → link}/values.d.ts +0 -0
- /package/dist/{next/link → link}/websocket.d.ts +0 -0
- /package/dist/{next/link → link}/websocket.js +0 -0
- /package/dist/{next-node → node}/http/admission.d.ts +0 -0
- /package/dist/{next-node → node}/http/admission.js +0 -0
- /package/dist/{next-node → node}/http/file.d.ts +0 -0
- /package/dist/{next-node → node}/http/file.js +0 -0
- /package/dist/{next-node → node}/http/headers.d.ts +0 -0
- /package/dist/{next-node → node}/http/incoming.d.ts +0 -0
- /package/dist/{next-node → node}/http/incoming.js +0 -0
- /package/dist/{next-node → node}/http/node.d.ts +0 -0
- /package/dist/{next-node → node}/http/node.js +0 -0
- /package/dist/{next-node → node}/http/response.js +0 -0
- /package/dist/{next-node → node}/plugins/stack.d.ts +0 -0
- /package/dist/{next-node → node}/plugins/stack.js +0 -0
- /package/dist/{next/registries → registries}/contribution.d.ts +0 -0
- /package/dist/{next/registries → registries}/contribution.js +0 -0
- /package/dist/{next/registries → registries}/entries.d.ts +0 -0
- /package/dist/{next/registries → registries}/entries.js +0 -0
- /package/dist/{next/registries → registries}/index.d.ts +0 -0
- /package/dist/{next/registries → registries}/index.js +0 -0
- /package/dist/{next/registries → registries}/internal.d.ts +0 -0
- /package/dist/{next/registries → registries}/internal.js +0 -0
- /package/dist/{next/registries → registries}/registry.js +0 -0
- /package/dist/{next/registries → registries}/value.d.ts +0 -0
- /package/dist/{next/remote → remote}/calls.d.ts +0 -0
- /package/dist/{next/remote → remote}/calls.js +0 -0
- /package/dist/{next/remote → remote}/internal.d.ts +0 -0
- /package/dist/{next/remote → remote}/internal.js +0 -0
- /package/dist/{next/remote → remote}/path.d.ts +0 -0
- /package/dist/{next/remote → remote}/path.js +0 -0
- /package/dist/{next/state → state}/index.js +0 -0
- /package/dist/{next/state → state}/internal.d.ts +0 -0
- /package/dist/{next/state → state}/internal.js +0 -0
- /package/dist/{next/state → state}/writable.js +0 -0
- /package/dist/{next/store → store}/adapter.js +0 -0
- /package/dist/{next/store → store}/allocator.d.ts +0 -0
- /package/dist/{next/store → store}/allocator.js +0 -0
- /package/dist/{next/store → store}/applier.d.ts +0 -0
- /package/dist/{next/store → store}/applier.js +0 -0
- /package/dist/{next/store → store}/apply-batch.js +0 -0
- /package/dist/{next/store → store}/backend.js +0 -0
- /package/dist/{next/store → store}/catalog.js +0 -0
- /package/dist/{next/store → store}/claims.d.ts +0 -0
- /package/dist/{next/store → store}/claims.js +0 -0
- /package/dist/{next/store → store}/columns.d.ts +0 -0
- /package/dist/{next/store → store}/columns.js +0 -0
- /package/dist/{next/store → store}/evaluate.js +0 -0
- /package/dist/{next/store → store}/expression.js +0 -0
- /package/dist/{next/store → store}/index.d.ts +0 -0
- /package/dist/{next/store → store}/index.js +0 -0
- /package/dist/{next/store → store}/jsonl.d.ts +0 -0
- /package/dist/{next/store → store}/jsonl.js +0 -0
- /package/dist/{next/store → store}/outbox.js +0 -0
- /package/dist/{next/store → store}/query.js +0 -0
- /package/dist/{next/store → store}/refusal.d.ts +0 -0
- /package/dist/{next/store → store}/refusal.js +0 -0
- /package/dist/{next/store → store}/rows.js +0 -0
- /package/dist/{next/store → store}/sql.js +0 -0
- /package/dist/{next/store → store}/table-changes.js +0 -0
- /package/dist/{next/store → store}/table-evolve.d.ts +0 -0
- /package/dist/{next/store → store}/table-evolve.js +0 -0
- /package/dist/{next/store → store}/table-history.d.ts +0 -0
- /package/dist/{next/store → store}/table-history.js +0 -0
- /package/dist/{next/store → store}/table-writes.d.ts +0 -0
- /package/dist/{next/store → store}/table.js +0 -0
- /package/dist/{next/store → store}/text.d.ts +0 -0
- /package/dist/{next/store → store}/text.js +0 -0
- /package/dist/{next/store → store}/writes.d.ts +0 -0
- /package/dist/{next/store → store}/writes.js +0 -0
- /package/docs/{next/dependencies → dependencies}/model.md +0 -0
- /package/docs/{next/flow-control → flow-control}/book.md +0 -0
- /package/docs/{next/flow-control → flow-control}/fold/index.html +0 -0
- /package/docs/{next/flow-control → flow-control}/index.html +0 -0
- /package/docs/{next/flow-control → flow-control}/window/index.html +0 -0
- /package/docs/{next/slice-4.md → slice-4.md} +0 -0
- /package/docs/{next/slice-5.md → slice-5.md} +0 -0
- /package/docs/{next/slice-7a.md → slice-7a.md} +0 -0
- /package/docs/{next/slice-8.md → slice-8.md} +0 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
// Files (slice 13 §4; decision "Files v2"): the kit's file storage, one `Files` object per host (`self.get(Files, {})`),
|
|
2
|
+
// its bytes in the host's `files/` and its index in the host's store (`files-index.ts`). Every file lives in a space
|
|
3
|
+
// (`shared`, `artifacts`, `uploads`, …) at a path (`docs/report.md`); folders are index entries, and a move changes only
|
|
4
|
+
// the index. Bytes never change: writing to a path adds a version (a new blob), `copy` shares a blob, and a blob goes
|
|
5
|
+
// once no version references it. Small files in one call (`put`), large ones in chunks (design §23 "Chunked transfers":
|
|
6
|
+
// `begin`, `append` at the stored offset, `uploaded` to resume after a drop, `finish`; unfinished uploads expire); a
|
|
7
|
+
// `key` makes a write idempotent; reads by range; caps per host; a summary per space for an app's server index;
|
|
8
|
+
// `FilesFolder` lists one folder live. Plugins never see a path on disk.
|
|
9
|
+
import { readdir, rm } from "node:fs/promises";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { setTimeout as sleep } from "node:timers/promises";
|
|
12
|
+
import { arr, bool, bytes, int, keyed, lit, local, method, nul, obj, opt, str, union, } from "../../contracts/index.js";
|
|
13
|
+
import { ChordError } from "../../data/index.js";
|
|
14
|
+
import { invalid } from "../../data/internal.js";
|
|
15
|
+
import { defineFacet } from "../../host/index.js";
|
|
16
|
+
import { Blobs } from "./blobs.js";
|
|
17
|
+
import { checkPath, checkSpace, FileSchema, FilesIndex, FolderSchema, MAX_PAGE, MetaSchema, SummarySchema, } from "./files-index.js";
|
|
18
|
+
import { FolderViews } from "./folder-views.js";
|
|
19
|
+
import { newToken } from "./secrets.js";
|
|
20
|
+
import { Uploads } from "./uploads.js";
|
|
21
|
+
/**
|
|
22
|
+
* A write's fields: where, its type, who wrote it (a string the writer sets), its producer's reference, key, `meta`, and
|
|
23
|
+
* an import's original time.
|
|
24
|
+
*/
|
|
25
|
+
const WRITE = {
|
|
26
|
+
space: str(),
|
|
27
|
+
path: str(),
|
|
28
|
+
mime: str(),
|
|
29
|
+
source: str(),
|
|
30
|
+
ref: opt(str({ min: 1 })),
|
|
31
|
+
key: opt(str({ min: 1 })),
|
|
32
|
+
meta: opt(MetaSchema),
|
|
33
|
+
/** For imports only: when the file was made where it comes from (ms since the epoch); the write's time otherwise. */
|
|
34
|
+
created: opt(int({ min: 0 })),
|
|
35
|
+
};
|
|
36
|
+
/** A page's arguments: a cursor of the page before, and how many (100 by default, at most 1,000). */
|
|
37
|
+
const PAGE = { after: opt(str()), limit: opt(int({ min: 1, max: MAX_PAGE })) };
|
|
38
|
+
/** A page of `item`s and the cursor of the next one. */
|
|
39
|
+
const pageOf = (item) => obj({ items: arr(item), next: opt(str()) });
|
|
40
|
+
/** A version or nothing. */
|
|
41
|
+
const MAYBE_FILE = union([FileSchema, nul()]);
|
|
42
|
+
/** One entry of a folder's listing. */
|
|
43
|
+
const EntrySchema = union([
|
|
44
|
+
obj({ kind: lit("folder"), folder: FolderSchema }),
|
|
45
|
+
obj({ kind: lit("file"), file: FileSchema }),
|
|
46
|
+
]);
|
|
47
|
+
/** The host's files (one per host): writes, reads, the index's queries, folders, moves, copies, removal, summaries. */
|
|
48
|
+
export const Files = local("chord.app.files", {
|
|
49
|
+
version: 2,
|
|
50
|
+
params: {},
|
|
51
|
+
members: {
|
|
52
|
+
/** Each space's summary (counts, bytes, the newest versions): what an app mirrors to its server's index. */
|
|
53
|
+
summary: keyed(SummarySchema),
|
|
54
|
+
/**
|
|
55
|
+
* Stores a small file (at most 4 MiB) in one call as a new version at `path`, one past the highest it ever had.
|
|
56
|
+
* A `key` the space has already stores nothing and answers the version written with it.
|
|
57
|
+
*/
|
|
58
|
+
put: method(obj({ ...WRITE, bytes: bytes() }), FileSchema),
|
|
59
|
+
/**
|
|
60
|
+
* Starts a chunked upload of what `finish` stores as `put` would: its upload id; with a `key` the space has, the
|
|
61
|
+
* version written with it (`exists`), or the upload under way with it. `unavailable` (`busy`) while the host's cap
|
|
62
|
+
* of uploads are under way.
|
|
63
|
+
*/
|
|
64
|
+
begin: method(obj(WRITE), union([obj({ kind: lit("upload"), upload: str() }), obj({ kind: lit("exists"), file: FileSchema })])),
|
|
65
|
+
/**
|
|
66
|
+
* Appends a chunk (at most 4 MiB; about 1 MiB is the usual size) to upload `upload` at `offset`, which must be
|
|
67
|
+
* the bytes stored so far (else `invalid`, its details `{ offset }` the stored one).
|
|
68
|
+
*/
|
|
69
|
+
append: method(obj({ upload: str(), offset: int({ min: 0 }), bytes: bytes() })),
|
|
70
|
+
/** The bytes stored so far of upload `upload`: where a writer resumes after a drop. */
|
|
71
|
+
uploaded: method(str(), int()),
|
|
72
|
+
/** Ends upload `upload`: the version it made. */
|
|
73
|
+
finish: method(str(), FileSchema),
|
|
74
|
+
/** Drops upload `upload` and what it stored (an unknown one: nothing): its writer gave up. */
|
|
75
|
+
cancel: method(str()),
|
|
76
|
+
/** `length` bytes (at most 4 MiB) of version `id` from `offset` (fewer at its end). */
|
|
77
|
+
read: method(obj({ id: str(), offset: int({ min: 0 }), length: int({ min: 0 }) }), bytes()),
|
|
78
|
+
/** Version `id`, or `null`. */
|
|
79
|
+
file: method(str(), MAYBE_FILE),
|
|
80
|
+
/** Version `version` of the file at `path` (its newest without one), or `null`. */
|
|
81
|
+
get: method(obj({ space: str(), path: str(), version: opt(int({ min: 1 })) }), MAYBE_FILE),
|
|
82
|
+
/** The version written with `key` in `space`, or `null`. */
|
|
83
|
+
byKey: method(obj({ space: str(), key: str({ min: 1 }) }), MAYBE_FILE),
|
|
84
|
+
/** A page of the versions with `ref` in `space`, oldest first. */
|
|
85
|
+
byRef: method(obj({ space: str(), ref: str({ min: 1 }), ...PAGE }), pageOf(FileSchema)),
|
|
86
|
+
/** A page of the versions of the file at `path`, newest first. */
|
|
87
|
+
versions: method(obj({ space: str(), path: str(), ...PAGE }), pageOf(FileSchema)),
|
|
88
|
+
/** A page of folder `folder`'s entries (`""`: the space's root): its folders, then its files' newest versions. */
|
|
89
|
+
list: method(obj({ space: str(), folder: str(), ...PAGE }), pageOf(EntrySchema)),
|
|
90
|
+
/** Makes folder `path` and its missing parents (an existing one: itself); refused where a file is. */
|
|
91
|
+
mkdir: method(obj({ space: str(), path: str() }), FolderSchema),
|
|
92
|
+
/**
|
|
93
|
+
* Moves (renames) the file or folder `from` to `to`, changing only the index; refused when `to` exists or lies
|
|
94
|
+
* inside `from`.
|
|
95
|
+
*/
|
|
96
|
+
move: method(obj({ space: str(), from: str(), to: str() })),
|
|
97
|
+
/** Copies version `id` as a new version at `path` of `space`, sharing its blob (its metadata but its key). */
|
|
98
|
+
copy: method(obj({ id: str(), space: str(), path: str() }), FileSchema),
|
|
99
|
+
/** Removes version `id` (an unknown one: nothing); the next older version becomes the path's newest. */
|
|
100
|
+
remove: method(str()),
|
|
101
|
+
/** Removes the file at `path` (every version) or the folder at `path` with everything under it. */
|
|
102
|
+
removePath: method(obj({ space: str(), path: str() })),
|
|
103
|
+
/** Removes everything in space `space`. */
|
|
104
|
+
removeSpace: method(str()),
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
/** One folder of the host's files, live: its first 500 entries (folders, then files) and whether more follow. */
|
|
108
|
+
export const FilesFolder = local("chord.app.files.folder", {
|
|
109
|
+
version: 1,
|
|
110
|
+
params: { space: str(), folder: str() },
|
|
111
|
+
members: { listing: obj({ entries: arr(EntrySchema), more: bool() }) },
|
|
112
|
+
});
|
|
113
|
+
/** The largest piece a call carries (a `put`, an `append`, a `read`): 4 MiB, well under a link's part limit. */
|
|
114
|
+
const MAX_PIECE = 4 * 1024 * 1024;
|
|
115
|
+
/** A page's size when the caller names none. */
|
|
116
|
+
const PAGE_SIZE = 100;
|
|
117
|
+
/** How many entries a `FilesFolder` shows. */
|
|
118
|
+
const FOLDER_VIEW = 500;
|
|
119
|
+
/** How long an upload may go unwritten before it expires: an hour. */
|
|
120
|
+
const UPLOAD_IDLE_MS = 60 * 60_000;
|
|
121
|
+
/** How often expired uploads are dropped: every minute. */
|
|
122
|
+
const SWEEP_MS = 60_000;
|
|
123
|
+
/**
|
|
124
|
+
* The kit's facet serving `Files` and `FilesFolder` with the host's files directory `dir` (`<host dir>/files`),
|
|
125
|
+
* `caps` and at most `uploads` uploads under way (64 by default). Blobs live in `dir/blobs/`, uploads under way in
|
|
126
|
+
* `dir/.uploads/<run>/` (`Uploads`), ending with the object (an unfinished one is dropped when the next one goes live).
|
|
127
|
+
* For apps that host their own hosts; `startServer` and `startWorker` load it on theirs.
|
|
128
|
+
*/
|
|
129
|
+
export function filesFacet(dir, caps = {}, uploads = 64) {
|
|
130
|
+
const maxFile = caps.maxFile ?? 256 * 1024 * 1024;
|
|
131
|
+
const maxTotal = caps.maxTotal ?? 4 * 1024 * 1024 * 1024;
|
|
132
|
+
const uploadsDir = join(dir, ".uploads");
|
|
133
|
+
const blobs = new Blobs(join(dir, "blobs"));
|
|
134
|
+
const views = new FolderViews();
|
|
135
|
+
return defineFacet((host) => {
|
|
136
|
+
host.serve(Files, (_params, self) => {
|
|
137
|
+
const index = new FilesIndex(self);
|
|
138
|
+
// This run's uploads in their own directory: an upload left by an earlier run (its process ended) can never
|
|
139
|
+
// finish and is dropped, while this run's may already have begun.
|
|
140
|
+
const run = join(uploadsDir, newToken(12));
|
|
141
|
+
const underway = new Uploads(run, uploads);
|
|
142
|
+
views.bind(async (space, folder, ctx) => {
|
|
143
|
+
const page = await index.list(space, folder, FOLDER_VIEW, undefined, ctx);
|
|
144
|
+
return { entries: page.items, more: page.next !== undefined };
|
|
145
|
+
});
|
|
146
|
+
// Changes take turns: a version number, a key and a blob's count are decided by the one change running.
|
|
147
|
+
let last = Promise.resolve();
|
|
148
|
+
const turn = (fn) => {
|
|
149
|
+
const result = last.then(fn);
|
|
150
|
+
last = result.catch(() => { });
|
|
151
|
+
return result;
|
|
152
|
+
};
|
|
153
|
+
// Uploads under way count against the total too: two of them cannot pass it together.
|
|
154
|
+
const room = (adding, fileSize) => {
|
|
155
|
+
if (fileSize > maxFile)
|
|
156
|
+
throw tooLarge(`a file of ${fileSize} bytes is larger than this host's cap (${maxFile})`);
|
|
157
|
+
if (index.usage.value.bytes + underway.size + adding > maxTotal) {
|
|
158
|
+
throw tooLarge(`this host's files would exceed their cap (${maxTotal} bytes)`);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
// A new blob's version; the blob goes again when its index commit fails.
|
|
162
|
+
const store = async (write, blob, size, ctx) => {
|
|
163
|
+
try {
|
|
164
|
+
const file = await index.add(newToken(12), write, { id: blob, size, fresh: true }, ctx);
|
|
165
|
+
await views.changed(write.space, ctx);
|
|
166
|
+
return file;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
await blobs.remove([blob]);
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
const known = async (write, ctx) => write.key === undefined ? undefined : index.byKey(write.space, write.key, ctx);
|
|
174
|
+
self.onLive((ctx) => sweep(uploadsDir, run, underway, () => turn(() => blobs.sweep((id) => index.hasBlob(id, ctx))), ctx));
|
|
175
|
+
return {
|
|
176
|
+
summary: index.summary,
|
|
177
|
+
put: ({ bytes, ...write }, ctx) => {
|
|
178
|
+
checkWrite(write);
|
|
179
|
+
if (bytes.length > MAX_PIECE)
|
|
180
|
+
throw tooLarge(`put takes at most ${MAX_PIECE} bytes: use begin, append, finish`);
|
|
181
|
+
return turn(async () => {
|
|
182
|
+
const existing = await known(write, ctx);
|
|
183
|
+
if (existing !== undefined)
|
|
184
|
+
return existing;
|
|
185
|
+
room(bytes.length, bytes.length);
|
|
186
|
+
const blob = newToken(12);
|
|
187
|
+
await blobs.write(blob, bytes, join(run, `put-${blob}`)).catch(async (error) => {
|
|
188
|
+
await rm(join(run, `put-${blob}`), { force: true });
|
|
189
|
+
throw error;
|
|
190
|
+
});
|
|
191
|
+
return store(write, blob, bytes.length, ctx);
|
|
192
|
+
});
|
|
193
|
+
},
|
|
194
|
+
begin: (write, ctx) => {
|
|
195
|
+
checkWrite(write);
|
|
196
|
+
return turn(async () => {
|
|
197
|
+
const existing = await known(write, ctx);
|
|
198
|
+
if (existing !== undefined)
|
|
199
|
+
return { kind: "exists", file: existing };
|
|
200
|
+
const resumed = underway.find((data) => data.space === write.space && data.key !== undefined && data.key === write.key);
|
|
201
|
+
if (resumed !== undefined)
|
|
202
|
+
return { kind: "upload", upload: resumed };
|
|
203
|
+
if ((await index.exists(write.space, write.path, ctx)) === "folder")
|
|
204
|
+
throw invalid("args", `files: ${write.space}:${write.path} is a folder`, { conflict: write.path });
|
|
205
|
+
return { kind: "upload", upload: await underway.begin(write) };
|
|
206
|
+
});
|
|
207
|
+
},
|
|
208
|
+
append: async ({ upload, offset, bytes }) => {
|
|
209
|
+
if (bytes.length > MAX_PIECE)
|
|
210
|
+
throw tooLarge(`append takes at most ${MAX_PIECE} bytes`);
|
|
211
|
+
await underway.append(upload, offset, bytes, room);
|
|
212
|
+
return null;
|
|
213
|
+
},
|
|
214
|
+
uploaded: (upload) => underway.uploaded(upload),
|
|
215
|
+
finish: (upload, ctx) => turn(async () => {
|
|
216
|
+
const blob = newToken(12);
|
|
217
|
+
await blobs.prepare();
|
|
218
|
+
const { data, size } = await underway.finish(upload, blobs.path(blob));
|
|
219
|
+
const existing = await known(data, ctx);
|
|
220
|
+
if (existing === undefined)
|
|
221
|
+
return store(data, blob, size, ctx);
|
|
222
|
+
await blobs.remove([blob]);
|
|
223
|
+
return existing;
|
|
224
|
+
}),
|
|
225
|
+
cancel: async (upload) => {
|
|
226
|
+
await underway.cancel(upload);
|
|
227
|
+
return null;
|
|
228
|
+
},
|
|
229
|
+
read: async ({ id, offset, length }, ctx) => {
|
|
230
|
+
if (length > MAX_PIECE)
|
|
231
|
+
throw tooLarge(`read takes at most ${MAX_PIECE} bytes`);
|
|
232
|
+
const found = await index.blobOf(id, ctx);
|
|
233
|
+
if (found === undefined)
|
|
234
|
+
throw invalid("args", `files: no file ${id}`);
|
|
235
|
+
return blobs.read(found.blob, found.size, offset, length);
|
|
236
|
+
},
|
|
237
|
+
file: async (id, ctx) => (await index.file(id, ctx)) ?? null,
|
|
238
|
+
get: async ({ space, path, version }, ctx) => {
|
|
239
|
+
checkSpace(space);
|
|
240
|
+
checkPath(path, "file");
|
|
241
|
+
return (await index.get(space, path, version, ctx)) ?? null;
|
|
242
|
+
},
|
|
243
|
+
byKey: async ({ space, key }, ctx) => {
|
|
244
|
+
checkSpace(space);
|
|
245
|
+
return (await index.byKey(space, key, ctx)) ?? null;
|
|
246
|
+
},
|
|
247
|
+
byRef: ({ space, ref, after, limit }, ctx) => {
|
|
248
|
+
checkSpace(space);
|
|
249
|
+
return index.byRef(space, ref, limit ?? PAGE_SIZE, after, ctx);
|
|
250
|
+
},
|
|
251
|
+
versions: ({ space, path, after, limit }, ctx) => {
|
|
252
|
+
checkSpace(space);
|
|
253
|
+
checkPath(path, "file");
|
|
254
|
+
return index.versions(space, path, limit ?? PAGE_SIZE, after, ctx);
|
|
255
|
+
},
|
|
256
|
+
list: ({ space, folder, after, limit }, ctx) => {
|
|
257
|
+
checkSpace(space);
|
|
258
|
+
checkPath(folder, "folder");
|
|
259
|
+
return index.list(space, folder, limit ?? PAGE_SIZE, after, ctx);
|
|
260
|
+
},
|
|
261
|
+
mkdir: ({ space, path }, ctx) => {
|
|
262
|
+
checkSpace(space);
|
|
263
|
+
checkPath(path, "file");
|
|
264
|
+
return turn(async () => {
|
|
265
|
+
const folder = await index.mkdir(space, path, ctx);
|
|
266
|
+
await views.changed(space, ctx);
|
|
267
|
+
return folder;
|
|
268
|
+
});
|
|
269
|
+
},
|
|
270
|
+
move: ({ space, from, to }, ctx) => {
|
|
271
|
+
checkSpace(space);
|
|
272
|
+
checkPath(from, "file");
|
|
273
|
+
checkPath(to, "file");
|
|
274
|
+
return turn(async () => {
|
|
275
|
+
await index.move(space, from, to, ctx);
|
|
276
|
+
await views.changed(space, ctx);
|
|
277
|
+
return null;
|
|
278
|
+
});
|
|
279
|
+
},
|
|
280
|
+
copy: ({ id, space, path }, ctx) => {
|
|
281
|
+
checkSpace(space);
|
|
282
|
+
checkPath(path, "file");
|
|
283
|
+
return turn(async () => {
|
|
284
|
+
const [file, found] = [await index.file(id, ctx), await index.blobOf(id, ctx)];
|
|
285
|
+
if (file === undefined || found === undefined)
|
|
286
|
+
throw invalid("args", `files: no file ${id}`);
|
|
287
|
+
const { mime, source, ref, meta } = file;
|
|
288
|
+
const write = {
|
|
289
|
+
space,
|
|
290
|
+
path,
|
|
291
|
+
mime,
|
|
292
|
+
source,
|
|
293
|
+
...(ref === undefined ? {} : { ref }),
|
|
294
|
+
...(meta === undefined ? {} : { meta }),
|
|
295
|
+
};
|
|
296
|
+
const copied = await index.add(newToken(12), write, { id: found.blob, size: found.size, fresh: false }, ctx);
|
|
297
|
+
await views.changed(space, ctx);
|
|
298
|
+
return copied;
|
|
299
|
+
});
|
|
300
|
+
},
|
|
301
|
+
remove: (id, ctx) => turn(async () => {
|
|
302
|
+
const removed = await index.remove(id, ctx);
|
|
303
|
+
if (removed === undefined)
|
|
304
|
+
return null;
|
|
305
|
+
await blobs.remove(removed.gone);
|
|
306
|
+
await views.changed(removed.space, ctx);
|
|
307
|
+
return null;
|
|
308
|
+
}),
|
|
309
|
+
removePath: ({ space, path }, ctx) => {
|
|
310
|
+
checkSpace(space);
|
|
311
|
+
checkPath(path, "file");
|
|
312
|
+
return turn(async () => {
|
|
313
|
+
await blobs.remove(await index.removePath(space, path, ctx));
|
|
314
|
+
await views.changed(space, ctx);
|
|
315
|
+
return null;
|
|
316
|
+
});
|
|
317
|
+
},
|
|
318
|
+
removeSpace: (space, ctx) => {
|
|
319
|
+
checkSpace(space);
|
|
320
|
+
return turn(async () => {
|
|
321
|
+
await blobs.remove(await index.removeSpace(space, ctx));
|
|
322
|
+
await views.changed(space, ctx);
|
|
323
|
+
return null;
|
|
324
|
+
});
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
});
|
|
328
|
+
host.serve(FilesFolder, ({ space, folder }, self) => {
|
|
329
|
+
checkSpace(space);
|
|
330
|
+
checkPath(folder, "folder");
|
|
331
|
+
// Its listing is read through the host's `Files`, which must be live first.
|
|
332
|
+
self.get(Files, {});
|
|
333
|
+
return { listing: self.follow((observer, ctx) => views.attach(space, folder, observer, ctx)) };
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
/** Refuses a write's space or path outside the rules (a trust boundary: the caller's). */
|
|
338
|
+
function checkWrite(write) {
|
|
339
|
+
checkSpace(write.space);
|
|
340
|
+
checkPath(write.path, "file");
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* The files object's routine once live: drops the uploads earlier runs left (every directory under `uploadsDir` but
|
|
344
|
+
* `run`) and the blobs no commit took (`sweepBlobs`), then every minute the uploads unwritten for an hour; when the
|
|
345
|
+
* object ends, every upload still under way.
|
|
346
|
+
*/
|
|
347
|
+
async function sweep(uploadsDir, run, uploads, sweepBlobs, ctx) {
|
|
348
|
+
for (const entry of await readdir(uploadsDir).catch(() => [])) {
|
|
349
|
+
if (join(uploadsDir, entry) !== run)
|
|
350
|
+
await rm(join(uploadsDir, entry), { recursive: true, force: true });
|
|
351
|
+
}
|
|
352
|
+
try {
|
|
353
|
+
await sweepBlobs();
|
|
354
|
+
for (;;) {
|
|
355
|
+
await sleep(SWEEP_MS, undefined, { signal: ctx.abortSignal });
|
|
356
|
+
await uploads.expire(UPLOAD_IDLE_MS);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
finally {
|
|
360
|
+
if (ctx.abortSignal?.aborted === true)
|
|
361
|
+
await uploads.close();
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/** A cap refused a write. */
|
|
365
|
+
function tooLarge(message) {
|
|
366
|
+
return new ChordError({ code: "too_large", message: `files: ${message}` });
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/node/app/files.ts"],"names":[],"mappings":"AAAA,yHAAyH;AACzH,qHAAqH;AACrH,yHAAyH;AACzH,sHAAsH;AACtH,wHAAwH;AACxH,qHAAqH;AACrH,gHAAgH;AAChH,yEAAyE;AAEzE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EACN,GAAG,EACH,IAAI,EACJ,KAAK,EACL,GAAG,EACH,KAAK,EACL,GAAG,EACH,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,EACH,GAAG,EAEH,GAAG,EACH,KAAK,GACL,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAkB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAY,WAAW,EAAc,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACN,SAAS,EACT,UAAU,EAEV,UAAU,EACV,UAAU,EAEV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAsB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAavC;;;GAGG;AACH,MAAM,KAAK,GAAG;IACb,KAAK,EAAE,GAAG,EAAE;IACZ,IAAI,EAAE,GAAG,EAAE;IACX,IAAI,EAAE,GAAG,EAAE;IACX,MAAM,EAAE,GAAG,EAAE;IACb,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACzB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC;IACrB,qHAAqH;IACrH,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEF,qGAAqG;AACrG,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;AAE/E,wDAAwD;AACxD,MAAM,MAAM,GAAG,CAAI,IAAe,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAEnF,4BAA4B;AAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAE9C,uCAAuC;AACvC,MAAM,WAAW,GAAG,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAClD,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;CAC5C,CAAC,CAAC;AAEH,uHAAuH;AACvH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,EAAE;IAC7C,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,EAAE;IACV,OAAO,EAAE;QACR,4GAA4G;QAC5G,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC;QAC7B;;;WAGG;QACH,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC;QAC1D;;;;WAIG;QACH,KAAK,EAAE,MAAM,CACZ,GAAG,CAAC,KAAK,CAAC,EACV,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CACpG;QACD;;;WAGG;QACH,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/E,uFAAuF;QACvF,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC;QAC9B,iDAAiD;QACjD,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;QACjC,8FAA8F;QAC9F,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QACrB,uFAAuF;QACvF,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;QAC3F,+BAA+B;QAC/B,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;QAC/B,mFAAmF;QACnF,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;QAC1F,4DAA4D;QAC5D,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;QACtE,kEAAkE;QAClE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACvF,kEAAkE;QAClE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACjF,kHAAkH;QAClH,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAChF,sGAAsG;QACtG,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC;QAC/D;;;WAGG;QACH,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3D,8GAA8G;QAC9G,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC;QACvE,wGAAwG;QACxG,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QACrB,mGAAmG;QACnG,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,2CAA2C;QAC3C,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;KAC1B;CACD,CAAC,CAAC;AAEH,iHAAiH;AACjH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,wBAAwB,EAAE;IAC1D,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;IACvC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE;CACtE,CAAC,CAAC;AAEH,gHAAgH;AAChH,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAElC,gDAAgD;AAChD,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,8CAA8C;AAC9C,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,sEAAsE;AACtE,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,CAAC;AAEnC,2DAA2D;AAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC;AAExB;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAsB,GAAW,EAAE,IAAI,GAAc,EAAE,EAAE,OAAO,GAAG,EAAE;IAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;IAChC,OAAO,WAAW,CAAI,CAAC,IAAI,EAAE,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,4GAA4G;YAC5G,kEAAkE;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAY,GAAG,EAAE,OAAO,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,wGAAwG;YACxG,IAAI,IAAI,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAI,EAAoB,EAAc,EAAE;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7B,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC9B,OAAO,MAAM,CAAC;YACf,CAAC,CAAC;YACF,sFAAsF;YACtF,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAQ,EAAE;gBACvD,IAAI,QAAQ,GAAG,OAAO;oBACrB,MAAM,QAAQ,CAAC,aAAa,QAAQ,0CAA0C,OAAO,GAAG,CAAC,CAAC;gBAC3F,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC;oBACjE,MAAM,QAAQ,CAAC,6CAA6C,QAAQ,SAAS,CAAC,CAAC;gBAChF,CAAC;YACF,CAAC,CAAC;YACF,yEAAyE;YACzE,MAAM,KAAK,GAAG,KAAK,EAAE,KAAgB,EAAE,IAAY,EAAE,IAAY,EAAE,GAAQ,EAAqB,EAAE;gBACjG,IAAI,CAAC;oBACJ,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;oBACxF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACtC,OAAO,IAAI,CAAC;gBACb,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3B,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,KAAK,EAAE,KAAgB,EAAE,GAAQ,EAAiC,EAAE,CACjF,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChF,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CACpG,CAAC;YACF,OAAO;gBACN,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;oBACjC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;wBAC3B,MAAM,QAAQ,CAAC,qBAAqB,SAAS,mCAAmC,CAAC,CAAC;oBACnF,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;wBACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACzC,IAAI,QAAQ,KAAK,SAAS;4BAAE,OAAO,QAAQ,CAAC;wBAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;wBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAC1B,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;4BACvF,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;4BACpD,MAAM,KAAK,CAAC;wBACb,CAAC,CAAC,CAAC;wBACH,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBACrB,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;wBACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACzC,IAAI,QAAQ,KAAK,SAAS;4BAAE,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;wBAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC5B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CACxF,CAAC;wBACF,IAAI,OAAO,KAAK,SAAS;4BAAE,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAC/E,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,QAAQ;4BAClE,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,cAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;wBACpG,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzE,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;wBAAE,MAAM,QAAQ,CAAC,wBAAwB,SAAS,QAAQ,CAAC,CAAC;oBACxF,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBACnD,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CACvB,IAAI,CAAC,KAAK,IAAI,EAAE;oBACf,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC1B,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;oBACtB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACvE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACxC,IAAI,QAAQ,KAAK,SAAS;wBAAE,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChE,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3B,OAAO,QAAQ,CAAC;gBACjB,CAAC,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;oBACxB,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9B,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;oBAC3C,IAAI,MAAM,GAAG,SAAS;wBAAE,MAAM,QAAQ,CAAC,sBAAsB,SAAS,QAAQ,CAAC,CAAC;oBAChF,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC1C,IAAI,KAAK,KAAK,SAAS;wBAAE,MAAM,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;oBACvE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC3D,CAAC;gBACD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI;gBAC5D,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;oBAC5C,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxB,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC7D,CAAC;gBACD,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE;oBACpC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;gBACrD,CAAC;gBACD,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;oBAC5C,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAChE,CAAC;gBACD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;oBAChD,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;oBAC9C,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAClE,CAAC;gBACD,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;oBAC/B,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxB,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;wBACtB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;wBACnD,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAChC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;oBAClC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxB,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACtB,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;wBACtB,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;wBACvC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAChC,OAAO,IAAI,CAAC;oBACb,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;oBAClC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxB,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;wBACtB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC/E,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;4BAAE,MAAM,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;wBAC7F,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;wBACzC,MAAM,KAAK,GAAG;4BACb,KAAK;4BACL,IAAI;4BACJ,IAAI;4BACJ,MAAM;4BACN,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;4BACrC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;yBACvC,CAAC;wBACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAC7B,QAAQ,CAAC,EAAE,CAAC,EACZ,KAAK,EACL,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAClD,GAAG,CACH,CAAC;wBACF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAChC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CACnB,IAAI,CAAC,KAAK,IAAI,EAAE;oBACf,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC5C,IAAI,OAAO,KAAK,SAAS;wBAAE,OAAO,IAAI,CAAC;oBACvC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACxC,OAAO,IAAI,CAAC;gBACb,CAAC,CAAC;gBACH,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;oBACpC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxB,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;wBACtB,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC7D,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAChC,OAAO,IAAI,CAAC;oBACb,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBAC3B,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;wBACtB,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;wBACxD,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAChC,OAAO,IAAI,CAAC;oBACb,CAAC,CAAC,CAAC;gBACJ,CAAC;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE;YACnD,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC5B,4EAA4E;YAC5E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/G,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,SAAS,UAAU,CAAC,KAAgB;IACnC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,KAAK,CACnB,UAAkB,EAClB,GAAW,EACX,OAA2B,EAC3B,UAA+B,EAC/B,GAAY;IAEZ,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,GAAG;YAAE,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,UAAU,EAAE,CAAC;QACnB,SAAS,CAAC;YACT,MAAM,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9D,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;YAAS,CAAC;QACV,IAAI,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI;YAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9D,CAAC;AACF,CAAC;AAED,6BAA6B;AAC7B,SAAS,QAAQ,CAAC,OAAe;IAChC,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["// Files (slice 13 §4; decision \"Files v2\"): the kit's file storage, one `Files` object per host (`self.get(Files, {})`),\n// its bytes in the host's `files/` and its index in the host's store (`files-index.ts`). Every file lives in a space\n// (`shared`, `artifacts`, `uploads`, …) at a path (`docs/report.md`); folders are index entries, and a move changes only\n// the index. Bytes never change: writing to a path adds a version (a new blob), `copy` shares a blob, and a blob goes\n// once no version references it. Small files in one call (`put`), large ones in chunks (design §23 \"Chunked transfers\":\n// `begin`, `append` at the stored offset, `uploaded` to resume after a drop, `finish`; unfinished uploads expire); a\n// `key` makes a write idempotent; reads by range; caps per host; a summary per space for an app's server index;\n// `FilesFolder` lists one folder live. Plugins never see a path on disk.\n\nimport { readdir, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport type { Context } from \"../../context/index.ts\";\nimport {\n\tarr,\n\tbool,\n\tbytes,\n\tint,\n\tkeyed,\n\tlit,\n\tlocal,\n\tmethod,\n\tnul,\n\tobj,\n\topt,\n\ttype Schema,\n\tstr,\n\tunion,\n} from \"../../contracts/index.ts\";\nimport { ChordError, type Principal } from \"../../data/index.ts\";\nimport { invalid } from \"../../data/internal.ts\";\nimport { type Ctx, defineFacet, type Facet } from \"../../host/index.ts\";\nimport { Blobs } from \"./blobs.ts\";\nimport {\n\tcheckPath,\n\tcheckSpace,\n\ttype FileInfo,\n\tFileSchema,\n\tFilesIndex,\n\ttype FileWrite,\n\tFolderSchema,\n\tMAX_PAGE,\n\tMetaSchema,\n\tSummarySchema,\n} from \"./files-index.ts\";\nimport { type FolderListing, FolderViews } from \"./folder-views.ts\";\nimport { newToken } from \"./secrets.ts\";\nimport { Uploads } from \"./uploads.ts\";\n\nexport type { FileInfo, FileWrite, FolderEntry, FolderInfo, SpaceSummary } from \"./files-index.ts\";\nexport type { FolderListing } from \"./folder-views.ts\";\n\n/** The caps of one host's files (bytes). */\nexport type FilesCaps = {\n\t/** The largest file: 256 MiB by default. */\n\treadonly maxFile?: number;\n\t/** All blobs on disk together (a copy shares its blob), uploads under way included: 4 GiB by default. */\n\treadonly maxTotal?: number;\n};\n\n/**\n * A write's fields: where, its type, who wrote it (a string the writer sets), its producer's reference, key, `meta`, and\n * an import's original time.\n */\nconst WRITE = {\n\tspace: str(),\n\tpath: str(),\n\tmime: str(),\n\tsource: str(),\n\tref: opt(str({ min: 1 })),\n\tkey: opt(str({ min: 1 })),\n\tmeta: opt(MetaSchema),\n\t/** For imports only: when the file was made where it comes from (ms since the epoch); the write's time otherwise. */\n\tcreated: opt(int({ min: 0 })),\n};\n\n/** A page's arguments: a cursor of the page before, and how many (100 by default, at most 1,000). */\nconst PAGE = { after: opt(str()), limit: opt(int({ min: 1, max: MAX_PAGE })) };\n\n/** A page of `item`s and the cursor of the next one. */\nconst pageOf = <T>(item: Schema<T>) => obj({ items: arr(item), next: opt(str()) });\n\n/** A version or nothing. */\nconst MAYBE_FILE = union([FileSchema, nul()]);\n\n/** One entry of a folder's listing. */\nconst EntrySchema = union([\n\tobj({ kind: lit(\"folder\"), folder: FolderSchema }),\n\tobj({ kind: lit(\"file\"), file: FileSchema }),\n]);\n\n/** The host's files (one per host): writes, reads, the index's queries, folders, moves, copies, removal, summaries. */\nexport const Files = local(\"chord.app.files\", {\n\tversion: 2,\n\tparams: {},\n\tmembers: {\n\t\t/** Each space's summary (counts, bytes, the newest versions): what an app mirrors to its server's index. */\n\t\tsummary: keyed(SummarySchema),\n\t\t/**\n\t\t * Stores a small file (at most 4 MiB) in one call as a new version at `path`, one past the highest it ever had.\n\t\t * A `key` the space has already stores nothing and answers the version written with it.\n\t\t */\n\t\tput: method(obj({ ...WRITE, bytes: bytes() }), FileSchema),\n\t\t/**\n\t\t * Starts a chunked upload of what `finish` stores as `put` would: its upload id; with a `key` the space has, the\n\t\t * version written with it (`exists`), or the upload under way with it. `unavailable` (`busy`) while the host's cap\n\t\t * of uploads are under way.\n\t\t */\n\t\tbegin: method(\n\t\t\tobj(WRITE),\n\t\t\tunion([obj({ kind: lit(\"upload\"), upload: str() }), obj({ kind: lit(\"exists\"), file: FileSchema })]),\n\t\t),\n\t\t/**\n\t\t * Appends a chunk (at most 4 MiB; about 1 MiB is the usual size) to upload `upload` at `offset`, which must be\n\t\t * the bytes stored so far (else `invalid`, its details `{ offset }` the stored one).\n\t\t */\n\t\tappend: method(obj({ upload: str(), offset: int({ min: 0 }), bytes: bytes() })),\n\t\t/** The bytes stored so far of upload `upload`: where a writer resumes after a drop. */\n\t\tuploaded: method(str(), int()),\n\t\t/** Ends upload `upload`: the version it made. */\n\t\tfinish: method(str(), FileSchema),\n\t\t/** Drops upload `upload` and what it stored (an unknown one: nothing): its writer gave up. */\n\t\tcancel: method(str()),\n\t\t/** `length` bytes (at most 4 MiB) of version `id` from `offset` (fewer at its end). */\n\t\tread: method(obj({ id: str(), offset: int({ min: 0 }), length: int({ min: 0 }) }), bytes()),\n\t\t/** Version `id`, or `null`. */\n\t\tfile: method(str(), MAYBE_FILE),\n\t\t/** Version `version` of the file at `path` (its newest without one), or `null`. */\n\t\tget: method(obj({ space: str(), path: str(), version: opt(int({ min: 1 })) }), MAYBE_FILE),\n\t\t/** The version written with `key` in `space`, or `null`. */\n\t\tbyKey: method(obj({ space: str(), key: str({ min: 1 }) }), MAYBE_FILE),\n\t\t/** A page of the versions with `ref` in `space`, oldest first. */\n\t\tbyRef: method(obj({ space: str(), ref: str({ min: 1 }), ...PAGE }), pageOf(FileSchema)),\n\t\t/** A page of the versions of the file at `path`, newest first. */\n\t\tversions: method(obj({ space: str(), path: str(), ...PAGE }), pageOf(FileSchema)),\n\t\t/** A page of folder `folder`'s entries (`\"\"`: the space's root): its folders, then its files' newest versions. */\n\t\tlist: method(obj({ space: str(), folder: str(), ...PAGE }), pageOf(EntrySchema)),\n\t\t/** Makes folder `path` and its missing parents (an existing one: itself); refused where a file is. */\n\t\tmkdir: method(obj({ space: str(), path: str() }), FolderSchema),\n\t\t/**\n\t\t * Moves (renames) the file or folder `from` to `to`, changing only the index; refused when `to` exists or lies\n\t\t * inside `from`.\n\t\t */\n\t\tmove: method(obj({ space: str(), from: str(), to: str() })),\n\t\t/** Copies version `id` as a new version at `path` of `space`, sharing its blob (its metadata but its key). */\n\t\tcopy: method(obj({ id: str(), space: str(), path: str() }), FileSchema),\n\t\t/** Removes version `id` (an unknown one: nothing); the next older version becomes the path's newest. */\n\t\tremove: method(str()),\n\t\t/** Removes the file at `path` (every version) or the folder at `path` with everything under it. */\n\t\tremovePath: method(obj({ space: str(), path: str() })),\n\t\t/** Removes everything in space `space`. */\n\t\tremoveSpace: method(str()),\n\t},\n});\n\n/** One folder of the host's files, live: its first 500 entries (folders, then files) and whether more follow. */\nexport const FilesFolder = local(\"chord.app.files.folder\", {\n\tversion: 1,\n\tparams: { space: str(), folder: str() },\n\tmembers: { listing: obj({ entries: arr(EntrySchema), more: bool() }) },\n});\n\n/** The largest piece a call carries (a `put`, an `append`, a `read`): 4 MiB, well under a link's part limit. */\nconst MAX_PIECE = 4 * 1024 * 1024;\n\n/** A page's size when the caller names none. */\nconst PAGE_SIZE = 100;\n\n/** How many entries a `FilesFolder` shows. */\nconst FOLDER_VIEW = 500;\n\n/** How long an upload may go unwritten before it expires: an hour. */\nconst UPLOAD_IDLE_MS = 60 * 60_000;\n\n/** How often expired uploads are dropped: every minute. */\nconst SWEEP_MS = 60_000;\n\n/**\n * The kit's facet serving `Files` and `FilesFolder` with the host's files directory `dir` (`<host dir>/files`),\n * `caps` and at most `uploads` uploads under way (64 by default). Blobs live in `dir/blobs/`, uploads under way in\n * `dir/.uploads/<run>/` (`Uploads`), ending with the object (an unfinished one is dropped when the next one goes live).\n * For apps that host their own hosts; `startServer` and `startWorker` load it on theirs.\n */\nexport function filesFacet<P extends Principal>(dir: string, caps: FilesCaps = {}, uploads = 64): Facet<P> {\n\tconst maxFile = caps.maxFile ?? 256 * 1024 * 1024;\n\tconst maxTotal = caps.maxTotal ?? 4 * 1024 * 1024 * 1024;\n\tconst uploadsDir = join(dir, \".uploads\");\n\tconst blobs = new Blobs(join(dir, \"blobs\"));\n\tconst views = new FolderViews();\n\treturn defineFacet<P>((host) => {\n\t\thost.serve(Files, (_params, self) => {\n\t\t\tconst index = new FilesIndex(self);\n\t\t\t// This run's uploads in their own directory: an upload left by an earlier run (its process ended) can never\n\t\t\t// finish and is dropped, while this run's may already have begun.\n\t\t\tconst run = join(uploadsDir, newToken(12));\n\t\t\tconst underway = new Uploads<FileWrite>(run, uploads);\n\t\t\tviews.bind(async (space, folder, ctx) => {\n\t\t\t\tconst page = await index.list(space, folder, FOLDER_VIEW, undefined, ctx);\n\t\t\t\treturn { entries: page.items, more: page.next !== undefined };\n\t\t\t});\n\t\t\t// Changes take turns: a version number, a key and a blob's count are decided by the one change running.\n\t\t\tlet last: Promise<unknown> = Promise.resolve();\n\t\t\tconst turn = <R>(fn: () => Promise<R>): Promise<R> => {\n\t\t\t\tconst result = last.then(fn);\n\t\t\t\tlast = result.catch(() => {});\n\t\t\t\treturn result;\n\t\t\t};\n\t\t\t// Uploads under way count against the total too: two of them cannot pass it together.\n\t\t\tconst room = (adding: number, fileSize: number): void => {\n\t\t\t\tif (fileSize > maxFile)\n\t\t\t\t\tthrow tooLarge(`a file of ${fileSize} bytes is larger than this host's cap (${maxFile})`);\n\t\t\t\tif (index.usage.value.bytes + underway.size + adding > maxTotal) {\n\t\t\t\t\tthrow tooLarge(`this host's files would exceed their cap (${maxTotal} bytes)`);\n\t\t\t\t}\n\t\t\t};\n\t\t\t// A new blob's version; the blob goes again when its index commit fails.\n\t\t\tconst store = async (write: FileWrite, blob: string, size: number, ctx: Ctx): Promise<FileInfo> => {\n\t\t\t\ttry {\n\t\t\t\t\tconst file = await index.add(newToken(12), write, { id: blob, size, fresh: true }, ctx);\n\t\t\t\t\tawait views.changed(write.space, ctx);\n\t\t\t\t\treturn file;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tawait blobs.remove([blob]);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst known = async (write: FileWrite, ctx: Ctx): Promise<FileInfo | undefined> =>\n\t\t\t\twrite.key === undefined ? undefined : index.byKey(write.space, write.key, ctx);\n\t\t\tself.onLive((ctx) =>\n\t\t\t\tsweep(uploadsDir, run, underway, () => turn(() => blobs.sweep((id) => index.hasBlob(id, ctx))), ctx),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tsummary: index.summary,\n\t\t\t\tput: ({ bytes, ...write }, ctx) => {\n\t\t\t\t\tcheckWrite(write);\n\t\t\t\t\tif (bytes.length > MAX_PIECE)\n\t\t\t\t\t\tthrow tooLarge(`put takes at most ${MAX_PIECE} bytes: use begin, append, finish`);\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst existing = await known(write, ctx);\n\t\t\t\t\t\tif (existing !== undefined) return existing;\n\t\t\t\t\t\troom(bytes.length, bytes.length);\n\t\t\t\t\t\tconst blob = newToken(12);\n\t\t\t\t\t\tawait blobs.write(blob, bytes, join(run, `put-${blob}`)).catch(async (error: unknown) => {\n\t\t\t\t\t\t\tawait rm(join(run, `put-${blob}`), { force: true });\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn store(write, blob, bytes.length, ctx);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tbegin: (write, ctx) => {\n\t\t\t\t\tcheckWrite(write);\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst existing = await known(write, ctx);\n\t\t\t\t\t\tif (existing !== undefined) return { kind: \"exists\" as const, file: existing };\n\t\t\t\t\t\tconst resumed = underway.find(\n\t\t\t\t\t\t\t(data) => data.space === write.space && data.key !== undefined && data.key === write.key,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (resumed !== undefined) return { kind: \"upload\" as const, upload: resumed };\n\t\t\t\t\t\tif ((await index.exists(write.space, write.path, ctx)) === \"folder\")\n\t\t\t\t\t\t\tthrow invalid(\"args\", `files: ${write.space}:${write.path} is a folder`, { conflict: write.path });\n\t\t\t\t\t\treturn { kind: \"upload\" as const, upload: await underway.begin(write) };\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tappend: async ({ upload, offset, bytes }) => {\n\t\t\t\t\tif (bytes.length > MAX_PIECE) throw tooLarge(`append takes at most ${MAX_PIECE} bytes`);\n\t\t\t\t\tawait underway.append(upload, offset, bytes, room);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\tuploaded: (upload) => underway.uploaded(upload),\n\t\t\t\tfinish: (upload, ctx) =>\n\t\t\t\t\tturn(async () => {\n\t\t\t\t\t\tconst blob = newToken(12);\n\t\t\t\t\t\tawait blobs.prepare();\n\t\t\t\t\t\tconst { data, size } = await underway.finish(upload, blobs.path(blob));\n\t\t\t\t\t\tconst existing = await known(data, ctx);\n\t\t\t\t\t\tif (existing === undefined) return store(data, blob, size, ctx);\n\t\t\t\t\t\tawait blobs.remove([blob]);\n\t\t\t\t\t\treturn existing;\n\t\t\t\t\t}),\n\t\t\t\tcancel: async (upload) => {\n\t\t\t\t\tawait underway.cancel(upload);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\tread: async ({ id, offset, length }, ctx) => {\n\t\t\t\t\tif (length > MAX_PIECE) throw tooLarge(`read takes at most ${MAX_PIECE} bytes`);\n\t\t\t\t\tconst found = await index.blobOf(id, ctx);\n\t\t\t\t\tif (found === undefined) throw invalid(\"args\", `files: no file ${id}`);\n\t\t\t\t\treturn blobs.read(found.blob, found.size, offset, length);\n\t\t\t\t},\n\t\t\t\tfile: async (id, ctx) => (await index.file(id, ctx)) ?? null,\n\t\t\t\tget: async ({ space, path, version }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn (await index.get(space, path, version, ctx)) ?? null;\n\t\t\t\t},\n\t\t\t\tbyKey: async ({ space, key }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\treturn (await index.byKey(space, key, ctx)) ?? null;\n\t\t\t\t},\n\t\t\t\tbyRef: ({ space, ref, after, limit }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\treturn index.byRef(space, ref, limit ?? PAGE_SIZE, after, ctx);\n\t\t\t\t},\n\t\t\t\tversions: ({ space, path, after, limit }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn index.versions(space, path, limit ?? PAGE_SIZE, after, ctx);\n\t\t\t\t},\n\t\t\t\tlist: ({ space, folder, after, limit }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(folder, \"folder\");\n\t\t\t\t\treturn index.list(space, folder, limit ?? PAGE_SIZE, after, ctx);\n\t\t\t\t},\n\t\t\t\tmkdir: ({ space, path }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst folder = await index.mkdir(space, path, ctx);\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn folder;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tmove: ({ space, from, to }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(from, \"file\");\n\t\t\t\t\tcheckPath(to, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tawait index.move(space, from, to, ctx);\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tcopy: ({ id, space, path }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst [file, found] = [await index.file(id, ctx), await index.blobOf(id, ctx)];\n\t\t\t\t\t\tif (file === undefined || found === undefined) throw invalid(\"args\", `files: no file ${id}`);\n\t\t\t\t\t\tconst { mime, source, ref, meta } = file;\n\t\t\t\t\t\tconst write = {\n\t\t\t\t\t\t\tspace,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tmime,\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\t...(ref === undefined ? {} : { ref }),\n\t\t\t\t\t\t\t...(meta === undefined ? {} : { meta }),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst copied = await index.add(\n\t\t\t\t\t\t\tnewToken(12),\n\t\t\t\t\t\t\twrite,\n\t\t\t\t\t\t\t{ id: found.blob, size: found.size, fresh: false },\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn copied;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tremove: (id, ctx) =>\n\t\t\t\t\tturn(async () => {\n\t\t\t\t\t\tconst removed = await index.remove(id, ctx);\n\t\t\t\t\t\tif (removed === undefined) return null;\n\t\t\t\t\t\tawait blobs.remove(removed.gone);\n\t\t\t\t\t\tawait views.changed(removed.space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}),\n\t\t\t\tremovePath: ({ space, path }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tawait blobs.remove(await index.removePath(space, path, ctx));\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tremoveSpace: (space, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tawait blobs.remove(await index.removeSpace(space, ctx));\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t\thost.serve(FilesFolder, ({ space, folder }, self) => {\n\t\t\tcheckSpace(space);\n\t\t\tcheckPath(folder, \"folder\");\n\t\t\t// Its listing is read through the host's `Files`, which must be live first.\n\t\t\tself.get(Files, {});\n\t\t\treturn { listing: self.follow<FolderListing>((observer, ctx) => views.attach(space, folder, observer, ctx)) };\n\t\t});\n\t});\n}\n\n/** Refuses a write's space or path outside the rules (a trust boundary: the caller's). */\nfunction checkWrite(write: FileWrite): void {\n\tcheckSpace(write.space);\n\tcheckPath(write.path, \"file\");\n}\n\n/**\n * The files object's routine once live: drops the uploads earlier runs left (every directory under `uploadsDir` but\n * `run`) and the blobs no commit took (`sweepBlobs`), then every minute the uploads unwritten for an hour; when the\n * object ends, every upload still under way.\n */\nasync function sweep(\n\tuploadsDir: string,\n\trun: string,\n\tuploads: Uploads<FileWrite>,\n\tsweepBlobs: () => Promise<void>,\n\tctx: Context,\n): Promise<void> {\n\tfor (const entry of await readdir(uploadsDir).catch(() => [])) {\n\t\tif (join(uploadsDir, entry) !== run) await rm(join(uploadsDir, entry), { recursive: true, force: true });\n\t}\n\ttry {\n\t\tawait sweepBlobs();\n\t\tfor (;;) {\n\t\t\tawait sleep(SWEEP_MS, undefined, { signal: ctx.abortSignal });\n\t\t\tawait uploads.expire(UPLOAD_IDLE_MS);\n\t\t}\n\t} finally {\n\t\tif (ctx.abortSignal?.aborted === true) await uploads.close();\n\t}\n}\n\n/** A cap refused a write. */\nfunction tooLarge(message: string): ChordError {\n\treturn new ChordError({ code: \"too_large\", message: `files: ${message}` });\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Context } from "../../context/index.ts";
|
|
2
|
+
import type { FollowAttachment, FollowObserver } from "../../host/index.ts";
|
|
3
|
+
import type { FolderEntry } from "./files-index.ts";
|
|
4
|
+
/** A folder's first entries, and whether more follow. */
|
|
5
|
+
export type FolderListing = {
|
|
6
|
+
readonly entries: FolderEntry[];
|
|
7
|
+
readonly more: boolean;
|
|
8
|
+
};
|
|
9
|
+
/** How a folder's listing is read: the current `Files` attempt's index. */
|
|
10
|
+
export type ListingReader = (space: string, folder: string, context: Context) => Promise<FolderListing>;
|
|
11
|
+
/** The watched folders of one host's `Files`. */
|
|
12
|
+
export declare class FolderViews {
|
|
13
|
+
#private;
|
|
14
|
+
/** Reads through `reader` from now on (each `Files` attempt binds its own). */
|
|
15
|
+
bind(reader: ListingReader): void;
|
|
16
|
+
/** Watches folder `folder` of `space` for `observer`: its listing now, and its detach. */
|
|
17
|
+
attach(space: string, folder: string, observer: FollowObserver<unknown>, context: Context): Promise<FollowAttachment<FolderListing>>;
|
|
18
|
+
/** Space `space` changed: every watched folder of it is read again (once per folder) and its watchers told. */
|
|
19
|
+
changed(space: string, context: Context): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=folder-views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folder-views.d.ts","sourceRoot":"","sources":["../../../src/node/app/folder-views.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAExF,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAWxG,iDAAiD;AACjD,qBAAa,WAAW;;IAIvB,+EAA+E;IAC/E,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEhC;IAED,0FAA0F;IACpF,MAAM,CACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EACjC,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAe1C;IAED,+GAA+G;IACzG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5D;CAMD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Live folder listings (Files v2): what a `FilesFolder` object shows, the first entries of one folder, followed
|
|
2
|
+
// (`self.follow`) from the host's `Files`. Files reads a watched folder again after each change of its space, inside
|
|
3
|
+
// the method that changed it, and hands the listing to its watchers; a listing attaching meanwhile reads again. One
|
|
4
|
+
// read per watched folder and change: meant for the folders on someone's screen, not for every folder of a drive.
|
|
5
|
+
/** The watched folders of one host's `Files`. */
|
|
6
|
+
export class FolderViews {
|
|
7
|
+
#reader;
|
|
8
|
+
#views = new Set();
|
|
9
|
+
/** Reads through `reader` from now on (each `Files` attempt binds its own). */
|
|
10
|
+
bind(reader) {
|
|
11
|
+
this.#reader = reader;
|
|
12
|
+
}
|
|
13
|
+
/** Watches folder `folder` of `space` for `observer`: its listing now, and its detach. */
|
|
14
|
+
async attach(space, folder, observer, context) {
|
|
15
|
+
const view = { space, folder, observer, attaching: true, stale: false };
|
|
16
|
+
this.#views.add(view);
|
|
17
|
+
try {
|
|
18
|
+
let value;
|
|
19
|
+
do {
|
|
20
|
+
view.stale = false;
|
|
21
|
+
value = await this.#read(space, folder, context);
|
|
22
|
+
} while (view.stale);
|
|
23
|
+
view.attaching = false;
|
|
24
|
+
return { value, detach: () => this.#views.delete(view) };
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
this.#views.delete(view);
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Space `space` changed: every watched folder of it is read again (once per folder) and its watchers told. */
|
|
32
|
+
async changed(space, context) {
|
|
33
|
+
const byFolder = new Map();
|
|
34
|
+
for (const view of this.#views) {
|
|
35
|
+
if (view.space !== space)
|
|
36
|
+
continue;
|
|
37
|
+
if (view.attaching)
|
|
38
|
+
view.stale = true;
|
|
39
|
+
else
|
|
40
|
+
byFolder.set(view.folder, [...(byFolder.get(view.folder) ?? []), view]);
|
|
41
|
+
}
|
|
42
|
+
for (const [folder, views] of byFolder) {
|
|
43
|
+
const value = await this.#read(space, folder, context);
|
|
44
|
+
for (const view of views) {
|
|
45
|
+
if (this.#views.has(view))
|
|
46
|
+
view.observer.advance({ kind: "value", value, ops: [["r", value]], retired: false }, context);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** The listing through the bound reader (bound before any `FilesFolder` goes live: it waits for `Files`). */
|
|
51
|
+
#read(space, folder, context) {
|
|
52
|
+
return this.#reader(space, folder, context);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=folder-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folder-views.js","sourceRoot":"","sources":["../../../src/node/app/folder-views.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAChH,qHAAqH;AACrH,oHAAoH;AACpH,kHAAkH;AAqBlH,iDAAiD;AACjD,MAAM,OAAO,WAAW;IACvB,OAAO,CAA4B;IAC1B,MAAM,GAAG,IAAI,GAAG,EAAQ,CAAC;IAElC,+EAA+E;IAC/E,IAAI,CAAC,MAAqB;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,MAAM,CACX,KAAa,EACb,MAAc,EACd,QAAiC,EACjC,OAAgB;QAEhB,MAAM,IAAI,GAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC;YACJ,IAAI,KAAoB,CAAC;YACzB,GAAG,CAAC;gBACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED,+GAA+G;IAC/G,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAgB;QAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,SAAS;YACnC,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;gBACjC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAChG,CAAC;QACF,CAAC;IACF,CAAC;IAED,6GAA6G;IAC7G,KAAK,CAAC,KAAa,EAAE,MAAc,EAAE,OAAgB;QACpD,OAAO,IAAI,CAAC,OAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACD","sourcesContent":["// Live folder listings (Files v2): what a `FilesFolder` object shows, the first entries of one folder, followed\n// (`self.follow`) from the host's `Files`. Files reads a watched folder again after each change of its space, inside\n// the method that changed it, and hands the listing to its watchers; a listing attaching meanwhile reads again. One\n// read per watched folder and change: meant for the folders on someone's screen, not for every folder of a drive.\n\nimport type { Context } from \"../../context/index.ts\";\nimport type { FollowAttachment, FollowObserver } from \"../../host/index.ts\";\nimport type { FolderEntry } from \"./files-index.ts\";\n\n/** A folder's first entries, and whether more follow. */\nexport type FolderListing = { readonly entries: FolderEntry[]; readonly more: boolean };\n\n/** How a folder's listing is read: the current `Files` attempt's index. */\nexport type ListingReader = (space: string, folder: string, context: Context) => Promise<FolderListing>;\n\n/** A watched folder: its observer, and whether it is still attaching (then a change makes it read again). */\ntype View = {\n\treadonly space: string;\n\treadonly folder: string;\n\treadonly observer: FollowObserver<unknown>;\n\tattaching: boolean;\n\tstale: boolean;\n};\n\n/** The watched folders of one host's `Files`. */\nexport class FolderViews {\n\t#reader: ListingReader | undefined;\n\treadonly #views = new Set<View>();\n\n\t/** Reads through `reader` from now on (each `Files` attempt binds its own). */\n\tbind(reader: ListingReader): void {\n\t\tthis.#reader = reader;\n\t}\n\n\t/** Watches folder `folder` of `space` for `observer`: its listing now, and its detach. */\n\tasync attach(\n\t\tspace: string,\n\t\tfolder: string,\n\t\tobserver: FollowObserver<unknown>,\n\t\tcontext: Context,\n\t): Promise<FollowAttachment<FolderListing>> {\n\t\tconst view: View = { space, folder, observer, attaching: true, stale: false };\n\t\tthis.#views.add(view);\n\t\ttry {\n\t\t\tlet value: FolderListing;\n\t\t\tdo {\n\t\t\t\tview.stale = false;\n\t\t\t\tvalue = await this.#read(space, folder, context);\n\t\t\t} while (view.stale);\n\t\t\tview.attaching = false;\n\t\t\treturn { value, detach: () => this.#views.delete(view) };\n\t\t} catch (error) {\n\t\t\tthis.#views.delete(view);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/** Space `space` changed: every watched folder of it is read again (once per folder) and its watchers told. */\n\tasync changed(space: string, context: Context): Promise<void> {\n\t\tconst byFolder = new Map<string, View[]>();\n\t\tfor (const view of this.#views) {\n\t\t\tif (view.space !== space) continue;\n\t\t\tif (view.attaching) view.stale = true;\n\t\t\telse byFolder.set(view.folder, [...(byFolder.get(view.folder) ?? []), view]);\n\t\t}\n\t\tfor (const [folder, views] of byFolder) {\n\t\t\tconst value = await this.#read(space, folder, context);\n\t\t\tfor (const view of views) {\n\t\t\t\tif (this.#views.has(view))\n\t\t\t\t\tview.observer.advance({ kind: \"value\", value, ops: [[\"r\", value]], retired: false }, context);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** The listing through the bound reader (bound before any `FilesFolder` goes live: it waits for `Files`). */\n\t#read(space: string, folder: string, context: Context): Promise<FolderListing> {\n\t\treturn this.#reader!(space, folder, context);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { type App, type AppApi, type AppError, type AppKind, type AppOptions, type AppPlugins, type AppTimeouts, type AppWorkerKind, Server, startServer, } from "./app.ts";
|
|
2
|
+
export { ARCHIVE_FORMAT, type ArchiveManifest } from "./archive.ts";
|
|
3
|
+
export { type EphemeralUser, ephemeralLoginFacet } from "./ephemeral.ts";
|
|
4
|
+
export { type FileInfo, Files, type FilesCaps, FilesFolder, type FileWrite, type FolderEntry, type FolderInfo, type FolderListing, filesFacet, type SpaceSummary, } from "./files.ts";
|
|
5
|
+
export { copyFiles } from "./files-copy.ts";
|
|
6
|
+
export { AppInfo, WorkerInfo } from "./info.ts";
|
|
7
|
+
export { inviteFacet } from "./invite.ts";
|
|
8
|
+
export { privateDirectory, privateStore } from "./layout.ts";
|
|
9
|
+
export { SESSION_COOKIE, type SessionInfo, type SessionKind, Sessions } from "./sessions.ts";
|
|
10
|
+
export { defineUsers } from "./users.ts";
|
|
11
|
+
export { startWorker, type WorkerOptions } from "./worker.ts";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/app/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,KAAK,GAAG,EACR,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,MAAM,EACN,WAAW,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,EACL,KAAK,SAAS,EACd,WAAW,EACX,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,UAAU,EACV,KAAK,YAAY,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Chord v2's app kit (`@earendil-works/chord/app`; slice 13): `startServer` on the server and `startWorker` in a
|
|
2
|
+
// worker's entry, the start-data objects, sessions and the owner's sign-in, device pairing, the files of each host,
|
|
3
|
+
// export and import per address, and the optional plugins (users, invites, ephemeral login).
|
|
4
|
+
export { Server, startServer, } from "./app.js";
|
|
5
|
+
export { ARCHIVE_FORMAT } from "./archive.js";
|
|
6
|
+
export { ephemeralLoginFacet } from "./ephemeral.js";
|
|
7
|
+
export { Files, FilesFolder, filesFacet, } from "./files.js";
|
|
8
|
+
export { copyFiles } from "./files-copy.js";
|
|
9
|
+
export { AppInfo, WorkerInfo } from "./info.js";
|
|
10
|
+
export { inviteFacet } from "./invite.js";
|
|
11
|
+
export { privateDirectory, privateStore } from "./layout.js";
|
|
12
|
+
export { SESSION_COOKIE, Sessions } from "./sessions.js";
|
|
13
|
+
export { defineUsers } from "./users.js";
|
|
14
|
+
export { startWorker } from "./worker.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/app/index.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,oHAAoH;AACpH,6FAA6F;AAE7F,OAAO,EASN,MAAM,EACN,WAAW,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAsB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAEN,KAAK,EAEL,WAAW,EAKX,UAAU,GAEV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAsC,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAC","sourcesContent":["// Chord v2's app kit (`@earendil-works/chord/app`; slice 13): `startServer` on the server and `startWorker` in a\n// worker's entry, the start-data objects, sessions and the owner's sign-in, device pairing, the files of each host,\n// export and import per address, and the optional plugins (users, invites, ephemeral login).\n\nexport {\n\ttype App,\n\ttype AppApi,\n\ttype AppError,\n\ttype AppKind,\n\ttype AppOptions,\n\ttype AppPlugins,\n\ttype AppTimeouts,\n\ttype AppWorkerKind,\n\tServer,\n\tstartServer,\n} from \"./app.ts\";\nexport { ARCHIVE_FORMAT, type ArchiveManifest } from \"./archive.ts\";\nexport { type EphemeralUser, ephemeralLoginFacet } from \"./ephemeral.ts\";\nexport {\n\ttype FileInfo,\n\tFiles,\n\ttype FilesCaps,\n\tFilesFolder,\n\ttype FileWrite,\n\ttype FolderEntry,\n\ttype FolderInfo,\n\ttype FolderListing,\n\tfilesFacet,\n\ttype SpaceSummary,\n} from \"./files.ts\";\nexport { copyFiles } from \"./files-copy.ts\";\nexport { AppInfo, WorkerInfo } from \"./info.ts\";\nexport { inviteFacet } from \"./invite.ts\";\nexport { privateDirectory, privateStore } from \"./layout.ts\";\nexport { SESSION_COOKIE, type SessionInfo, type SessionKind, Sessions } from \"./sessions.ts\";\nexport { defineUsers } from \"./users.ts\";\nexport { startWorker, type WorkerOptions } from \"./worker.ts\";\n"]}
|