@earendil-works/chord 1.3.0 → 1.5.0
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 +54 -0
- package/README.md +129 -10
- package/dist/cell.d.ts +7 -7
- package/dist/cell.d.ts.map +1 -1
- package/dist/cell.js.map +1 -1
- package/dist/context/index.d.ts +8 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +15 -0
- package/dist/context/index.js.map +1 -1
- package/dist/contract.d.ts +51 -52
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +19 -24
- package/dist/contract.js.map +1 -1
- package/dist/delta/apply-immutable-trusted.js +3 -4
- package/dist/delta/apply-immutable-trusted.js.map +1 -1
- package/dist/delta/diff.d.ts.map +1 -1
- package/dist/delta/diff.js +5 -3
- package/dist/delta/diff.js.map +1 -1
- package/dist/delta/index.d.ts +9 -1
- package/dist/delta/index.d.ts.map +1 -1
- package/dist/delta/index.js +15 -11
- package/dist/delta/index.js.map +1 -1
- package/dist/delta/pending.d.ts +36 -0
- package/dist/delta/pending.d.ts.map +1 -0
- package/dist/delta/pending.js +143 -0
- package/dist/delta/pending.js.map +1 -0
- package/dist/delta/tracker.d.ts +12 -0
- package/dist/delta/tracker.d.ts.map +1 -1
- package/dist/delta/tracker.js +109 -39
- package/dist/delta/tracker.js.map +1 -1
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +9 -7
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/next/contracts/accepts.d.ts +81 -0
- package/dist/next/contracts/accepts.d.ts.map +1 -0
- package/dist/next/contracts/accepts.js +123 -0
- package/dist/next/contracts/accepts.js.map +1 -0
- package/dist/next/contracts/contract.d.ts +121 -0
- package/dist/next/contracts/contract.d.ts.map +1 -0
- package/dist/next/contracts/contract.js +50 -0
- package/dist/next/contracts/contract.js.map +1 -0
- package/dist/next/contracts/declare.d.ts +107 -0
- package/dist/next/contracts/declare.d.ts.map +1 -0
- package/dist/next/contracts/declare.js +136 -0
- package/dist/next/contracts/declare.js.map +1 -0
- package/dist/next/contracts/evolve.d.ts +92 -0
- package/dist/next/contracts/evolve.d.ts.map +1 -0
- package/dist/next/contracts/evolve.js +179 -0
- package/dist/next/contracts/evolve.js.map +1 -0
- package/dist/next/contracts/fingerprint.d.ts +16 -0
- package/dist/next/contracts/fingerprint.d.ts.map +1 -0
- package/dist/next/contracts/fingerprint.js +50 -0
- package/dist/next/contracts/fingerprint.js.map +1 -0
- package/dist/next/contracts/history.d.ts +71 -0
- package/dist/next/contracts/history.d.ts.map +1 -0
- package/dist/next/contracts/history.js +3 -0
- package/dist/next/contracts/history.js.map +1 -0
- package/dist/next/contracts/host-kind.d.ts +40 -0
- package/dist/next/contracts/host-kind.d.ts.map +1 -0
- package/dist/next/contracts/host-kind.js +37 -0
- package/dist/next/contracts/host-kind.js.map +1 -0
- package/dist/next/contracts/index.d.ts +7 -0
- package/dist/next/contracts/index.d.ts.map +1 -0
- package/dist/next/contracts/index.js +6 -0
- package/dist/next/contracts/index.js.map +1 -0
- package/dist/next/contracts/internal.d.ts +10 -0
- package/dist/next/contracts/internal.d.ts.map +1 -0
- package/dist/next/contracts/internal.js +9 -0
- package/dist/next/contracts/internal.js.map +1 -0
- package/dist/next/contracts/names.d.ts +3 -0
- package/dist/next/contracts/names.d.ts.map +1 -0
- package/dist/next/contracts/names.js +13 -0
- package/dist/next/contracts/names.js.map +1 -0
- package/dist/next/contracts/params.d.ts +28 -0
- package/dist/next/contracts/params.d.ts.map +1 -0
- package/dist/next/contracts/params.js +50 -0
- package/dist/next/contracts/params.js.map +1 -0
- package/dist/next/contracts/schema.d.ts +102 -0
- package/dist/next/contracts/schema.d.ts.map +1 -0
- package/dist/next/contracts/schema.js +103 -0
- package/dist/next/contracts/schema.js.map +1 -0
- package/dist/next/contracts/snapshot.d.ts +16 -0
- package/dist/next/contracts/snapshot.d.ts.map +1 -0
- package/dist/next/contracts/snapshot.js +167 -0
- package/dist/next/contracts/snapshot.js.map +1 -0
- package/dist/next/data/args.d.ts +50 -0
- package/dist/next/data/args.d.ts.map +1 -0
- package/dist/next/data/args.js +83 -0
- package/dist/next/data/args.js.map +1 -0
- package/dist/next/data/errors.d.ts +73 -0
- package/dist/next/data/errors.d.ts.map +1 -0
- package/dist/next/data/errors.js +107 -0
- package/dist/next/data/errors.js.map +1 -0
- package/dist/next/data/failure.d.ts +26 -0
- package/dist/next/data/failure.d.ts.map +1 -0
- package/dist/next/data/failure.js +72 -0
- package/dist/next/data/failure.js.map +1 -0
- package/dist/next/data/index.d.ts +4 -0
- package/dist/next/data/index.d.ts.map +1 -0
- package/dist/next/data/index.js +4 -0
- package/dist/next/data/index.js.map +1 -0
- package/dist/next/data/internal.d.ts +7 -0
- package/dist/next/data/internal.d.ts.map +1 -0
- package/dist/next/data/internal.js +8 -0
- package/dist/next/data/internal.js.map +1 -0
- package/dist/next/data/params.d.ts +20 -0
- package/dist/next/data/params.d.ts.map +1 -0
- package/dist/next/data/params.js +31 -0
- package/dist/next/data/params.js.map +1 -0
- package/dist/next/data/principal.d.ts +17 -0
- package/dist/next/data/principal.d.ts.map +1 -0
- package/dist/next/data/principal.js +41 -0
- package/dist/next/data/principal.js.map +1 -0
- package/dist/next/data/validator.d.ts +12 -0
- package/dist/next/data/validator.d.ts.map +1 -0
- package/dist/next/data/validator.js +34 -0
- package/dist/next/data/validator.js.map +1 -0
- package/dist/next/documents/address-source.d.ts +20 -0
- package/dist/next/documents/address-source.d.ts.map +1 -0
- package/dist/next/documents/address-source.js +44 -0
- package/dist/next/documents/address-source.js.map +1 -0
- package/dist/next/documents/definition.d.ts +84 -0
- package/dist/next/documents/definition.d.ts.map +1 -0
- package/dist/next/documents/definition.js +73 -0
- package/dist/next/documents/definition.js.map +1 -0
- package/dist/next/documents/documents.d.ts +106 -0
- package/dist/next/documents/documents.d.ts.map +1 -0
- package/dist/next/documents/documents.js +224 -0
- package/dist/next/documents/documents.js.map +1 -0
- package/dist/next/documents/fence.d.ts +9 -0
- package/dist/next/documents/fence.d.ts.map +1 -0
- package/dist/next/documents/fence.js +15 -0
- package/dist/next/documents/fence.js.map +1 -0
- package/dist/next/documents/handles.d.ts +76 -0
- package/dist/next/documents/handles.d.ts.map +1 -0
- package/dist/next/documents/handles.js +66 -0
- package/dist/next/documents/handles.js.map +1 -0
- package/dist/next/documents/index.d.ts +4 -0
- package/dist/next/documents/index.d.ts.map +1 -0
- package/dist/next/documents/index.js +3 -0
- package/dist/next/documents/index.js.map +1 -0
- package/dist/next/documents/internal.d.ts +9 -0
- package/dist/next/documents/internal.d.ts.map +1 -0
- package/dist/next/documents/internal.js +9 -0
- package/dist/next/documents/internal.js.map +1 -0
- package/dist/next/documents/keyed-slot.d.ts +103 -0
- package/dist/next/documents/keyed-slot.d.ts.map +1 -0
- package/dist/next/documents/keyed-slot.js +395 -0
- package/dist/next/documents/keyed-slot.js.map +1 -0
- package/dist/next/documents/line.d.ts +7 -0
- package/dist/next/documents/line.d.ts.map +1 -0
- package/dist/next/documents/line.js +14 -0
- package/dist/next/documents/line.js.map +1 -0
- package/dist/next/documents/persistence.d.ts +104 -0
- package/dist/next/documents/persistence.d.ts.map +1 -0
- package/dist/next/documents/persistence.js +128 -0
- package/dist/next/documents/persistence.js.map +1 -0
- package/dist/next/documents/residency.d.ts +31 -0
- package/dist/next/documents/residency.d.ts.map +1 -0
- package/dist/next/documents/residency.js +93 -0
- package/dist/next/documents/residency.js.map +1 -0
- package/dist/next/documents/slot.d.ts +109 -0
- package/dist/next/documents/slot.d.ts.map +1 -0
- package/dist/next/documents/slot.js +181 -0
- package/dist/next/documents/slot.js.map +1 -0
- package/dist/next/documents/transaction.d.ts +133 -0
- package/dist/next/documents/transaction.d.ts.map +1 -0
- package/dist/next/documents/transaction.js +409 -0
- package/dist/next/documents/transaction.js.map +1 -0
- package/dist/next/host/activity.d.ts +31 -0
- package/dist/next/host/activity.d.ts.map +1 -0
- package/dist/next/host/activity.js +40 -0
- package/dist/next/host/activity.js.map +1 -0
- package/dist/next/host/adapted.d.ts +49 -0
- package/dist/next/host/adapted.d.ts.map +1 -0
- package/dist/next/host/adapted.js +214 -0
- package/dist/next/host/adapted.js.map +1 -0
- package/dist/next/host/attempt.d.ts +278 -0
- package/dist/next/host/attempt.d.ts.map +1 -0
- package/dist/next/host/attempt.js +1072 -0
- package/dist/next/host/attempt.js.map +1 -0
- package/dist/next/host/backoff.d.ts +29 -0
- package/dist/next/host/backoff.d.ts.map +1 -0
- package/dist/next/host/backoff.js +69 -0
- package/dist/next/host/backoff.js.map +1 -0
- package/dist/next/host/ctx.d.ts +47 -0
- package/dist/next/host/ctx.d.ts.map +1 -0
- package/dist/next/host/ctx.js +108 -0
- package/dist/next/host/ctx.js.map +1 -0
- package/dist/next/host/deadline.d.ts +12 -0
- package/dist/next/host/deadline.d.ts.map +1 -0
- package/dist/next/host/deadline.js +40 -0
- package/dist/next/host/deadline.js.map +1 -0
- package/dist/next/host/dependencies.d.ts +65 -0
- package/dist/next/host/dependencies.d.ts.map +1 -0
- package/dist/next/host/dependencies.js +115 -0
- package/dist/next/host/dependencies.js.map +1 -0
- package/dist/next/host/destination.d.ts +48 -0
- package/dist/next/host/destination.d.ts.map +1 -0
- package/dist/next/host/destination.js +101 -0
- package/dist/next/host/destination.js.map +1 -0
- package/dist/next/host/facet.d.ts +79 -0
- package/dist/next/host/facet.d.ts.map +1 -0
- package/dist/next/host/facet.js +55 -0
- package/dist/next/host/facet.js.map +1 -0
- package/dist/next/host/follow.d.ts +52 -0
- package/dist/next/host/follow.d.ts.map +1 -0
- package/dist/next/host/follow.js +207 -0
- package/dist/next/host/follow.js.map +1 -0
- package/dist/next/host/host.d.ts +495 -0
- package/dist/next/host/host.d.ts.map +1 -0
- package/dist/next/host/host.js +1075 -0
- package/dist/next/host/host.js.map +1 -0
- package/dist/next/host/index.d.ts +17 -0
- package/dist/next/host/index.d.ts.map +1 -0
- package/dist/next/host/index.js +6 -0
- package/dist/next/host/index.js.map +1 -0
- package/dist/next/host/internal.d.ts +10 -0
- package/dist/next/host/internal.d.ts.map +1 -0
- package/dist/next/host/internal.js +8 -0
- package/dist/next/host/internal.js.map +1 -0
- package/dist/next/host/members.d.ts +50 -0
- package/dist/next/host/members.d.ts.map +1 -0
- package/dist/next/host/members.js +107 -0
- package/dist/next/host/members.js.map +1 -0
- package/dist/next/host/native.d.ts +55 -0
- package/dist/next/host/native.d.ts.map +1 -0
- package/dist/next/host/native.js +92 -0
- package/dist/next/host/native.js.map +1 -0
- package/dist/next/host/object.d.ts +290 -0
- package/dist/next/host/object.d.ts.map +1 -0
- package/dist/next/host/object.js +1127 -0
- package/dist/next/host/object.js.map +1 -0
- package/dist/next/host/parked.d.ts +23 -0
- package/dist/next/host/parked.d.ts.map +1 -0
- package/dist/next/host/parked.js +79 -0
- package/dist/next/host/parked.js.map +1 -0
- package/dist/next/host/presence.d.ts +34 -0
- package/dist/next/host/presence.d.ts.map +1 -0
- package/dist/next/host/presence.js +117 -0
- package/dist/next/host/presence.js.map +1 -0
- package/dist/next/host/ref-state.d.ts +53 -0
- package/dist/next/host/ref-state.d.ts.map +1 -0
- package/dist/next/host/ref-state.js +83 -0
- package/dist/next/host/ref-state.js.map +1 -0
- package/dist/next/host/reference-keys.d.ts +36 -0
- package/dist/next/host/reference-keys.d.ts.map +1 -0
- package/dist/next/host/reference-keys.js +168 -0
- package/dist/next/host/reference-keys.js.map +1 -0
- package/dist/next/host/reference-source.d.ts +65 -0
- package/dist/next/host/reference-source.d.ts.map +1 -0
- package/dist/next/host/reference-source.js +285 -0
- package/dist/next/host/reference-source.js.map +1 -0
- package/dist/next/host/reference.d.ts +308 -0
- package/dist/next/host/reference.d.ts.map +1 -0
- package/dist/next/host/reference.js +775 -0
- package/dist/next/host/reference.js.map +1 -0
- package/dist/next/host/retry-on.d.ts +28 -0
- package/dist/next/host/retry-on.d.ts.map +1 -0
- package/dist/next/host/retry-on.js +52 -0
- package/dist/next/host/retry-on.js.map +1 -0
- package/dist/next/host/revocation.d.ts +16 -0
- package/dist/next/host/revocation.d.ts.map +1 -0
- package/dist/next/host/revocation.js +27 -0
- package/dist/next/host/revocation.js.map +1 -0
- package/dist/next/host/root.d.ts +27 -0
- package/dist/next/host/root.d.ts.map +1 -0
- package/dist/next/host/root.js +68 -0
- package/dist/next/host/root.js.map +1 -0
- package/dist/next/host/route.d.ts +64 -0
- package/dist/next/host/route.d.ts.map +1 -0
- package/dist/next/host/route.js +190 -0
- package/dist/next/host/route.js.map +1 -0
- package/dist/next/host/routines.d.ts +76 -0
- package/dist/next/host/routines.d.ts.map +1 -0
- package/dist/next/host/routines.js +350 -0
- package/dist/next/host/routines.js.map +1 -0
- package/dist/next/host/sleep.d.ts +9 -0
- package/dist/next/host/sleep.d.ts.map +1 -0
- package/dist/next/host/sleep.js +40 -0
- package/dist/next/host/sleep.js.map +1 -0
- package/dist/next/host/staging.d.ts +94 -0
- package/dist/next/host/staging.d.ts.map +1 -0
- package/dist/next/host/staging.js +302 -0
- package/dist/next/host/staging.js.map +1 -0
- package/dist/next/host/unbound.d.ts +30 -0
- package/dist/next/host/unbound.d.ts.map +1 -0
- package/dist/next/host/unbound.js +67 -0
- package/dist/next/host/unbound.js.map +1 -0
- package/dist/next/host/uuid.d.ts +3 -0
- package/dist/next/host/uuid.d.ts.map +1 -0
- package/dist/next/host/uuid.js +38 -0
- package/dist/next/host/uuid.js.map +1 -0
- package/dist/next/index.d.ts +28 -0
- package/dist/next/index.d.ts.map +1 -0
- package/dist/next/index.js +18 -0
- package/dist/next/index.js.map +1 -0
- package/dist/next/jobs/definition.d.ts +96 -0
- package/dist/next/jobs/definition.d.ts.map +1 -0
- package/dist/next/jobs/definition.js +83 -0
- package/dist/next/jobs/definition.js.map +1 -0
- package/dist/next/jobs/index.d.ts +5 -0
- package/dist/next/jobs/index.d.ts.map +1 -0
- package/dist/next/jobs/index.js +3 -0
- package/dist/next/jobs/index.js.map +1 -0
- package/dist/next/jobs/internal.d.ts +3 -0
- package/dist/next/jobs/internal.d.ts.map +1 -0
- package/dist/next/jobs/internal.js +4 -0
- package/dist/next/jobs/internal.js.map +1 -0
- package/dist/next/jobs/job.d.ts +152 -0
- package/dist/next/jobs/job.d.ts.map +1 -0
- package/dist/next/jobs/job.js +320 -0
- package/dist/next/jobs/job.js.map +1 -0
- package/dist/next/jobs/persisted.d.ts +38 -0
- package/dist/next/jobs/persisted.d.ts.map +1 -0
- package/dist/next/jobs/persisted.js +95 -0
- package/dist/next/jobs/persisted.js.map +1 -0
- package/dist/next/jobs/records.d.ts +231 -0
- package/dist/next/jobs/records.d.ts.map +1 -0
- package/dist/next/jobs/records.js +869 -0
- package/dist/next/jobs/records.js.map +1 -0
- package/dist/next/jobs/run-states.d.ts +69 -0
- package/dist/next/jobs/run-states.d.ts.map +1 -0
- package/dist/next/jobs/run-states.js +228 -0
- package/dist/next/jobs/run-states.js.map +1 -0
- package/dist/next/jobs/run.d.ts +113 -0
- package/dist/next/jobs/run.d.ts.map +1 -0
- package/dist/next/jobs/run.js +200 -0
- package/dist/next/jobs/run.js.map +1 -0
- package/dist/next/jobs/running.d.ts +44 -0
- package/dist/next/jobs/running.d.ts.map +1 -0
- package/dist/next/jobs/running.js +117 -0
- package/dist/next/jobs/running.js.map +1 -0
- package/dist/next/jobs/stored.d.ts +63 -0
- package/dist/next/jobs/stored.d.ts.map +1 -0
- package/dist/next/jobs/stored.js +55 -0
- package/dist/next/jobs/stored.js.map +1 -0
- package/dist/next/link/binary.d.ts +4 -0
- package/dist/next/link/binary.d.ts.map +1 -0
- package/dist/next/link/binary.js +534 -0
- package/dist/next/link/binary.js.map +1 -0
- package/dist/next/link/channel.d.ts +63 -0
- package/dist/next/link/channel.d.ts.map +1 -0
- package/dist/next/link/channel.js +202 -0
- package/dist/next/link/channel.js.map +1 -0
- package/dist/next/link/errors.d.ts +7 -0
- package/dist/next/link/errors.d.ts.map +1 -0
- package/dist/next/link/errors.js +21 -0
- package/dist/next/link/errors.js.map +1 -0
- package/dist/next/link/index.d.ts +8 -0
- package/dist/next/link/index.d.ts.map +1 -0
- package/dist/next/link/index.js +8 -0
- package/dist/next/link/index.js.map +1 -0
- package/dist/next/link/internal.d.ts +9 -0
- package/dist/next/link/internal.d.ts.map +1 -0
- package/dist/next/link/internal.js +10 -0
- package/dist/next/link/internal.js.map +1 -0
- package/dist/next/link/ipc.d.ts +22 -0
- package/dist/next/link/ipc.d.ts.map +1 -0
- package/dist/next/link/ipc.js +64 -0
- package/dist/next/link/ipc.js.map +1 -0
- package/dist/next/link/link.d.ts +34 -0
- package/dist/next/link/link.d.ts.map +1 -0
- package/dist/next/link/link.js +87 -0
- package/dist/next/link/link.js.map +1 -0
- package/dist/next/link/message.d.ts +249 -0
- package/dist/next/link/message.d.ts.map +1 -0
- package/dist/next/link/message.js +123 -0
- package/dist/next/link/message.js.map +1 -0
- package/dist/next/link/part.d.ts +80 -0
- package/dist/next/link/part.d.ts.map +1 -0
- package/dist/next/link/part.js +164 -0
- package/dist/next/link/part.js.map +1 -0
- package/dist/next/link/text.d.ts +6 -0
- package/dist/next/link/text.d.ts.map +1 -0
- package/dist/next/link/text.js +335 -0
- package/dist/next/link/text.js.map +1 -0
- package/dist/next/link/values.d.ts +40 -0
- package/dist/next/link/values.d.ts.map +1 -0
- package/dist/next/link/values.js +117 -0
- package/dist/next/link/values.js.map +1 -0
- package/dist/next/link/websocket.d.ts +26 -0
- package/dist/next/link/websocket.d.ts.map +1 -0
- package/dist/next/link/websocket.js +91 -0
- package/dist/next/link/websocket.js.map +1 -0
- package/dist/next/registries/contribution.d.ts +50 -0
- package/dist/next/registries/contribution.d.ts.map +1 -0
- package/dist/next/registries/contribution.js +129 -0
- package/dist/next/registries/contribution.js.map +1 -0
- package/dist/next/registries/entries.d.ts +18 -0
- package/dist/next/registries/entries.d.ts.map +1 -0
- package/dist/next/registries/entries.js +42 -0
- package/dist/next/registries/entries.js.map +1 -0
- package/dist/next/registries/index.d.ts +3 -0
- package/dist/next/registries/index.d.ts.map +1 -0
- package/dist/next/registries/index.js +5 -0
- package/dist/next/registries/index.js.map +1 -0
- package/dist/next/registries/internal.d.ts +4 -0
- package/dist/next/registries/internal.d.ts.map +1 -0
- package/dist/next/registries/internal.js +5 -0
- package/dist/next/registries/internal.js.map +1 -0
- package/dist/next/registries/record.d.ts +94 -0
- package/dist/next/registries/record.d.ts.map +1 -0
- package/dist/next/registries/record.js +253 -0
- package/dist/next/registries/record.js.map +1 -0
- package/dist/next/registries/registry.d.ts +74 -0
- package/dist/next/registries/registry.d.ts.map +1 -0
- package/dist/next/registries/registry.js +14 -0
- package/dist/next/registries/registry.js.map +1 -0
- package/dist/next/registries/value.d.ts +48 -0
- package/dist/next/registries/value.d.ts.map +1 -0
- package/dist/next/registries/value.js +199 -0
- package/dist/next/registries/value.js.map +1 -0
- package/dist/next/remote/calls.d.ts +25 -0
- package/dist/next/remote/calls.d.ts.map +1 -0
- package/dist/next/remote/calls.js +62 -0
- package/dist/next/remote/calls.js.map +1 -0
- package/dist/next/remote/consumer.d.ts +42 -0
- package/dist/next/remote/consumer.d.ts.map +1 -0
- package/dist/next/remote/consumer.js +343 -0
- package/dist/next/remote/consumer.js.map +1 -0
- package/dist/next/remote/hold.d.ts +130 -0
- package/dist/next/remote/hold.d.ts.map +1 -0
- package/dist/next/remote/hold.js +537 -0
- package/dist/next/remote/hold.js.map +1 -0
- package/dist/next/remote/host-link.d.ts +77 -0
- package/dist/next/remote/host-link.d.ts.map +1 -0
- package/dist/next/remote/host-link.js +182 -0
- package/dist/next/remote/host-link.js.map +1 -0
- package/dist/next/remote/internal.d.ts +6 -0
- package/dist/next/remote/internal.d.ts.map +1 -0
- package/dist/next/remote/internal.js +6 -0
- package/dist/next/remote/internal.js.map +1 -0
- package/dist/next/remote/path.d.ts +46 -0
- package/dist/next/remote/path.d.ts.map +1 -0
- package/dist/next/remote/path.js +73 -0
- package/dist/next/remote/path.js.map +1 -0
- package/dist/next/remote/provider.d.ts +76 -0
- package/dist/next/remote/provider.d.ts.map +1 -0
- package/dist/next/remote/provider.js +506 -0
- package/dist/next/remote/provider.js.map +1 -0
- package/dist/next/remote/relay.d.ts +58 -0
- package/dist/next/remote/relay.d.ts.map +1 -0
- package/dist/next/remote/relay.js +117 -0
- package/dist/next/remote/relay.js.map +1 -0
- package/dist/next/remote/remote-object.d.ts +133 -0
- package/dist/next/remote/remote-object.d.ts.map +1 -0
- package/dist/next/remote/remote-object.js +411 -0
- package/dist/next/remote/remote-object.js.map +1 -0
- package/dist/next/remote/replica.d.ts +59 -0
- package/dist/next/remote/replica.d.ts.map +1 -0
- package/dist/next/remote/replica.js +125 -0
- package/dist/next/remote/replica.js.map +1 -0
- package/dist/next/state/batch.d.ts +64 -0
- package/dist/next/state/batch.d.ts.map +1 -0
- package/dist/next/state/batch.js +163 -0
- package/dist/next/state/batch.js.map +1 -0
- package/dist/next/state/derive.d.ts +52 -0
- package/dist/next/state/derive.d.ts.map +1 -0
- package/dist/next/state/derive.js +182 -0
- package/dist/next/state/derive.js.map +1 -0
- package/dist/next/state/index.d.ts +6 -0
- package/dist/next/state/index.d.ts.map +1 -0
- package/dist/next/state/index.js +4 -0
- package/dist/next/state/index.js.map +1 -0
- package/dist/next/state/internal.d.ts +6 -0
- package/dist/next/state/internal.d.ts.map +1 -0
- package/dist/next/state/internal.js +8 -0
- package/dist/next/state/internal.js.map +1 -0
- package/dist/next/state/native-source.d.ts +106 -0
- package/dist/next/state/native-source.d.ts.map +1 -0
- package/dist/next/state/native-source.js +240 -0
- package/dist/next/state/native-source.js.map +1 -0
- package/dist/next/state/watchable.d.ts +114 -0
- package/dist/next/state/watchable.d.ts.map +1 -0
- package/dist/next/state/watchable.js +156 -0
- package/dist/next/state/watchable.js.map +1 -0
- package/dist/next/state/writable.d.ts +32 -0
- package/dist/next/state/writable.d.ts.map +1 -0
- package/dist/next/state/writable.js +49 -0
- package/dist/next/state/writable.js.map +1 -0
- package/dist/next/store/adapter.d.ts +67 -0
- package/dist/next/store/adapter.d.ts.map +1 -0
- package/dist/next/store/adapter.js +118 -0
- package/dist/next/store/adapter.js.map +1 -0
- package/dist/next/store/allocator.d.ts +17 -0
- package/dist/next/store/allocator.d.ts.map +1 -0
- package/dist/next/store/allocator.js +30 -0
- package/dist/next/store/allocator.js.map +1 -0
- package/dist/next/store/applier.d.ts +8 -0
- package/dist/next/store/applier.d.ts.map +1 -0
- package/dist/next/store/applier.js +375 -0
- package/dist/next/store/applier.js.map +1 -0
- package/dist/next/store/apply-batch.d.ts +12 -0
- package/dist/next/store/apply-batch.d.ts.map +1 -0
- package/dist/next/store/apply-batch.js +83 -0
- package/dist/next/store/apply-batch.js.map +1 -0
- package/dist/next/store/archive.d.ts +32 -0
- package/dist/next/store/archive.d.ts.map +1 -0
- package/dist/next/store/archive.js +129 -0
- package/dist/next/store/archive.js.map +1 -0
- package/dist/next/store/backend.d.ts +10 -0
- package/dist/next/store/backend.d.ts.map +1 -0
- package/dist/next/store/backend.js +15 -0
- package/dist/next/store/backend.js.map +1 -0
- package/dist/next/store/catalog.d.ts +24 -0
- package/dist/next/store/catalog.d.ts.map +1 -0
- package/dist/next/store/catalog.js +17 -0
- package/dist/next/store/catalog.js.map +1 -0
- package/dist/next/store/claims.d.ts +23 -0
- package/dist/next/store/claims.d.ts.map +1 -0
- package/dist/next/store/claims.js +65 -0
- package/dist/next/store/claims.js.map +1 -0
- package/dist/next/store/columns.d.ts +77 -0
- package/dist/next/store/columns.d.ts.map +1 -0
- package/dist/next/store/columns.js +77 -0
- package/dist/next/store/columns.js.map +1 -0
- package/dist/next/store/engine.d.ts +176 -0
- package/dist/next/store/engine.d.ts.map +1 -0
- package/dist/next/store/engine.js +283 -0
- package/dist/next/store/engine.js.map +1 -0
- package/dist/next/store/evaluate.d.ts +17 -0
- package/dist/next/store/evaluate.d.ts.map +1 -0
- package/dist/next/store/evaluate.js +128 -0
- package/dist/next/store/evaluate.js.map +1 -0
- package/dist/next/store/export.d.ts +17 -0
- package/dist/next/store/export.d.ts.map +1 -0
- package/dist/next/store/export.js +200 -0
- package/dist/next/store/export.js.map +1 -0
- package/dist/next/store/expression.d.ts +150 -0
- package/dist/next/store/expression.d.ts.map +1 -0
- package/dist/next/store/expression.js +268 -0
- package/dist/next/store/expression.js.map +1 -0
- package/dist/next/store/import.d.ts +10 -0
- package/dist/next/store/import.d.ts.map +1 -0
- package/dist/next/store/import.js +276 -0
- package/dist/next/store/import.js.map +1 -0
- package/dist/next/store/index.d.ts +16 -0
- package/dist/next/store/index.d.ts.map +1 -0
- package/dist/next/store/index.js +13 -0
- package/dist/next/store/index.js.map +1 -0
- package/dist/next/store/json-column.d.ts +33 -0
- package/dist/next/store/json-column.d.ts.map +1 -0
- package/dist/next/store/json-column.js +61 -0
- package/dist/next/store/json-column.js.map +1 -0
- package/dist/next/store/jsonl.d.ts +9 -0
- package/dist/next/store/jsonl.d.ts.map +1 -0
- package/dist/next/store/jsonl.js +61 -0
- package/dist/next/store/jsonl.js.map +1 -0
- package/dist/next/store/outbox.d.ts +26 -0
- package/dist/next/store/outbox.d.ts.map +1 -0
- package/dist/next/store/outbox.js +80 -0
- package/dist/next/store/outbox.js.map +1 -0
- package/dist/next/store/query.d.ts +39 -0
- package/dist/next/store/query.d.ts.map +1 -0
- package/dist/next/store/query.js +97 -0
- package/dist/next/store/query.js.map +1 -0
- package/dist/next/store/refusal.d.ts +15 -0
- package/dist/next/store/refusal.d.ts.map +1 -0
- package/dist/next/store/refusal.js +36 -0
- package/dist/next/store/refusal.js.map +1 -0
- package/dist/next/store/rows.d.ts +80 -0
- package/dist/next/store/rows.d.ts.map +1 -0
- package/dist/next/store/rows.js +183 -0
- package/dist/next/store/rows.js.map +1 -0
- package/dist/next/store/schema.d.ts +25 -0
- package/dist/next/store/schema.d.ts.map +1 -0
- package/dist/next/store/schema.js +115 -0
- package/dist/next/store/schema.js.map +1 -0
- package/dist/next/store/sql.d.ts +73 -0
- package/dist/next/store/sql.d.ts.map +1 -0
- package/dist/next/store/sql.js +234 -0
- package/dist/next/store/sql.js.map +1 -0
- package/dist/next/store/step.d.ts +48 -0
- package/dist/next/store/step.d.ts.map +1 -0
- package/dist/next/store/step.js +50 -0
- package/dist/next/store/step.js.map +1 -0
- package/dist/next/store/store.d.ts +161 -0
- package/dist/next/store/store.d.ts.map +1 -0
- package/dist/next/store/store.js +627 -0
- package/dist/next/store/store.js.map +1 -0
- package/dist/next/store/table-changes.d.ts +29 -0
- package/dist/next/store/table-changes.d.ts.map +1 -0
- package/dist/next/store/table-changes.js +102 -0
- package/dist/next/store/table-changes.js.map +1 -0
- package/dist/next/store/table-evolve.d.ts +74 -0
- package/dist/next/store/table-evolve.d.ts.map +1 -0
- package/dist/next/store/table-evolve.js +201 -0
- package/dist/next/store/table-evolve.js.map +1 -0
- package/dist/next/store/table-handle.d.ts +67 -0
- package/dist/next/store/table-handle.d.ts.map +1 -0
- package/dist/next/store/table-handle.js +101 -0
- package/dist/next/store/table-handle.js.map +1 -0
- package/dist/next/store/table-history.d.ts +75 -0
- package/dist/next/store/table-history.d.ts.map +1 -0
- package/dist/next/store/table-history.js +42 -0
- package/dist/next/store/table-history.js.map +1 -0
- package/dist/next/store/table-migration.d.ts +16 -0
- package/dist/next/store/table-migration.d.ts.map +1 -0
- package/dist/next/store/table-migration.js +202 -0
- package/dist/next/store/table-migration.js.map +1 -0
- package/dist/next/store/table-writes.d.ts +125 -0
- package/dist/next/store/table-writes.d.ts.map +1 -0
- package/dist/next/store/table-writes.js +165 -0
- package/dist/next/store/table-writes.js.map +1 -0
- package/dist/next/store/table.d.ts +80 -0
- package/dist/next/store/table.d.ts.map +1 -0
- package/dist/next/store/table.js +103 -0
- package/dist/next/store/table.js.map +1 -0
- package/dist/next/store/text.d.ts +14 -0
- package/dist/next/store/text.d.ts.map +1 -0
- package/dist/next/store/text.js +51 -0
- package/dist/next/store/text.js.map +1 -0
- package/dist/next/store/writes.d.ts +5 -0
- package/dist/next/store/writes.d.ts.map +1 -0
- package/dist/next/store/writes.js +4 -0
- package/dist/next/store/writes.js.map +1 -0
- package/dist/next-node/compression.d.ts +7 -0
- package/dist/next-node/compression.d.ts.map +1 -0
- package/dist/next-node/compression.js +24 -0
- package/dist/next-node/compression.js.map +1 -0
- package/dist/next-node/http/admission.d.ts +63 -0
- package/dist/next-node/http/admission.d.ts.map +1 -0
- package/dist/next-node/http/admission.js +134 -0
- package/dist/next-node/http/admission.js.map +1 -0
- package/dist/next-node/http/authenticate.d.ts +21 -0
- package/dist/next-node/http/authenticate.d.ts.map +1 -0
- package/dist/next-node/http/authenticate.js +34 -0
- package/dist/next-node/http/authenticate.js.map +1 -0
- package/dist/next-node/http/cookies.d.ts +24 -0
- package/dist/next-node/http/cookies.d.ts.map +1 -0
- package/dist/next-node/http/cookies.js +62 -0
- package/dist/next-node/http/cookies.js.map +1 -0
- package/dist/next-node/http/file.d.ts +23 -0
- package/dist/next-node/http/file.d.ts.map +1 -0
- package/dist/next-node/http/file.js +94 -0
- package/dist/next-node/http/file.js.map +1 -0
- package/dist/next-node/http/headers.d.ts +37 -0
- package/dist/next-node/http/headers.d.ts.map +1 -0
- package/dist/next-node/http/headers.js +129 -0
- package/dist/next-node/http/headers.js.map +1 -0
- package/dist/next-node/http/http.d.ts +100 -0
- package/dist/next-node/http/http.d.ts.map +1 -0
- package/dist/next-node/http/http.js +462 -0
- package/dist/next-node/http/http.js.map +1 -0
- package/dist/next-node/http/incoming.d.ts +19 -0
- package/dist/next-node/http/incoming.d.ts.map +1 -0
- package/dist/next-node/http/incoming.js +31 -0
- package/dist/next-node/http/incoming.js.map +1 -0
- package/dist/next-node/http/index.d.ts +11 -0
- package/dist/next-node/http/index.d.ts.map +1 -0
- package/dist/next-node/http/index.js +12 -0
- package/dist/next-node/http/index.js.map +1 -0
- package/dist/next-node/http/node.d.ts +78 -0
- package/dist/next-node/http/node.d.ts.map +1 -0
- package/dist/next-node/http/node.js +291 -0
- package/dist/next-node/http/node.js.map +1 -0
- package/dist/next-node/http/request.d.ts +54 -0
- package/dist/next-node/http/request.d.ts.map +1 -0
- package/dist/next-node/http/request.js +116 -0
- package/dist/next-node/http/request.js.map +1 -0
- package/dist/next-node/http/response.d.ts +63 -0
- package/dist/next-node/http/response.d.ts.map +1 -0
- package/dist/next-node/http/response.js +202 -0
- package/dist/next-node/http/response.js.map +1 -0
- package/dist/next-node/http/router.d.ts +114 -0
- package/dist/next-node/http/router.d.ts.map +1 -0
- package/dist/next-node/http/router.js +261 -0
- package/dist/next-node/http/router.js.map +1 -0
- package/dist/next-node/http/upgrades.d.ts +58 -0
- package/dist/next-node/http/upgrades.d.ts.map +1 -0
- package/dist/next-node/http/upgrades.js +184 -0
- package/dist/next-node/http/upgrades.js.map +1 -0
- package/dist/next-node/plugins/build.d.ts +57 -0
- package/dist/next-node/plugins/build.d.ts.map +1 -0
- package/dist/next-node/plugins/build.js +334 -0
- package/dist/next-node/plugins/build.js.map +1 -0
- package/dist/next-node/plugins/discover.d.ts +36 -0
- package/dist/next-node/plugins/discover.d.ts.map +1 -0
- package/dist/next-node/plugins/discover.js +91 -0
- package/dist/next-node/plugins/discover.js.map +1 -0
- package/dist/next-node/plugins/evaluate.d.ts +33 -0
- package/dist/next-node/plugins/evaluate.d.ts.map +1 -0
- package/dist/next-node/plugins/evaluate.js +98 -0
- package/dist/next-node/plugins/evaluate.js.map +1 -0
- package/dist/next-node/plugins/index.d.ts +9 -0
- package/dist/next-node/plugins/index.d.ts.map +1 -0
- package/dist/next-node/plugins/index.js +11 -0
- package/dist/next-node/plugins/index.js.map +1 -0
- package/dist/next-node/plugins/install.d.ts +13 -0
- package/dist/next-node/plugins/install.d.ts.map +1 -0
- package/dist/next-node/plugins/install.js +37 -0
- package/dist/next-node/plugins/install.js.map +1 -0
- package/dist/next-node/plugins/plugins.d.ts +135 -0
- package/dist/next-node/plugins/plugins.d.ts.map +1 -0
- package/dist/next-node/plugins/plugins.js +206 -0
- package/dist/next-node/plugins/plugins.js.map +1 -0
- package/dist/next-node/plugins/runtime.d.ts +41 -0
- package/dist/next-node/plugins/runtime.d.ts.map +1 -0
- package/dist/next-node/plugins/runtime.js +136 -0
- package/dist/next-node/plugins/runtime.js.map +1 -0
- package/dist/next-node/plugins/stack.d.ts +16 -0
- package/dist/next-node/plugins/stack.d.ts.map +1 -0
- package/dist/next-node/plugins/stack.js +61 -0
- package/dist/next-node/plugins/stack.js.map +1 -0
- package/dist/next-node/plugins/watcher.d.ts +58 -0
- package/dist/next-node/plugins/watcher.d.ts.map +1 -0
- package/dist/next-node/plugins/watcher.js +281 -0
- package/dist/next-node/plugins/watcher.js.map +1 -0
- package/dist/next-node/workers/control.d.ts +83 -0
- package/dist/next-node/workers/control.d.ts.map +1 -0
- package/dist/next-node/workers/control.js +77 -0
- package/dist/next-node/workers/control.js.map +1 -0
- package/dist/next-node/workers/index.d.ts +5 -0
- package/dist/next-node/workers/index.d.ts.map +1 -0
- package/dist/next-node/workers/index.js +7 -0
- package/dist/next-node/workers/index.js.map +1 -0
- package/dist/next-node/workers/lock.d.ts +21 -0
- package/dist/next-node/workers/lock.d.ts.map +1 -0
- package/dist/next-node/workers/lock.js +137 -0
- package/dist/next-node/workers/lock.js.map +1 -0
- package/dist/next-node/workers/main.d.ts +46 -0
- package/dist/next-node/workers/main.d.ts.map +1 -0
- package/dist/next-node/workers/main.js +230 -0
- package/dist/next-node/workers/main.js.map +1 -0
- package/dist/next-node/workers/process.d.ts +42 -0
- package/dist/next-node/workers/process.d.ts.map +1 -0
- package/dist/next-node/workers/process.js +125 -0
- package/dist/next-node/workers/process.js.map +1 -0
- package/dist/next-node/workers/workers.d.ts +80 -0
- package/dist/next-node/workers/workers.d.ts.map +1 -0
- package/dist/next-node/workers/workers.js +572 -0
- package/dist/next-node/workers/workers.js.map +1 -0
- package/dist/object.d.ts +4 -4
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +3 -4
- package/dist/object.js.map +1 -1
- package/dist/output.d.ts +9 -3
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +21 -9
- package/dist/output.js.map +1 -1
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +2 -2
- package/dist/remote.js.map +1 -1
- package/dist/schema.d.ts +8 -4
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +180 -5
- package/dist/schema.js.map +1 -1
- package/dist/sqlite/cloudflare.d.ts +54 -0
- package/dist/sqlite/cloudflare.d.ts.map +1 -0
- package/dist/sqlite/cloudflare.js +144 -0
- package/dist/sqlite/cloudflare.js.map +1 -0
- package/dist/sqlite/database.d.ts +40 -0
- package/dist/sqlite/database.d.ts.map +1 -0
- package/dist/sqlite/database.js +2 -0
- package/dist/sqlite/database.js.map +1 -0
- package/dist/sqlite/index.d.ts +4 -0
- package/dist/sqlite/index.d.ts.map +1 -0
- package/dist/sqlite/index.js +3 -0
- package/dist/sqlite/index.js.map +1 -0
- package/dist/sqlite/migrations.d.ts +10 -0
- package/dist/sqlite/migrations.d.ts.map +1 -0
- package/dist/sqlite/migrations.js +33 -0
- package/dist/sqlite/migrations.js.map +1 -0
- package/dist/sqlite/node.d.ts +41 -0
- package/dist/sqlite/node.d.ts.map +1 -0
- package/dist/sqlite/node.js +191 -0
- package/dist/sqlite/node.js.map +1 -0
- package/dist/sqlite/schema.d.ts +3 -0
- package/dist/sqlite/schema.d.ts.map +1 -0
- package/dist/sqlite/schema.js +10 -0
- package/dist/sqlite/schema.js.map +1 -0
- package/dist/telemetry-sqlite/index.d.ts +24 -0
- package/dist/telemetry-sqlite/index.d.ts.map +1 -0
- package/dist/telemetry-sqlite/index.js +273 -0
- package/dist/telemetry-sqlite/index.js.map +1 -0
- package/dist/telemetry-sqlite/store.d.ts +9 -0
- package/dist/telemetry-sqlite/store.d.ts.map +1 -0
- package/dist/telemetry-sqlite/store.js +110 -0
- package/dist/telemetry-sqlite/store.js.map +1 -0
- package/dist/watch.d.ts +194 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +383 -0
- package/dist/watch.js.map +1 -0
- package/dist/wire.d.ts +174 -193
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +81 -80
- package/dist/wire.js.map +1 -1
- package/docs/guide.md +15 -15
- package/docs/next/benchmarks.md +959 -0
- package/docs/next/decisions.md +2957 -0
- package/docs/next/dependencies/book.md +1671 -0
- package/docs/next/dependencies/index.html +2641 -0
- package/docs/next/dependencies/model.md +330 -0
- package/docs/next/design.md +2554 -0
- package/docs/next/durable-observers/book.md +432 -0
- package/docs/next/durable-observers/index.html +517 -0
- package/docs/next/flow-control/book.md +333 -0
- package/docs/next/flow-control/fold/index.html +265 -0
- package/docs/next/flow-control/index.html +548 -0
- package/docs/next/flow-control/window/index.html +228 -0
- package/docs/next/guide-plugins-hosts/book.md +607 -0
- package/docs/next/guide-plugins-hosts/index.html +652 -0
- package/docs/next/http-workers/book.md +378 -0
- package/docs/next/http-workers/index.html +515 -0
- package/docs/next/layer-1.md +311 -0
- package/docs/next/layer-2.md +216 -0
- package/docs/next/plugin-model/book.md +186 -0
- package/docs/next/plugin-model/index.html +310 -0
- package/docs/next/plugin-primer/book.md +273 -0
- package/docs/next/plugin-primer/index.html +430 -0
- package/docs/next/slice-1.md +236 -0
- package/docs/next/slice-10.md +285 -0
- package/docs/next/slice-11.md +93 -0
- package/docs/next/slice-2.md +174 -0
- package/docs/next/slice-3a.md +296 -0
- package/docs/next/slice-3b.md +197 -0
- package/docs/next/slice-4.md +146 -0
- package/docs/next/slice-4a.md +418 -0
- package/docs/next/slice-4b.md +208 -0
- package/docs/next/slice-5.md +281 -0
- package/docs/next/slice-6a.md +676 -0
- package/docs/next/slice-6b.md +332 -0
- package/docs/next/slice-7a.md +130 -0
- package/docs/next/slice-7b/book.md +608 -0
- package/docs/next/slice-7b/index.html +842 -0
- package/docs/next/slice-7b.md +255 -0
- package/docs/next/slice-7c.md +165 -0
- package/docs/next/slice-8.md +194 -0
- package/docs/next/slices.md +230 -0
- package/docs/next/store/book.md +665 -0
- package/docs/next/store/index.html +861 -0
- package/docs/next/store/walkthrough.md +193 -0
- package/docs/spec.md +9 -9
- package/docs/tutorial.md +26 -25
- package/package.json +42 -5
- package/src/delta/README.md +69 -0
package/dist/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Static, TSchema } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport {\n\tCell,\n\tDerived,\n\tHYDRATION,\n\ttype Hydration,\n\thydrationOf,\n\tisSource,\n\tnotReady,\n\ttype Sources,\n\ttype SourceValues,\n\tunhydrated,\n} from \"./cell.ts\";\nimport {\n\ttype Accepts,\n\ttype Adapter,\n\ttype AnyContract,\n\tbind,\n\ttype ImplementationOf,\n\ttype InputOf,\n\tLOCAL_VARIANT,\n\ttype LocalContract,\n\ttype MemberDescription,\n\ttype Ref,\n\ttakesNoArgs,\n} from \"./contract.ts\";\nimport type { EventOf, ListenerDecl, Resource, ResourceDeclaration, Subscribable, ValueOf } from \"./declare.ts\";\nimport { asChordError, ChordError, invalid, runAll } from \"./errors.ts\";\nimport { enqueue } from \"./publish.ts\";\nimport type { Registration, Registry } from \"./registry.ts\";\nimport type { RemoteHost } from \"./remote.ts\";\nimport { assertValid, normalize } from \"./schema.ts\";\nimport type { Ctx, Exposed, GetOptions, Readable, RefStatus, Shape, StateEvent } from \"./types.ts\";\n\nconst noop = (): void => {};\n\n// ─── Services ────────────────────────────────────────────────────────────────\n\n/**\n * `serve` options. `lifetime` says how long objects of the type live. `\"referenced\"` (default): created at the first\n * `get` of an address, disposed after the last reference is released (plus `linger`). `\"host\"`: one object, created when\n * its facet loads (loading waits until it is live) and kept until the host closes or a reload removes its facet. Only\n * local types whose input accepts `{}` may have it (`ServeOptionsFor` checks that at compile time, `serve` again at\n * runtime); every `get` reaches that one object, created for the host principal. Only such objects may register into\n * registries.\n */\nexport type ServeOptions = ReferencedServeOptions | HostServeOptions;\n\nexport interface ReferencedServeOptions {\n\treadonly lifetime?: \"referenced\";\n\t/** Milliseconds an object stays alive after its last reference is released. */\n\treadonly linger?: number;\n\t/** Adapters for consumers built against older contract versions. */\n\treadonly accepts?: Accepts;\n}\n\nexport interface HostServeOptions {\n\treadonly lifetime: \"host\";\n\t/** An object of lifetime `\"host\"` lives as long as the host: it does not linger. */\n\treadonly linger?: undefined;\n\t/** Adapters for consumers built against older contract versions. */\n\treadonly accepts?: Accepts;\n}\n\n/**\n * The options `serve` accepts for `C`: `lifetime: \"host\"` only for a local type whose input has no required fields\n * (the type's one object has the empty input).\n */\nexport type ServeOptionsFor<C extends AnyContract> = C extends LocalContract\n\t? Record<never, never> extends InputOf<C>\n\t\t? ServeOptions\n\t\t: ReferencedServeOptions\n\t: ReferencedServeOptions;\n\nexport type Lifetime = \"referenced\" | \"host\";\n\n/** A type's factory. `P` is the app's principal type: `principal` is the caller the object is created for. */\nexport type Factory<C extends AnyContract, P = unknown> = (\n\tinput: InputOf<C>,\n\tprincipal: P,\n\tself: Self<P>,\n) => ImplementationOf<C, P>;\ntype AnyFactory = (input: unknown, principal: unknown, self: Self) => unknown;\n\nexport interface Service {\n\treadonly contract: AnyContract;\n\treadonly factory: AnyFactory;\n\treadonly options: ServeOptions;\n\treadonly facet: string;\n}\n\nexport const makeService = <C extends AnyContract>(\n\tcontract: C,\n\tfactory: Factory<C>,\n\toptions: ServeOptions,\n\tfacet: string,\n): Service => {\n\tcheckLifetime(contract, options);\n\treturn {\n\t\tcontract,\n\t\tfactory: factory as unknown as AnyFactory,\n\t\toptions: options as ServeOptions,\n\t\tfacet,\n\t};\n};\n\n/** Whether objects of `service` have `lifetime: \"host\"`. */\nexport const hostLifetime = (service: Service): boolean => service.options.lifetime === \"host\";\n\n/** Refuses lifetimes the type cannot have, when it is served. */\nfunction checkLifetime(contract: AnyContract, options: ServeOptions): void {\n\tconst lifetime = options.lifetime ?? \"referenced\";\n\tif (lifetime !== \"referenced\" && lifetime !== \"host\")\n\t\tthrow new TypeError(`${contract.name}: unknown lifetime ${String(lifetime)}`);\n\tif (lifetime !== \"host\") return;\n\tif (contract.scope !== \"local\")\n\t\tthrow new TypeError(`${contract.name}: lifetime \"host\" needs a local type (remote types are referenced)`);\n\tif (options.linger !== undefined)\n\t\tthrow new TypeError(\n\t\t\t`${contract.name}: an object of lifetime \"host\" does not linger (it lives as long as the host)`,\n\t\t);\n\ttry {\n\t\tnormalize(contract.input, {}, `${contract.name} input`);\n\t} catch {\n\t\tthrow new TypeError(\n\t\t\t`${contract.name}: lifetime \"host\" needs an input that accepts {} (the object's one address)`,\n\t\t);\n\t}\n}\n\n// ─── Declarations ────────────────────────────────────────────────────────────\n\n/** Options of `self.state`. */\nexport interface StateOptions<T> {\n\t/** The meaning of the cell's value (default 1). A reload that raises it runs `migrate`. */\n\treadonly version?: number;\n\t/**\n\t * Maps the value of an older version (`from`) to this version's, at the reload that raised the version. The cell\n\t * may be several versions behind. Without it, the value is kept and must fit the new schema.\n\t */\n\treadonly migrate?: (old: unknown, from: number) => T;\n}\n\n/**\n * A cell's first value from its source: `init` runs after the object's resources are open and its references are live,\n * before the object goes live, so no call, listener or subscriber sees a value that is not from the source. It runs in\n * a root of its own (acting as the host principal) and may be async; the inits of one object run in parallel. Its\n * value is validated against the schema; a throw or an invalid value fails the activation.\n */\nexport interface StateInit<T, P = unknown> {\n\treadonly init: (ctx: Ctx<P>) => T | Promise<T>;\n}\n\n/** What a factory declares through. `P` is the app's principal type (`ctx.principal` of its listeners and tasks). */\nexport interface Self<P = unknown> {\n\t/**\n\t * A state cell named `name`: its schema (required: there is no TypeScript at runtime) and its initial value\n\t * (validated), or `{ init }` to read the first value from its source before the object goes live. The name identifies\n\t * the cell across reloads: a reload keeps the cell and its value (`initial` is ignored, `init` does not run), migrates\n\t * it when its version rises, and refuses a schema change without a version bump. A cell a reload adds runs its `init`\n\t * while the reload prepares.\n\t */\n\tstate<S extends TSchema>(\n\t\tname: string,\n\t\tschema: S,\n\t\tinitial: Static<S> | StateInit<Static<S>, P>,\n\t\toptions?: StateOptions<Static<S>>,\n\t): Cell<Static<S>>;\n\t/** An object-owned reference, identified by its address. */\n\tget<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions<P>): Ref<C>;\n\t/**\n\t * A resource named `name`: opened before the object goes live, closed after it is disposed. A reload keeps it unless\n\t * its `version`, `deps` or `exclusive` changed.\n\t */\n\tresource<T>(name: string, declaration: ResourceDeclaration<T>): Resource<T>;\n\t/**\n\t * Reacts to `source` once the object is live: a readable (cell, derivation, reference state member) delivers its\n\t * current value, then every new value; an event source (or a resource whose value is one) delivers its events.\n\t * With `select`, subscribes to `select(value)` instead (the opened value for a resource). Each event runs `handler`\n\t * in a fresh root. The name keeps the subscription across reloads while its source and `select` are unchanged; a\n\t * listener on state whose source the reload replaced (a derivation is new at every reload) subscribes again and\n\t * gets the current value again, so a handler of state must reconcile, not count.\n\t */\n\ton<S>(name: string, source: S, handler: (event: EventOf<S>, ctx: Ctx<P>) => void | Promise<void>): void;\n\ton<S, E>(\n\t\tname: string,\n\t\tsource: S,\n\t\tselect: (value: ValueOf<S>) => Subscribable<E>,\n\t\thandler: (event: E, ctx: Ctx<P>) => void | Promise<void>,\n\t): void;\n\t/** Long-running work of the live object (a code holder: its calls start fresh roots), restarted at every reload. */\n\ttask(fn: (ctx: Ctx<P>) => Promise<void>): void;\n\t/** A synchronous projection of readables, recomputed when they change; a new one at every reload. */\n\tderive<const S extends Sources, T>(sources: S, fn: (...values: SourceValues<S>) => T): Readable<T>;\n\t/** Objects of lifetime `\"host\"` only. Keys are the registry's own keys. */\n\tregister<V>(registry: Registry<V>, entries: Readonly<Record<string, V>>): void;\n\t/**\n\t * A member backed by one of this object's resources, for local contracts: references read the resource's value once\n\t * the object is live (`undefined` before). Typically an `opaque` member: `{ harness: self.expose(durable) }`.\n\t */\n\texpose<T>(resource: Resource<T>): Exposed<T>;\n}\n\n/** Runtime form of `Exposed<T>`. */\nclass ExposedImpl {\n\treadonly resource: ResourceImpl;\n\tconstructor(resource: ResourceImpl) {\n\t\tthis.resource = resource;\n\t}\n}\n\nexport class ResourceImpl<T = unknown> implements Resource<T> {\n\treadonly key: string;\n\t/** The declaration of the factory run whose code is current: a kept resource adopts the new one at commit. */\n\tspec: ResourceDeclaration<T>;\n\treadonly deps: readonly (RefCore | ResourceImpl)[];\n\t/** `unavailable`: a close/reopen failed during a reload rollback; the value is gone for good. */\n\tstate: \"closed\" | \"opening\" | \"open\" | \"unavailable\" = \"closed\";\n\t#value: T | undefined;\n\n\tconstructor(key: string, spec: ResourceDeclaration<T>, deps: readonly (RefCore | ResourceImpl)[]) {\n\t\tthis.key = key;\n\t\tthis.spec = spec;\n\t\tthis.deps = deps;\n\t}\n\n\tget value(): T {\n\t\tif (this.state === \"unavailable\")\n\t\t\tthrow new ChordError(\"unavailable\", `resource ${this.key} could not be restored`);\n\t\tif (this.state !== \"open\") throw notReady(`resource ${this.key}`);\n\t\treturn this.#value as T;\n\t}\n\n\tget exclusive(): boolean {\n\t\treturn this.spec.exclusive === true;\n\t}\n\n\t/**\n\t * Opens the resource. An open that completes after `signal` aborted (rollback, abandonment) closes the value it\n\t * produced at once: nobody owns it any more.\n\t */\n\tasync open(signal: AbortSignal, order: ResourceImpl[]): Promise<void> {\n\t\tif (this.state !== \"closed\") return;\n\t\tthis.state = \"opening\";\n\t\tlet value: T;\n\t\ttry {\n\t\t\tvalue = await this.spec.open({ signal });\n\t\t} catch (error) {\n\t\t\tthis.state = \"closed\";\n\t\t\tthrow error;\n\t\t}\n\t\tif (signal.aborted) {\n\t\t\tthis.state = \"closed\";\n\t\t\tawait this.spec.close?.(value);\n\t\t\tthrow new ChordError(\"aborted\", `resource ${this.key} opened after abort`);\n\t\t}\n\t\tthis.#value = value;\n\t\tthis.state = \"open\";\n\t\torder.push(this);\n\t}\n\n\tasync close(order: ResourceImpl[]): Promise<void> {\n\t\tif (this.state !== \"open\") return;\n\t\tthis.state = \"closed\";\n\t\tconst index = order.indexOf(this);\n\t\tif (index !== -1) order.splice(index, 1);\n\t\tconst value = this.#value as T;\n\t\tthis.#value = undefined;\n\t\tawait this.spec.close?.(value);\n\t}\n\n\tmarkUnavailable(): void {\n\t\tthis.state = \"unavailable\";\n\t\tthis.#value = undefined;\n\t}\n\n\t/**\n\t * A reload kept this resource (same version, deps and exclusivity): its later `close` is the new declaration's, and\n\t * the old declaration (with the old code it closes over) is no longer referenced.\n\t */\n\tadopt(spec: ResourceDeclaration<T>): void {\n\t\tthis.spec = spec;\n\t}\n}\n\n/**\n * What `self.resources` returns: the resource, except that `.value` throws `not_ready` while any factory runs, even\n * if the resource is open (a reload's prepare rerun must not touch the native resource the old code uses).\n */\nclass ResourceFacade<T> implements Resource<T> {\n\treadonly #resource: ResourceImpl<T>;\n\treadonly #host: HostCore;\n\n\tconstructor(resource: ResourceImpl<T>, host: HostCore) {\n\t\tthis.#resource = resource;\n\t\tthis.#host = host;\n\t\tfacades.set(this, resource as ResourceImpl);\n\t}\n\n\tget key(): string {\n\t\treturn this.#resource.key;\n\t}\n\n\tget value(): T {\n\t\tif (this.#host.inFactory > 0) throw notReady(`resource ${this.key} (inside a factory)`);\n\t\treturn this.#resource.value;\n\t}\n}\n\nconst facades = new WeakMap<object, ResourceImpl>();\nconst resourceOf = (value: unknown): ResourceImpl | undefined =>\n\tvalue instanceof ResourceImpl ? value : value !== null && typeof value === \"object\" ? facades.get(value) : undefined;\n\ntype TaskFn = (ctx: Ctx) => Promise<void>;\n\n/** Everything one factory run declared, by kind and key. */\nexport class Decls {\n\treadonly cells = new Map<string, Cell<unknown>>();\n\treadonly cellSchemas = new Map<string, TSchema>();\n\treadonly cellVersions = new Map<string, number>();\n\treadonly cellMigrations = new Map<string, (old: unknown, from: number) => unknown>();\n\treadonly refs = new Map<string, RefCore>();\n\treadonly resources = new Map<string, ResourceImpl>();\n\t/** Resources this run kept from the previous one, with this run's declarations (adopted at commit). */\n\treadonly adopted = new Map<ResourceImpl, ResourceDeclaration<unknown>>();\n\treadonly listeners = new Map<string, ListenerDecl>();\n\t/** By position (`#0`, `#1`, …): tasks have no names. */\n\treadonly tasks = new Map<string, TaskFn>();\n\t/** By position: derivations have no names and are new at every run. */\n\treadonly derives = new Map<string, Derived<unknown>>();\n\treadonly registrations = new Map<string, Registration>();\n}\n\ntype InitFn = (ctx: Ctx) => unknown;\n\n/** One factory run: its implementation, declarations and the objects it created (not reused from the previous run). */\nexport interface Run {\n\treadonly implementation: Record<string, unknown>;\n\treadonly decls: Decls;\n\treadonly created: {\n\t\treadonly refs: RefCore[];\n\t\treadonly resources: ResourceImpl[];\n\t\treadonly derives: Derived<unknown>[];\n\t\t/** Cells this run created with `init`, which fills them before they are used. */\n\t\treadonly inits: (readonly [Cell<unknown>, InitFn])[];\n\t};\n}\n\nconst isStateInit = (value: unknown): value is StateInit<unknown> =>\n\tvalue !== null && typeof value === \"object\" && typeof (value as { init?: unknown }).init === \"function\";\n\nexport interface Installed {\n\treadonly codeVersion: number;\n\treadonly service: Service;\n\treadonly implementation: Record<string, unknown>;\n\treadonly decls: Decls;\n}\n\n// ─── Host interface the runtime pieces use ───────────────────────────────────\n\nexport interface HostCore {\n\treadonly name: string;\n\treadonly dev: boolean;\n\treadonly principal: unknown;\n\tinFactory: number;\n\t/** Set when a commit failed midway: the host admits no more work (terminal). */\n\treadonly failed: unknown;\n\treport(error: unknown): void;\n\tcurrentCodeVersion(): number;\n\thasCodeVersion(codeVersion: number): boolean;\n\tretainedCodeVersions(): Iterable<readonly [number, ReadonlyMap<string, Service>]>;\n\tpendingCodeVersion(): number | undefined;\n\tservice(typeName: string): Service | undefined;\n\tacquire(\n\t\ttype: AnyContract,\n\t\tinput: unknown,\n\t\toptions: GetOptions | undefined,\n\t\towner: RefOwner,\n\t\tfrom?: ObjectImpl,\n\t\tcandidate?: boolean,\n\t): RefCore;\n\taddressOf(type: AnyContract, input: unknown, principal: unknown, candidate?: boolean): string;\n\troot<T>(fn: (ctx: Ctx) => T | Promise<T>, options?: { codeVersion?: number; signal?: AbortSignal }): Promise<T>;\n\ttouch(rootId: string, object: ObjectImpl): void;\n\tforget(object: ObjectImpl): void;\n\t/** The object finished its disposal. */\n\tdisposed(object: ObjectImpl): void;\n\t/** Milliseconds a reload waits for aborted tasks to finish before starting their replacements. */\n\treadonly taskStopDeadline: number;\n\t/**\n\t * Milliseconds an activation or a reload's prepare waits for its references to be ready and hydrated before it fails\n\t * (`unavailable/ready_timeout`; a reference cycle across hosts never resolves).\n\t */\n\treadonly readyTimeout: number;\n\tcheckRegistrations(object: ObjectImpl, decls: Decls): void;\n\t/** Rebuilds the current registry tables from live objects (plus `including`, which is finishing activation). */\n\tregistriesChanged(including?: ObjectImpl): void;\n}\n\n// ─── Contexts ────────────────────────────────────────────────────────────────\n\nexport class CtxImpl implements Ctx {\n\treadonly host: HostCore;\n\treadonly signal: AbortSignal;\n\treadonly rootId: string;\n\treadonly codeVersion: number;\n\treadonly principal: unknown;\n\t/** Code holders (tasks): every call they make starts a fresh root. */\n\treadonly holder: boolean;\n\treadonly #refs: RefCore[] = [];\n\treadonly #release: () => void;\n\t/** Aborted when the ctx closes: awaited `get`s give up. */\n\treadonly #closing = new AbortController();\n\t#closed = false;\n\n\t/** True after the call or root that received this ctx settled: it may no longer start work. */\n\tget closed(): boolean {\n\t\treturn this.#closed;\n\t}\n\n\t/** Throws unless this ctx may start work on `host` (the called reference's host) now: not expired, aborted or foreign. */\n\tcheck(host: HostCore | RemoteHost): void {\n\t\tif (this.host !== host) throw invalid(\"foreign_ctx\", \"ctx belongs to another host\");\n\t\tif (this.#closed) throw new ChordError(\"aborted\", \"ctx expired: its call already settled\", { reason: \"expired\" });\n\t\tif (this.signal.aborted) {\n\t\t\tconst reason: unknown = this.signal.reason;\n\t\t\t// A forced retirement aborted the root: its code version is gone, so the next call is `superseded` (retryable).\n\t\t\tif (reason instanceof ChordError && reason.code === \"superseded\")\n\t\t\t\tthrow new ChordError(\"superseded\", reason.message, { cause: reason });\n\t\t\tthrow new ChordError(\"aborted\", \"ctx aborted\", { cause: reason });\n\t\t}\n\t}\n\n\t/** `signals`: the ctx is aborted with the first of them; it stops following them when it closes. */\n\tconstructor(\n\t\thost: HostCore,\n\t\tfields: {\n\t\t\tsignals: readonly AbortSignal[];\n\t\t\trootId: string;\n\t\t\tcodeVersion: number;\n\t\t\tprincipal: unknown;\n\t\t\tholder?: boolean;\n\t\t},\n\t) {\n\t\tthis.host = host;\n\t\tconst linked = linkedSignal(fields.signals);\n\t\tthis.signal = linked.signal;\n\t\tthis.#release = linked.release;\n\t\tthis.rootId = fields.rootId;\n\t\tthis.codeVersion = fields.codeVersion;\n\t\tthis.principal = fields.principal;\n\t\tthis.holder = fields.holder ?? false;\n\t}\n\n\tasync get<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions): Promise<Ref<C>> {\n\t\tthis.check(this.host);\n\t\tconst ref = this.host.acquire(type, input, { principal: this.principal, ...options }, \"call\");\n\t\tthis.#refs.push(ref);\n\t\tawait awaitReady(ref, [this.signal, this.#closing.signal], this.host.readyTimeout);\n\t\treturn ref.proxy as Ref<C>;\n\t}\n\n\t/**\n\t * A context for a call into `object`: same root and code version, its own call-owned references, aborted on forced\n\t * disposal. Code inside an object acts as the host principal.\n\t */\n\tchild(object: ObjectImpl): CtxImpl {\n\t\treturn new CtxImpl(this.host, {\n\t\t\tsignals: [this.signal, object.callAbort.signal],\n\t\t\trootId: this.rootId,\n\t\t\tcodeVersion: this.codeVersion,\n\t\t\tprincipal: this.host.principal,\n\t\t});\n\t}\n\n\tclose(): void {\n\t\tthis.#closed = true;\n\t\tthis.#closing.abort(new ChordError(\"aborted\", \"ctx expired: its call already settled\", { reason: \"expired\" }));\n\t\tthis.#release();\n\t\tfor (const ref of this.#refs.splice(0)) ref.release();\n\t}\n}\n\n/**\n * A signal aborted with the first of `sources` to abort, until `release()`. Not `AbortSignal.any`: Node keeps a\n * dependant of a long-lived source (an object's or a code version's) reachable while it has abort listeners, so every\n * call or task context would keep its listeners, and the code they close over, alive as long as the source.\n */\nexport function linkedSignal(sources: readonly AbortSignal[]): { readonly signal: AbortSignal; release(): void } {\n\tconst controller = new AbortController();\n\tconst detach: (() => void)[] = [];\n\tconst release = (): void => {\n\t\tfor (const remove of detach.splice(0)) remove();\n\t};\n\tfor (const source of sources) {\n\t\tif (source.aborted) {\n\t\t\trelease();\n\t\t\tcontroller.abort(source.reason);\n\t\t\tbreak;\n\t\t}\n\t\tconst forward = (): void => {\n\t\t\trelease();\n\t\t\tcontroller.abort(source.reason);\n\t\t};\n\t\tsource.addEventListener(\"abort\", forward, { once: true });\n\t\tdetach.push(() => source.removeEventListener(\"abort\", forward));\n\t}\n\treturn { signal: controller.signal, release };\n}\n\n/**\n * Waits until `ref` is ready, at most `ms` and until a signal aborts; on failure the reference is released (only it: a\n * binding other references share stays) and the error is rethrown: the activation error, `aborted`, or\n * `unavailable/ready_timeout`.\n */\nexport async function awaitReady(ref: RefCore, signals: readonly AbortSignal[], ms: number): Promise<void> {\n\tconst timeout = new AbortController();\n\tconst timer = Number.isFinite(ms)\n\t\t? setTimeout(\n\t\t\t\t() =>\n\t\t\t\t\ttimeout.abort(\n\t\t\t\t\t\tnew ChordError(\"unavailable\", `${ref.address} was not ready after ${ms} ms`, {\n\t\t\t\t\t\t\treason: \"ready_timeout\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\tms,\n\t\t\t)\n\t\t: undefined;\n\t(timer as { unref?: () => void } | undefined)?.unref?.();\n\tconst linked = linkedSignal([...signals, timeout.signal]);\n\ttry {\n\t\tawait raceSignal(ref.ready, linked.signal);\n\t} catch (error) {\n\t\tref.release();\n\t\tconst reason: unknown = linked.signal.reason;\n\t\tthrow reason instanceof ChordError && reason.reason === \"ready_timeout\" ? reason : error;\n\t} finally {\n\t\tclearTimeout(timer);\n\t\tlinked.release();\n\t}\n}\n\nexport async function raceSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n\tif (signal.aborted) throw new ChordError(\"aborted\", \"call aborted\", { cause: signal.reason });\n\tlet onAbort = noop;\n\tconst aborted = new Promise<never>((_, reject) => {\n\t\tonAbort = () => reject(new ChordError(\"aborted\", \"call aborted\", { cause: signal.reason }));\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n\ttry {\n\t\treturn await Promise.race([promise, aborted]);\n\t} finally {\n\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t}\n}\n\n// ─── References ─────────────────────────────────────────────────────────────────\n\n/** Who a reference belongs to. `connection`: a peer host over a link; `client`: a browser (not a reload participant). */\nexport type RefOwner = \"object\" | \"call\" | \"host\" | \"external\" | \"connection\" | \"client\";\n\n/** A claim on an object: a local `RefImpl`, or a `RemoteRef` on another host (no object here). */\nexport interface RefCore {\n\treadonly address: string;\n\treadonly contract: AnyContract;\n\treadonly status: RefStatus;\n\treadonly ready: Promise<void>;\n\treadonly proxy: object;\n\treadonly object: ObjectImpl | undefined;\n\trelease(): void;\n}\n\nexport const REF_BASE: ReadonlySet<PropertyKey> = new Set([\n\t\"contract\",\n\t\"status\",\n\t\"ready\",\n\t\"variant\",\n\t\"shape\",\n\t\"error\",\n\t\"onShape\",\n\t\"onStatus\",\n\t\"release\",\n]);\n\nexport type StatusListener = (status: RefStatus, error: unknown) => void;\n\n/** Queues a status notification (after the change that caused it is complete, like every publication). */\nexport function notifyStatus(\n\tlisteners: ReadonlySet<StatusListener>,\n\tstatus: RefStatus,\n\terror: unknown,\n\treport: (error: unknown) => void,\n): void {\n\tif (listeners.size === 0) return;\n\tconst current = [...listeners];\n\tenqueue(() => {\n\t\tfor (const listener of current) {\n\t\t\ttry {\n\t\t\t\tlistener(status, error);\n\t\t\t} catch (thrown) {\n\t\t\t\treport(thrown);\n\t\t\t}\n\t\t}\n\t});\n}\n\n/** Proxy → reference, for `deps: [ref]` and links. */\nexport const refsByProxy = new WeakMap<object, RefCore>();\nexport const refOf = (value: unknown): RefCore | undefined =>\n\tvalue !== null && typeof value === \"object\" ? refsByProxy.get(value) : undefined;\n\n/**\n * A reference's state member: a stable readable that follows whatever source the current implementation exposes under\n * that name. Reading throws `not_ready` until the reference is live, `not_in_variant` while the variant lacks the\n * member. A listener added before the member is readable gets its snapshot then. Rebinding (reload, variant) delivers a\n * reset. Upstream is subscribed only while someone listens.\n */\nclass MemberReadable implements Readable<unknown> {\n\treadonly #ref: RefImpl;\n\treadonly #name: string;\n\treadonly #values = new Set<(value: unknown) => void>();\n\treadonly #events = new Set<(event: StateEvent<unknown>) => void>();\n\t/** Event listeners that have not had their snapshot yet (added while the member was not readable). */\n\treadonly #unseen = new Set<(event: StateEvent<unknown>) => void>();\n\t#source: Readable<unknown> | undefined;\n\t#upstream = noop;\n\t/** The value listeners last saw; a first upstream snapshot equal to it is not re-announced. */\n\t#seen: { readonly value: unknown } | undefined;\n\n\tconstructor(ref: RefImpl, name: string) {\n\t\tthis.#ref = ref;\n\t\tthis.#name = name;\n\t}\n\n\tget value(): unknown {\n\t\tconst ref = this.#ref;\n\t\tif (ref.status === \"released\" || ref.status === \"gone\") throw ref.terminalError();\n\t\tif (ref.status !== \"live\") throw notReady(`${ref.address}.${this.#name}`);\n\t\tconst view = ref.currentView();\n\t\tif (view === undefined) throw notReady(`${ref.address}.${this.#name}`);\n\t\tconst source = this.#current();\n\t\tif (source === undefined) {\n\t\t\tthrow new ChordError(\n\t\t\t\t\"not_in_variant\",\n\t\t\t\t`${ref.address}: ${this.#name} is not a state member of variant ${variantOf(view) ?? \"(local)\"}`,\n\t\t\t);\n\t\t}\n\t\treturn source.value;\n\t}\n\n\t/** Not hydrated while the reference is not live, or while its source (a forwarded remote member) is not. */\n\tget [HYDRATION](): Hydration | undefined {\n\t\tconst ref = this.#ref;\n\t\tif (ref.status === \"live\") return hydrationOf(this.#current());\n\t\treturn {\n\t\t\thydrated: false,\n\t\t\twhenHydrated: async () => {\n\t\t\t\tawait ref.ready;\n\t\t\t\tawait hydrationOf(this.#current())?.whenHydrated();\n\t\t\t},\n\t\t};\n\t}\n\n\tsubscribe(listener: (value: unknown) => void): () => void {\n\t\tthis.#values.add(listener);\n\t\tconst source = this.#readable();\n\t\tif (source !== undefined) {\n\t\t\tthis.#seen = { value: source.value };\n\t\t\tthis.#safe(() => listener(source.value));\n\t\t}\n\t\tthis.bind();\n\t\treturn () => this.#remove(this.#values, listener);\n\t}\n\n\tevents(listener: (event: StateEvent<unknown>) => void): () => void {\n\t\tthis.#events.add(listener);\n\t\tconst source = this.#readable();\n\t\tif (source !== undefined) {\n\t\t\tconst value = source.value;\n\t\t\tthis.#seen = { value };\n\t\t\tthis.#safe(() => listener({ type: \"snap\", value }));\n\t\t} else this.#unseen.add(listener);\n\t\tthis.bind();\n\t\treturn () => {\n\t\t\tthis.#unseen.delete(listener);\n\t\t\tthis.#remove(this.#events, listener);\n\t\t};\n\t}\n\n\t/** (Re)subscribes upstream to the current source; a changed source is announced as a reset. */\n\tbind(): void {\n\t\tconst source = this.#values.size + this.#events.size > 0 ? this.#current() : undefined;\n\t\tif (source === this.#source) return;\n\t\tthis.#upstream();\n\t\tthis.#upstream = noop;\n\t\tthis.#source = source;\n\t\tif (source === undefined) return;\n\t\tlet first = true;\n\t\tthis.#upstream = source.events((event) => {\n\t\t\tconst isFirst = first;\n\t\t\tfirst = false;\n\t\t\tif (isFirst && this.#unseen.size === 0 && this.#seen !== undefined && event.value === this.#seen.value) return;\n\t\t\tthis.#seen = { value: event.value };\n\t\t\tconst translated: StateEvent<unknown> = isFirst ? { type: \"reset\", value: event.value } : event;\n\t\t\tconst events = [...this.#events];\n\t\t\tconst values = [...this.#values];\n\t\t\tconst unseen = new Set(this.#unseen);\n\t\t\tthis.#unseen.clear();\n\t\t\t// Queued: a rebind during a commit must not run observers before the commit completes.\n\t\t\tenqueue(() => {\n\t\t\t\tfor (const listener of events) {\n\t\t\t\t\tif (!this.#events.has(listener)) continue;\n\t\t\t\t\tconst delivered: StateEvent<unknown> = unseen.has(listener)\n\t\t\t\t\t\t? { type: \"snap\", value: event.value }\n\t\t\t\t\t\t: translated;\n\t\t\t\t\tthis.#safe(() => listener(delivered));\n\t\t\t\t}\n\t\t\t\tfor (const listener of values) if (this.#values.has(listener)) this.#safe(() => listener(event.value));\n\t\t\t});\n\t\t});\n\t}\n\n\tstop(): void {\n\t\tthis.#values.clear();\n\t\tthis.#events.clear();\n\t\tthis.#unseen.clear();\n\t\tthis.bind();\n\t}\n\n\t#current(): Readable<unknown> | undefined {\n\t\tconst view = this.#ref.currentView();\n\t\tif (view === undefined || !this.#ref.inVariant(view, this.#name)) return undefined;\n\t\tconst value = view[this.#name];\n\t\t// Cells and derivations, or any readable an `accepts` adapter maps them to.\n\t\treturn isSource(value) || isReadableLike(value) ? (value as Readable<unknown>) : undefined;\n\t}\n\n\t/** The current source if its value can be read now (live, in the variant, hydrated). */\n\t#readable(): Readable<unknown> | undefined {\n\t\tconst source = this.#current();\n\t\treturn source === undefined || hydrationOf(source)?.hydrated === false ? undefined : source;\n\t}\n\n\t#remove<T>(set: Set<T>, listener: T): void {\n\t\tset.delete(listener);\n\t\tthis.bind();\n\t}\n\n\t#safe(fn: () => void): void {\n\t\ttry {\n\t\t\tfn();\n\t\t} catch (error) {\n\t\t\tthis.#ref.object.host.report(error);\n\t\t}\n\t}\n}\n\n/** One reference on an object. Exposed through a Proxy so members bind late to the current implementation. */\nexport class RefImpl {\n\treadonly object: ObjectImpl;\n\treadonly contract: AnyContract;\n\treadonly owner: RefOwner;\n\treadonly address: string;\n\treadonly proxy: object;\n\treadonly ready: Promise<void>;\n\tstatus: RefStatus;\n\terror: unknown;\n\treadonly shapeListeners = new Set<(shape: Shape) => void>();\n\t/** Internal: notified when the reference becomes gone (links forward it). */\n\treadonly goneListeners = new Set<(error: unknown) => void>();\n\treadonly readables = new Map<string, MemberReadable>();\n\t/** Weak: a retired code version's service (and the factory code it holds) must not be kept alive by its consumers. */\n\treadonly bindings = new WeakMap<Service, Adapter | undefined>();\n\treadonly views = new WeakMap<Record<string, unknown>, Record<string, unknown>>();\n\treadonly callers = new Map<string, (...given: unknown[]) => Promise<unknown>>();\n\n\tconstructor(object: ObjectImpl, contract: AnyContract, owner: RefOwner) {\n\t\tthis.object = object;\n\t\tthis.contract = contract;\n\t\tthis.owner = owner;\n\t\tthis.address = object.address;\n\t\tthis.status = object.status === \"live\" ? \"live\" : \"loading\";\n\t\tthis.ready = object.ready.then(() => {\n\t\t\tif (this.status === \"gone\") throw this.error;\n\t\t\tif (this.status === \"released\") throw new ChordError(\"released\", `reference ${this.address} released`);\n\t\t});\n\t\tthis.ready.catch(noop);\n\t\tthis.proxy = new Proxy(this, {\n\t\t\tget: (target, property) => {\n\t\t\t\tif (REF_BASE.has(property)) {\n\t\t\t\t\tconst value: unknown = Reflect.get(target, property, target);\n\t\t\t\t\treturn typeof value === \"function\" ? value.bind(target) : value;\n\t\t\t\t}\n\t\t\t\tif (typeof property !== \"string\" || property === \"then\") return undefined;\n\t\t\t\treturn target.member(property);\n\t\t\t},\n\t\t\thas: (target, property) => REF_BASE.has(property) || target.member(String(property)) !== undefined,\n\t\t});\n\t\trefsByProxy.set(this.proxy, this);\n\t}\n\n\tget variant(): string | undefined {\n\t\tconst view = this.currentView();\n\t\treturn view === undefined ? undefined : variantOf(view);\n\t}\n\n\tget shape(): Shape | undefined {\n\t\tconst installed = this.status === \"live\" ? this.object.currentInstalled() : undefined;\n\t\tconst view = installed === undefined ? undefined : this.#safeView(installed);\n\t\tif (installed === undefined || view === undefined) return undefined;\n\t\treturn {\n\t\t\tvariant: variantOf(view),\n\t\t\tmembers: Object.keys(view).filter((key) => key !== \"variant\"),\n\t\t\tcontract: installed.service.contract.fingerprint,\n\t\t};\n\t}\n\n\tonShape(listener: (shape: Shape) => void): () => void {\n\t\tthis.shapeListeners.add(listener);\n\t\treturn () => this.shapeListeners.delete(listener);\n\t}\n\n\tonStatus(listener: StatusListener): () => void {\n\t\tthis.#statusListeners.add(listener);\n\t\treturn () => this.#statusListeners.delete(listener);\n\t}\n\n\treadonly #statusListeners = new Set<StatusListener>();\n\n\t#statusChanged(): void {\n\t\tnotifyStatus(this.#statusListeners, this.status, this.error, (error) => this.object.host.report(error));\n\t}\n\n\trelease(): void {\n\t\tif (this.status === \"released\" || this.status === \"gone\") return;\n\t\tthis.status = \"released\";\n\t\tthis.#stopReadables();\n\t\tthis.#statusChanged();\n\t\tthis.object.release(this);\n\t}\n\n\t// ─── internal ───\n\n\tlive(): void {\n\t\tif (this.status !== \"loading\") return;\n\t\tthis.status = \"live\";\n\t\tthis.#statusChanged();\n\t\tthis.shapeChanged();\n\t}\n\n\tgone(error: unknown): void {\n\t\tif (this.status === \"released\" || this.status === \"gone\") return;\n\t\tthis.status = \"gone\";\n\t\tthis.error = error;\n\t\tthis.#stopReadables();\n\t\tthis.#statusChanged();\n\t\tfor (const listener of [...this.goneListeners]) listener(error);\n\t}\n\n\tshapeChanged(): void {\n\t\tfor (const readable of this.readables.values()) readable.bind();\n\t\tconst shape = this.shape;\n\t\tif (shape === undefined) return;\n\t\tconst listeners = [...this.shapeListeners];\n\t\tenqueue(() => {\n\t\t\tfor (const listener of listeners) {\n\t\t\t\ttry {\n\t\t\t\t\tlistener(shape);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.object.host.report(error);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tterminalError(): unknown {\n\t\treturn this.status === \"gone\" ? this.error : new ChordError(\"released\", `reference ${this.address} released`);\n\t}\n\n\t/** The implementation as this consumer sees it (through an accepts adapter when bound to another version). */\n\tviewOf(installed: Installed): Record<string, unknown> {\n\t\tlet adapter = this.bindings.get(installed.service);\n\t\tif (!this.bindings.has(installed.service)) {\n\t\t\tadapter = bind(installed.service.contract, installed.service.options.accepts, this.contract);\n\t\t\tthis.bindings.set(installed.service, adapter);\n\t\t}\n\t\tif (adapter === undefined) return installed.implementation;\n\t\tlet view = this.views.get(installed.implementation);\n\t\tif (view === undefined) {\n\t\t\tview = adapter(installed.implementation);\n\t\t\tthis.views.set(installed.implementation, view);\n\t\t}\n\t\treturn view;\n\t}\n\n\tcurrentView(): Record<string, unknown> | undefined {\n\t\tif (this.status !== \"live\") return undefined;\n\t\tconst installed = this.object.currentInstalled();\n\t\treturn installed === undefined ? undefined : this.#safeView(installed);\n\t}\n\n\t/** The view, or undefined when this consumer no longer binds (reported; calls reject with the bind error). */\n\t#safeView(installed: Installed): Record<string, unknown> | undefined {\n\t\ttry {\n\t\t\treturn this.viewOf(installed);\n\t\t} catch (error) {\n\t\t\tthis.object.host.report(error);\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tdescribe(variant: string | undefined, member: string): MemberDescription | undefined {\n\t\tconst variants = this.contract.description.variants;\n\t\tif (variant !== undefined) return variants[variant]?.[member];\n\t\tfor (const members of Object.values(variants)) if (members[member] !== undefined) return members[member];\n\t\treturn undefined;\n\t}\n\n\t/** Remote consumers see only the members their contract lists for the current variant. */\n\tinVariant(view: Record<string, unknown>, name: string): boolean {\n\t\treturn this.contract.scope !== \"remote\" || this.describe(variantOf(view), name) !== undefined;\n\t}\n\n\tmember(name: string): unknown {\n\t\tconst declared = this.describe(undefined, name);\n\t\tconst view = this.currentView();\n\t\tconst value = view?.[name];\n\t\tif (declared?.kind === \"method\" || (declared === undefined && typeof value === \"function\")) {\n\t\t\treturn this.caller(name);\n\t\t}\n\t\tif (declared?.kind === \"state\" || (declared === undefined && (isSource(value) || isReadableLike(value)))) {\n\t\t\tlet readable = this.readables.get(name);\n\t\t\tif (readable === undefined) {\n\t\t\t\treadable = new MemberReadable(this, name);\n\t\t\t\tthis.readables.set(name, readable);\n\t\t\t}\n\t\t\treturn readable;\n\t\t}\n\t\tif (view === undefined || !this.inVariant(view, name)) return undefined;\n\t\treturn value instanceof ExposedImpl ? value.resource.value : value;\n\t}\n\n\tcaller(name: string): (...given: unknown[]) => Promise<unknown> {\n\t\tlet caller = this.callers.get(name);\n\t\tif (caller === undefined) {\n\t\t\tconst noArgs = takesNoArgs(this.contract, name);\n\t\t\tcaller = (...given) => {\n\t\t\t\t// A method without arguments is called as `ref.name(ctx)`.\n\t\t\t\tconst [args, ctx] = (noArgs ? [undefined, given[0]] : given) as [unknown, Ctx | undefined];\n\t\t\t\tif (this.object.host.inFactory > 0) {\n\t\t\t\t\tthrow new ChordError(\"not_ready\", `${this.address}.${name} called inside a factory`);\n\t\t\t\t}\n\t\t\t\tif (ctx !== undefined && !(ctx instanceof CtxImpl)) {\n\t\t\t\t\treturn Promise.reject(invalid(\"foreign_ctx\", \"ctx must come from a Chord host\"));\n\t\t\t\t}\n\t\t\t\tif (ctx === undefined || ctx.holder) {\n\t\t\t\t\t// A code holder (task) starts a fresh root per call, cancelled with the holder.\n\t\t\t\t\ttry {\n\t\t\t\t\t\tctx?.check(this.object.host);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t}\n\t\t\t\t\treturn this.object.host.root((root) => this.object.call(this, name, args, root as CtxImpl), {\n\t\t\t\t\t\tsignal: ctx?.signal,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.object.call(this, name, args, ctx);\n\t\t\t};\n\t\t\tthis.callers.set(name, caller);\n\t\t}\n\t\treturn caller;\n\t}\n\n\t#stopReadables(): void {\n\t\tfor (const readable of this.readables.values()) readable.stop();\n\t}\n}\n\nexport const variantOf = (implementation: Record<string, unknown>): string | undefined =>\n\ttypeof implementation.variant === \"string\" ? implementation.variant : undefined;\n\n// ─── Objects ─────────────────────────────────────────────────────────────────\n\nexport type ObjectStatus = \"activating\" | \"live\" | \"failed\" | \"disposing\" | \"disposed\";\n\ninterface Gate {\n\treadonly grandfathered: Set<string>;\n\treadonly queue: { readonly key: string; readonly event: unknown }[];\n\tdrained: () => void;\n}\n\ninterface Subscription {\n\t/** What the listener was declared on: the resource (not its facade), or the source itself. */\n\treadonly origin: unknown;\n\treadonly select: ListenerDecl[\"select\"];\n\tunsubscribe: () => void;\n}\n\n/**\n * Two `select` functions are the same if they are identical or have the same source text: an inline arrow is a new\n * object on every factory run, but its code is what matters. (A select whose implementation depends on captured values\n * that change between runs is not detected; such a listener keeps its old subscription until its source changes.)\n */\nconst sameSelect = (a: ListenerDecl[\"select\"], b: ListenerDecl[\"select\"]): boolean =>\n\ta === b || (a !== undefined && b !== undefined && String(a) === String(b));\n\n/** Listener subscriptions made ahead of a commit: `activate` switches over, `discard` drops them. */\nexport interface StagedListeners {\n\tactivate(): void;\n\tdiscard(): void;\n}\n\ninterface RunningTask {\n\treadonly controller: AbortController;\n\treadonly done: Promise<void>;\n}\n\nexport interface ObjectIdentity {\n\treadonly address: string;\n\treadonly typeName: string;\n\treadonly input: unknown;\n\treadonly principal: unknown;\n\t/** The one object of a `lifetime: \"host\"` type. */\n\treadonly hostLifetime: boolean;\n}\n\nexport class ObjectImpl {\n\treadonly host: HostCore;\n\treadonly address: string;\n\treadonly typeName: string;\n\treadonly input: unknown;\n\treadonly principal: unknown;\n\t/** The one object of a `lifetime: \"host\"` type: only such objects may register. */\n\treadonly hostLifetime: boolean;\n\tstatus: ObjectStatus = \"activating\";\n\tready: Promise<void> = Promise.resolve();\n\tservice: Service | undefined;\n\t/** Calls carrying an older code version are rejected upgrade_conflict (state bump or exclusive resource replaced). */\n\tminCodeVersion = 0;\n\tdecls = new Decls();\n\t/** Declarations of a factory run that has not been installed yet (activation or reload candidate). */\n\treadonly pending = new Set<Decls>();\n\treadonly implementations = new Map<number, Installed>();\n\treadonly refs = new Set<RefImpl>();\n\treadonly leases = new Map<string, number>();\n\treadonly openOrder: ResourceImpl[] = [];\n\treadonly callAbort = new AbortController();\n\treadonly activationAbort = new AbortController();\n\tgate: Gate | undefined;\n\t/** Served only by a running reload's pending code version: listeners, tasks and registrations start at its commit. */\n\tdeferredRuntime = false;\n\treadonly #subscriptions = new Map<string, Subscription>();\n\treadonly #invocations = new Set<Promise<unknown>>();\n\t#tasks = new Map<string, RunningTask>();\n\t/** Aborted task runs that have not finished yet. */\n\treadonly #stopped = new Set<Promise<void>>();\n\t/** Bumped by every start and stop of the tasks: a delayed start that is no longer the latest is dropped. */\n\t#taskRuns = 0;\n\t#linger: ReturnType<typeof setTimeout> | undefined;\n\t#disposal: Promise<void> | undefined;\n\n\tconstructor(host: HostCore, identity: ObjectIdentity) {\n\t\tthis.host = host;\n\t\tthis.address = identity.address;\n\t\tthis.typeName = identity.typeName;\n\t\tthis.input = identity.input;\n\t\tthis.principal = identity.principal;\n\t\tthis.hostLifetime = identity.hostLifetime;\n\t}\n\n\tstart(after: Promise<void> | undefined): void {\n\t\tthis.ready = this.#activate(after).then(\n\t\t\t() => {\n\t\t\t\tfor (const ref of this.refs) ref.live();\n\t\t\t\tthis.#maybeIdle();\n\t\t\t},\n\t\t\t(cause: unknown) => {\n\t\t\t\tif (this.status === \"activating\") this.status = \"failed\";\n\t\t\t\tthis.host.forget(this);\n\t\t\t\t// A ChordError (forbidden, a dependency's error, ...) keeps its code; anything else is `unavailable`.\n\t\t\t\tconst error = asChordError(cause, `activating ${this.address}`);\n\t\t\t\tfor (const ref of this.refs) ref.gone(error);\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t);\n\t\tthis.ready.catch(noop);\n\t}\n\n\t/**\n\t * Activation as one transaction: factory, opens, then a synchronous finalization (registry check and publication,\n\t * implementations, runtime). Every failure, including one during finalization or a release while listeners start,\n\t * unwinds everything this activation did.\n\t */\n\tasync #activate(after: Promise<void> | undefined): Promise<void> {\n\t\tawait after?.catch(noop);\n\t\tconst signal = this.activationAbort.signal;\n\t\tconst abandoned = (): ChordError => new ChordError(\"aborted\", `${this.address} abandoned`);\n\t\tif (signal.aborted) throw abandoned();\n\t\tconst service = this.host.service(this.typeName);\n\t\tif (service === undefined)\n\t\t\tthrow new ChordError(\"unavailable\", `${this.typeName} is not served`, { reason: \"unknown_type\" });\n\t\tthis.service = service;\n\t\tconst run = this.run(service, undefined);\n\t\ttry {\n\t\t\tawait this.open(run.created.resources, run.created.refs, signal);\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tawait this.waitHydrated(run);\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tawait this.initCells(run, signal);\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tthis.host.checkRegistrations(this, run.decls);\n\t\t\tthis.decls = run.decls;\n\t\t\tfor (const [retained, services] of this.host.retainedCodeVersions()) {\n\t\t\t\tif (services.get(this.typeName) === service) {\n\t\t\t\t\tthis.implementations.set(retained, {\n\t\t\t\t\t\tcodeVersion: retained,\n\t\t\t\t\t\tservice,\n\t\t\t\t\t\timplementation: run.implementation,\n\t\t\t\t\t\tdecls: run.decls,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pending = this.host.pendingCodeVersion();\n\t\t\tif (\n\t\t\t\t!this.implementations.has(this.host.currentCodeVersion()) &&\n\t\t\t\t(pending === undefined || !this.implementations.has(pending))\n\t\t\t) {\n\t\t\t\tthrow new ChordError(\"superseded\", `${this.address}: code changed during activation`);\n\t\t\t}\n\t\t\tfor (const derived of run.created.derives) derived.attach();\n\t\t\tthis.refreshSchemas();\n\t\t\t// Served only by a running reload's pending code version: new code must not run (listeners, tasks,\n\t\t\t// registrations) before that reload commits.\n\t\t\tthis.deferredRuntime = !this.implementations.has(this.host.currentCodeVersion());\n\t\t\tif (!this.deferredRuntime) {\n\t\t\t\tif (run.decls.registrations.size > 0) this.host.registriesChanged(this);\n\t\t\t\tthis.startRuntime();\n\t\t\t}\n\t\t\t// A listener starting up may have released the last reference synchronously: no resurrection.\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tthis.status = \"live\";\n\t\t} catch (error) {\n\t\t\t// Invocations started during finalization (listener roots) end before their resources close.\n\t\t\tthis.callAbort.abort(error);\n\t\t\tthis.stopListeners();\n\t\t\tthis.stopTasks();\n\t\t\tconst registered = this.decls.registrations.size > 0 && !this.deferredRuntime;\n\t\t\tthis.implementations.clear();\n\t\t\tthis.decls = new Decls();\n\t\t\tif (registered) this.host.registriesChanged();\n\t\t\tawait Promise.allSettled([...this.#invocations, ...this.#stopped]);\n\t\t\tawait this.unwind(run).catch((cleanup: unknown) => this.host.report(cleanup));\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tthis.pending.delete(run.decls);\n\t\t}\n\t}\n\n\t/**\n\t * Runs the factory synchronously. With `previous`, runs in recording mode for a reload prepare. The run's\n\t * declarations stay in `pending` (visible to the cycle check) until the caller installs or discards them.\n\t */\n\trun(service: Service, previous: Decls | undefined): Run {\n\t\tconst self = new SelfImpl(this, previous);\n\t\tconst discard = (run: Run): void => {\n\t\t\tthis.pending.delete(run.decls);\n\t\t\tvoid this.unwind(run).catch((cleanup: unknown) => this.host.report(cleanup));\n\t\t};\n\t\tthis.pending.add(self.run(undefined).decls);\n\t\tthis.host.inFactory++;\n\t\tlet implementation: unknown;\n\t\ttry {\n\t\t\timplementation = service.factory(this.input, this.principal, self);\n\t\t} catch (error) {\n\t\t\tthis.host.inFactory--;\n\t\t\tdiscard(self.run(undefined));\n\t\t\tthrow error;\n\t\t}\n\t\tthis.host.inFactory--;\n\t\tconst run = self.run(implementation);\n\t\ttry {\n\t\t\tif (implementation instanceof Promise)\n\t\t\t\tthrow invalid(\"implementation\", `${this.typeName}: factories must be synchronous`);\n\t\t\tvalidateImplementation(service, run.implementation);\n\t\t} catch (error) {\n\t\t\tdiscard(run);\n\t\t\tthrow error;\n\t\t}\n\t\treturn run;\n\t}\n\n\t/** Opens resources (dependencies first) and waits for references; settles all before failing. */\n\tasync open(resources: readonly ResourceImpl[], refs: readonly RefCore[], signal: AbortSignal): Promise<void> {\n\t\tconst opening = new Map<ResourceImpl, Promise<void>>();\n\t\tconst openOne = (resource: ResourceImpl): Promise<void> => {\n\t\t\tlet promise = opening.get(resource);\n\t\t\tif (promise === undefined) {\n\t\t\t\tpromise = (async () => {\n\t\t\t\t\tawait Promise.all(\n\t\t\t\t\t\tresource.deps.map((dep) =>\n\t\t\t\t\t\t\t!(dep instanceof ResourceImpl) ? dep.ready : resources.includes(dep) ? openOne(dep) : undefined,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tawait resource.open(signal, this.openOrder);\n\t\t\t\t})();\n\t\t\t\topening.set(resource, promise);\n\t\t\t}\n\t\t\treturn promise;\n\t\t};\n\t\tconst ready = this.withinReadyTimeout(Promise.all(refs.map((ref) => ref.ready)), () =>\n\t\t\trefs.filter((ref) => ref.status === \"loading\").map((ref) => ref.address),\n\t\t);\n\t\tconst results = await Promise.allSettled([...resources.map(openOne), ready]);\n\t\tconst failure = results.find((result) => result.status === \"rejected\");\n\t\tif (failure !== undefined) throw failure.reason;\n\t}\n\n\t/**\n\t * Waits until the state sources a run exposes or derives from have their values: a local object goes live only with\n\t * its state, also where it forwards or derives from a remote reference's member.\n\t */\n\tasync waitHydrated(run: Run): Promise<void> {\n\t\tconst exposed = Object.entries(run.implementation ?? {});\n\t\tconst pending = unhydrated([...run.created.derives, ...exposed.map(([, value]) => value)]);\n\t\tif (pending.length === 0) return;\n\t\tawait this.withinReadyTimeout(Promise.all(pending.map((hydration) => hydration.whenHydrated())), () => [\n\t\t\t...exposed\n\t\t\t\t.filter(([, value]) => hydrationOf(value)?.hydrated === false)\n\t\t\t\t.map(([name]) => `${this.address}.${name}`),\n\t\t\t...run.created.derives\n\t\t\t\t.filter((derived) => hydrationOf(derived) !== undefined)\n\t\t\t\t.map((derived) => `derive ${derived.key}`),\n\t\t]);\n\t}\n\n\t/** `work` within the host's `readyTimeout`; a timeout names what is still awaited. */\n\tasync withinReadyTimeout<T>(work: Promise<T>, waiting: () => readonly string[]): Promise<T> {\n\t\tconst ms = this.host.readyTimeout;\n\t\tif (!Number.isFinite(ms)) return work;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst timeout = new Promise<never>((_, reject) => {\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tconst list = waiting();\n\t\t\t\treject(\n\t\t\t\t\tnew ChordError(\n\t\t\t\t\t\t\"unavailable\",\n\t\t\t\t\t\t`${this.address} was not ready after ${ms} ms${list.length === 0 ? \"\" : `, waiting on ${list.join(\", \")}`} (a reference cycle across hosts?)`,\n\t\t\t\t\t\t{ reason: \"ready_timeout\" },\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}, ms);\n\t\t\t(timer as { unref?: () => void }).unref?.();\n\t\t});\n\t\ttimeout.catch(noop);\n\t\ttry {\n\t\t\treturn await Promise.race([work, timeout]);\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t}\n\n\t/**\n\t * Fills the cells `run` created with `init`, each in a root of its own, in parallel; settles all before failing. Runs\n\t * after the run's resources are open and its references live, before anything reads the cells.\n\t */\n\tasync initCells(run: Run, signal: AbortSignal): Promise<void> {\n\t\tif (run.created.inits.length === 0) return;\n\t\tconst results = await Promise.allSettled(\n\t\t\trun.created.inits.map(async ([cell, init]) => {\n\t\t\t\tconst value = await this.host.root((ctx) => init(ctx), { signal });\n\t\t\t\tif (!signal.aborted) cell.initialize(value);\n\t\t\t}),\n\t\t);\n\t\tconst failure = results.find((result) => result.status === \"rejected\");\n\t\tif (failure !== undefined) throw failure.reason;\n\t}\n\n\t/** Undoes the objects a run created: closes its resources (reverse order) and releases its references. */\n\tasync unwind(run: Run): Promise<void> {\n\t\tfor (const derived of run.created.derives) derived.detach();\n\t\tconst resources = [...run.created.resources].sort(\n\t\t\t(a, b) => this.openOrder.indexOf(b) - this.openOrder.indexOf(a),\n\t\t);\n\t\tawait runAll(\n\t\t\t[\n\t\t\t\t...resources.map((resource) => () => resource.close(this.openOrder)),\n\t\t\t\t...run.created.refs.map((ref) => () => ref.release()),\n\t\t\t],\n\t\t\t`${this.address}: cleanup failed`,\n\t\t);\n\t}\n\n\tcurrentInstalled(): Installed | undefined {\n\t\treturn this.implementations.get(this.host.currentCodeVersion()) ?? [...this.implementations.values()].at(-1);\n\t}\n\n\t/** Every state source exposed as a remote state member gets that member's schema (checked per write in dev mode). */\n\trefreshSchemas(): void {\n\t\tconst schemas = new Map<Readable<unknown>, TSchema[]>();\n\t\tfor (const installed of this.implementations.values()) {\n\t\t\tfor (const [source, list] of memberSchemas(installed.service, installed.implementation)) {\n\t\t\t\tschemas.set(source, [...(schemas.get(source) ?? []), ...list]);\n\t\t\t}\n\t\t}\n\t\tfor (const decls of this.allDecls()) {\n\t\t\tfor (const source of [...decls.cells.values(), ...decls.derives.values()])\n\t\t\t\tsource.schemas = schemas.get(source) ?? [];\n\t\t}\n\t}\n\n\tallDecls(): Set<Decls> {\n\t\tconst result = new Set<Decls>([this.decls, ...this.pending]);\n\t\tfor (const installed of this.implementations.values()) result.add(installed.decls);\n\t\treturn result;\n\t}\n\n\t// ─── runtime: listeners and tasks of the current declarations ───\n\n\t/** The resource a listener is declared on, or its source itself. */\n\t#origin(decl: ListenerDecl): unknown {\n\t\treturn resourceOf(decl.source) ?? decl.source;\n\t}\n\n\t/** Resolves a listener's subscribable: `select(resource value)`, `select(source)` or the source itself. */\n\t#listenSource(key: string, decl: ListenerDecl): Subscribable<unknown> {\n\t\tconst resource = resourceOf(decl.source);\n\t\tconst value = resource === undefined ? decl.source : resource.value;\n\t\tconst source = (decl.select === undefined ? value : decl.select(value as never)) as Subscribable<unknown>;\n\t\tif (typeof source?.subscribe !== \"function\")\n\t\t\tthrow invalid(\"implementation\", `listener ${key}: source has no subscribe()`);\n\t\treturn source;\n\t}\n\n\t/**\n\t * Subscribes the listeners of `decls` without delivering: events are buffered until `activate`. A listener declared\n\t * on the same resource (or source) with the same `select` keeps its subscription without calling `select` again\n\t * (only its function is swapped, by name), so sources that accept a single subscriber survive reloads. Throws, with\n\t * nothing left subscribed, if any source fails.\n\t */\n\tstageListeners(decls: Decls): StagedListeners {\n\t\ttype Fresh = Subscription & { buffer: unknown[] | undefined; subscribe?: () => void };\n\t\tconst fresh = new Map<string, Fresh>();\n\t\tconst kept = new Set<string>();\n\t\ttry {\n\t\t\tfor (const [key, decl] of decls.listeners) {\n\t\t\t\tconst origin = this.#origin(decl);\n\t\t\t\tconst previous = this.#subscriptions.get(key);\n\t\t\t\tif (previous !== undefined && previous.origin === origin && sameSelect(previous.select, decl.select)) {\n\t\t\t\t\tkept.add(key);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst source = this.#listenSource(key, decl);\n\t\t\t\tconst entry: Fresh = {\n\t\t\t\t\torigin,\n\t\t\t\t\tselect: decl.select,\n\t\t\t\t\tunsubscribe: noop,\n\t\t\t\t\tbuffer: [],\n\t\t\t\t};\n\t\t\t\tfresh.set(key, entry);\n\t\t\t\t// State (a readable) is subscribed when the listener activates: it delivers the value current then, not one\n\t\t\t\t// of the candidate before the commit (a new derivation computes its value at the commit).\n\t\t\t\tif (isSource(source) || isReadableLike(source)) {\n\t\t\t\t\tentry.buffer = undefined;\n\t\t\t\t\tentry.subscribe = () => {\n\t\t\t\t\t\tentry.unsubscribe = source.subscribe((event) => this.#deliver(key, event));\n\t\t\t\t\t};\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tentry.unsubscribe = source.subscribe((event) => {\n\t\t\t\t\tif (entry.buffer !== undefined) entry.buffer.push(event);\n\t\t\t\t\telse this.#deliver(key, event);\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfor (const entry of fresh.values()) entry.unsubscribe();\n\t\t\tthrow error;\n\t\t}\n\t\treturn {\n\t\t\tactivate: () => {\n\t\t\t\tfor (const [key, subscription] of this.#subscriptions) {\n\t\t\t\t\tif (kept.has(key)) continue;\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tthis.#subscriptions.delete(key);\n\t\t\t\t}\n\t\t\t\tfor (const [key, entry] of fresh) {\n\t\t\t\t\tthis.#subscriptions.set(key, entry);\n\t\t\t\t\tentry.subscribe?.();\n\t\t\t\t\tconst buffered = entry.buffer ?? [];\n\t\t\t\t\tentry.buffer = undefined;\n\t\t\t\t\tfor (const event of buffered) this.#deliver(key, event);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdiscard: () => {\n\t\t\t\tfor (const entry of fresh.values()) entry.unsubscribe();\n\t\t\t},\n\t\t};\n\t}\n\n\tstartRuntime(): void {\n\t\tthis.stageListeners(this.decls).activate();\n\t\tthis.startTasks();\n\t}\n\n\t/**\n\t * Starts the tasks of the current declarations. Runs aborted by `stopTasks` (a reload, a gate) may still be finishing:\n\t * their replacements start once they all finished, or after `taskStopDeadline` (reported), so the old and the new run\n\t * of a task never work side by side. A later start or stop, or the object leaving `live`, cancels a delayed start.\n\t */\n\tstartTasks(): void {\n\t\tconst run = ++this.#taskRuns;\n\t\tconst start = (): void => {\n\t\t\tfor (const key of this.decls.tasks.keys()) this.#startTask(key, this.host.currentCodeVersion());\n\t\t};\n\t\tif (this.#stopped.size === 0) {\n\t\t\tstart();\n\t\t\treturn;\n\t\t}\n\t\tconst deadline = this.host.taskStopDeadline;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst late = new Promise<boolean>((resolve) => {\n\t\t\ttimer = setTimeout(() => resolve(true), deadline);\n\t\t});\n\t\tconst stopped = Promise.allSettled([...this.#stopped]).then(() => false);\n\t\tvoid Promise.race([stopped, late]).then((missed) => {\n\t\t\tclearTimeout(timer);\n\t\t\tif (run !== this.#taskRuns || this.status !== \"live\") return;\n\t\t\tif (missed) {\n\t\t\t\tthis.host.report(\n\t\t\t\t\tnew ChordError(\n\t\t\t\t\t\t\"aborted\",\n\t\t\t\t\t\t`${this.address}: aborted tasks still running after ${deadline} ms; starting their replacements anyway`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\tstart();\n\t\t});\n\t}\n\n\tstopListeners(): void {\n\t\tfor (const subscription of this.#subscriptions.values()) subscription.unsubscribe();\n\t\tthis.#subscriptions.clear();\n\t}\n\n\t#startTask(key: string, codeVersion: number): void {\n\t\tconst fn = this.decls.tasks.get(key);\n\t\tif (fn === undefined) return;\n\t\tconst controller = new AbortController();\n\t\tconst ctx = new CtxImpl(this.host, {\n\t\t\tsignals: [controller.signal, this.callAbort.signal],\n\t\t\trootId: `task:${this.address}:${key}`,\n\t\t\tcodeVersion,\n\t\t\tprincipal: this.host.principal,\n\t\t\tholder: true,\n\t\t});\n\t\tconst done = (async () => {\n\t\t\ttry {\n\t\t\t\tawait fn(ctx);\n\t\t\t} catch (error) {\n\t\t\t\tif (!ctx.signal.aborted) this.host.report(error);\n\t\t\t} finally {\n\t\t\t\tctx.close();\n\t\t\t\tif (this.#tasks.get(key)?.controller === controller) this.#tasks.delete(key);\n\t\t\t}\n\t\t})();\n\t\tthis.#tasks.set(key, { controller, done });\n\t}\n\n\t/**\n\t * Aborts running tasks (and cancels a delayed start). Their completion is awaited by the next `startTasks` and at\n\t * disposal; each leaves `#stopped` when it finishes.\n\t */\n\tstopTasks(): void {\n\t\tthis.#taskRuns++;\n\t\tfor (const task of this.#tasks.values()) {\n\t\t\ttask.controller.abort(new ChordError(\"aborted\", \"task stopped\"));\n\t\t\tconst done = task.done;\n\t\t\tthis.#stopped.add(done);\n\t\t\tvoid done.finally(() => this.#stopped.delete(done));\n\t\t}\n\t\tthis.#tasks.clear();\n\t}\n\n\t/**\n\t * Delivers one listener event, in publication order. The invocation is a root that references a lease on this object\n\t * (a reload gate waits for it like for any other root that touched the object), counts as an invocation (disposal\n\t * waits for it) and is cancelled by forced disposal.\n\t */\n\t#deliver(key: string, event: unknown): void {\n\t\tenqueue(() => {\n\t\t\tif (this.gate !== undefined) {\n\t\t\t\tthis.gate.queue.push({ key, event });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst decl = this.decls.listeners.get(key);\n\t\t\tif (decl === undefined || (this.status !== \"live\" && this.status !== \"activating\")) return;\n\t\t\tconst invocation = this.host.root((root) => {\n\t\t\t\tthis.lease(root);\n\t\t\t\tconst child = (root as CtxImpl).child(this);\n\t\t\t\treturn this.#invoke(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait decl.fn(event, child);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tchild.close();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\tinvocation.catch((error: unknown) => this.host.report(error));\n\t\t});\n\t}\n\n\t/** Opens the object's gate and replays queued listener events through the current listeners. */\n\topenGate(): void {\n\t\tconst gate = this.gate;\n\t\tthis.gate = undefined;\n\t\tfor (const { key, event } of gate?.queue ?? []) this.#deliver(key, event);\n\t}\n\n\t// ─── calls ───\n\n\t/** Admission for a call or write carrying `ctx`. */\n\tadmit(ctx: Ctx): void {\n\t\tif (this.host.failed !== undefined) {\n\t\t\tthrow new ChordError(\"unavailable\", `${this.host.name} failed and admits no work`, { reason: \"host_failed\" });\n\t\t}\n\t\tif (!this.host.hasCodeVersion(ctx.codeVersion))\n\t\t\tthrow new ChordError(\"superseded\", `code version ${ctx.codeVersion} is retired`);\n\t\tif (ctx.codeVersion < this.minCodeVersion) {\n\t\t\tthrow new ChordError(\n\t\t\t\t\"upgrade_conflict\",\n\t\t\t\t`${this.address} was upgraded in code version ${this.minCodeVersion}`,\n\t\t\t);\n\t\t}\n\t\tif (this.gate !== undefined && !this.gate.grandfathered.has(ctx.rootId)) {\n\t\t\tthrow new ChordError(\"upgrade_conflict\", `${this.address} is being upgraded`);\n\t\t}\n\t}\n\n\t/** Records that the root of `ctx` touched this object (a reload gate grandfathers it). */\n\tlease(ctx: Ctx): void {\n\t\tif (this.leases.has(ctx.rootId)) return;\n\t\tthis.leases.set(ctx.rootId, ctx.codeVersion);\n\t\tthis.host.touch(ctx.rootId, this);\n\t}\n\n\tguard = (ctx: Ctx): void => {\n\t\tif (this.host.inFactory > 0) throw invalid(\"read_only\", \"cells cannot be written while a factory runs\");\n\t\tif (ctx instanceof CtxImpl) ctx.check(this.host);\n\t\tif (ctx.signal.aborted) throw new ChordError(\"aborted\", \"write with an aborted ctx\");\n\t\tif (this.status === \"disposed\") throw new ChordError(\"gone\", `${this.address} is disposed`);\n\t\tif (ctx.rootId.startsWith(\"task:\")) return;\n\t\tthis.admit(ctx);\n\t};\n\n\tasync call(ref: RefImpl, name: string, args: unknown, ctx: CtxImpl): Promise<unknown> {\n\t\tctx.check(this.host);\n\t\tif (ref.status === \"released\" || ref.status === \"gone\") throw ref.terminalError();\n\t\tif (ref.status === \"loading\") await raceSignal(ref.ready, ctx.signal);\n\t\tif (ref.status !== \"live\" || this.status !== \"live\") {\n\t\t\tthrow ref.status === \"live\"\n\t\t\t\t? new ChordError(\"gone\", `${this.address} is ${this.status}`)\n\t\t\t\t: ref.terminalError();\n\t\t}\n\t\tthis.admit(ctx);\n\t\tconst installed = this.implementations.get(ctx.codeVersion);\n\t\tif (installed === undefined)\n\t\t\tthrow new ChordError(\n\t\t\t\t\"superseded\",\n\t\t\t\t`${this.address} has no implementation for code version ${ctx.codeVersion}`,\n\t\t\t);\n\t\tconst view = ref.viewOf(installed);\n\t\tconst variant = variantOf(view);\n\t\tconst wanted = ref.describe(ref.contract.scope === \"remote\" ? variant : LOCAL_VARIANT, name);\n\t\tconst fn = view[name];\n\t\tif (typeof fn !== \"function\" || (ref.contract.scope === \"remote\" && wanted?.kind !== \"method\")) {\n\t\t\tthrow new ChordError(\n\t\t\t\t\"not_in_variant\",\n\t\t\t\t`${this.address}: ${name} is not a method of variant ${variant ?? \"(local)\"}`,\n\t\t\t);\n\t\t}\n\t\tconst direct = view === installed.implementation;\n\t\tconst schema = direct\n\t\t\t? installed.service.contract.description.variants[variant ?? LOCAL_VARIANT]?.[name]\n\t\t\t: wanted;\n\t\tconst method = schema?.kind === \"method\" ? schema : undefined;\n\t\tconst validated = ref.contract.scope === \"remote\" ? method : undefined;\n\t\t// No arguments: the handler takes only ctx. No result (void): the caller gets undefined, whatever it returned.\n\t\tconst takesArgs = method === undefined || method.args !== undefined;\n\t\tconst returns = method === undefined || method.result !== undefined;\n\t\tlet input: unknown;\n\t\tif (takesArgs) {\n\t\t\t// The additive rule assumes a consumer sends only what its own schema knows, and a provider sees only what its\n\t\t\t// schema knows: strip with both before validating.\n\t\t\tconst own = ref.contract.scope === \"remote\" && wanted?.kind === \"method\" ? wanted.args : undefined;\n\t\t\tconst sent = own === undefined ? args : Value.Clean(own, Value.Clone(args));\n\t\t\tinput = validated?.args ? Value.Clean(validated.args, Value.Clone(sent)) : sent;\n\t\t\tif (validated?.args) assertValid(\"args\", `${this.address}.${name} args`, validated.args, input);\n\t\t}\n\t\tthis.lease(ctx);\n\t\tconst child = ctx.child(this);\n\t\tlet result: unknown;\n\t\ttry {\n\t\t\tresult = await this.#invoke(() =>\n\t\t\t\ttakesArgs\n\t\t\t\t\t? (fn as (args: unknown, ctx: Ctx) => unknown)(input, child)\n\t\t\t\t\t: (fn as (ctx: Ctx) => unknown)(child),\n\t\t\t);\n\t\t} finally {\n\t\t\tchild.close();\n\t\t}\n\t\tif (!returns) return undefined;\n\t\tif (validated?.result) assertValid(\"result\", `${this.address}.${name} result`, validated.result, result);\n\t\treturn result;\n\t}\n\n\t/** Runs an invocation (method or listener) that keeps the object alive until it settles. */\n\t#invoke<T>(fn: () => T | Promise<T>): Promise<T> {\n\t\tconst invocation = (async () => fn())();\n\t\tthis.#invocations.add(invocation);\n\t\tconst done = (): void => {\n\t\t\tthis.#invocations.delete(invocation);\n\t\t\tif (this.#invocations.size === 0) this.#maybeIdle();\n\t\t};\n\t\tinvocation.then(done, done);\n\t\treturn invocation;\n\t}\n\n\trootEnded(rootId: string): void {\n\t\tthis.leases.delete(rootId);\n\t\tconst gate = this.gate;\n\t\tif (gate?.grandfathered.delete(rootId) && gate.grandfathered.size === 0) gate.drained();\n\t}\n\n\t// ─── lifetime ───\n\n\taddRef(ref: RefImpl): void {\n\t\tthis.refs.add(ref);\n\t\tif (this.#linger !== undefined) clearTimeout(this.#linger);\n\t\tthis.#linger = undefined;\n\t}\n\n\trelease(ref: RefImpl): void {\n\t\tif (this.refs.delete(ref)) this.#maybeIdle();\n\t}\n\n\t/** No references and no invocations: dispose (after `linger` for a live object). */\n\t#maybeIdle(): void {\n\t\tif (this.refs.size > 0 || this.#invocations.size > 0 || this.#linger !== undefined) return;\n\t\tif (this.status === \"activating\") {\n\t\t\tthis.#background(this.dispose(false));\n\t\t\treturn;\n\t\t}\n\t\tif (this.status !== \"live\") return;\n\t\tconst linger = this.service?.options.linger ?? 0;\n\t\tif (linger <= 0) {\n\t\t\tthis.#background(this.dispose(false));\n\t\t\treturn;\n\t\t}\n\t\tthis.#linger = setTimeout(() => {\n\t\t\tthis.#linger = undefined;\n\t\t\tif (this.refs.size === 0 && this.#invocations.size === 0 && this.status === \"live\") {\n\t\t\t\tthis.#background(this.dispose(false));\n\t\t\t}\n\t\t}, linger);\n\t\tthis.#linger.unref?.();\n\t}\n\n\t#background(disposal: Promise<void>): void {\n\t\tdisposal.catch((error: unknown) => this.host.report(error));\n\t}\n\n\t/**\n\t * Disposes the object. Forced: references become gone at once (new calls are rejected) and running invocations are\n\t * cancelled. Either way, resources close only after every invocation settled.\n\t */\n\tdispose(forced: boolean, reason?: unknown): Promise<void> {\n\t\tthis.#disposal ??= this.#dispose(forced, reason);\n\t\treturn this.#disposal;\n\t}\n\n\tasync #dispose(forced: boolean, reason: unknown): Promise<void> {\n\t\tconst wasActivating = this.status === \"activating\";\n\t\tthis.status = \"disposing\";\n\t\tthis.host.forget(this);\n\t\tif (this.#linger !== undefined) clearTimeout(this.#linger);\n\t\tthis.#linger = undefined;\n\t\tconst error = reason ?? new ChordError(\"gone\", `${this.address} was disposed`);\n\t\tif (forced) {\n\t\t\tfor (const ref of this.refs) ref.gone(error);\n\t\t\tthis.callAbort.abort(error);\n\t\t}\n\t\tthis.activationAbort.abort(error);\n\t\tif (wasActivating) await this.ready.catch(noop);\n\t\tfor (const ref of this.refs) ref.gone(error);\n\t\tconst decls = this.allDecls();\n\t\tthis.stopTasks();\n\t\tthis.stopListeners();\n\t\tawait Promise.allSettled([...this.#invocations]);\n\t\tconst registered = [...decls].some((set) => set.registrations.size > 0) && !this.deferredRuntime;\n\t\tthis.implementations.clear();\n\t\tthis.decls = new Decls();\n\t\tif (registered) this.host.registriesChanged();\n\t\tconst refs = new Set<RefCore>();\n\t\tfor (const set of decls) {\n\t\t\tfor (const derived of set.derives.values()) derived.detach();\n\t\t\tfor (const ref of set.refs.values()) refs.add(ref);\n\t\t}\n\t\ttry {\n\t\t\tawait runAll(\n\t\t\t\t[\n\t\t\t\t\t() => Promise.allSettled([...this.#stopped]),\n\t\t\t\t\t...[...this.openOrder].reverse().map((resource) => () => resource.close(this.openOrder)),\n\t\t\t\t\t...[...refs].map((ref) => () => ref.release()),\n\t\t\t\t],\n\t\t\t\t`${this.address}: disposal failed`,\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.status = \"disposed\";\n\t\t\tthis.host.disposed(this);\n\t\t}\n\t}\n}\n\nconst isReadableLike = (value: unknown): boolean =>\n\tvalue !== null &&\n\ttypeof value === \"object\" &&\n\ttypeof (value as Readable<unknown>).events === \"function\" &&\n\ttypeof (value as Readable<unknown>).subscribe === \"function\";\n\n/** The remote state-member schemas an implementation exposes, by source. */\nexport function memberSchemas(\n\tservice: Service,\n\timplementation: Record<string, unknown>,\n): Map<Readable<unknown>, TSchema[]> {\n\tconst schemas = new Map<Readable<unknown>, TSchema[]>();\n\tconst contract = service.contract;\n\tif (contract.scope !== \"remote\") return schemas;\n\tconst members = contract.description.variants[variantOf(implementation) ?? \"\"] ?? {};\n\tfor (const [name, description] of Object.entries(members)) {\n\t\tconst source = implementation[name];\n\t\tif (description.kind !== \"state\" || !isSource(source)) continue;\n\t\tschemas.set(source, [...(schemas.get(source) ?? []), description.schema]);\n\t}\n\treturn schemas;\n}\n\nfunction validateImplementation(service: Service, implementation: Record<string, unknown>): void {\n\tconst contract = service.contract;\n\tconst fail = (message: string): never => {\n\t\tthrow invalid(\"implementation\", `${contract.name}: ${message}`);\n\t};\n\tif (implementation === null || typeof implementation !== \"object\") fail(\"factory must return an object\");\n\tlet members: Readonly<Record<string, MemberDescription>>;\n\tif (contract.scope === \"remote\") {\n\t\tconst variant = implementation.variant;\n\t\tif (typeof variant !== \"string\" || contract.description.variants[variant] === undefined)\n\t\t\tfail(`unknown variant ${String(variant)}`);\n\t\tmembers = contract.description.variants[variant as string]!;\n\t\tfor (const key of Object.keys(implementation))\n\t\t\tif (key !== \"variant\" && members[key] === undefined) fail(`${key} is not in variant ${String(variant)}`);\n\t} else {\n\t\tmembers = contract.description.variants[LOCAL_VARIANT] ?? {};\n\t}\n\tfor (const [name, description] of Object.entries(members)) {\n\t\tconst value = implementation[name];\n\t\tif (description.kind === \"method\" && typeof value !== \"function\") fail(`${name} must be a method`);\n\t\tif (description.kind === \"state\" && !isSource(value) && !isReadableLike(value)) {\n\t\t\tfail(`${name} must be a cell, a derivation or a held object's state member`);\n\t\t}\n\t\tif (description.kind === \"opaque\" && value === undefined) fail(`${name} is missing`);\n\t}\n}\n\n// ─── The factory's `self` ────────────────────────────────────────────────────\n\nclass SelfImpl implements Self {\n\treadonly #object: ObjectImpl;\n\treadonly #previous: Decls | undefined;\n\treadonly #decls = new Decls();\n\treadonly #created: Run[\"created\"] = { refs: [], resources: [], derives: [], inits: [] };\n\n\tconstructor(object: ObjectImpl, previous: Decls | undefined) {\n\t\tthis.#object = object;\n\t\tthis.#previous = previous;\n\t}\n\n\trun(implementation: unknown): Run {\n\t\treturn { implementation: implementation as Record<string, unknown>, decls: this.#decls, created: this.#created };\n\t}\n\n\t/** Refuses a second declaration of `name` of one kind in this run (TypeScript cannot see string names). */\n\t#unique(map: ReadonlyMap<string, unknown>, kind: string, name: string): void {\n\t\tif (typeof name !== \"string\" || name === \"\") throw new TypeError(`${kind} needs a name`);\n\t\tif (map.has(name)) throw invalid(\"duplicate\", `${this.#object.typeName}: duplicate ${kind} name ${name}`);\n\t}\n\n\tstate<S extends TSchema>(\n\t\tname: string,\n\t\tschema: S,\n\t\tinitial: Static<S> | StateInit<Static<S>>,\n\t\toptions: StateOptions<Static<S>> = {},\n\t): Cell<Static<S>> {\n\t\tthis.#unique(this.#decls.cells, \"state\", name);\n\t\tconst version = options.version ?? 1;\n\t\tif (!Number.isInteger(version) || version < 1)\n\t\t\tthrow new TypeError(`state ${name}: version must be a positive integer`);\n\t\tconst host = this.#object.host;\n\t\t// A JSON value never holds a function: an object with a function `init` is the initializer, not a value.\n\t\tconst init = isStateInit(initial) ? initial.init : undefined;\n\t\tlet cell = this.#previous?.cells.get(name);\n\t\tif (cell === undefined) {\n\t\t\tcell = new Cell<unknown>(\n\t\t\t\tname,\n\t\t\t\tschema,\n\t\t\t\tinit === undefined ? { value: initial } : undefined,\n\t\t\t\tthis.#object.guard,\n\t\t\t\t{\n\t\t\t\t\tdev: host.dev,\n\t\t\t\t\treport: (error) => host.report(error),\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (init !== undefined) this.#created.inits.push([cell, init]);\n\t\t}\n\t\tthis.#decls.cells.set(name, cell);\n\t\tthis.#decls.cellSchemas.set(name, schema);\n\t\tthis.#decls.cellVersions.set(name, version);\n\t\tif (options.migrate !== undefined) this.#decls.cellMigrations.set(name, options.migrate);\n\t\treturn cell as Cell<Static<S>>;\n\t}\n\n\tget<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions): Ref<C> {\n\t\tconst host = this.#object.host;\n\t\t// A prepare rerun (recording mode) binds new references against the reload's pending contracts: a breaking provider\n\t\t// change and its updated consumer reload together.\n\t\tconst candidate = this.#previous !== undefined;\n\t\tconst address = host.addressOf(type, input, options?.principal ?? host.principal, candidate);\n\t\tconst declared = this.#decls.refs.get(address);\n\t\tif (declared !== undefined) {\n\t\t\tif (declared.contract.fingerprint !== type.fingerprint) {\n\t\t\t\tthrow invalid(\"duplicate\", `${this.#object.typeName}: ${type.name} held twice with different contracts`);\n\t\t\t}\n\t\t\treturn declared.proxy as Ref<C>;\n\t\t}\n\t\tconst existing = this.#previous?.refs.get(address);\n\t\tif (\n\t\t\texisting !== undefined &&\n\t\t\texisting.contract.fingerprint === type.fingerprint &&\n\t\t\texisting.status !== \"gone\" &&\n\t\t\texisting.status !== \"released\"\n\t\t) {\n\t\t\tthis.#decls.refs.set(address, existing);\n\t\t\treturn existing.proxy as Ref<C>;\n\t\t}\n\t\tconst ref = host.acquire(type, input, options, \"object\", this.#object, candidate);\n\t\tthis.#decls.refs.set(address, ref);\n\t\tthis.#created.refs.push(ref);\n\t\treturn ref.proxy as Ref<C>;\n\t}\n\n\tresource<T>(name: string, declaration: ResourceDeclaration<T>): Resource<T> {\n\t\tthis.#unique(this.#decls.resources, \"resource\", name);\n\t\tif (!Number.isInteger(declaration.version)) throw new TypeError(`resource ${name}: version must be an integer`);\n\t\tconst deps = (declaration.deps ?? []).map((dep) => {\n\t\t\tconst resolved = refOf(dep) ?? resourceOf(dep);\n\t\t\tif (resolved === undefined) {\n\t\t\t\tthrow new TypeError(`resource ${name}: deps must be references or resources of this object`);\n\t\t\t}\n\t\t\treturn resolved;\n\t\t});\n\t\tconst existing = this.#previous?.resources.get(name);\n\t\tconst kept =\n\t\t\texisting !== undefined &&\n\t\t\texisting.spec.version === declaration.version &&\n\t\t\texisting.exclusive === (declaration.exclusive === true) &&\n\t\t\texisting.deps.length === deps.length &&\n\t\t\texisting.deps.every((dep, index) => dep === deps[index]);\n\t\tconst resource = kept ? existing : new ResourceImpl(name, declaration as ResourceDeclaration<unknown>, deps);\n\t\tif (kept) this.#decls.adopted.set(existing, declaration as ResourceDeclaration<unknown>);\n\t\telse this.#created.resources.push(resource);\n\t\tthis.#decls.resources.set(name, resource);\n\t\treturn new ResourceFacade(resource, this.#object.host) as unknown as Resource<T>;\n\t}\n\n\ton(name: string, source: unknown, ...rest: readonly unknown[]): void {\n\t\tthis.#unique(this.#decls.listeners, \"listener\", name);\n\t\tconst [select, fn] = rest.length === 1 ? [undefined, rest[0]] : [rest[0], rest[1]];\n\t\tif (typeof fn !== \"function\") throw new TypeError(`listener ${name}: the handler must be a function`);\n\t\tif (select !== undefined && typeof select !== \"function\")\n\t\t\tthrow new TypeError(`listener ${name}: select must be a function`);\n\t\tthis.#decls.listeners.set(name, {\n\t\t\tsource,\n\t\t\tselect: select as ListenerDecl[\"select\"],\n\t\t\tfn: fn as ListenerDecl[\"fn\"],\n\t\t});\n\t}\n\n\ttask(fn: (ctx: Ctx) => Promise<void>): void {\n\t\tif (typeof fn !== \"function\") throw new TypeError(\"a task must be a function\");\n\t\tthis.#decls.tasks.set(`#${this.#decls.tasks.size}`, fn);\n\t}\n\n\tderive<const S extends Sources, T>(sources: S, fn: (...values: SourceValues<S>) => T): Readable<T> {\n\t\tif (typeof fn !== \"function\") throw new TypeError(\"a derivation needs a function\");\n\t\tconst host = this.#object.host;\n\t\tconst key = `#${this.#decls.derives.size}`;\n\t\tconst derived = new Derived(key, sources, fn as unknown as (...values: never[]) => unknown, {\n\t\t\tdev: host.dev,\n\t\t\treport: (error) => host.report(error),\n\t\t});\n\t\tthis.#created.derives.push(derived);\n\t\tthis.#decls.derives.set(key, derived);\n\t\treturn derived as unknown as Readable<T>;\n\t}\n\n\texpose<T>(resource: Resource<T>): Exposed<T> {\n\t\tconst resolved = resourceOf(resource);\n\t\tif (resolved === undefined || ![...this.#decls.resources.values()].includes(resolved)) {\n\t\t\tthrow new TypeError(\"expose takes a resource declared by this object\");\n\t\t}\n\t\treturn new ExposedImpl(resolved) as unknown as Exposed<T>;\n\t}\n\n\tregister<V>(registry: Registry<V>, entries: Readonly<Record<string, V>>): void {\n\t\tif (!this.#object.hostLifetime)\n\t\t\tthrow invalid(\"not_host_lifetime\", `${this.#object.typeName}: only objects of lifetime \"host\" may register`);\n\t\tfor (const [key, value] of Object.entries(entries)) {\n\t\t\tconst id = `${registry.name}\\u0000${key}`;\n\t\t\tthis.#unique(this.#decls.registrations, \"register\", id);\n\t\t\tthis.#decls.registrations.set(id, { registry: registry as Registry<unknown>, key, value });\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Schema, Static } from \"@earendil-works/pi-schema\";\nimport {\n\tCell,\n\tDerived,\n\tHYDRATION,\n\ttype Hydration,\n\thydrationOf,\n\tisSource,\n\tnotReady,\n\ttype Sources,\n\ttype SourceValues,\n\tunhydrated,\n} from \"./cell.ts\";\nimport {\n\ttype Accepts,\n\ttype Adapter,\n\ttype AnyContract,\n\tbind,\n\ttype ImplementationOf,\n\ttype InputOf,\n\tLOCAL_VARIANT,\n\ttype LocalContract,\n\ttype MemberDescription,\n\ttype Ref,\n\ttakesNoArgs,\n} from \"./contract.ts\";\nimport type { EventOf, ListenerDecl, Resource, ResourceDeclaration, Subscribable, ValueOf } from \"./declare.ts\";\nimport { asChordError, ChordError, invalid, runAll } from \"./errors.ts\";\nimport { enqueue } from \"./publish.ts\";\nimport type { Registration, Registry } from \"./registry.ts\";\nimport type { RemoteHost } from \"./remote.ts\";\nimport { assertValid, cleaned, normalize } from \"./schema.ts\";\nimport type { Ctx, Exposed, GetOptions, Readable, RefStatus, Shape, StateEvent } from \"./types.ts\";\n\nconst noop = (): void => {};\n\n// ─── Services ────────────────────────────────────────────────────────────────\n\n/**\n * `serve` options. `lifetime` says how long objects of the type live. `\"referenced\"` (default): created at the first\n * `get` of an address, disposed after the last reference is released (plus `linger`). `\"host\"`: one object, created when\n * its facet loads (loading waits until it is live) and kept until the host closes or a reload removes its facet. Only\n * local types whose input accepts `{}` may have it (`ServeOptionsFor` checks that at compile time, `serve` again at\n * runtime); every `get` reaches that one object, created for the host principal. Only such objects may register into\n * registries.\n */\nexport type ServeOptions = ReferencedServeOptions | HostServeOptions;\n\nexport interface ReferencedServeOptions {\n\treadonly lifetime?: \"referenced\";\n\t/** Milliseconds an object stays alive after its last reference is released. */\n\treadonly linger?: number;\n\t/** Adapters for consumers built against older contract versions. */\n\treadonly accepts?: Accepts;\n}\n\nexport interface HostServeOptions {\n\treadonly lifetime: \"host\";\n\t/** An object of lifetime `\"host\"` lives as long as the host: it does not linger. */\n\treadonly linger?: undefined;\n\t/** Adapters for consumers built against older contract versions. */\n\treadonly accepts?: Accepts;\n}\n\n/**\n * The options `serve` accepts for `C`: `lifetime: \"host\"` only for a local type whose input has no required fields\n * (the type's one object has the empty input).\n */\nexport type ServeOptionsFor<C extends AnyContract> = C extends LocalContract\n\t? Record<never, never> extends InputOf<C>\n\t\t? ServeOptions\n\t\t: ReferencedServeOptions\n\t: ReferencedServeOptions;\n\nexport type Lifetime = \"referenced\" | \"host\";\n\n/** A type's factory. `P` is the app's principal type: `principal` is the caller the object is created for. */\nexport type Factory<C extends AnyContract, P = unknown> = (\n\tinput: InputOf<C>,\n\tprincipal: P,\n\tself: Self<P>,\n) => ImplementationOf<C, P>;\ntype AnyFactory = (input: unknown, principal: unknown, self: Self) => unknown;\n\nexport interface Service {\n\treadonly contract: AnyContract;\n\treadonly factory: AnyFactory;\n\treadonly options: ServeOptions;\n\treadonly facet: string;\n}\n\nexport const makeService = <C extends AnyContract>(\n\tcontract: C,\n\tfactory: Factory<C>,\n\toptions: ServeOptions,\n\tfacet: string,\n): Service => {\n\tcheckLifetime(contract, options);\n\treturn {\n\t\tcontract,\n\t\tfactory: factory as unknown as AnyFactory,\n\t\toptions: options as ServeOptions,\n\t\tfacet,\n\t};\n};\n\n/** Whether objects of `service` have `lifetime: \"host\"`. */\nexport const hostLifetime = (service: Service): boolean => service.options.lifetime === \"host\";\n\n/** Refuses lifetimes the type cannot have, when it is served. */\nfunction checkLifetime(contract: AnyContract, options: ServeOptions): void {\n\tconst lifetime = options.lifetime ?? \"referenced\";\n\tif (lifetime !== \"referenced\" && lifetime !== \"host\")\n\t\tthrow new TypeError(`${contract.name}: unknown lifetime ${String(lifetime)}`);\n\tif (lifetime !== \"host\") return;\n\tif (contract.scope !== \"local\")\n\t\tthrow new TypeError(`${contract.name}: lifetime \"host\" needs a local type (remote types are referenced)`);\n\tif (options.linger !== undefined)\n\t\tthrow new TypeError(\n\t\t\t`${contract.name}: an object of lifetime \"host\" does not linger (it lives as long as the host)`,\n\t\t);\n\ttry {\n\t\tnormalize(contract.input, {}, `${contract.name} input`);\n\t} catch {\n\t\tthrow new TypeError(\n\t\t\t`${contract.name}: lifetime \"host\" needs an input that accepts {} (the object's one address)`,\n\t\t);\n\t}\n}\n\n// ─── Declarations ────────────────────────────────────────────────────────────\n\n/** Options of `self.state`. */\nexport interface StateOptions<T> {\n\t/** The meaning of the cell's value (default 1). A reload that raises it runs `migrate`. */\n\treadonly version?: number;\n\t/**\n\t * Maps the value of an older version (`from`) to this version's, at the reload that raised the version. The cell\n\t * may be several versions behind. Without it, the value is kept and must fit the new schema.\n\t */\n\treadonly migrate?: (old: unknown, from: number) => T;\n}\n\n/**\n * A cell's first value from its source: `init` runs after the object's resources are open and its references are live,\n * before the object goes live, so no call, listener or subscriber sees a value that is not from the source. It runs in\n * a root of its own (acting as the host principal) and may be async; the inits of one object run in parallel. Its\n * value is validated against the schema; a throw or an invalid value fails the activation.\n */\nexport interface StateInit<T, P = unknown> {\n\treadonly init: (ctx: Ctx<P>) => T | Promise<T>;\n}\n\n/** What a factory declares through. `P` is the app's principal type (`ctx.principal` of its listeners and tasks). */\nexport interface Self<P = unknown> {\n\t/**\n\t * A state cell named `name`: its schema (required: there is no TypeScript at runtime) and its initial value\n\t * (validated), or `{ init }` to read the first value from its source before the object goes live. The name identifies\n\t * the cell across reloads: a reload keeps the cell and its value (`initial` is ignored, `init` does not run), migrates\n\t * it when its version rises, and refuses a schema change without a version bump. A cell a reload adds runs its `init`\n\t * while the reload prepares.\n\t */\n\tstate<S extends Schema>(\n\t\tname: string,\n\t\tschema: S,\n\t\tinitial: Static<S> | StateInit<Static<S>, P>,\n\t\toptions?: StateOptions<Static<S>>,\n\t): Cell<Static<S>>;\n\t/** An object-owned reference, identified by its address. */\n\tget<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions<P>): Ref<C>;\n\t/**\n\t * A resource named `name`: opened before the object goes live, closed after it is disposed. A reload keeps it unless\n\t * its `version`, `deps` or `exclusive` changed.\n\t */\n\tresource<T>(name: string, declaration: ResourceDeclaration<T>): Resource<T>;\n\t/**\n\t * Reacts to `source` once the object is live: a readable (cell, derivation, reference state member) delivers its\n\t * current value, then every new value; an event source (or a resource whose value is one) delivers its events.\n\t * With `select`, subscribes to `select(value)` instead (the opened value for a resource). Each event runs `handler`\n\t * in a fresh root. The name keeps the subscription across reloads while its source and `select` are unchanged; a\n\t * listener on state whose source the reload replaced (a derivation is new at every reload) subscribes again and\n\t * gets the current value again, so a handler of state must reconcile, not count.\n\t */\n\ton<S>(name: string, source: S, handler: (event: EventOf<S>, ctx: Ctx<P>) => void | Promise<void>): void;\n\ton<S, E>(\n\t\tname: string,\n\t\tsource: S,\n\t\tselect: (value: ValueOf<S>) => Subscribable<E>,\n\t\thandler: (event: E, ctx: Ctx<P>) => void | Promise<void>,\n\t): void;\n\t/** Long-running work of the live object (a code holder: its calls start fresh roots), restarted at every reload. */\n\ttask(fn: (ctx: Ctx<P>) => Promise<void>): void;\n\t/** A synchronous projection of readables, recomputed when they change; a new one at every reload. */\n\tderive<const S extends Sources, T>(sources: S, fn: (...values: SourceValues<S>) => T): Readable<T>;\n\t/** Objects of lifetime `\"host\"` only. Keys are the registry's own keys. */\n\tregister<V>(registry: Registry<V>, entries: Readonly<Record<string, V>>): void;\n\t/**\n\t * A member backed by one of this object's resources, for local contracts: references read the resource's value once\n\t * the object is live (`undefined` before). Typically an `opaque` member: `{ harness: self.expose(durable) }`.\n\t */\n\texpose<T>(resource: Resource<T>): Exposed<T>;\n}\n\n/** Runtime form of `Exposed<T>`. */\nclass ExposedImpl {\n\treadonly resource: ResourceImpl;\n\tconstructor(resource: ResourceImpl) {\n\t\tthis.resource = resource;\n\t}\n}\n\nexport class ResourceImpl<T = unknown> implements Resource<T> {\n\treadonly key: string;\n\t/** The declaration of the factory run whose code is current: a kept resource adopts the new one at commit. */\n\tspec: ResourceDeclaration<T>;\n\treadonly deps: readonly (RefCore | ResourceImpl)[];\n\t/** `unavailable`: a close/reopen failed during a reload rollback; the value is gone for good. */\n\tstate: \"closed\" | \"opening\" | \"open\" | \"unavailable\" = \"closed\";\n\t#value: T | undefined;\n\n\tconstructor(key: string, spec: ResourceDeclaration<T>, deps: readonly (RefCore | ResourceImpl)[]) {\n\t\tthis.key = key;\n\t\tthis.spec = spec;\n\t\tthis.deps = deps;\n\t}\n\n\tget value(): T {\n\t\tif (this.state === \"unavailable\")\n\t\t\tthrow new ChordError(\"unavailable\", `resource ${this.key} could not be restored`);\n\t\tif (this.state !== \"open\") throw notReady(`resource ${this.key}`);\n\t\treturn this.#value as T;\n\t}\n\n\tget exclusive(): boolean {\n\t\treturn this.spec.exclusive === true;\n\t}\n\n\t/**\n\t * Opens the resource. An open that completes after `signal` aborted (rollback, abandonment) closes the value it\n\t * produced at once: nobody owns it any more.\n\t */\n\tasync open(signal: AbortSignal, order: ResourceImpl[]): Promise<void> {\n\t\tif (this.state !== \"closed\") return;\n\t\tthis.state = \"opening\";\n\t\tlet value: T;\n\t\ttry {\n\t\t\tvalue = await this.spec.open({ signal });\n\t\t} catch (error) {\n\t\t\tthis.state = \"closed\";\n\t\t\tthrow error;\n\t\t}\n\t\tif (signal.aborted) {\n\t\t\tthis.state = \"closed\";\n\t\t\tawait this.spec.close?.(value);\n\t\t\tthrow new ChordError(\"aborted\", `resource ${this.key} opened after abort`);\n\t\t}\n\t\tthis.#value = value;\n\t\tthis.state = \"open\";\n\t\torder.push(this);\n\t}\n\n\tasync close(order: ResourceImpl[]): Promise<void> {\n\t\tif (this.state !== \"open\") return;\n\t\tthis.state = \"closed\";\n\t\tconst index = order.indexOf(this);\n\t\tif (index !== -1) order.splice(index, 1);\n\t\tconst value = this.#value as T;\n\t\tthis.#value = undefined;\n\t\tawait this.spec.close?.(value);\n\t}\n\n\tmarkUnavailable(): void {\n\t\tthis.state = \"unavailable\";\n\t\tthis.#value = undefined;\n\t}\n\n\t/**\n\t * A reload kept this resource (same version, deps and exclusivity): its later `close` is the new declaration's, and\n\t * the old declaration (with the old code it closes over) is no longer referenced.\n\t */\n\tadopt(spec: ResourceDeclaration<T>): void {\n\t\tthis.spec = spec;\n\t}\n}\n\n/**\n * What `self.resources` returns: the resource, except that `.value` throws `not_ready` while any factory runs, even\n * if the resource is open (a reload's prepare rerun must not touch the native resource the old code uses).\n */\nclass ResourceFacade<T> implements Resource<T> {\n\treadonly #resource: ResourceImpl<T>;\n\treadonly #host: HostCore;\n\n\tconstructor(resource: ResourceImpl<T>, host: HostCore) {\n\t\tthis.#resource = resource;\n\t\tthis.#host = host;\n\t\tfacades.set(this, resource as ResourceImpl);\n\t}\n\n\tget key(): string {\n\t\treturn this.#resource.key;\n\t}\n\n\tget value(): T {\n\t\tif (this.#host.inFactory > 0) throw notReady(`resource ${this.key} (inside a factory)`);\n\t\treturn this.#resource.value;\n\t}\n}\n\nconst facades = new WeakMap<object, ResourceImpl>();\nconst resourceOf = (value: unknown): ResourceImpl | undefined =>\n\tvalue instanceof ResourceImpl ? value : value !== null && typeof value === \"object\" ? facades.get(value) : undefined;\n\ntype TaskFn = (ctx: Ctx) => Promise<void>;\n\n/** Everything one factory run declared, by kind and key. */\nexport class Decls {\n\treadonly cells = new Map<string, Cell<unknown>>();\n\treadonly cellSchemas = new Map<string, Schema>();\n\treadonly cellVersions = new Map<string, number>();\n\treadonly cellMigrations = new Map<string, (old: unknown, from: number) => unknown>();\n\treadonly refs = new Map<string, RefCore>();\n\treadonly resources = new Map<string, ResourceImpl>();\n\t/** Resources this run kept from the previous one, with this run's declarations (adopted at commit). */\n\treadonly adopted = new Map<ResourceImpl, ResourceDeclaration<unknown>>();\n\treadonly listeners = new Map<string, ListenerDecl>();\n\t/** By position (`#0`, `#1`, …): tasks have no names. */\n\treadonly tasks = new Map<string, TaskFn>();\n\t/** By position: derivations have no names and are new at every run. */\n\treadonly derives = new Map<string, Derived<unknown>>();\n\treadonly registrations = new Map<string, Registration>();\n}\n\ntype InitFn = (ctx: Ctx) => unknown;\n\n/** One factory run: its implementation, declarations and the objects it created (not reused from the previous run). */\nexport interface Run {\n\treadonly implementation: Record<string, unknown>;\n\treadonly decls: Decls;\n\treadonly created: {\n\t\treadonly refs: RefCore[];\n\t\treadonly resources: ResourceImpl[];\n\t\treadonly derives: Derived<unknown>[];\n\t\t/** Cells this run created with `init`, which fills them before they are used. */\n\t\treadonly inits: (readonly [Cell<unknown>, InitFn])[];\n\t};\n}\n\nconst isStateInit = (value: unknown): value is StateInit<unknown> =>\n\tvalue !== null && typeof value === \"object\" && typeof (value as { init?: unknown }).init === \"function\";\n\nexport interface Installed {\n\treadonly codeVersion: number;\n\treadonly service: Service;\n\treadonly implementation: Record<string, unknown>;\n\treadonly decls: Decls;\n}\n\n// ─── Host interface the runtime pieces use ───────────────────────────────────\n\nexport interface HostCore {\n\treadonly name: string;\n\treadonly dev: boolean;\n\treadonly principal: unknown;\n\tinFactory: number;\n\t/** Set when a commit failed midway: the host admits no more work (terminal). */\n\treadonly failed: unknown;\n\treport(error: unknown): void;\n\tcurrentCodeVersion(): number;\n\thasCodeVersion(codeVersion: number): boolean;\n\tretainedCodeVersions(): Iterable<readonly [number, ReadonlyMap<string, Service>]>;\n\tpendingCodeVersion(): number | undefined;\n\tservice(typeName: string): Service | undefined;\n\tacquire(\n\t\ttype: AnyContract,\n\t\tinput: unknown,\n\t\toptions: GetOptions | undefined,\n\t\towner: RefOwner,\n\t\tfrom?: ObjectImpl,\n\t\tcandidate?: boolean,\n\t): RefCore;\n\taddressOf(type: AnyContract, input: unknown, principal: unknown, candidate?: boolean): string;\n\troot<T>(fn: (ctx: Ctx) => T | Promise<T>, options?: { codeVersion?: number; signal?: AbortSignal }): Promise<T>;\n\ttouch(rootId: string, object: ObjectImpl): void;\n\tforget(object: ObjectImpl): void;\n\t/** The object finished its disposal. */\n\tdisposed(object: ObjectImpl): void;\n\t/** Milliseconds a reload waits for aborted tasks to finish before starting their replacements. */\n\treadonly taskStopDeadline: number;\n\t/**\n\t * Milliseconds an activation or a reload's prepare waits for its references to be ready and hydrated before it fails\n\t * (`unavailable/ready_timeout`; a reference cycle across hosts never resolves).\n\t */\n\treadonly readyTimeout: number;\n\tcheckRegistrations(object: ObjectImpl, decls: Decls): void;\n\t/** Rebuilds the current registry tables from live objects (plus `including`, which is finishing activation). */\n\tregistriesChanged(including?: ObjectImpl): void;\n}\n\n// ─── Contexts ────────────────────────────────────────────────────────────────\n\nexport class CtxImpl implements Ctx {\n\treadonly host: HostCore;\n\treadonly signal: AbortSignal;\n\treadonly rootId: string;\n\treadonly codeVersion: number;\n\treadonly principal: unknown;\n\t/** Code holders (tasks): every call they make starts a fresh root. */\n\treadonly holder: boolean;\n\treadonly #refs: RefCore[] = [];\n\treadonly #release: () => void;\n\t/** Aborted when the ctx closes: awaited `get`s give up. */\n\treadonly #closing = new AbortController();\n\t#closed = false;\n\n\t/** True after the call or root that received this ctx settled: it may no longer start work. */\n\tget closed(): boolean {\n\t\treturn this.#closed;\n\t}\n\n\t/** Throws unless this ctx may start work on `host` (the called reference's host) now: not expired, aborted or foreign. */\n\tcheck(host: HostCore | RemoteHost): void {\n\t\tif (this.host !== host) throw invalid(\"foreign_ctx\", \"ctx belongs to another host\");\n\t\tif (this.#closed) throw new ChordError(\"aborted\", \"ctx expired: its call already settled\", { reason: \"expired\" });\n\t\tif (this.signal.aborted) {\n\t\t\tconst reason: unknown = this.signal.reason;\n\t\t\t// A forced retirement aborted the root: its code version is gone, so the next call is `superseded` (retryable).\n\t\t\tif (reason instanceof ChordError && reason.code === \"superseded\")\n\t\t\t\tthrow new ChordError(\"superseded\", reason.message, { cause: reason });\n\t\t\tthrow new ChordError(\"aborted\", \"ctx aborted\", { cause: reason });\n\t\t}\n\t}\n\n\t/** `signals`: the ctx is aborted with the first of them; it stops following them when it closes. */\n\tconstructor(\n\t\thost: HostCore,\n\t\tfields: {\n\t\t\tsignals: readonly AbortSignal[];\n\t\t\trootId: string;\n\t\t\tcodeVersion: number;\n\t\t\tprincipal: unknown;\n\t\t\tholder?: boolean;\n\t\t},\n\t) {\n\t\tthis.host = host;\n\t\tconst linked = linkedSignal(fields.signals);\n\t\tthis.signal = linked.signal;\n\t\tthis.#release = linked.release;\n\t\tthis.rootId = fields.rootId;\n\t\tthis.codeVersion = fields.codeVersion;\n\t\tthis.principal = fields.principal;\n\t\tthis.holder = fields.holder ?? false;\n\t}\n\n\tasync get<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions): Promise<Ref<C>> {\n\t\tthis.check(this.host);\n\t\tconst ref = this.host.acquire(type, input, { principal: this.principal, ...options }, \"call\");\n\t\tthis.#refs.push(ref);\n\t\tawait awaitReady(ref, [this.signal, this.#closing.signal], this.host.readyTimeout);\n\t\treturn ref.proxy as Ref<C>;\n\t}\n\n\t/**\n\t * A context for a call into `object`: same root and code version, its own call-owned references, aborted on forced\n\t * disposal. Code inside an object acts as the host principal.\n\t */\n\tchild(object: ObjectImpl): CtxImpl {\n\t\treturn new CtxImpl(this.host, {\n\t\t\tsignals: [this.signal, object.callAbort.signal],\n\t\t\trootId: this.rootId,\n\t\t\tcodeVersion: this.codeVersion,\n\t\t\tprincipal: this.host.principal,\n\t\t});\n\t}\n\n\tclose(): void {\n\t\tthis.#closed = true;\n\t\tthis.#closing.abort(new ChordError(\"aborted\", \"ctx expired: its call already settled\", { reason: \"expired\" }));\n\t\tthis.#release();\n\t\tfor (const ref of this.#refs.splice(0)) ref.release();\n\t}\n}\n\n/**\n * A signal aborted with the first of `sources` to abort, until `release()`. Not `AbortSignal.any`: Node keeps a\n * dependant of a long-lived source (an object's or a code version's) reachable while it has abort listeners, so every\n * call or task context would keep its listeners, and the code they close over, alive as long as the source.\n */\nexport function linkedSignal(sources: readonly AbortSignal[]): { readonly signal: AbortSignal; release(): void } {\n\tconst controller = new AbortController();\n\tconst detach: (() => void)[] = [];\n\tconst release = (): void => {\n\t\tfor (const remove of detach.splice(0)) remove();\n\t};\n\tfor (const source of sources) {\n\t\tif (source.aborted) {\n\t\t\trelease();\n\t\t\tcontroller.abort(source.reason);\n\t\t\tbreak;\n\t\t}\n\t\tconst forward = (): void => {\n\t\t\trelease();\n\t\t\tcontroller.abort(source.reason);\n\t\t};\n\t\tsource.addEventListener(\"abort\", forward, { once: true });\n\t\tdetach.push(() => source.removeEventListener(\"abort\", forward));\n\t}\n\treturn { signal: controller.signal, release };\n}\n\n/**\n * Waits until `ref` is ready, at most `ms` and until a signal aborts; on failure the reference is released (only it: a\n * binding other references share stays) and the error is rethrown: the activation error, `aborted`, or\n * `unavailable/ready_timeout`.\n */\nexport async function awaitReady(ref: RefCore, signals: readonly AbortSignal[], ms: number): Promise<void> {\n\tconst timeout = new AbortController();\n\tconst timer = Number.isFinite(ms)\n\t\t? setTimeout(\n\t\t\t\t() =>\n\t\t\t\t\ttimeout.abort(\n\t\t\t\t\t\tnew ChordError(\"unavailable\", `${ref.address} was not ready after ${ms} ms`, {\n\t\t\t\t\t\t\treason: \"ready_timeout\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\tms,\n\t\t\t)\n\t\t: undefined;\n\t(timer as { unref?: () => void } | undefined)?.unref?.();\n\tconst linked = linkedSignal([...signals, timeout.signal]);\n\ttry {\n\t\tawait raceSignal(ref.ready, linked.signal);\n\t} catch (error) {\n\t\tref.release();\n\t\tconst reason: unknown = linked.signal.reason;\n\t\tthrow reason instanceof ChordError && reason.reason === \"ready_timeout\" ? reason : error;\n\t} finally {\n\t\tclearTimeout(timer);\n\t\tlinked.release();\n\t}\n}\n\nexport async function raceSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n\tif (signal.aborted) throw new ChordError(\"aborted\", \"call aborted\", { cause: signal.reason });\n\tlet onAbort = noop;\n\tconst aborted = new Promise<never>((_, reject) => {\n\t\tonAbort = () => reject(new ChordError(\"aborted\", \"call aborted\", { cause: signal.reason }));\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n\ttry {\n\t\treturn await Promise.race([promise, aborted]);\n\t} finally {\n\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t}\n}\n\n// ─── References ─────────────────────────────────────────────────────────────────\n\n/** Who a reference belongs to. `connection`: a peer host over a link; `client`: a browser (not a reload participant). */\nexport type RefOwner = \"object\" | \"call\" | \"host\" | \"external\" | \"connection\" | \"client\";\n\n/** A claim on an object: a local `RefImpl`, or a `RemoteRef` on another host (no object here). */\nexport interface RefCore {\n\treadonly address: string;\n\treadonly contract: AnyContract;\n\treadonly status: RefStatus;\n\treadonly ready: Promise<void>;\n\treadonly proxy: object;\n\treadonly object: ObjectImpl | undefined;\n\trelease(): void;\n}\n\nexport const REF_BASE: ReadonlySet<PropertyKey> = new Set([\n\t\"contract\",\n\t\"status\",\n\t\"ready\",\n\t\"variant\",\n\t\"shape\",\n\t\"error\",\n\t\"onShape\",\n\t\"onStatus\",\n\t\"release\",\n]);\n\nexport type StatusListener = (status: RefStatus, error: unknown) => void;\n\n/** Queues a status notification (after the change that caused it is complete, like every publication). */\nexport function notifyStatus(\n\tlisteners: ReadonlySet<StatusListener>,\n\tstatus: RefStatus,\n\terror: unknown,\n\treport: (error: unknown) => void,\n): void {\n\tif (listeners.size === 0) return;\n\tconst current = [...listeners];\n\tenqueue(() => {\n\t\tfor (const listener of current) {\n\t\t\ttry {\n\t\t\t\tlistener(status, error);\n\t\t\t} catch (thrown) {\n\t\t\t\treport(thrown);\n\t\t\t}\n\t\t}\n\t});\n}\n\n/** Proxy → reference, for `deps: [ref]` and links. */\nexport const refsByProxy = new WeakMap<object, RefCore>();\nexport const refOf = (value: unknown): RefCore | undefined =>\n\tvalue !== null && typeof value === \"object\" ? refsByProxy.get(value) : undefined;\n\n/**\n * A reference's state member: a stable readable that follows whatever source the current implementation exposes under\n * that name. Reading throws `not_ready` until the reference is live, `not_in_variant` while the variant lacks the\n * member. A listener added before the member is readable gets its snapshot then. Rebinding (reload, variant) delivers a\n * reset. Upstream is subscribed only while someone listens.\n */\nclass MemberReadable implements Readable<unknown> {\n\treadonly #ref: RefImpl;\n\treadonly #name: string;\n\treadonly #values = new Set<(value: unknown) => void>();\n\treadonly #events = new Set<(event: StateEvent<unknown>) => void>();\n\t/** Event listeners that have not had their snapshot yet (added while the member was not readable). */\n\treadonly #unseen = new Set<(event: StateEvent<unknown>) => void>();\n\t#source: Readable<unknown> | undefined;\n\t#upstream = noop;\n\t/** The value listeners last saw; a first upstream snapshot equal to it is not re-announced. */\n\t#seen: { readonly value: unknown } | undefined;\n\n\tconstructor(ref: RefImpl, name: string) {\n\t\tthis.#ref = ref;\n\t\tthis.#name = name;\n\t}\n\n\tget value(): unknown {\n\t\tconst ref = this.#ref;\n\t\tif (ref.status === \"released\" || ref.status === \"gone\") throw ref.terminalError();\n\t\tif (ref.status !== \"live\") throw notReady(`${ref.address}.${this.#name}`);\n\t\tconst view = ref.currentView();\n\t\tif (view === undefined) throw notReady(`${ref.address}.${this.#name}`);\n\t\tconst source = this.#current();\n\t\tif (source === undefined) {\n\t\t\tthrow new ChordError(\n\t\t\t\t\"not_in_variant\",\n\t\t\t\t`${ref.address}: ${this.#name} is not a state member of variant ${variantOf(view) ?? \"(local)\"}`,\n\t\t\t);\n\t\t}\n\t\treturn source.value;\n\t}\n\n\t/** Not hydrated while the reference is not live, or while its source (a forwarded remote member) is not. */\n\tget [HYDRATION](): Hydration | undefined {\n\t\tconst ref = this.#ref;\n\t\tif (ref.status === \"live\") return hydrationOf(this.#current());\n\t\treturn {\n\t\t\thydrated: false,\n\t\t\twhenHydrated: async () => {\n\t\t\t\tawait ref.ready;\n\t\t\t\tawait hydrationOf(this.#current())?.whenHydrated();\n\t\t\t},\n\t\t};\n\t}\n\n\tsubscribe(listener: (value: unknown) => void): () => void {\n\t\tthis.#values.add(listener);\n\t\tconst source = this.#readable();\n\t\tif (source !== undefined) {\n\t\t\tthis.#seen = { value: source.value };\n\t\t\tthis.#safe(() => listener(source.value));\n\t\t}\n\t\tthis.bind();\n\t\treturn () => this.#remove(this.#values, listener);\n\t}\n\n\tevents(listener: (event: StateEvent<unknown>) => void): () => void {\n\t\tthis.#events.add(listener);\n\t\tconst source = this.#readable();\n\t\tif (source !== undefined) {\n\t\t\tconst value = source.value;\n\t\t\tthis.#seen = { value };\n\t\t\tthis.#safe(() => listener({ type: \"snap\", value }));\n\t\t} else this.#unseen.add(listener);\n\t\tthis.bind();\n\t\treturn () => {\n\t\t\tthis.#unseen.delete(listener);\n\t\t\tthis.#remove(this.#events, listener);\n\t\t};\n\t}\n\n\t/** (Re)subscribes upstream to the current source; a changed source is announced as a reset. */\n\tbind(): void {\n\t\tconst source = this.#values.size + this.#events.size > 0 ? this.#current() : undefined;\n\t\tif (source === this.#source) return;\n\t\tthis.#upstream();\n\t\tthis.#upstream = noop;\n\t\tthis.#source = source;\n\t\tif (source === undefined) return;\n\t\tlet first = true;\n\t\tthis.#upstream = source.events((event) => {\n\t\t\tconst isFirst = first;\n\t\t\tfirst = false;\n\t\t\tif (isFirst && this.#unseen.size === 0 && this.#seen !== undefined && event.value === this.#seen.value) return;\n\t\t\tthis.#seen = { value: event.value };\n\t\t\tconst translated: StateEvent<unknown> = isFirst ? { type: \"reset\", value: event.value } : event;\n\t\t\tconst events = [...this.#events];\n\t\t\tconst values = [...this.#values];\n\t\t\tconst unseen = new Set(this.#unseen);\n\t\t\tthis.#unseen.clear();\n\t\t\t// Queued: a rebind during a commit must not run observers before the commit completes.\n\t\t\tenqueue(() => {\n\t\t\t\tfor (const listener of events) {\n\t\t\t\t\tif (!this.#events.has(listener)) continue;\n\t\t\t\t\tconst delivered: StateEvent<unknown> = unseen.has(listener)\n\t\t\t\t\t\t? { type: \"snap\", value: event.value }\n\t\t\t\t\t\t: translated;\n\t\t\t\t\tthis.#safe(() => listener(delivered));\n\t\t\t\t}\n\t\t\t\tfor (const listener of values) if (this.#values.has(listener)) this.#safe(() => listener(event.value));\n\t\t\t});\n\t\t});\n\t}\n\n\tstop(): void {\n\t\tthis.#values.clear();\n\t\tthis.#events.clear();\n\t\tthis.#unseen.clear();\n\t\tthis.bind();\n\t}\n\n\t#current(): Readable<unknown> | undefined {\n\t\tconst view = this.#ref.currentView();\n\t\tif (view === undefined || !this.#ref.inVariant(view, this.#name)) return undefined;\n\t\tconst value = view[this.#name];\n\t\t// Cells and derivations, or any readable an `accepts` adapter maps them to.\n\t\treturn isSource(value) || isReadableLike(value) ? (value as Readable<unknown>) : undefined;\n\t}\n\n\t/** The current source if its value can be read now (live, in the variant, hydrated). */\n\t#readable(): Readable<unknown> | undefined {\n\t\tconst source = this.#current();\n\t\treturn source === undefined || hydrationOf(source)?.hydrated === false ? undefined : source;\n\t}\n\n\t#remove<T>(set: Set<T>, listener: T): void {\n\t\tset.delete(listener);\n\t\tthis.bind();\n\t}\n\n\t#safe(fn: () => void): void {\n\t\ttry {\n\t\t\tfn();\n\t\t} catch (error) {\n\t\t\tthis.#ref.object.host.report(error);\n\t\t}\n\t}\n}\n\n/** One reference on an object. Exposed through a Proxy so members bind late to the current implementation. */\nexport class RefImpl {\n\treadonly object: ObjectImpl;\n\treadonly contract: AnyContract;\n\treadonly owner: RefOwner;\n\treadonly address: string;\n\treadonly proxy: object;\n\treadonly ready: Promise<void>;\n\tstatus: RefStatus;\n\terror: unknown;\n\treadonly shapeListeners = new Set<(shape: Shape) => void>();\n\t/** Internal: notified when the reference becomes gone (links forward it). */\n\treadonly goneListeners = new Set<(error: unknown) => void>();\n\treadonly readables = new Map<string, MemberReadable>();\n\t/** Weak: a retired code version's service (and the factory code it holds) must not be kept alive by its consumers. */\n\treadonly bindings = new WeakMap<Service, Adapter | undefined>();\n\treadonly views = new WeakMap<Record<string, unknown>, Record<string, unknown>>();\n\treadonly callers = new Map<string, (...given: unknown[]) => Promise<unknown>>();\n\n\tconstructor(object: ObjectImpl, contract: AnyContract, owner: RefOwner) {\n\t\tthis.object = object;\n\t\tthis.contract = contract;\n\t\tthis.owner = owner;\n\t\tthis.address = object.address;\n\t\tthis.status = object.status === \"live\" ? \"live\" : \"loading\";\n\t\tthis.ready = object.ready.then(() => {\n\t\t\tif (this.status === \"gone\") throw this.error;\n\t\t\tif (this.status === \"released\") throw new ChordError(\"released\", `reference ${this.address} released`);\n\t\t});\n\t\tthis.ready.catch(noop);\n\t\tthis.proxy = new Proxy(this, {\n\t\t\tget: (target, property) => {\n\t\t\t\tif (REF_BASE.has(property)) {\n\t\t\t\t\tconst value: unknown = Reflect.get(target, property, target);\n\t\t\t\t\treturn typeof value === \"function\" ? value.bind(target) : value;\n\t\t\t\t}\n\t\t\t\tif (typeof property !== \"string\" || property === \"then\") return undefined;\n\t\t\t\treturn target.member(property);\n\t\t\t},\n\t\t\thas: (target, property) => REF_BASE.has(property) || target.member(String(property)) !== undefined,\n\t\t});\n\t\trefsByProxy.set(this.proxy, this);\n\t}\n\n\tget variant(): string | undefined {\n\t\tconst view = this.currentView();\n\t\treturn view === undefined ? undefined : variantOf(view);\n\t}\n\n\tget shape(): Shape | undefined {\n\t\tconst installed = this.status === \"live\" ? this.object.currentInstalled() : undefined;\n\t\tconst view = installed === undefined ? undefined : this.#safeView(installed);\n\t\tif (installed === undefined || view === undefined) return undefined;\n\t\treturn {\n\t\t\tvariant: variantOf(view),\n\t\t\tmembers: Object.keys(view).filter((key) => key !== \"variant\"),\n\t\t\tcontract: installed.service.contract.fingerprint,\n\t\t};\n\t}\n\n\tonShape(listener: (shape: Shape) => void): () => void {\n\t\tthis.shapeListeners.add(listener);\n\t\treturn () => this.shapeListeners.delete(listener);\n\t}\n\n\tonStatus(listener: StatusListener): () => void {\n\t\tthis.#statusListeners.add(listener);\n\t\treturn () => this.#statusListeners.delete(listener);\n\t}\n\n\treadonly #statusListeners = new Set<StatusListener>();\n\n\t#statusChanged(): void {\n\t\tnotifyStatus(this.#statusListeners, this.status, this.error, (error) => this.object.host.report(error));\n\t}\n\n\trelease(): void {\n\t\tif (this.status === \"released\" || this.status === \"gone\") return;\n\t\tthis.status = \"released\";\n\t\tthis.#stopReadables();\n\t\tthis.#statusChanged();\n\t\tthis.object.release(this);\n\t}\n\n\t// ─── internal ───\n\n\tlive(): void {\n\t\tif (this.status !== \"loading\") return;\n\t\tthis.status = \"live\";\n\t\tthis.#statusChanged();\n\t\tthis.shapeChanged();\n\t}\n\n\tgone(error: unknown): void {\n\t\tif (this.status === \"released\" || this.status === \"gone\") return;\n\t\tthis.status = \"gone\";\n\t\tthis.error = error;\n\t\tthis.#stopReadables();\n\t\tthis.#statusChanged();\n\t\tfor (const listener of [...this.goneListeners]) listener(error);\n\t}\n\n\tshapeChanged(): void {\n\t\tfor (const readable of this.readables.values()) readable.bind();\n\t\tconst shape = this.shape;\n\t\tif (shape === undefined) return;\n\t\tconst listeners = [...this.shapeListeners];\n\t\tenqueue(() => {\n\t\t\tfor (const listener of listeners) {\n\t\t\t\ttry {\n\t\t\t\t\tlistener(shape);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.object.host.report(error);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tterminalError(): unknown {\n\t\treturn this.status === \"gone\" ? this.error : new ChordError(\"released\", `reference ${this.address} released`);\n\t}\n\n\t/** The implementation as this consumer sees it (through an accepts adapter when bound to another version). */\n\tviewOf(installed: Installed): Record<string, unknown> {\n\t\tlet adapter = this.bindings.get(installed.service);\n\t\tif (!this.bindings.has(installed.service)) {\n\t\t\tadapter = bind(installed.service.contract, installed.service.options.accepts, this.contract);\n\t\t\tthis.bindings.set(installed.service, adapter);\n\t\t}\n\t\tif (adapter === undefined) return installed.implementation;\n\t\tlet view = this.views.get(installed.implementation);\n\t\tif (view === undefined) {\n\t\t\tview = adapter(installed.implementation);\n\t\t\tthis.views.set(installed.implementation, view);\n\t\t}\n\t\treturn view;\n\t}\n\n\tcurrentView(): Record<string, unknown> | undefined {\n\t\tif (this.status !== \"live\") return undefined;\n\t\tconst installed = this.object.currentInstalled();\n\t\treturn installed === undefined ? undefined : this.#safeView(installed);\n\t}\n\n\t/** The view, or undefined when this consumer no longer binds (reported; calls reject with the bind error). */\n\t#safeView(installed: Installed): Record<string, unknown> | undefined {\n\t\ttry {\n\t\t\treturn this.viewOf(installed);\n\t\t} catch (error) {\n\t\t\tthis.object.host.report(error);\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tdescribe(variant: string | undefined, member: string): MemberDescription | undefined {\n\t\tconst variants = this.contract.description.variants;\n\t\tif (variant !== undefined) return variants[variant]?.[member];\n\t\tfor (const members of Object.values(variants)) if (members[member] !== undefined) return members[member];\n\t\treturn undefined;\n\t}\n\n\t/** Remote consumers see only the members their contract lists for the current variant. */\n\tinVariant(view: Record<string, unknown>, name: string): boolean {\n\t\treturn this.contract.scope !== \"remote\" || this.describe(variantOf(view), name) !== undefined;\n\t}\n\n\tmember(name: string): unknown {\n\t\tconst declared = this.describe(undefined, name);\n\t\tconst view = this.currentView();\n\t\tconst value = view?.[name];\n\t\tif (declared?.kind === \"method\" || (declared === undefined && typeof value === \"function\")) {\n\t\t\treturn this.caller(name);\n\t\t}\n\t\tif (declared?.kind === \"state\" || (declared === undefined && (isSource(value) || isReadableLike(value)))) {\n\t\t\tlet readable = this.readables.get(name);\n\t\t\tif (readable === undefined) {\n\t\t\t\treadable = new MemberReadable(this, name);\n\t\t\t\tthis.readables.set(name, readable);\n\t\t\t}\n\t\t\treturn readable;\n\t\t}\n\t\tif (view === undefined || !this.inVariant(view, name)) return undefined;\n\t\treturn value instanceof ExposedImpl ? value.resource.value : value;\n\t}\n\n\tcaller(name: string): (...given: unknown[]) => Promise<unknown> {\n\t\tlet caller = this.callers.get(name);\n\t\tif (caller === undefined) {\n\t\t\tconst noArgs = takesNoArgs(this.contract, name);\n\t\t\tcaller = (...given) => {\n\t\t\t\t// A method without arguments is called as `ref.name(ctx)`.\n\t\t\t\tconst [args, ctx] = (noArgs ? [undefined, given[0]] : given) as [unknown, Ctx | undefined];\n\t\t\t\tif (this.object.host.inFactory > 0) {\n\t\t\t\t\tthrow new ChordError(\"not_ready\", `${this.address}.${name} called inside a factory`);\n\t\t\t\t}\n\t\t\t\tif (ctx !== undefined && !(ctx instanceof CtxImpl)) {\n\t\t\t\t\treturn Promise.reject(invalid(\"foreign_ctx\", \"ctx must come from a Chord host\"));\n\t\t\t\t}\n\t\t\t\tif (ctx === undefined || ctx.holder) {\n\t\t\t\t\t// A code holder (task) starts a fresh root per call, cancelled with the holder.\n\t\t\t\t\ttry {\n\t\t\t\t\t\tctx?.check(this.object.host);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t}\n\t\t\t\t\treturn this.object.host.root((root) => this.object.call(this, name, args, root as CtxImpl), {\n\t\t\t\t\t\tsignal: ctx?.signal,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.object.call(this, name, args, ctx);\n\t\t\t};\n\t\t\tthis.callers.set(name, caller);\n\t\t}\n\t\treturn caller;\n\t}\n\n\t#stopReadables(): void {\n\t\tfor (const readable of this.readables.values()) readable.stop();\n\t}\n}\n\nexport const variantOf = (implementation: Record<string, unknown>): string | undefined =>\n\ttypeof implementation.variant === \"string\" ? implementation.variant : undefined;\n\n// ─── Objects ─────────────────────────────────────────────────────────────────\n\nexport type ObjectStatus = \"activating\" | \"live\" | \"failed\" | \"disposing\" | \"disposed\";\n\ninterface Gate {\n\treadonly grandfathered: Set<string>;\n\treadonly queue: { readonly key: string; readonly event: unknown }[];\n\tdrained: () => void;\n}\n\ninterface Subscription {\n\t/** What the listener was declared on: the resource (not its facade), or the source itself. */\n\treadonly origin: unknown;\n\treadonly select: ListenerDecl[\"select\"];\n\tunsubscribe: () => void;\n}\n\n/**\n * Two `select` functions are the same if they are identical or have the same source text: an inline arrow is a new\n * object on every factory run, but its code is what matters. (A select whose implementation depends on captured values\n * that change between runs is not detected; such a listener keeps its old subscription until its source changes.)\n */\nconst sameSelect = (a: ListenerDecl[\"select\"], b: ListenerDecl[\"select\"]): boolean =>\n\ta === b || (a !== undefined && b !== undefined && String(a) === String(b));\n\n/** Listener subscriptions made ahead of a commit: `activate` switches over, `discard` drops them. */\nexport interface StagedListeners {\n\tactivate(): void;\n\tdiscard(): void;\n}\n\ninterface RunningTask {\n\treadonly controller: AbortController;\n\treadonly done: Promise<void>;\n}\n\nexport interface ObjectIdentity {\n\treadonly address: string;\n\treadonly typeName: string;\n\treadonly input: unknown;\n\treadonly principal: unknown;\n\t/** The one object of a `lifetime: \"host\"` type. */\n\treadonly hostLifetime: boolean;\n}\n\nexport class ObjectImpl {\n\treadonly host: HostCore;\n\treadonly address: string;\n\treadonly typeName: string;\n\treadonly input: unknown;\n\treadonly principal: unknown;\n\t/** The one object of a `lifetime: \"host\"` type: only such objects may register. */\n\treadonly hostLifetime: boolean;\n\tstatus: ObjectStatus = \"activating\";\n\tready: Promise<void> = Promise.resolve();\n\tservice: Service | undefined;\n\t/** Calls carrying an older code version are rejected upgrade_conflict (state bump or exclusive resource replaced). */\n\tminCodeVersion = 0;\n\tdecls = new Decls();\n\t/** Declarations of a factory run that has not been installed yet (activation or reload candidate). */\n\treadonly pending = new Set<Decls>();\n\treadonly implementations = new Map<number, Installed>();\n\treadonly refs = new Set<RefImpl>();\n\treadonly leases = new Map<string, number>();\n\treadonly openOrder: ResourceImpl[] = [];\n\treadonly callAbort = new AbortController();\n\treadonly activationAbort = new AbortController();\n\tgate: Gate | undefined;\n\t/** Served only by a running reload's pending code version: listeners, tasks and registrations start at its commit. */\n\tdeferredRuntime = false;\n\treadonly #subscriptions = new Map<string, Subscription>();\n\treadonly #invocations = new Set<Promise<unknown>>();\n\t#tasks = new Map<string, RunningTask>();\n\t/** Aborted task runs that have not finished yet. */\n\treadonly #stopped = new Set<Promise<void>>();\n\t/** Bumped by every start and stop of the tasks: a delayed start that is no longer the latest is dropped. */\n\t#taskRuns = 0;\n\t#linger: ReturnType<typeof setTimeout> | undefined;\n\t#disposal: Promise<void> | undefined;\n\n\tconstructor(host: HostCore, identity: ObjectIdentity) {\n\t\tthis.host = host;\n\t\tthis.address = identity.address;\n\t\tthis.typeName = identity.typeName;\n\t\tthis.input = identity.input;\n\t\tthis.principal = identity.principal;\n\t\tthis.hostLifetime = identity.hostLifetime;\n\t}\n\n\tstart(after: Promise<void> | undefined): void {\n\t\tthis.ready = this.#activate(after).then(\n\t\t\t() => {\n\t\t\t\tfor (const ref of this.refs) ref.live();\n\t\t\t\tthis.#maybeIdle();\n\t\t\t},\n\t\t\t(cause: unknown) => {\n\t\t\t\tif (this.status === \"activating\") this.status = \"failed\";\n\t\t\t\tthis.host.forget(this);\n\t\t\t\t// A ChordError (forbidden, a dependency's error, ...) keeps its code; anything else is `unavailable`.\n\t\t\t\tconst error = asChordError(cause, `activating ${this.address}`);\n\t\t\t\tfor (const ref of this.refs) ref.gone(error);\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t);\n\t\tthis.ready.catch(noop);\n\t}\n\n\t/**\n\t * Activation as one transaction: factory, opens, then a synchronous finalization (registry check and publication,\n\t * implementations, runtime). Every failure, including one during finalization or a release while listeners start,\n\t * unwinds everything this activation did.\n\t */\n\tasync #activate(after: Promise<void> | undefined): Promise<void> {\n\t\tawait after?.catch(noop);\n\t\tconst signal = this.activationAbort.signal;\n\t\tconst abandoned = (): ChordError => new ChordError(\"aborted\", `${this.address} abandoned`);\n\t\tif (signal.aborted) throw abandoned();\n\t\tconst service = this.host.service(this.typeName);\n\t\tif (service === undefined)\n\t\t\tthrow new ChordError(\"unavailable\", `${this.typeName} is not served`, { reason: \"unknown_type\" });\n\t\tthis.service = service;\n\t\tconst run = this.run(service, undefined);\n\t\ttry {\n\t\t\tawait this.open(run.created.resources, run.created.refs, signal);\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tawait this.waitHydrated(run);\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tawait this.initCells(run, signal);\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tthis.host.checkRegistrations(this, run.decls);\n\t\t\tthis.decls = run.decls;\n\t\t\tfor (const [retained, services] of this.host.retainedCodeVersions()) {\n\t\t\t\tif (services.get(this.typeName) === service) {\n\t\t\t\t\tthis.implementations.set(retained, {\n\t\t\t\t\t\tcodeVersion: retained,\n\t\t\t\t\t\tservice,\n\t\t\t\t\t\timplementation: run.implementation,\n\t\t\t\t\t\tdecls: run.decls,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pending = this.host.pendingCodeVersion();\n\t\t\tif (\n\t\t\t\t!this.implementations.has(this.host.currentCodeVersion()) &&\n\t\t\t\t(pending === undefined || !this.implementations.has(pending))\n\t\t\t) {\n\t\t\t\tthrow new ChordError(\"superseded\", `${this.address}: code changed during activation`);\n\t\t\t}\n\t\t\tfor (const derived of run.created.derives) derived.attach();\n\t\t\tthis.refreshSchemas();\n\t\t\t// Served only by a running reload's pending code version: new code must not run (listeners, tasks,\n\t\t\t// registrations) before that reload commits.\n\t\t\tthis.deferredRuntime = !this.implementations.has(this.host.currentCodeVersion());\n\t\t\tif (!this.deferredRuntime) {\n\t\t\t\tif (run.decls.registrations.size > 0) this.host.registriesChanged(this);\n\t\t\t\tthis.startRuntime();\n\t\t\t}\n\t\t\t// A listener starting up may have released the last reference synchronously: no resurrection.\n\t\t\tif (signal.aborted) throw abandoned();\n\t\t\tthis.status = \"live\";\n\t\t} catch (error) {\n\t\t\t// Invocations started during finalization (listener roots) end before their resources close.\n\t\t\tthis.callAbort.abort(error);\n\t\t\tthis.stopListeners();\n\t\t\tthis.stopTasks();\n\t\t\tconst registered = this.decls.registrations.size > 0 && !this.deferredRuntime;\n\t\t\tthis.implementations.clear();\n\t\t\tthis.decls = new Decls();\n\t\t\tif (registered) this.host.registriesChanged();\n\t\t\tawait Promise.allSettled([...this.#invocations, ...this.#stopped]);\n\t\t\tawait this.unwind(run).catch((cleanup: unknown) => this.host.report(cleanup));\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tthis.pending.delete(run.decls);\n\t\t}\n\t}\n\n\t/**\n\t * Runs the factory synchronously. With `previous`, runs in recording mode for a reload prepare. The run's\n\t * declarations stay in `pending` (visible to the cycle check) until the caller installs or discards them.\n\t */\n\trun(service: Service, previous: Decls | undefined): Run {\n\t\tconst self = new SelfImpl(this, previous);\n\t\tconst discard = (run: Run): void => {\n\t\t\tthis.pending.delete(run.decls);\n\t\t\tvoid this.unwind(run).catch((cleanup: unknown) => this.host.report(cleanup));\n\t\t};\n\t\tthis.pending.add(self.run(undefined).decls);\n\t\tthis.host.inFactory++;\n\t\tlet implementation: unknown;\n\t\ttry {\n\t\t\timplementation = service.factory(this.input, this.principal, self);\n\t\t} catch (error) {\n\t\t\tthis.host.inFactory--;\n\t\t\tdiscard(self.run(undefined));\n\t\t\tthrow error;\n\t\t}\n\t\tthis.host.inFactory--;\n\t\tconst run = self.run(implementation);\n\t\ttry {\n\t\t\tif (implementation instanceof Promise)\n\t\t\t\tthrow invalid(\"implementation\", `${this.typeName}: factories must be synchronous`);\n\t\t\tvalidateImplementation(service, run.implementation);\n\t\t} catch (error) {\n\t\t\tdiscard(run);\n\t\t\tthrow error;\n\t\t}\n\t\treturn run;\n\t}\n\n\t/** Opens resources (dependencies first) and waits for references; settles all before failing. */\n\tasync open(resources: readonly ResourceImpl[], refs: readonly RefCore[], signal: AbortSignal): Promise<void> {\n\t\tconst opening = new Map<ResourceImpl, Promise<void>>();\n\t\tconst openOne = (resource: ResourceImpl): Promise<void> => {\n\t\t\tlet promise = opening.get(resource);\n\t\t\tif (promise === undefined) {\n\t\t\t\tpromise = (async () => {\n\t\t\t\t\tawait Promise.all(\n\t\t\t\t\t\tresource.deps.map((dep) =>\n\t\t\t\t\t\t\t!(dep instanceof ResourceImpl) ? dep.ready : resources.includes(dep) ? openOne(dep) : undefined,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tawait resource.open(signal, this.openOrder);\n\t\t\t\t})();\n\t\t\t\topening.set(resource, promise);\n\t\t\t}\n\t\t\treturn promise;\n\t\t};\n\t\tconst ready = this.withinReadyTimeout(Promise.all(refs.map((ref) => ref.ready)), () =>\n\t\t\trefs.filter((ref) => ref.status === \"loading\").map((ref) => ref.address),\n\t\t);\n\t\tconst results = await Promise.allSettled([...resources.map(openOne), ready]);\n\t\tconst failure = results.find((result) => result.status === \"rejected\");\n\t\tif (failure !== undefined) throw failure.reason;\n\t}\n\n\t/**\n\t * Waits until the state sources a run exposes or derives from have their values: a local object goes live only with\n\t * its state, also where it forwards or derives from a remote reference's member.\n\t */\n\tasync waitHydrated(run: Run): Promise<void> {\n\t\tconst exposed = Object.entries(run.implementation ?? {});\n\t\tconst pending = unhydrated([...run.created.derives, ...exposed.map(([, value]) => value)]);\n\t\tif (pending.length === 0) return;\n\t\tawait this.withinReadyTimeout(Promise.all(pending.map((hydration) => hydration.whenHydrated())), () => [\n\t\t\t...exposed\n\t\t\t\t.filter(([, value]) => hydrationOf(value)?.hydrated === false)\n\t\t\t\t.map(([name]) => `${this.address}.${name}`),\n\t\t\t...run.created.derives\n\t\t\t\t.filter((derived) => hydrationOf(derived) !== undefined)\n\t\t\t\t.map((derived) => `derive ${derived.key}`),\n\t\t]);\n\t}\n\n\t/** `work` within the host's `readyTimeout`; a timeout names what is still awaited. */\n\tasync withinReadyTimeout<T>(work: Promise<T>, waiting: () => readonly string[]): Promise<T> {\n\t\tconst ms = this.host.readyTimeout;\n\t\tif (!Number.isFinite(ms)) return work;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst timeout = new Promise<never>((_, reject) => {\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tconst list = waiting();\n\t\t\t\treject(\n\t\t\t\t\tnew ChordError(\n\t\t\t\t\t\t\"unavailable\",\n\t\t\t\t\t\t`${this.address} was not ready after ${ms} ms${list.length === 0 ? \"\" : `, waiting on ${list.join(\", \")}`} (a reference cycle across hosts?)`,\n\t\t\t\t\t\t{ reason: \"ready_timeout\" },\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}, ms);\n\t\t\t(timer as { unref?: () => void }).unref?.();\n\t\t});\n\t\ttimeout.catch(noop);\n\t\ttry {\n\t\t\treturn await Promise.race([work, timeout]);\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t}\n\n\t/**\n\t * Fills the cells `run` created with `init`, each in a root of its own, in parallel; settles all before failing. Runs\n\t * after the run's resources are open and its references live, before anything reads the cells.\n\t */\n\tasync initCells(run: Run, signal: AbortSignal): Promise<void> {\n\t\tif (run.created.inits.length === 0) return;\n\t\tconst results = await Promise.allSettled(\n\t\t\trun.created.inits.map(async ([cell, init]) => {\n\t\t\t\tconst value = await this.host.root((ctx) => init(ctx), { signal });\n\t\t\t\tif (!signal.aborted) cell.initialize(value);\n\t\t\t}),\n\t\t);\n\t\tconst failure = results.find((result) => result.status === \"rejected\");\n\t\tif (failure !== undefined) throw failure.reason;\n\t}\n\n\t/** Undoes the objects a run created: closes its resources (reverse order) and releases its references. */\n\tasync unwind(run: Run): Promise<void> {\n\t\tfor (const derived of run.created.derives) derived.detach();\n\t\tconst resources = [...run.created.resources].sort(\n\t\t\t(a, b) => this.openOrder.indexOf(b) - this.openOrder.indexOf(a),\n\t\t);\n\t\tawait runAll(\n\t\t\t[\n\t\t\t\t...resources.map((resource) => () => resource.close(this.openOrder)),\n\t\t\t\t...run.created.refs.map((ref) => () => ref.release()),\n\t\t\t],\n\t\t\t`${this.address}: cleanup failed`,\n\t\t);\n\t}\n\n\tcurrentInstalled(): Installed | undefined {\n\t\treturn this.implementations.get(this.host.currentCodeVersion()) ?? [...this.implementations.values()].at(-1);\n\t}\n\n\t/** Every state source exposed as a remote state member gets that member's schema (checked per write in dev mode). */\n\trefreshSchemas(): void {\n\t\tconst schemas = new Map<Readable<unknown>, Schema[]>();\n\t\tfor (const installed of this.implementations.values()) {\n\t\t\tfor (const [source, list] of memberSchemas(installed.service, installed.implementation)) {\n\t\t\t\tschemas.set(source, [...(schemas.get(source) ?? []), ...list]);\n\t\t\t}\n\t\t}\n\t\tfor (const decls of this.allDecls()) {\n\t\t\tfor (const source of [...decls.cells.values(), ...decls.derives.values()])\n\t\t\t\tsource.schemas = schemas.get(source) ?? [];\n\t\t}\n\t}\n\n\tallDecls(): Set<Decls> {\n\t\tconst result = new Set<Decls>([this.decls, ...this.pending]);\n\t\tfor (const installed of this.implementations.values()) result.add(installed.decls);\n\t\treturn result;\n\t}\n\n\t// ─── runtime: listeners and tasks of the current declarations ───\n\n\t/** The resource a listener is declared on, or its source itself. */\n\t#origin(decl: ListenerDecl): unknown {\n\t\treturn resourceOf(decl.source) ?? decl.source;\n\t}\n\n\t/** Resolves a listener's subscribable: `select(resource value)`, `select(source)` or the source itself. */\n\t#listenSource(key: string, decl: ListenerDecl): Subscribable<unknown> {\n\t\tconst resource = resourceOf(decl.source);\n\t\tconst value = resource === undefined ? decl.source : resource.value;\n\t\tconst source = (decl.select === undefined ? value : decl.select(value as never)) as Subscribable<unknown>;\n\t\tif (typeof source?.subscribe !== \"function\")\n\t\t\tthrow invalid(\"implementation\", `listener ${key}: source has no subscribe()`);\n\t\treturn source;\n\t}\n\n\t/**\n\t * Subscribes the listeners of `decls` without delivering: events are buffered until `activate`. A listener declared\n\t * on the same resource (or source) with the same `select` keeps its subscription without calling `select` again\n\t * (only its function is swapped, by name), so sources that accept a single subscriber survive reloads. Throws, with\n\t * nothing left subscribed, if any source fails.\n\t */\n\tstageListeners(decls: Decls): StagedListeners {\n\t\ttype Fresh = Subscription & { buffer: unknown[] | undefined; subscribe?: () => void };\n\t\tconst fresh = new Map<string, Fresh>();\n\t\tconst kept = new Set<string>();\n\t\ttry {\n\t\t\tfor (const [key, decl] of decls.listeners) {\n\t\t\t\tconst origin = this.#origin(decl);\n\t\t\t\tconst previous = this.#subscriptions.get(key);\n\t\t\t\tif (previous !== undefined && previous.origin === origin && sameSelect(previous.select, decl.select)) {\n\t\t\t\t\tkept.add(key);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst source = this.#listenSource(key, decl);\n\t\t\t\tconst entry: Fresh = {\n\t\t\t\t\torigin,\n\t\t\t\t\tselect: decl.select,\n\t\t\t\t\tunsubscribe: noop,\n\t\t\t\t\tbuffer: [],\n\t\t\t\t};\n\t\t\t\tfresh.set(key, entry);\n\t\t\t\t// State (a readable) is subscribed when the listener activates: it delivers the value current then, not one\n\t\t\t\t// of the candidate before the commit (a new derivation computes its value at the commit).\n\t\t\t\tif (isSource(source) || isReadableLike(source)) {\n\t\t\t\t\tentry.buffer = undefined;\n\t\t\t\t\tentry.subscribe = () => {\n\t\t\t\t\t\tentry.unsubscribe = source.subscribe((event) => this.#deliver(key, event));\n\t\t\t\t\t};\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tentry.unsubscribe = source.subscribe((event) => {\n\t\t\t\t\tif (entry.buffer !== undefined) entry.buffer.push(event);\n\t\t\t\t\telse this.#deliver(key, event);\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfor (const entry of fresh.values()) entry.unsubscribe();\n\t\t\tthrow error;\n\t\t}\n\t\treturn {\n\t\t\tactivate: () => {\n\t\t\t\tfor (const [key, subscription] of this.#subscriptions) {\n\t\t\t\t\tif (kept.has(key)) continue;\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tthis.#subscriptions.delete(key);\n\t\t\t\t}\n\t\t\t\tfor (const [key, entry] of fresh) {\n\t\t\t\t\tthis.#subscriptions.set(key, entry);\n\t\t\t\t\tentry.subscribe?.();\n\t\t\t\t\tconst buffered = entry.buffer ?? [];\n\t\t\t\t\tentry.buffer = undefined;\n\t\t\t\t\tfor (const event of buffered) this.#deliver(key, event);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdiscard: () => {\n\t\t\t\tfor (const entry of fresh.values()) entry.unsubscribe();\n\t\t\t},\n\t\t};\n\t}\n\n\tstartRuntime(): void {\n\t\tthis.stageListeners(this.decls).activate();\n\t\tthis.startTasks();\n\t}\n\n\t/**\n\t * Starts the tasks of the current declarations. Runs aborted by `stopTasks` (a reload, a gate) may still be finishing:\n\t * their replacements start once they all finished, or after `taskStopDeadline` (reported), so the old and the new run\n\t * of a task never work side by side. A later start or stop, or the object leaving `live`, cancels a delayed start.\n\t */\n\tstartTasks(): void {\n\t\tconst run = ++this.#taskRuns;\n\t\tconst start = (): void => {\n\t\t\tfor (const key of this.decls.tasks.keys()) this.#startTask(key, this.host.currentCodeVersion());\n\t\t};\n\t\tif (this.#stopped.size === 0) {\n\t\t\tstart();\n\t\t\treturn;\n\t\t}\n\t\tconst deadline = this.host.taskStopDeadline;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst late = new Promise<boolean>((resolve) => {\n\t\t\ttimer = setTimeout(() => resolve(true), deadline);\n\t\t});\n\t\tconst stopped = Promise.allSettled([...this.#stopped]).then(() => false);\n\t\tvoid Promise.race([stopped, late]).then((missed) => {\n\t\t\tclearTimeout(timer);\n\t\t\tif (run !== this.#taskRuns || this.status !== \"live\") return;\n\t\t\tif (missed) {\n\t\t\t\tthis.host.report(\n\t\t\t\t\tnew ChordError(\n\t\t\t\t\t\t\"aborted\",\n\t\t\t\t\t\t`${this.address}: aborted tasks still running after ${deadline} ms; starting their replacements anyway`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\tstart();\n\t\t});\n\t}\n\n\tstopListeners(): void {\n\t\tfor (const subscription of this.#subscriptions.values()) subscription.unsubscribe();\n\t\tthis.#subscriptions.clear();\n\t}\n\n\t#startTask(key: string, codeVersion: number): void {\n\t\tconst fn = this.decls.tasks.get(key);\n\t\tif (fn === undefined) return;\n\t\tconst controller = new AbortController();\n\t\tconst ctx = new CtxImpl(this.host, {\n\t\t\tsignals: [controller.signal, this.callAbort.signal],\n\t\t\trootId: `task:${this.address}:${key}`,\n\t\t\tcodeVersion,\n\t\t\tprincipal: this.host.principal,\n\t\t\tholder: true,\n\t\t});\n\t\tconst done = (async () => {\n\t\t\ttry {\n\t\t\t\tawait fn(ctx);\n\t\t\t} catch (error) {\n\t\t\t\tif (!ctx.signal.aborted) this.host.report(error);\n\t\t\t} finally {\n\t\t\t\tctx.close();\n\t\t\t\tif (this.#tasks.get(key)?.controller === controller) this.#tasks.delete(key);\n\t\t\t}\n\t\t})();\n\t\tthis.#tasks.set(key, { controller, done });\n\t}\n\n\t/**\n\t * Aborts running tasks (and cancels a delayed start). Their completion is awaited by the next `startTasks` and at\n\t * disposal; each leaves `#stopped` when it finishes.\n\t */\n\tstopTasks(): void {\n\t\tthis.#taskRuns++;\n\t\tfor (const task of this.#tasks.values()) {\n\t\t\ttask.controller.abort(new ChordError(\"aborted\", \"task stopped\"));\n\t\t\tconst done = task.done;\n\t\t\tthis.#stopped.add(done);\n\t\t\tvoid done.finally(() => this.#stopped.delete(done));\n\t\t}\n\t\tthis.#tasks.clear();\n\t}\n\n\t/**\n\t * Delivers one listener event, in publication order. The invocation is a root that references a lease on this object\n\t * (a reload gate waits for it like for any other root that touched the object), counts as an invocation (disposal\n\t * waits for it) and is cancelled by forced disposal.\n\t */\n\t#deliver(key: string, event: unknown): void {\n\t\tenqueue(() => {\n\t\t\tif (this.gate !== undefined) {\n\t\t\t\tthis.gate.queue.push({ key, event });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst decl = this.decls.listeners.get(key);\n\t\t\tif (decl === undefined || (this.status !== \"live\" && this.status !== \"activating\")) return;\n\t\t\tconst invocation = this.host.root((root) => {\n\t\t\t\tthis.lease(root);\n\t\t\t\tconst child = (root as CtxImpl).child(this);\n\t\t\t\treturn this.#invoke(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait decl.fn(event, child);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tchild.close();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\tinvocation.catch((error: unknown) => this.host.report(error));\n\t\t});\n\t}\n\n\t/** Opens the object's gate and replays queued listener events through the current listeners. */\n\topenGate(): void {\n\t\tconst gate = this.gate;\n\t\tthis.gate = undefined;\n\t\tfor (const { key, event } of gate?.queue ?? []) this.#deliver(key, event);\n\t}\n\n\t// ─── calls ───\n\n\t/** Admission for a call or write carrying `ctx`. */\n\tadmit(ctx: Ctx): void {\n\t\tif (this.host.failed !== undefined) {\n\t\t\tthrow new ChordError(\"unavailable\", `${this.host.name} failed and admits no work`, { reason: \"host_failed\" });\n\t\t}\n\t\tif (!this.host.hasCodeVersion(ctx.codeVersion))\n\t\t\tthrow new ChordError(\"superseded\", `code version ${ctx.codeVersion} is retired`);\n\t\tif (ctx.codeVersion < this.minCodeVersion) {\n\t\t\tthrow new ChordError(\n\t\t\t\t\"upgrade_conflict\",\n\t\t\t\t`${this.address} was upgraded in code version ${this.minCodeVersion}`,\n\t\t\t);\n\t\t}\n\t\tif (this.gate !== undefined && !this.gate.grandfathered.has(ctx.rootId)) {\n\t\t\tthrow new ChordError(\"upgrade_conflict\", `${this.address} is being upgraded`);\n\t\t}\n\t}\n\n\t/** Records that the root of `ctx` touched this object (a reload gate grandfathers it). */\n\tlease(ctx: Ctx): void {\n\t\tif (this.leases.has(ctx.rootId)) return;\n\t\tthis.leases.set(ctx.rootId, ctx.codeVersion);\n\t\tthis.host.touch(ctx.rootId, this);\n\t}\n\n\tguard = (ctx: Ctx): void => {\n\t\tif (this.host.inFactory > 0) throw invalid(\"read_only\", \"cells cannot be written while a factory runs\");\n\t\tif (ctx instanceof CtxImpl) ctx.check(this.host);\n\t\tif (ctx.signal.aborted) throw new ChordError(\"aborted\", \"write with an aborted ctx\");\n\t\tif (this.status === \"disposed\") throw new ChordError(\"gone\", `${this.address} is disposed`);\n\t\tif (ctx.rootId.startsWith(\"task:\")) return;\n\t\tthis.admit(ctx);\n\t};\n\n\tasync call(ref: RefImpl, name: string, args: unknown, ctx: CtxImpl): Promise<unknown> {\n\t\tctx.check(this.host);\n\t\tif (ref.status === \"released\" || ref.status === \"gone\") throw ref.terminalError();\n\t\tif (ref.status === \"loading\") await raceSignal(ref.ready, ctx.signal);\n\t\tif (ref.status !== \"live\" || this.status !== \"live\") {\n\t\t\tthrow ref.status === \"live\"\n\t\t\t\t? new ChordError(\"gone\", `${this.address} is ${this.status}`)\n\t\t\t\t: ref.terminalError();\n\t\t}\n\t\tthis.admit(ctx);\n\t\tconst installed = this.implementations.get(ctx.codeVersion);\n\t\tif (installed === undefined)\n\t\t\tthrow new ChordError(\n\t\t\t\t\"superseded\",\n\t\t\t\t`${this.address} has no implementation for code version ${ctx.codeVersion}`,\n\t\t\t);\n\t\tconst view = ref.viewOf(installed);\n\t\tconst variant = variantOf(view);\n\t\tconst wanted = ref.describe(ref.contract.scope === \"remote\" ? variant : LOCAL_VARIANT, name);\n\t\tconst fn = view[name];\n\t\tif (typeof fn !== \"function\" || (ref.contract.scope === \"remote\" && wanted?.kind !== \"method\")) {\n\t\t\tthrow new ChordError(\n\t\t\t\t\"not_in_variant\",\n\t\t\t\t`${this.address}: ${name} is not a method of variant ${variant ?? \"(local)\"}`,\n\t\t\t);\n\t\t}\n\t\tconst direct = view === installed.implementation;\n\t\tconst schema = direct\n\t\t\t? installed.service.contract.description.variants[variant ?? LOCAL_VARIANT]?.[name]\n\t\t\t: wanted;\n\t\tconst method = schema?.kind === \"method\" ? schema : undefined;\n\t\tconst validated = ref.contract.scope === \"remote\" ? method : undefined;\n\t\t// No arguments: the handler takes only ctx. No result (void): the caller gets undefined, whatever it returned.\n\t\tconst takesArgs = method === undefined || method.args !== undefined;\n\t\tconst returns = method === undefined || method.result !== undefined;\n\t\tlet input: unknown;\n\t\tif (takesArgs) {\n\t\t\t// The additive rule assumes a consumer sends only what its own schema knows, and a provider sees only what its\n\t\t\t// schema knows: strip with both before validating.\n\t\t\tconst own = ref.contract.scope === \"remote\" && wanted?.kind === \"method\" ? wanted.args : undefined;\n\t\t\tconst sent = own === undefined ? args : cleaned(own, args);\n\t\t\tinput = validated?.args ? cleaned(validated.args, sent) : sent;\n\t\t\tif (validated?.args) assertValid(\"args\", `${this.address}.${name} args`, validated.args, input);\n\t\t}\n\t\tthis.lease(ctx);\n\t\tconst child = ctx.child(this);\n\t\tlet result: unknown;\n\t\ttry {\n\t\t\tresult = await this.#invoke(() =>\n\t\t\t\ttakesArgs\n\t\t\t\t\t? (fn as (args: unknown, ctx: Ctx) => unknown)(input, child)\n\t\t\t\t\t: (fn as (ctx: Ctx) => unknown)(child),\n\t\t\t);\n\t\t} finally {\n\t\t\tchild.close();\n\t\t}\n\t\tif (!returns) return undefined;\n\t\tif (validated?.result) assertValid(\"result\", `${this.address}.${name} result`, validated.result, result);\n\t\treturn result;\n\t}\n\n\t/** Runs an invocation (method or listener) that keeps the object alive until it settles. */\n\t#invoke<T>(fn: () => T | Promise<T>): Promise<T> {\n\t\tconst invocation = (async () => fn())();\n\t\tthis.#invocations.add(invocation);\n\t\tconst done = (): void => {\n\t\t\tthis.#invocations.delete(invocation);\n\t\t\tif (this.#invocations.size === 0) this.#maybeIdle();\n\t\t};\n\t\tinvocation.then(done, done);\n\t\treturn invocation;\n\t}\n\n\trootEnded(rootId: string): void {\n\t\tthis.leases.delete(rootId);\n\t\tconst gate = this.gate;\n\t\tif (gate?.grandfathered.delete(rootId) && gate.grandfathered.size === 0) gate.drained();\n\t}\n\n\t// ─── lifetime ───\n\n\taddRef(ref: RefImpl): void {\n\t\tthis.refs.add(ref);\n\t\tif (this.#linger !== undefined) clearTimeout(this.#linger);\n\t\tthis.#linger = undefined;\n\t}\n\n\trelease(ref: RefImpl): void {\n\t\tif (this.refs.delete(ref)) this.#maybeIdle();\n\t}\n\n\t/** No references and no invocations: dispose (after `linger` for a live object). */\n\t#maybeIdle(): void {\n\t\tif (this.refs.size > 0 || this.#invocations.size > 0 || this.#linger !== undefined) return;\n\t\tif (this.status === \"activating\") {\n\t\t\tthis.#background(this.dispose(false));\n\t\t\treturn;\n\t\t}\n\t\tif (this.status !== \"live\") return;\n\t\tconst linger = this.service?.options.linger ?? 0;\n\t\tif (linger <= 0) {\n\t\t\tthis.#background(this.dispose(false));\n\t\t\treturn;\n\t\t}\n\t\tthis.#linger = setTimeout(() => {\n\t\t\tthis.#linger = undefined;\n\t\t\tif (this.refs.size === 0 && this.#invocations.size === 0 && this.status === \"live\") {\n\t\t\t\tthis.#background(this.dispose(false));\n\t\t\t}\n\t\t}, linger);\n\t\tthis.#linger.unref?.();\n\t}\n\n\t#background(disposal: Promise<void>): void {\n\t\tdisposal.catch((error: unknown) => this.host.report(error));\n\t}\n\n\t/**\n\t * Disposes the object. Forced: references become gone at once (new calls are rejected) and running invocations are\n\t * cancelled. Either way, resources close only after every invocation settled.\n\t */\n\tdispose(forced: boolean, reason?: unknown): Promise<void> {\n\t\tthis.#disposal ??= this.#dispose(forced, reason);\n\t\treturn this.#disposal;\n\t}\n\n\tasync #dispose(forced: boolean, reason: unknown): Promise<void> {\n\t\tconst wasActivating = this.status === \"activating\";\n\t\tthis.status = \"disposing\";\n\t\tthis.host.forget(this);\n\t\tif (this.#linger !== undefined) clearTimeout(this.#linger);\n\t\tthis.#linger = undefined;\n\t\tconst error = reason ?? new ChordError(\"gone\", `${this.address} was disposed`);\n\t\tif (forced) {\n\t\t\tfor (const ref of this.refs) ref.gone(error);\n\t\t\tthis.callAbort.abort(error);\n\t\t}\n\t\tthis.activationAbort.abort(error);\n\t\tif (wasActivating) await this.ready.catch(noop);\n\t\tfor (const ref of this.refs) ref.gone(error);\n\t\tconst decls = this.allDecls();\n\t\tthis.stopTasks();\n\t\tthis.stopListeners();\n\t\tawait Promise.allSettled([...this.#invocations]);\n\t\tconst registered = [...decls].some((set) => set.registrations.size > 0) && !this.deferredRuntime;\n\t\tthis.implementations.clear();\n\t\tthis.decls = new Decls();\n\t\tif (registered) this.host.registriesChanged();\n\t\tconst refs = new Set<RefCore>();\n\t\tfor (const set of decls) {\n\t\t\tfor (const derived of set.derives.values()) derived.detach();\n\t\t\tfor (const ref of set.refs.values()) refs.add(ref);\n\t\t}\n\t\ttry {\n\t\t\tawait runAll(\n\t\t\t\t[\n\t\t\t\t\t() => Promise.allSettled([...this.#stopped]),\n\t\t\t\t\t...[...this.openOrder].reverse().map((resource) => () => resource.close(this.openOrder)),\n\t\t\t\t\t...[...refs].map((ref) => () => ref.release()),\n\t\t\t\t],\n\t\t\t\t`${this.address}: disposal failed`,\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.status = \"disposed\";\n\t\t\tthis.host.disposed(this);\n\t\t}\n\t}\n}\n\nconst isReadableLike = (value: unknown): boolean =>\n\tvalue !== null &&\n\ttypeof value === \"object\" &&\n\ttypeof (value as Readable<unknown>).events === \"function\" &&\n\ttypeof (value as Readable<unknown>).subscribe === \"function\";\n\n/** The remote state-member schemas an implementation exposes, by source. */\nexport function memberSchemas(\n\tservice: Service,\n\timplementation: Record<string, unknown>,\n): Map<Readable<unknown>, Schema[]> {\n\tconst schemas = new Map<Readable<unknown>, Schema[]>();\n\tconst contract = service.contract;\n\tif (contract.scope !== \"remote\") return schemas;\n\tconst members = contract.description.variants[variantOf(implementation) ?? \"\"] ?? {};\n\tfor (const [name, description] of Object.entries(members)) {\n\t\tconst source = implementation[name];\n\t\tif (description.kind !== \"state\" || !isSource(source)) continue;\n\t\tschemas.set(source, [...(schemas.get(source) ?? []), description.schema]);\n\t}\n\treturn schemas;\n}\n\nfunction validateImplementation(service: Service, implementation: Record<string, unknown>): void {\n\tconst contract = service.contract;\n\tconst fail = (message: string): never => {\n\t\tthrow invalid(\"implementation\", `${contract.name}: ${message}`);\n\t};\n\tif (implementation === null || typeof implementation !== \"object\") fail(\"factory must return an object\");\n\tlet members: Readonly<Record<string, MemberDescription>>;\n\tif (contract.scope === \"remote\") {\n\t\tconst variant = implementation.variant;\n\t\tif (typeof variant !== \"string\" || contract.description.variants[variant] === undefined)\n\t\t\tfail(`unknown variant ${String(variant)}`);\n\t\tmembers = contract.description.variants[variant as string]!;\n\t\tfor (const key of Object.keys(implementation))\n\t\t\tif (key !== \"variant\" && members[key] === undefined) fail(`${key} is not in variant ${String(variant)}`);\n\t} else {\n\t\tmembers = contract.description.variants[LOCAL_VARIANT] ?? {};\n\t}\n\tfor (const [name, description] of Object.entries(members)) {\n\t\tconst value = implementation[name];\n\t\tif (description.kind === \"method\" && typeof value !== \"function\") fail(`${name} must be a method`);\n\t\tif (description.kind === \"state\" && !isSource(value) && !isReadableLike(value)) {\n\t\t\tfail(`${name} must be a cell, a derivation or a held object's state member`);\n\t\t}\n\t\tif (description.kind === \"opaque\" && value === undefined) fail(`${name} is missing`);\n\t}\n}\n\n// ─── The factory's `self` ────────────────────────────────────────────────────\n\nclass SelfImpl implements Self {\n\treadonly #object: ObjectImpl;\n\treadonly #previous: Decls | undefined;\n\treadonly #decls = new Decls();\n\treadonly #created: Run[\"created\"] = { refs: [], resources: [], derives: [], inits: [] };\n\n\tconstructor(object: ObjectImpl, previous: Decls | undefined) {\n\t\tthis.#object = object;\n\t\tthis.#previous = previous;\n\t}\n\n\trun(implementation: unknown): Run {\n\t\treturn { implementation: implementation as Record<string, unknown>, decls: this.#decls, created: this.#created };\n\t}\n\n\t/** Refuses a second declaration of `name` of one kind in this run (TypeScript cannot see string names). */\n\t#unique(map: ReadonlyMap<string, unknown>, kind: string, name: string): void {\n\t\tif (typeof name !== \"string\" || name === \"\") throw new TypeError(`${kind} needs a name`);\n\t\tif (map.has(name)) throw invalid(\"duplicate\", `${this.#object.typeName}: duplicate ${kind} name ${name}`);\n\t}\n\n\tstate<S extends Schema>(\n\t\tname: string,\n\t\tschema: S,\n\t\tinitial: Static<S> | StateInit<Static<S>>,\n\t\toptions: StateOptions<Static<S>> = {},\n\t): Cell<Static<S>> {\n\t\tthis.#unique(this.#decls.cells, \"state\", name);\n\t\tconst version = options.version ?? 1;\n\t\tif (!Number.isInteger(version) || version < 1)\n\t\t\tthrow new TypeError(`state ${name}: version must be a positive integer`);\n\t\tconst host = this.#object.host;\n\t\t// A JSON value never holds a function: an object with a function `init` is the initializer, not a value.\n\t\tconst init = isStateInit(initial) ? initial.init : undefined;\n\t\tlet cell = this.#previous?.cells.get(name);\n\t\tif (cell === undefined) {\n\t\t\tcell = new Cell<unknown>(\n\t\t\t\tname,\n\t\t\t\tschema,\n\t\t\t\tinit === undefined ? { value: initial } : undefined,\n\t\t\t\tthis.#object.guard,\n\t\t\t\t{\n\t\t\t\t\tdev: host.dev,\n\t\t\t\t\treport: (error) => host.report(error),\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (init !== undefined) this.#created.inits.push([cell, init]);\n\t\t}\n\t\tthis.#decls.cells.set(name, cell);\n\t\tthis.#decls.cellSchemas.set(name, schema);\n\t\tthis.#decls.cellVersions.set(name, version);\n\t\tif (options.migrate !== undefined) this.#decls.cellMigrations.set(name, options.migrate);\n\t\treturn cell as Cell<Static<S>>;\n\t}\n\n\tget<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions): Ref<C> {\n\t\tconst host = this.#object.host;\n\t\t// A prepare rerun (recording mode) binds new references against the reload's pending contracts: a breaking provider\n\t\t// change and its updated consumer reload together.\n\t\tconst candidate = this.#previous !== undefined;\n\t\tconst address = host.addressOf(type, input, options?.principal ?? host.principal, candidate);\n\t\tconst declared = this.#decls.refs.get(address);\n\t\tif (declared !== undefined) {\n\t\t\tif (declared.contract.fingerprint !== type.fingerprint) {\n\t\t\t\tthrow invalid(\"duplicate\", `${this.#object.typeName}: ${type.name} held twice with different contracts`);\n\t\t\t}\n\t\t\treturn declared.proxy as Ref<C>;\n\t\t}\n\t\tconst existing = this.#previous?.refs.get(address);\n\t\tif (\n\t\t\texisting !== undefined &&\n\t\t\texisting.contract.fingerprint === type.fingerprint &&\n\t\t\texisting.status !== \"gone\" &&\n\t\t\texisting.status !== \"released\"\n\t\t) {\n\t\t\tthis.#decls.refs.set(address, existing);\n\t\t\treturn existing.proxy as Ref<C>;\n\t\t}\n\t\tconst ref = host.acquire(type, input, options, \"object\", this.#object, candidate);\n\t\tthis.#decls.refs.set(address, ref);\n\t\tthis.#created.refs.push(ref);\n\t\treturn ref.proxy as Ref<C>;\n\t}\n\n\tresource<T>(name: string, declaration: ResourceDeclaration<T>): Resource<T> {\n\t\tthis.#unique(this.#decls.resources, \"resource\", name);\n\t\tif (!Number.isInteger(declaration.version)) throw new TypeError(`resource ${name}: version must be an integer`);\n\t\tconst deps = (declaration.deps ?? []).map((dep) => {\n\t\t\tconst resolved = refOf(dep) ?? resourceOf(dep);\n\t\t\tif (resolved === undefined) {\n\t\t\t\tthrow new TypeError(`resource ${name}: deps must be references or resources of this object`);\n\t\t\t}\n\t\t\treturn resolved;\n\t\t});\n\t\tconst existing = this.#previous?.resources.get(name);\n\t\tconst kept =\n\t\t\texisting !== undefined &&\n\t\t\texisting.spec.version === declaration.version &&\n\t\t\texisting.exclusive === (declaration.exclusive === true) &&\n\t\t\texisting.deps.length === deps.length &&\n\t\t\texisting.deps.every((dep, index) => dep === deps[index]);\n\t\tconst resource = kept ? existing : new ResourceImpl(name, declaration as ResourceDeclaration<unknown>, deps);\n\t\tif (kept) this.#decls.adopted.set(existing, declaration as ResourceDeclaration<unknown>);\n\t\telse this.#created.resources.push(resource);\n\t\tthis.#decls.resources.set(name, resource);\n\t\treturn new ResourceFacade(resource, this.#object.host) as unknown as Resource<T>;\n\t}\n\n\ton(name: string, source: unknown, ...rest: readonly unknown[]): void {\n\t\tthis.#unique(this.#decls.listeners, \"listener\", name);\n\t\tconst [select, fn] = rest.length === 1 ? [undefined, rest[0]] : [rest[0], rest[1]];\n\t\tif (typeof fn !== \"function\") throw new TypeError(`listener ${name}: the handler must be a function`);\n\t\tif (select !== undefined && typeof select !== \"function\")\n\t\t\tthrow new TypeError(`listener ${name}: select must be a function`);\n\t\tthis.#decls.listeners.set(name, {\n\t\t\tsource,\n\t\t\tselect: select as ListenerDecl[\"select\"],\n\t\t\tfn: fn as ListenerDecl[\"fn\"],\n\t\t});\n\t}\n\n\ttask(fn: (ctx: Ctx) => Promise<void>): void {\n\t\tif (typeof fn !== \"function\") throw new TypeError(\"a task must be a function\");\n\t\tthis.#decls.tasks.set(`#${this.#decls.tasks.size}`, fn);\n\t}\n\n\tderive<const S extends Sources, T>(sources: S, fn: (...values: SourceValues<S>) => T): Readable<T> {\n\t\tif (typeof fn !== \"function\") throw new TypeError(\"a derivation needs a function\");\n\t\tconst host = this.#object.host;\n\t\tconst key = `#${this.#decls.derives.size}`;\n\t\tconst derived = new Derived(key, sources, fn as unknown as (...values: never[]) => unknown, {\n\t\t\tdev: host.dev,\n\t\t\treport: (error) => host.report(error),\n\t\t});\n\t\tthis.#created.derives.push(derived);\n\t\tthis.#decls.derives.set(key, derived);\n\t\treturn derived as unknown as Readable<T>;\n\t}\n\n\texpose<T>(resource: Resource<T>): Exposed<T> {\n\t\tconst resolved = resourceOf(resource);\n\t\tif (resolved === undefined || ![...this.#decls.resources.values()].includes(resolved)) {\n\t\t\tthrow new TypeError(\"expose takes a resource declared by this object\");\n\t\t}\n\t\treturn new ExposedImpl(resolved) as unknown as Exposed<T>;\n\t}\n\n\tregister<V>(registry: Registry<V>, entries: Readonly<Record<string, V>>): void {\n\t\tif (!this.#object.hostLifetime)\n\t\t\tthrow invalid(\"not_host_lifetime\", `${this.#object.typeName}: only objects of lifetime \"host\" may register`);\n\t\tfor (const [key, value] of Object.entries(entries)) {\n\t\t\tconst id = `${registry.name}\\u0000${key}`;\n\t\t\tthis.#unique(this.#decls.registrations, \"register\", id);\n\t\t\tthis.#decls.registrations.set(id, { registry: registry as Registry<unknown>, key, value });\n\t\t}\n\t}\n}\n"]}
|