@earendil-works/chord 1.0.4 → 1.2.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 +20 -0
- package/README.md +77 -194
- package/dist/cell.d.ts +101 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +316 -0
- package/dist/cell.js.map +1 -0
- package/dist/cluster.d.ts +26 -0
- package/dist/cluster.d.ts.map +1 -0
- package/dist/cluster.js +214 -0
- package/dist/cluster.js.map +1 -0
- package/dist/connection.d.ts +157 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +757 -0
- package/dist/connection.js.map +1 -0
- package/dist/context/index.d.ts +12 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js.map +1 -1
- package/dist/contract.d.ts +133 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +157 -0
- package/dist/contract.js.map +1 -0
- package/dist/declare.d.ts +70 -0
- package/dist/declare.d.ts.map +1 -0
- package/dist/declare.js +22 -0
- package/dist/declare.js.map +1 -0
- package/dist/delta/apply-immutable-trusted.js.map +1 -1
- package/dist/delta/diff.d.ts +1 -1
- package/dist/delta/diff.d.ts.map +1 -1
- package/dist/delta/diff.js.map +1 -1
- package/dist/delta/index.d.ts +2 -2
- package/dist/delta/index.d.ts.map +1 -1
- package/dist/delta/index.js +41 -0
- package/dist/delta/index.js.map +1 -1
- package/dist/delta/revision-validator.d.ts +1 -1
- package/dist/delta/revision-validator.d.ts.map +1 -1
- package/dist/delta/revision-validator.js.map +1 -1
- package/dist/delta/tracker.d.ts +1 -1
- package/dist/delta/tracker.d.ts.map +1 -1
- package/dist/delta/tracker.js +40 -4
- package/dist/delta/tracker.js.map +1 -1
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +44 -0
- package/dist/errors.js.map +1 -0
- package/dist/host.d.ts +254 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +795 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +17 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +9 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js.map +1 -1
- package/dist/link.d.ts +72 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +169 -0
- package/dist/link.js.map +1 -0
- package/dist/loader.d.ts +4 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +68 -0
- package/dist/loader.js.map +1 -0
- package/dist/manager.d.ts +115 -0
- package/dist/manager.d.ts.map +1 -0
- package/dist/manager.js +319 -0
- package/dist/manager.js.map +1 -0
- package/dist/node.d.ts +3 -4
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +3 -2
- package/dist/node.js.map +1 -1
- package/dist/publish.d.ts +5 -0
- package/dist/publish.d.ts.map +1 -0
- package/dist/publish.js +40 -0
- package/dist/publish.js.map +1 -0
- package/dist/record.d.ts +320 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +1292 -0
- package/dist/record.js.map +1 -0
- package/dist/registry.d.ts +25 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +6 -0
- package/dist/registry.js.map +1 -0
- package/dist/reload.d.ts +118 -0
- package/dist/reload.d.ts.map +1 -0
- package/dist/reload.js +589 -0
- package/dist/reload.js.map +1 -0
- package/dist/remote.d.ts +70 -0
- package/dist/remote.d.ts.map +1 -0
- package/dist/remote.js +308 -0
- package/dist/remote.js.map +1 -0
- package/dist/schema.d.ts +21 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +228 -0
- package/dist/schema.js.map +1 -0
- package/dist/state.d.ts +92 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/{services/state.js → state.js} +28 -138
- package/dist/state.js.map +1 -0
- package/dist/types.d.ts +62 -262
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/websocket.d.ts +16 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +15 -0
- package/dist/websocket.js.map +1 -0
- package/dist/wire.d.ts +135 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +112 -0
- package/dist/wire.js.map +1 -0
- package/docs/guide.md +750 -0
- package/docs/spec.md +261 -0
- package/docs/tutorial.md +909 -0
- package/package.json +10 -11
- package/src/delta/README.md +5 -3
- package/dist/api.d.ts +0 -20
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -77
- package/dist/api.js.map +0 -1
- package/dist/bundler.d.ts +0 -6
- package/dist/bundler.d.ts.map +0 -1
- package/dist/bundler.js +0 -3
- package/dist/bundler.js.map +0 -1
- package/dist/facets/host.d.ts +0 -12
- package/dist/facets/host.d.ts.map +0 -1
- package/dist/facets/host.js +0 -763
- package/dist/facets/host.js.map +0 -1
- package/dist/facets/loader.d.ts +0 -3
- package/dist/facets/loader.d.ts.map +0 -1
- package/dist/facets/loader.js +0 -5
- package/dist/facets/loader.js.map +0 -1
- package/dist/node/bundle-loader.d.ts +0 -30
- package/dist/node/bundle-loader.d.ts.map +0 -1
- package/dist/node/bundle-loader.js +0 -377
- package/dist/node/bundle-loader.js.map +0 -1
- package/dist/node/bundle.d.ts +0 -26
- package/dist/node/bundle.d.ts.map +0 -1
- package/dist/node/bundle.js +0 -183
- package/dist/node/bundle.js.map +0 -1
- package/dist/node/manifest.d.ts +0 -36
- package/dist/node/manifest.d.ts.map +0 -1
- package/dist/node/manifest.js +0 -6
- package/dist/node/manifest.js.map +0 -1
- package/dist/node/package.d.ts +0 -15
- package/dist/node/package.d.ts.map +0 -1
- package/dist/node/package.js +0 -199
- package/dist/node/package.js.map +0 -1
- package/dist/services/consumer.d.ts +0 -11
- package/dist/services/consumer.d.ts.map +0 -1
- package/dist/services/consumer.js +0 -585
- package/dist/services/consumer.js.map +0 -1
- package/dist/services/errors.d.ts +0 -8
- package/dist/services/errors.d.ts.map +0 -1
- package/dist/services/errors.js +0 -22
- package/dist/services/errors.js.map +0 -1
- package/dist/services/handle.d.ts +0 -15
- package/dist/services/handle.d.ts.map +0 -1
- package/dist/services/handle.js +0 -101
- package/dist/services/handle.js.map +0 -1
- package/dist/services/instances.d.ts +0 -26
- package/dist/services/instances.d.ts.map +0 -1
- package/dist/services/instances.js +0 -140
- package/dist/services/instances.js.map +0 -1
- package/dist/services/loopback.d.ts +0 -5
- package/dist/services/loopback.d.ts.map +0 -1
- package/dist/services/loopback.js +0 -15
- package/dist/services/loopback.js.map +0 -1
- package/dist/services/provider.d.ts +0 -37
- package/dist/services/provider.d.ts.map +0 -1
- package/dist/services/provider.js +0 -521
- package/dist/services/provider.js.map +0 -1
- package/dist/services/state-codec.d.ts +0 -15
- package/dist/services/state-codec.d.ts.map +0 -1
- package/dist/services/state-codec.js +0 -133
- package/dist/services/state-codec.js.map +0 -1
- package/dist/services/state-internals.d.ts +0 -13
- package/dist/services/state-internals.d.ts.map +0 -1
- package/dist/services/state-internals.js +0 -10
- package/dist/services/state-internals.js.map +0 -1
- package/dist/services/state.d.ts +0 -28
- package/dist/services/state.d.ts.map +0 -1
- package/dist/services/state.js.map +0 -1
- package/dist/services/wire.d.ts +0 -63
- package/dist/services/wire.d.ts.map +0 -1
- package/dist/services/wire.js +0 -186
- package/dist/services/wire.js.map +0 -1
package/dist/node.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
1
|
+
/** Node-only parts of Chord: child host processes, their manager, and the facet module loader. */
|
|
2
|
+
export { nodeLoader } from "./loader.js";
|
|
3
|
+
export { childControl, createHostManager, forkDriver, processLock, } from "./manager.js";
|
|
3
4
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAEN,YAAY,EACZ,iBAAiB,EAIjB,UAAU,EAKV,WAAW,GACX,MAAM,cAAc,CAAC","sourcesContent":["/** Node-only parts of Chord: child host processes, their manager, and the facet module loader. */\nexport { nodeLoader } from \"./loader.ts\";\nexport {\n\ttype ControlMessage,\n\tchildControl,\n\tcreateHostManager,\n\ttype Driver,\n\ttype Exit,\n\ttype ForkDriverOptions,\n\tforkDriver,\n\ttype HostManager,\n\ttype HostManagerOptions,\n\ttype Instance,\n\ttype Liveness,\n\tprocessLock,\n} from \"./manager.ts\";\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Runs `task` after everything enqueued before it. Tasks must not throw (report instead). */
|
|
2
|
+
export declare function enqueue(task: () => void): void;
|
|
3
|
+
/** Delivers nothing until `fn` returns, then everything it enqueued, in order. */
|
|
4
|
+
export declare function holdPublications<T>(fn: () => T): T;
|
|
5
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAaA,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAG9C;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQlD"}
|
package/dist/publish.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// One FIFO queue for every observer notification (state events, shape pushes, registry tables, listener
|
|
2
|
+
// invocations).
|
|
3
|
+
//
|
|
4
|
+
// Problem: notifying observers synchronously from inside a write lets a re-entrant write overtake the write being
|
|
5
|
+
// published. Example: subscriber A reacts to n = 1 by writing n = 2; subscriber B then sees 2 before 1.
|
|
6
|
+
// Solution: a publication first adopts every revision it makes (cells and derivations), then enqueues its
|
|
7
|
+
// notifications. Notifications run in enqueue order, so every observer sees revisions in adoption order.
|
|
8
|
+
// `holdPublications` defers delivery until a multi-step change (a reload commit) is complete.
|
|
9
|
+
const queue = [];
|
|
10
|
+
let held = 0;
|
|
11
|
+
let draining = false;
|
|
12
|
+
/** Runs `task` after everything enqueued before it. Tasks must not throw (report instead). */
|
|
13
|
+
export function enqueue(task) {
|
|
14
|
+
queue.push(task);
|
|
15
|
+
drain();
|
|
16
|
+
}
|
|
17
|
+
/** Delivers nothing until `fn` returns, then everything it enqueued, in order. */
|
|
18
|
+
export function holdPublications(fn) {
|
|
19
|
+
held++;
|
|
20
|
+
try {
|
|
21
|
+
return fn();
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
held--;
|
|
25
|
+
drain();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function drain() {
|
|
29
|
+
if (draining || held > 0)
|
|
30
|
+
return;
|
|
31
|
+
draining = true;
|
|
32
|
+
try {
|
|
33
|
+
for (let task = queue.shift(); task !== undefined; task = queue.shift())
|
|
34
|
+
task();
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
draining = false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,gBAAgB;AAChB,EAAE;AACF,kHAAkH;AAClH,wGAAwG;AACxG,0GAA0G;AAC1G,yGAAyG;AACzG,8FAA8F;AAE9F,MAAM,KAAK,GAAmB,EAAE,CAAC;AACjC,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,8FAA8F;AAC9F,MAAM,UAAU,OAAO,CAAC,IAAgB;IACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,EAAE,CAAC;AACT,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAI,EAAW;IAC9C,IAAI,EAAE,CAAC;IACP,IAAI,CAAC;QACJ,OAAO,EAAE,EAAE,CAAC;IACb,CAAC;YAAS,CAAC;QACV,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;IACT,CAAC;AACF,CAAC;AAED,SAAS,KAAK;IACb,IAAI,QAAQ,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO;IACjC,QAAQ,GAAG,IAAI,CAAC;IAChB,IAAI,CAAC;QACJ,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,KAAK,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC;IACjF,CAAC;YAAS,CAAC;QACV,QAAQ,GAAG,KAAK,CAAC;IAClB,CAAC;AACF,CAAC","sourcesContent":["// One FIFO queue for every observer notification (state events, shape pushes, registry tables, listener\n// invocations).\n//\n// Problem: notifying observers synchronously from inside a write lets a re-entrant write overtake the write being\n// published. Example: subscriber A reacts to n = 1 by writing n = 2; subscriber B then sees 2 before 1.\n// Solution: a publication first adopts every revision it makes (cells and derivations), then enqueues its\n// notifications. Notifications run in enqueue order, so every observer sees revisions in adoption order.\n// `holdPublications` defers delivery until a multi-step change (a reload commit) is complete.\n\nconst queue: (() => void)[] = [];\nlet held = 0;\nlet draining = false;\n\n/** Runs `task` after everything enqueued before it. Tasks must not throw (report instead). */\nexport function enqueue(task: () => void): void {\n\tqueue.push(task);\n\tdrain();\n}\n\n/** Delivers nothing until `fn` returns, then everything it enqueued, in order. */\nexport function holdPublications<T>(fn: () => T): T {\n\theld++;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\theld--;\n\t\tdrain();\n\t}\n}\n\nfunction drain(): void {\n\tif (draining || held > 0) return;\n\tdraining = true;\n\ttry {\n\t\tfor (let task = queue.shift(); task !== undefined; task = queue.shift()) task();\n\t} finally {\n\t\tdraining = false;\n\t}\n}\n"]}
|
package/dist/record.d.ts
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import type { TSchema } from "typebox";
|
|
2
|
+
import { Cell, Derived } from "./cell.ts";
|
|
3
|
+
import { type Accepts, type Adapter, type AnyContract, type BehaviorOf, type Handle, type InputOf, type MemberDescription } from "./contract.ts";
|
|
4
|
+
import { type CellDecl, type Cells, type DerivationDecl, type Derivations, type ListenerDecl, type Resource, type ResourceDecl, type ResourceSpec, type Resources } from "./declare.ts";
|
|
5
|
+
import type { Registration, Registry } from "./registry.ts";
|
|
6
|
+
import type { Ctx, Exposed, GetOptions, HandleStatus, Principal, Readable, Shape, StateEvent } from "./types.ts";
|
|
7
|
+
export interface ServeOptions<C extends AnyContract = AnyContract> {
|
|
8
|
+
/**
|
|
9
|
+
* State version: the meaning of the record's cells. At a bump, `migrate[name](old, fromVersion)` maps a cell's value;
|
|
10
|
+
* the record may be several versions behind.
|
|
11
|
+
*/
|
|
12
|
+
readonly state?: {
|
|
13
|
+
readonly version: number;
|
|
14
|
+
readonly migrate?: Readonly<Record<string, (old: unknown, fromVersion: number) => unknown>>;
|
|
15
|
+
};
|
|
16
|
+
/** Milliseconds a record stays alive after its last hold is released. */
|
|
17
|
+
readonly linger?: number;
|
|
18
|
+
/** Host-held record created with this input (true: `{}` normalized). Only eager records may register. */
|
|
19
|
+
readonly eager?: boolean | {
|
|
20
|
+
readonly input: InputOf<C>;
|
|
21
|
+
};
|
|
22
|
+
/** Adapters for consumers built against older contract versions. */
|
|
23
|
+
readonly accepts?: Accepts;
|
|
24
|
+
}
|
|
25
|
+
export type Factory<C extends AnyContract> = (input: InputOf<C>, principal: Principal, self: Self) => BehaviorOf<C>;
|
|
26
|
+
type AnyFactory = (input: unknown, principal: Principal, self: Self) => unknown;
|
|
27
|
+
export interface Service {
|
|
28
|
+
readonly contract: AnyContract;
|
|
29
|
+
readonly factory: AnyFactory;
|
|
30
|
+
readonly options: ServeOptions;
|
|
31
|
+
readonly facet: string;
|
|
32
|
+
readonly stateVersion: number;
|
|
33
|
+
}
|
|
34
|
+
export declare const makeService: <C extends AnyContract>(contract: C, factory: Factory<C>, options: ServeOptions<C>, facet: string) => Service;
|
|
35
|
+
export interface Self {
|
|
36
|
+
/** Cells by name. Existing names keep their cell (and value) across reloads. */
|
|
37
|
+
state<const D extends Readonly<Record<string, CellDecl<unknown>>>>(cells: D): Cells<D>;
|
|
38
|
+
/** A record-owned hold, identified by its address. */
|
|
39
|
+
get<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions): Handle<C>;
|
|
40
|
+
resources<const D extends Readonly<Record<string, ResourceDecl<unknown>>>>(resources: D): Resources<D>;
|
|
41
|
+
listen(listeners: Readonly<Record<string, ListenerDecl>>): void;
|
|
42
|
+
tasks(tasks: Readonly<Record<string, (ctx: Ctx) => Promise<void>>>): void;
|
|
43
|
+
derive<const D extends Readonly<Record<string, DerivationDecl<unknown>>>>(derivations: D): Derivations<D>;
|
|
44
|
+
/** Eager records only. Keys are the registry's own keys. */
|
|
45
|
+
register<V>(registry: Registry<V>, entries: Readonly<Record<string, V>>): void;
|
|
46
|
+
/**
|
|
47
|
+
* A member backed by one of this record's resources, for local contracts: handles read the resource's value once
|
|
48
|
+
* the record is live (`undefined` before). Typically an `opaque` member: `{ harness: self.expose(res.durable) }`.
|
|
49
|
+
*/
|
|
50
|
+
expose<T>(resource: Resource<T>): Exposed<T>;
|
|
51
|
+
}
|
|
52
|
+
export declare class ResourceImpl<T = unknown> implements Resource<T> {
|
|
53
|
+
#private;
|
|
54
|
+
readonly key: string;
|
|
55
|
+
readonly spec: ResourceSpec<T>;
|
|
56
|
+
readonly deps: readonly (Hold | ResourceImpl)[];
|
|
57
|
+
/** `unavailable`: a close/reopen failed during a reload rollback; the value is gone for good. */
|
|
58
|
+
state: "closed" | "opening" | "open" | "unavailable";
|
|
59
|
+
constructor(key: string, spec: ResourceSpec<T>, deps: readonly (Hold | ResourceImpl)[]);
|
|
60
|
+
get value(): T;
|
|
61
|
+
get exclusive(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Opens the resource. An open that completes after `signal` aborted (rollback, abandonment) closes the value it
|
|
64
|
+
* produced at once: nobody owns it any more.
|
|
65
|
+
*/
|
|
66
|
+
open(signal: AbortSignal, order: ResourceImpl[]): Promise<void>;
|
|
67
|
+
close(order: ResourceImpl[]): Promise<void>;
|
|
68
|
+
markUnavailable(): void;
|
|
69
|
+
}
|
|
70
|
+
type TaskFn = (ctx: Ctx) => Promise<void>;
|
|
71
|
+
/** Everything one factory run declared, by kind and key. */
|
|
72
|
+
export declare class Decls {
|
|
73
|
+
readonly cells: Map<string, Cell<unknown>>;
|
|
74
|
+
readonly cellSchemas: Map<string, TSchema>;
|
|
75
|
+
readonly holds: Map<string, Hold>;
|
|
76
|
+
readonly resources: Map<string, ResourceImpl<unknown>>;
|
|
77
|
+
readonly listeners: Map<string, ListenerDecl>;
|
|
78
|
+
readonly tasks: Map<string, TaskFn>;
|
|
79
|
+
readonly derives: Map<string, Derived<unknown>>;
|
|
80
|
+
readonly deriveFns: Map<string, (...values: never[]) => unknown>;
|
|
81
|
+
readonly registrations: Map<string, Registration>;
|
|
82
|
+
}
|
|
83
|
+
/** One factory run: its behavior, declarations and the objects it created (not reused from the previous run). */
|
|
84
|
+
export interface Run {
|
|
85
|
+
readonly behavior: Record<string, unknown>;
|
|
86
|
+
readonly decls: Decls;
|
|
87
|
+
readonly created: {
|
|
88
|
+
readonly holds: Hold[];
|
|
89
|
+
readonly resources: ResourceImpl[];
|
|
90
|
+
readonly derives: Derived<unknown>[];
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export interface Installed {
|
|
94
|
+
readonly epoch: number;
|
|
95
|
+
readonly service: Service;
|
|
96
|
+
readonly behavior: Record<string, unknown>;
|
|
97
|
+
readonly decls: Decls;
|
|
98
|
+
}
|
|
99
|
+
export interface HostCore {
|
|
100
|
+
readonly name: string;
|
|
101
|
+
readonly dev: boolean;
|
|
102
|
+
readonly principal: Principal;
|
|
103
|
+
inFactory: number;
|
|
104
|
+
/** Set when a commit failed midway: the host admits no more work (terminal). */
|
|
105
|
+
readonly failed: unknown;
|
|
106
|
+
report(error: unknown): void;
|
|
107
|
+
currentEpoch(): number;
|
|
108
|
+
hasEpoch(epoch: number): boolean;
|
|
109
|
+
retainedEpochs(): Iterable<readonly [number, ReadonlyMap<string, Service>]>;
|
|
110
|
+
pendingEpoch(): number | undefined;
|
|
111
|
+
service(typeName: string): Service | undefined;
|
|
112
|
+
acquire(type: AnyContract, input: unknown, options: GetOptions | undefined, owner: HoldOwner, from?: RecordImpl, candidate?: boolean): Hold;
|
|
113
|
+
addressOf(type: AnyContract, input: unknown, principal: Principal, at?: string, candidate?: boolean): string;
|
|
114
|
+
root<T>(fn: (ctx: Ctx) => T | Promise<T>, options?: {
|
|
115
|
+
epoch?: number;
|
|
116
|
+
signal?: AbortSignal;
|
|
117
|
+
}): Promise<T>;
|
|
118
|
+
touch(rootId: string, record: RecordImpl): void;
|
|
119
|
+
forget(record: RecordImpl): void;
|
|
120
|
+
checkRegistrations(record: RecordImpl, decls: Decls): void;
|
|
121
|
+
/** Rebuilds the current registry tables from live records (plus `including`, which is finishing activation). */
|
|
122
|
+
registriesChanged(including?: RecordImpl): void;
|
|
123
|
+
}
|
|
124
|
+
export declare class CtxImpl implements Ctx {
|
|
125
|
+
#private;
|
|
126
|
+
readonly host: HostCore;
|
|
127
|
+
readonly signal: AbortSignal;
|
|
128
|
+
readonly rootId: string;
|
|
129
|
+
readonly epoch: number;
|
|
130
|
+
readonly principal: Principal;
|
|
131
|
+
/** Code holders (tasks): every call they make starts a fresh root. */
|
|
132
|
+
readonly holder: boolean;
|
|
133
|
+
/** True after the call or root that received this ctx settled: it may no longer start work. */
|
|
134
|
+
get closed(): boolean;
|
|
135
|
+
/** Throws unless this ctx may start work on `host` now (not expired, not aborted, not from another host). */
|
|
136
|
+
check(host: HostCore): void;
|
|
137
|
+
constructor(host: HostCore, fields: {
|
|
138
|
+
signal: AbortSignal;
|
|
139
|
+
rootId: string;
|
|
140
|
+
epoch: number;
|
|
141
|
+
principal: Principal;
|
|
142
|
+
holder?: boolean;
|
|
143
|
+
});
|
|
144
|
+
get<C extends AnyContract>(type: C, input: InputOf<C>, options?: GetOptions): Handle<C>;
|
|
145
|
+
/**
|
|
146
|
+
* A context for a call into `record`: same root and epoch, its own call-owned holds, aborted on forced disposal.
|
|
147
|
+
* Code inside an object acts as the host principal.
|
|
148
|
+
*/
|
|
149
|
+
child(record: RecordImpl): CtxImpl;
|
|
150
|
+
close(): void;
|
|
151
|
+
}
|
|
152
|
+
export declare function raceSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T>;
|
|
153
|
+
/** Who a hold belongs to. `connection`: a peer host over a link; `client`: a browser (not a reload participant). */
|
|
154
|
+
export type HoldOwner = "record" | "call" | "host" | "external" | "connection" | "client";
|
|
155
|
+
/** A claim on an object: a local `HandleImpl`, or a `RemoteHandle` on another host (no record here). */
|
|
156
|
+
export interface Hold {
|
|
157
|
+
readonly address: string;
|
|
158
|
+
readonly contract: AnyContract;
|
|
159
|
+
readonly status: HandleStatus;
|
|
160
|
+
readonly ready: Promise<void>;
|
|
161
|
+
readonly proxy: object;
|
|
162
|
+
readonly record: RecordImpl | undefined;
|
|
163
|
+
release(): void;
|
|
164
|
+
}
|
|
165
|
+
export declare const HANDLE_BASE: ReadonlySet<PropertyKey>;
|
|
166
|
+
export type StatusListener = (status: HandleStatus, error: unknown) => void;
|
|
167
|
+
/** Queues a status notification (after the change that caused it is complete, like every publication). */
|
|
168
|
+
export declare function notifyStatus(listeners: ReadonlySet<StatusListener>, status: HandleStatus, error: unknown, report: (error: unknown) => void): void;
|
|
169
|
+
/** Proxy → hold, for `deps: [handle]` and links. */
|
|
170
|
+
export declare const holdsByProxy: WeakMap<object, Hold>;
|
|
171
|
+
export declare const handleOf: (value: unknown) => Hold | undefined;
|
|
172
|
+
/**
|
|
173
|
+
* A handle's state member: a stable readable that follows whatever source the current behavior exposes under that
|
|
174
|
+
* name. `undefined` until the handle is live (or while the variant lacks the member). Rebinding (reload, variant)
|
|
175
|
+
* delivers a reset. Upstream is subscribed only while someone listens.
|
|
176
|
+
*/
|
|
177
|
+
declare class MemberReadable implements Readable<unknown> {
|
|
178
|
+
#private;
|
|
179
|
+
constructor(handle: HandleImpl, name: string);
|
|
180
|
+
get value(): unknown;
|
|
181
|
+
subscribe(listener: (value: unknown) => void): () => void;
|
|
182
|
+
events(listener: (event: StateEvent<unknown>) => void): () => void;
|
|
183
|
+
/** (Re)subscribes upstream to the current source; a changed source is announced as a reset. */
|
|
184
|
+
bind(): void;
|
|
185
|
+
stop(): void;
|
|
186
|
+
}
|
|
187
|
+
/** One hold on a record. Exposed through a Proxy so members bind late to the current behavior. */
|
|
188
|
+
export declare class HandleImpl {
|
|
189
|
+
#private;
|
|
190
|
+
readonly record: RecordImpl;
|
|
191
|
+
readonly contract: AnyContract;
|
|
192
|
+
readonly owner: HoldOwner;
|
|
193
|
+
readonly address: string;
|
|
194
|
+
readonly proxy: object;
|
|
195
|
+
readonly ready: Promise<void>;
|
|
196
|
+
status: HandleStatus;
|
|
197
|
+
error: unknown;
|
|
198
|
+
readonly shapeListeners: Set<(shape: Shape) => void>;
|
|
199
|
+
/** Internal: notified when the handle becomes gone (links forward it). */
|
|
200
|
+
readonly goneListeners: Set<(error: unknown) => void>;
|
|
201
|
+
readonly readables: Map<string, MemberReadable>;
|
|
202
|
+
readonly bindings: Map<Service, Adapter | undefined>;
|
|
203
|
+
readonly views: WeakMap<Record<string, unknown>, Record<string, unknown>>;
|
|
204
|
+
readonly callers: Map<string, (args: unknown, ctx?: Ctx) => Promise<unknown>>;
|
|
205
|
+
constructor(record: RecordImpl, contract: AnyContract, owner: HoldOwner);
|
|
206
|
+
get kind(): string | undefined;
|
|
207
|
+
get shape(): Shape | undefined;
|
|
208
|
+
onShape(listener: (shape: Shape) => void): () => void;
|
|
209
|
+
onStatus(listener: StatusListener): () => void;
|
|
210
|
+
release(): void;
|
|
211
|
+
live(): void;
|
|
212
|
+
gone(error: unknown): void;
|
|
213
|
+
shapeChanged(): void;
|
|
214
|
+
terminalError(): unknown;
|
|
215
|
+
/** The behavior as this consumer sees it (through an accepts adapter when bound to another version). */
|
|
216
|
+
viewOf(installed: Installed): Record<string, unknown>;
|
|
217
|
+
currentView(): Record<string, unknown> | undefined;
|
|
218
|
+
describe(kind: string | undefined, member: string): MemberDescription | undefined;
|
|
219
|
+
/** Remote consumers see only the members their contract lists for the current variant. */
|
|
220
|
+
inVariant(view: Record<string, unknown>, name: string): boolean;
|
|
221
|
+
member(name: string): unknown;
|
|
222
|
+
caller(name: string): (args: unknown, ctx?: Ctx) => Promise<unknown>;
|
|
223
|
+
}
|
|
224
|
+
export declare const kindOf: (behavior: Record<string, unknown>) => string | undefined;
|
|
225
|
+
export type RecordStatus = "activating" | "live" | "failed" | "disposing" | "disposed";
|
|
226
|
+
interface Gate {
|
|
227
|
+
readonly grandfathered: Set<string>;
|
|
228
|
+
readonly queue: {
|
|
229
|
+
readonly key: string;
|
|
230
|
+
readonly event: unknown;
|
|
231
|
+
}[];
|
|
232
|
+
drained: () => void;
|
|
233
|
+
}
|
|
234
|
+
/** Listener subscriptions made ahead of a commit: `activate` switches over, `discard` drops them. */
|
|
235
|
+
export interface StagedListeners {
|
|
236
|
+
activate(): void;
|
|
237
|
+
discard(): void;
|
|
238
|
+
}
|
|
239
|
+
export interface RecordIdentity {
|
|
240
|
+
readonly address: string;
|
|
241
|
+
readonly typeName: string;
|
|
242
|
+
readonly input: unknown;
|
|
243
|
+
readonly principal: Principal;
|
|
244
|
+
readonly eager: boolean;
|
|
245
|
+
}
|
|
246
|
+
export declare class RecordImpl {
|
|
247
|
+
#private;
|
|
248
|
+
readonly host: HostCore;
|
|
249
|
+
readonly address: string;
|
|
250
|
+
readonly typeName: string;
|
|
251
|
+
readonly input: unknown;
|
|
252
|
+
readonly principal: Principal;
|
|
253
|
+
readonly eager: boolean;
|
|
254
|
+
status: RecordStatus;
|
|
255
|
+
ready: Promise<void>;
|
|
256
|
+
service: Service | undefined;
|
|
257
|
+
stateVersion: number;
|
|
258
|
+
/** Calls carrying an older epoch are rejected upgrade_conflict (state bump or exclusive resource replaced). */
|
|
259
|
+
minEpoch: number;
|
|
260
|
+
decls: Decls;
|
|
261
|
+
/** Declarations of a factory run that has not been installed yet (activation or reload candidate). */
|
|
262
|
+
readonly pending: Set<Decls>;
|
|
263
|
+
readonly behaviors: Map<number, Installed>;
|
|
264
|
+
readonly holds: Set<HandleImpl>;
|
|
265
|
+
readonly leases: Map<string, number>;
|
|
266
|
+
readonly openOrder: ResourceImpl[];
|
|
267
|
+
readonly callAbort: AbortController;
|
|
268
|
+
readonly activationAbort: AbortController;
|
|
269
|
+
gate: Gate | undefined;
|
|
270
|
+
/** Served only by a running reload's pending epoch: listeners, tasks and registrations start at its commit. */
|
|
271
|
+
deferredRuntime: boolean;
|
|
272
|
+
constructor(host: HostCore, identity: RecordIdentity);
|
|
273
|
+
start(after: Promise<void> | undefined): void;
|
|
274
|
+
/**
|
|
275
|
+
* Runs the factory synchronously. With `previous`, runs in recording mode for a reload prepare. The run's
|
|
276
|
+
* declarations stay in `pending` (visible to the cycle check) until the caller installs or discards them.
|
|
277
|
+
*/
|
|
278
|
+
run(service: Service, previous: Decls | undefined): Run;
|
|
279
|
+
/** Opens resources (dependencies first) and waits for holds; settles all before failing. */
|
|
280
|
+
open(resources: readonly ResourceImpl[], holds: readonly Hold[], signal: AbortSignal): Promise<void>;
|
|
281
|
+
/** Undoes the objects a run created: closes its resources (reverse order) and releases its holds. */
|
|
282
|
+
unwind(run: Run): Promise<void>;
|
|
283
|
+
currentInstalled(): Installed | undefined;
|
|
284
|
+
/** Every state source exposed as a remote state member gets that member's schema (checked per write in dev mode). */
|
|
285
|
+
refreshSchemas(): void;
|
|
286
|
+
allDecls(): Set<Decls>;
|
|
287
|
+
/**
|
|
288
|
+
* Subscribes the listeners of `decls` without delivering: events are buffered until `activate`. A listener declared
|
|
289
|
+
* on the same resource (or source) with the same `select` keeps its subscription without calling `select` again
|
|
290
|
+
* (only its function is swapped, by name), so sources that accept a single subscriber survive reloads. Throws, with
|
|
291
|
+
* nothing left subscribed, if any source fails.
|
|
292
|
+
*/
|
|
293
|
+
stageListeners(decls: Decls): StagedListeners;
|
|
294
|
+
startRuntime(): void;
|
|
295
|
+
startTasks(): void;
|
|
296
|
+
stopListeners(): void;
|
|
297
|
+
startTask(key: string, epoch: number): void;
|
|
298
|
+
/** Aborts running tasks; their completion is awaited at disposal. */
|
|
299
|
+
stopTasks(): void;
|
|
300
|
+
/** Opens the record's gate and replays queued listener events through the current listeners. */
|
|
301
|
+
openGate(): void;
|
|
302
|
+
/** Admission for a call or write carrying `ctx`. */
|
|
303
|
+
admit(ctx: Ctx): void;
|
|
304
|
+
/** Records that the root of `ctx` touched this record (a reload gate grandfathers it). */
|
|
305
|
+
lease(ctx: Ctx): void;
|
|
306
|
+
guard: (ctx: Ctx) => void;
|
|
307
|
+
call(handle: HandleImpl, name: string, args: unknown, ctx: CtxImpl): Promise<unknown>;
|
|
308
|
+
rootEnded(rootId: string): void;
|
|
309
|
+
addHold(handle: HandleImpl): void;
|
|
310
|
+
release(handle: HandleImpl): void;
|
|
311
|
+
/**
|
|
312
|
+
* Disposes the record. Forced: handles become gone at once (new calls are rejected) and running invocations are
|
|
313
|
+
* cancelled. Either way, resources close only after every invocation settled.
|
|
314
|
+
*/
|
|
315
|
+
dispose(forced: boolean, reason?: unknown): Promise<void>;
|
|
316
|
+
}
|
|
317
|
+
/** The remote state-member schemas a behavior exposes, by source. */
|
|
318
|
+
export declare function memberSchemas(service: Service, behavior: Record<string, unknown>): Map<Readable<unknown>, TSchema[]>;
|
|
319
|
+
export {};
|
|
320
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|