octane 0.2.11 → 0.2.13
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/README.md +5 -0
- package/dist/behavior-root.d.ts +13 -3
- package/dist/behavior-root.js +28 -5
- package/dist/cjs/behavior-root.cjs +32 -6
- package/dist/cjs/class-names.cjs +49 -0
- package/dist/cjs/constants.cjs +9 -0
- package/dist/cjs/context-epoch.cjs +38 -0
- package/dist/cjs/css.cjs +6 -27
- package/dist/cjs/data-encoding.cjs +160 -0
- package/dist/cjs/dom-binding-handoff.cjs +93 -0
- package/dist/cjs/dom-binding-protocol.cjs +115 -0
- package/dist/cjs/dom-binding-styles.cjs +292 -0
- package/dist/cjs/dom-bindings.cjs +700 -0
- package/dist/cjs/dom-focused-move.cjs +66 -0
- package/dist/cjs/dom-stage.cjs +896 -0
- package/dist/cjs/dom-tables.cjs +4 -94
- package/dist/cjs/error-codes.client.generated.cjs +33 -0
- package/dist/cjs/error-codes.server.generated.cjs +24 -0
- package/dist/cjs/hydration/control-capture.cjs +244 -0
- package/dist/cjs/hydration/event-capture.cjs +125 -43
- package/dist/cjs/hydration/interaction-config.cjs +50 -2
- package/dist/cjs/hydration-markers.cjs +37 -0
- package/dist/cjs/independent-hydration-protocol.cjs +106 -0
- package/dist/cjs/index.cjs +9 -0
- package/dist/cjs/runtime.cjs +6397 -1683
- package/dist/cjs/runtime.server.cjs +1465 -213
- package/dist/cjs/server/early-signals.cjs +45 -0
- package/dist/cjs/server/index.cjs +47 -0
- package/dist/cjs/server/rpc-batch.cjs +149 -0
- package/dist/cjs/server/rpc-stream.cjs +146 -0
- package/dist/cjs/server/rpc.cjs +34 -15
- package/dist/cjs/server/signal-query-observation.cjs +158 -0
- package/dist/cjs/server/streamed-region.cjs +52 -0
- package/dist/cjs/server/streamed-signals.cjs +512 -0
- package/dist/cjs/server-call.cjs +103 -0
- package/dist/cjs/server-rpc-batch-client.cjs +141 -0
- package/dist/cjs/server-rpc-client.cjs +94 -27
- package/dist/cjs/server-rpc-protocol.cjs +141 -0
- package/dist/cjs/server-rpc-stream-client.cjs +118 -0
- package/dist/cjs/signals/actions.cjs +474 -0
- package/dist/cjs/signals/client.cjs +4 -1
- package/dist/cjs/signals/computations.cjs +460 -0
- package/dist/cjs/signals/control-binding.cjs +368 -0
- package/dist/cjs/signals/derived-facade.cjs +50 -0
- package/dist/cjs/signals/document-owner.cjs +71 -0
- package/dist/cjs/signals/early-values.cjs +155 -0
- package/dist/cjs/signals/encoding.cjs +6 -95
- package/dist/cjs/signals/engine.cjs +276 -12
- package/dist/cjs/signals/errors.cjs +18 -0
- package/dist/cjs/signals/facade.cjs +477 -0
- package/dist/cjs/signals/graph.cjs +166 -20
- package/dist/cjs/signals/handle-protocol.cjs +36 -0
- package/dist/cjs/signals/index.cjs +81 -2
- package/dist/cjs/signals/native-read-client.cjs +10 -0
- package/dist/cjs/signals/owner-context.cjs +112 -0
- package/dist/cjs/signals/query-attempt-observer.cjs +68 -0
- package/dist/cjs/signals/query-facade.cjs +72 -0
- package/dist/cjs/signals/read-protocol.cjs +54 -0
- package/dist/cjs/signals/requests.cjs +287 -14
- package/dist/cjs/signals/scalar-computations.cjs +76 -0
- package/dist/cjs/signals/server.cjs +4 -1
- package/dist/cjs/signals/transition-candidate.cjs +567 -0
- package/dist/cjs/signals/transition-state.cjs +106 -0
- package/dist/cjs/signals/types.cjs +50 -0
- package/dist/cjs/stream-protocol.cjs +3 -0
- package/dist/cjs/streamed-signals-protocol.cjs +159 -0
- package/dist/cjs/style-values.cjs +122 -0
- package/dist/cjs/trusted-html.cjs +30 -0
- package/dist/cjs/version.cjs +1 -1
- package/dist/class-names.d.ts +5 -0
- package/dist/class-names.js +25 -0
- package/dist/compiler/bundler.js +51 -22
- package/dist/compiler/compile.js +2534 -581
- package/dist/compiler/dom-binding-program.js +935 -0
- package/dist/compiler/dom-binding-request.js +57 -0
- package/dist/compiler/dom-bindings.js +2245 -0
- package/dist/compiler/hook-deps.js +759 -10
- package/dist/compiler/hydrate-boundaries.js +358 -15
- package/dist/compiler/index.d.ts +39 -2
- package/dist/compiler/index.js +1 -0
- package/dist/compiler/native-attribute-reads.js +127 -0
- package/dist/compiler/native-change-diagnostics.js +32 -38
- package/dist/compiler/native-read-diagnostics.js +69 -8
- package/dist/compiler/native-read-types.js +80 -34
- package/dist/compiler/parser.node.js +1 -1
- package/dist/compiler/renderer-boundaries.js +40 -0
- package/dist/compiler/server-context.js +118 -0
- package/dist/compiler/signal-attempt-reads.js +479 -0
- package/dist/compiler/signal-declarations.js +557 -0
- package/dist/compiler/signal-start-reads.js +413 -0
- package/dist/compiler/slot-hooks.d.ts +3 -1
- package/dist/compiler/slot-hooks.js +168 -34
- package/dist/compiler/strong-auto-memo.js +90 -0
- package/dist/compiler/strong-html.js +143 -0
- package/dist/compiler/strong-mode.js +764 -66
- package/dist/compiler/strong-template-policy.js +307 -0
- package/dist/compiler/template-ir.js +200 -0
- package/dist/compiler/typescript.d.ts +2 -0
- package/dist/compiler/typescript.js +2 -0
- package/dist/compiler/vite.d.ts +3 -1
- package/dist/compiler/vite.js +122 -4
- package/dist/compiler/volar.LICENSES.txt +1 -1
- package/dist/compiler/volar.d.ts +6 -1
- package/dist/compiler/volar.js +750 -1433
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +10 -0
- package/dist/context-epoch.d.ts +2 -0
- package/dist/context-epoch.js +13 -0
- package/dist/css.d.ts +2 -5
- package/dist/css.js +2 -23
- package/dist/data-encoding.d.ts +9 -0
- package/dist/data-encoding.js +134 -0
- package/dist/dom-binding-classes.d.ts +15 -0
- package/dist/dom-binding-classes.js +129 -0
- package/dist/dom-binding-controls.d.ts +2 -0
- package/dist/dom-binding-controls.js +6 -0
- package/dist/dom-binding-handoff.d.ts +55 -0
- package/dist/dom-binding-handoff.js +62 -0
- package/dist/dom-binding-program.d.ts +300 -0
- package/dist/dom-binding-program.js +1625 -0
- package/dist/dom-binding-projections.d.ts +15 -0
- package/dist/dom-binding-projections.js +187 -0
- package/dist/dom-binding-protocol.d.ts +13 -0
- package/dist/dom-binding-protocol.js +88 -0
- package/dist/dom-binding-signals.d.ts +21 -0
- package/dist/dom-binding-signals.js +109 -0
- package/dist/dom-binding-styles.d.ts +17 -0
- package/dist/dom-binding-styles.js +272 -0
- package/dist/dom-bindings.d.ts +89 -0
- package/dist/dom-bindings.js +670 -0
- package/dist/dom-focused-move.d.ts +6 -0
- package/dist/dom-focused-move.js +42 -0
- package/dist/dom-stage.d.ts +52 -0
- package/dist/dom-stage.js +872 -0
- package/dist/dom-tables.d.ts +1 -3
- package/dist/dom-tables.js +1 -91
- package/dist/error-codes.client.generated.d.ts +9 -0
- package/dist/error-codes.client.generated.js +33 -0
- package/dist/error-codes.server.generated.d.ts +6 -0
- package/dist/error-codes.server.generated.js +24 -0
- package/dist/hydration/control-capture.d.ts +62 -0
- package/dist/hydration/control-capture.js +223 -0
- package/dist/hydration/document-lifecycle.d.ts +23 -0
- package/dist/hydration/document-lifecycle.js +80 -0
- package/dist/hydration/event-capture.d.ts +20 -1
- package/dist/hydration/event-capture.js +128 -42
- package/dist/hydration/independent-island.d.ts +45 -0
- package/dist/hydration/independent-island.js +233 -0
- package/dist/hydration/index.d.ts +8 -1
- package/dist/hydration/index.js +55 -1
- package/dist/hydration/interaction-config.d.ts +5 -0
- package/dist/hydration/interaction-config.js +44 -1
- package/dist/hydration/stream-delivery.d.ts +32 -0
- package/dist/hydration/stream-delivery.js +333 -0
- package/dist/hydration/stream-receiver.d.ts +26 -0
- package/dist/hydration/stream-receiver.js +204 -0
- package/dist/hydration/stream-result-receiver.d.ts +70 -0
- package/dist/hydration/stream-result-receiver.js +246 -0
- package/dist/hydration/streamed-signals.d.ts +44 -0
- package/dist/hydration/streamed-signals.js +186 -0
- package/dist/hydration/types.d.ts +6 -0
- package/dist/hydration-markers.d.ts +7 -0
- package/dist/hydration-markers.js +10 -0
- package/dist/independent-hydration-protocol.d.ts +31 -0
- package/dist/independent-hydration-protocol.js +80 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +6 -0
- package/dist/internal/signal-read.d.ts +1 -0
- package/dist/internal/signal-read.js +4 -0
- package/dist/jsx-runtime-strong.d.ts +33 -0
- package/dist/jsx-runtime.d.ts +58 -2
- package/dist/public-types.d.ts +15 -1
- package/dist/runtime.d.ts +297 -23
- package/dist/runtime.js +6405 -1679
- package/dist/runtime.server.d.ts +110 -27
- package/dist/runtime.server.js +1458 -213
- package/dist/server/early-signals.d.ts +14 -0
- package/dist/server/early-signals.js +34 -0
- package/dist/server/index.d.ts +11 -2
- package/dist/server/index.js +50 -1
- package/dist/server/rpc-batch.d.ts +17 -0
- package/dist/server/rpc-batch.js +129 -0
- package/dist/server/rpc-stream.d.ts +9 -0
- package/dist/server/rpc-stream.js +125 -0
- package/dist/server/rpc.d.ts +5 -1
- package/dist/server/rpc.js +37 -13
- package/dist/server/signal-query-observation.d.ts +3 -0
- package/dist/server/signal-query-observation.js +134 -0
- package/dist/server/streamed-region.d.ts +15 -0
- package/dist/server/streamed-region.js +30 -0
- package/dist/server/streamed-signals.d.ts +45 -0
- package/dist/server/streamed-signals.js +488 -0
- package/dist/server-call.d.ts +41 -0
- package/dist/server-call.js +75 -0
- package/dist/server-rpc-batch-client.d.ts +7 -0
- package/dist/server-rpc-batch-client.js +119 -0
- package/dist/server-rpc-client.d.ts +3 -1
- package/dist/server-rpc-client.js +99 -27
- package/dist/server-rpc-protocol.d.ts +47 -0
- package/dist/server-rpc-protocol.js +109 -0
- package/dist/server-rpc-stream-client.d.ts +5 -0
- package/dist/server-rpc-stream-client.js +98 -0
- package/dist/signals/actions.d.ts +12 -0
- package/dist/signals/actions.js +466 -0
- package/dist/signals/client.d.ts +2 -0
- package/dist/signals/client.js +1 -0
- package/dist/signals/computations.d.ts +37 -0
- package/dist/signals/computations.js +455 -0
- package/dist/signals/control-binding.d.ts +31 -0
- package/dist/signals/control-binding.js +353 -0
- package/dist/signals/derived-facade.d.ts +3 -0
- package/dist/signals/derived-facade.js +25 -0
- package/dist/signals/document-owner.d.ts +10 -0
- package/dist/signals/document-owner.js +43 -0
- package/dist/signals/early-values.d.ts +24 -0
- package/dist/signals/early-values.js +124 -0
- package/dist/signals/encoding.d.ts +1 -3
- package/dist/signals/encoding.js +3 -93
- package/dist/signals/engine.d.ts +53 -4
- package/dist/signals/engine.js +275 -16
- package/dist/signals/errors.d.ts +7 -0
- package/dist/signals/errors.js +16 -0
- package/dist/signals/facade.d.ts +74 -0
- package/dist/signals/facade.js +452 -0
- package/dist/signals/graph.d.ts +52 -6
- package/dist/signals/graph.js +174 -19
- package/dist/signals/handle-protocol.d.ts +4 -0
- package/dist/signals/handle-protocol.js +11 -0
- package/dist/signals/index.d.ts +12 -3
- package/dist/signals/index.js +71 -2
- package/dist/signals/native-read-client.d.ts +3 -0
- package/dist/signals/native-read-client.js +10 -0
- package/dist/signals/owner-context.d.ts +22 -0
- package/dist/signals/owner-context.js +77 -0
- package/dist/signals/query-attempt-observer.d.ts +49 -0
- package/dist/signals/query-attempt-observer.js +41 -0
- package/dist/signals/query-facade.d.ts +3 -0
- package/dist/signals/query-facade.js +49 -0
- package/dist/signals/read-protocol.d.ts +37 -2
- package/dist/signals/read-protocol.js +44 -0
- package/dist/signals/requests.d.ts +38 -5
- package/dist/signals/requests.js +298 -15
- package/dist/signals/scalar-computations.d.ts +2 -0
- package/dist/signals/scalar-computations.js +60 -0
- package/dist/signals/server.d.ts +2 -0
- package/dist/signals/server.js +1 -0
- package/dist/signals/transition-candidate.d.ts +71 -0
- package/dist/signals/transition-candidate.js +557 -0
- package/dist/signals/transition-state.d.ts +51 -0
- package/dist/signals/transition-state.js +70 -0
- package/dist/signals/types.d.ts +95 -5
- package/dist/signals/types.js +20 -0
- package/dist/stream-protocol.d.ts +0 -5
- package/dist/stream-protocol.js +3 -0
- package/dist/streamed-signals-protocol.d.ts +60 -0
- package/dist/streamed-signals-protocol.js +130 -0
- package/dist/style-values.d.ts +3 -0
- package/dist/style-values.js +96 -0
- package/dist/trusted-html.d.ts +17 -0
- package/dist/trusted-html.js +6 -0
- package/dist/universal-core.d.ts +6 -0
- package/dist/universal-core.js +214 -202
- package/dist/version.js +1 -1
- package/package.json +48 -5
|
@@ -18,104 +18,15 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var encoding_exports = {};
|
|
20
20
|
__export(encoding_exports, {
|
|
21
|
-
decodeSignalValue: () => decodeSignalValue,
|
|
22
|
-
encodeSignalValue: () => encodeSignalValue
|
|
21
|
+
decodeSignalValue: () => import_data_encoding.decodeSignalValue,
|
|
22
|
+
encodeSignalValue: () => import_data_encoding.encodeSignalValue,
|
|
23
|
+
snapshotSignalValue: () => import_data_encoding.snapshotSignalValue
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(encoding_exports);
|
|
25
|
-
var
|
|
26
|
-
function unsupported() {
|
|
27
|
-
throw new import_errors.SignalSerializationError(
|
|
28
|
-
"Signal request arguments and seeds require acyclic plain data: undefined, null, booleans, finite numbers, strings, dense arrays, and plain objects with enumerable string data properties."
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
function encodeSignalValue(value, ancestors = /* @__PURE__ */ new Set()) {
|
|
32
|
-
if (value === void 0) return ["undefined"];
|
|
33
|
-
if (value === null) return ["null"];
|
|
34
|
-
if (typeof value === "boolean") return ["boolean", value];
|
|
35
|
-
if (typeof value === "string") return ["string", value];
|
|
36
|
-
if (typeof value === "number") {
|
|
37
|
-
if (!Number.isFinite(value)) return unsupported();
|
|
38
|
-
return ["number", Object.is(value, -0) ? "-0" : value];
|
|
39
|
-
}
|
|
40
|
-
if (typeof value !== "object" || ancestors.has(value)) return unsupported();
|
|
41
|
-
const prototype = Object.getPrototypeOf(value);
|
|
42
|
-
if (!Array.isArray(value) && prototype !== Object.prototype && prototype !== null) {
|
|
43
|
-
return unsupported();
|
|
44
|
-
}
|
|
45
|
-
ancestors.add(value);
|
|
46
|
-
try {
|
|
47
|
-
if (Array.isArray(value)) {
|
|
48
|
-
const keys2 = Reflect.ownKeys(value);
|
|
49
|
-
if (keys2.length !== value.length + 1) return unsupported();
|
|
50
|
-
const items = [];
|
|
51
|
-
for (let i = 0; i < value.length; i++) {
|
|
52
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, String(i));
|
|
53
|
-
if (!descriptor || !descriptor.enumerable || !("value" in descriptor)) return unsupported();
|
|
54
|
-
items.push(encodeSignalValue(descriptor.value, ancestors));
|
|
55
|
-
}
|
|
56
|
-
return ["array", items];
|
|
57
|
-
}
|
|
58
|
-
const keys = Reflect.ownKeys(value);
|
|
59
|
-
if (keys.some((key) => typeof key !== "string")) return unsupported();
|
|
60
|
-
const entries = [];
|
|
61
|
-
for (const key of keys.sort()) {
|
|
62
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
63
|
-
if (!descriptor.enumerable || !("value" in descriptor)) return unsupported();
|
|
64
|
-
entries.push([key, encodeSignalValue(descriptor.value, ancestors)]);
|
|
65
|
-
}
|
|
66
|
-
return ["object", entries];
|
|
67
|
-
} finally {
|
|
68
|
-
ancestors.delete(value);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function decodeSignalValue(encoded) {
|
|
72
|
-
if (!Array.isArray(encoded)) return unsupported();
|
|
73
|
-
const [tag, value] = encoded;
|
|
74
|
-
switch (tag) {
|
|
75
|
-
case "undefined":
|
|
76
|
-
if (encoded.length !== 1) return unsupported();
|
|
77
|
-
return void 0;
|
|
78
|
-
case "null":
|
|
79
|
-
if (encoded.length !== 1) return unsupported();
|
|
80
|
-
return null;
|
|
81
|
-
case "boolean":
|
|
82
|
-
if (encoded.length !== 2 || typeof value !== "boolean") return unsupported();
|
|
83
|
-
return value;
|
|
84
|
-
case "number":
|
|
85
|
-
if (encoded.length !== 2) return unsupported();
|
|
86
|
-
if (value === "-0") return -0;
|
|
87
|
-
if (typeof value !== "number" || !Number.isFinite(value) || Object.is(value, -0)) {
|
|
88
|
-
return unsupported();
|
|
89
|
-
}
|
|
90
|
-
return value;
|
|
91
|
-
case "string":
|
|
92
|
-
if (encoded.length !== 2 || typeof value !== "string") return unsupported();
|
|
93
|
-
return value;
|
|
94
|
-
case "array":
|
|
95
|
-
if (encoded.length !== 2 || !Array.isArray(value)) return unsupported();
|
|
96
|
-
return Object.freeze(value.map((item) => decodeSignalValue(item)));
|
|
97
|
-
case "object": {
|
|
98
|
-
if (encoded.length !== 2 || !Array.isArray(value)) return unsupported();
|
|
99
|
-
const object = {};
|
|
100
|
-
let previous;
|
|
101
|
-
for (const entry of value) {
|
|
102
|
-
if (!Array.isArray(entry) || entry.length !== 2 || typeof entry[0] !== "string" || previous !== void 0 && entry[0] <= previous) {
|
|
103
|
-
return unsupported();
|
|
104
|
-
}
|
|
105
|
-
previous = entry[0];
|
|
106
|
-
Object.defineProperty(object, entry[0], {
|
|
107
|
-
value: decodeSignalValue(entry[1]),
|
|
108
|
-
enumerable: true
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
return Object.freeze(object);
|
|
112
|
-
}
|
|
113
|
-
default:
|
|
114
|
-
return unsupported();
|
|
115
|
-
}
|
|
116
|
-
}
|
|
26
|
+
var import_data_encoding = require("../data-encoding.cjs");
|
|
117
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
118
28
|
0 && (module.exports = {
|
|
119
29
|
decodeSignalValue,
|
|
120
|
-
encodeSignalValue
|
|
30
|
+
encodeSignalValue,
|
|
31
|
+
snapshotSignalValue
|
|
121
32
|
});
|
|
@@ -19,17 +19,26 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var engine_exports = {};
|
|
20
20
|
__export(engine_exports, {
|
|
21
21
|
ScopeImpl: () => ScopeImpl,
|
|
22
|
+
acceptScopeStreamedResult: () => acceptScopeStreamedResult,
|
|
23
|
+
adoptResourceValue: () => adoptResourceValue,
|
|
24
|
+
bindScopeStreamedSelection: () => bindScopeStreamedSelection,
|
|
25
|
+
createDeclaredSignalCell: () => createDeclaredSignalCell,
|
|
26
|
+
createDerivedCellWith: () => createDerivedCellWith,
|
|
22
27
|
createLocalScope: () => createLocalScope,
|
|
28
|
+
createResourceCellWith: () => createResourceCellWith,
|
|
23
29
|
createScope: () => createScope,
|
|
24
30
|
endSignalBatch: () => import_graph.endSignalBatch,
|
|
31
|
+
failScopeStreamedResult: () => failScopeStreamedResult,
|
|
32
|
+
getResourceSelectionAuthority: () => getResourceSelectionAuthority,
|
|
33
|
+
getSignalScope: () => getSignalScope,
|
|
25
34
|
startSignalBatch: () => import_graph.startSignalBatch
|
|
26
35
|
});
|
|
27
36
|
module.exports = __toCommonJS(engine_exports);
|
|
28
37
|
var import_encoding = require("./encoding.cjs");
|
|
29
38
|
var import_errors = require("./errors.cjs");
|
|
39
|
+
var import_streamed_signals_protocol = require("../streamed-signals-protocol.cjs");
|
|
30
40
|
var import_graph = require("./graph.cjs");
|
|
31
41
|
var import_read_protocol = require("./read-protocol.cjs");
|
|
32
|
-
var import_requests = require("./requests.cjs");
|
|
33
42
|
let activeFrames;
|
|
34
43
|
(0, import_read_protocol.registerNativeBatchHooks)({ startBatch: import_graph.startSignalBatch, endBatch: import_graph.endSignalBatch });
|
|
35
44
|
function requireKey(key, label) {
|
|
@@ -49,7 +58,7 @@ function seedState(seed) {
|
|
|
49
58
|
});
|
|
50
59
|
}
|
|
51
60
|
function decodeSeed(scopeKey, seed) {
|
|
52
|
-
seed = (0, import_encoding.
|
|
61
|
+
seed = (0, import_encoding.snapshotSignalValue)(seed);
|
|
53
62
|
if (!seed || seed.version !== 1 || seed.scopeKey !== scopeKey || !Array.isArray(seed.entries)) {
|
|
54
63
|
throw new import_errors.SignalFrameError(`A signal seed must match scope "${scopeKey}" and version 1.`);
|
|
55
64
|
}
|
|
@@ -70,10 +79,11 @@ function decodeSeed(scopeKey, seed) {
|
|
|
70
79
|
if (!entry.request || typeof entry.request.queryKey !== "string" || !entry.request.queryKey.trim() || !["promise", "stream"].includes(entry.request.kind)) {
|
|
71
80
|
throw new import_errors.SignalFrameError("Async seed entries require a query identity.");
|
|
72
81
|
}
|
|
82
|
+
(0, import_encoding.decodeSignalValue)(entry.request.argument);
|
|
73
83
|
request = {
|
|
74
84
|
queryKey: entry.request.queryKey,
|
|
75
85
|
kind: entry.request.kind,
|
|
76
|
-
argument:
|
|
86
|
+
argument: entry.request.argument
|
|
77
87
|
};
|
|
78
88
|
} else if (entry.request !== void 0) {
|
|
79
89
|
throw new import_errors.SignalFrameError("Only async seed entries may contain a query identity.");
|
|
@@ -83,7 +93,7 @@ function decodeSeed(scopeKey, seed) {
|
|
|
83
93
|
entry: {
|
|
84
94
|
key: entry.key,
|
|
85
95
|
kind: entry.kind,
|
|
86
|
-
value:
|
|
96
|
+
value: entry.value,
|
|
87
97
|
complete: entry.complete,
|
|
88
98
|
...read !== "value" ? { read } : {},
|
|
89
99
|
...entry.available === false ? { available: false } : {},
|
|
@@ -114,6 +124,11 @@ class ScopeImpl {
|
|
|
114
124
|
requests = /* @__PURE__ */ new Map();
|
|
115
125
|
queryDefinitions = /* @__PURE__ */ new Map();
|
|
116
126
|
resources = /* @__PURE__ */ new Map();
|
|
127
|
+
streamedSelections = /* @__PURE__ */ new Map();
|
|
128
|
+
streamedFrames = /* @__PURE__ */ new Map();
|
|
129
|
+
streamedFailures = /* @__PURE__ */ new Map();
|
|
130
|
+
streamedReady = /* @__PURE__ */ new Map();
|
|
131
|
+
derivedBindings = /* @__PURE__ */ new Map();
|
|
117
132
|
frames = /* @__PURE__ */ new Set();
|
|
118
133
|
seedEntries;
|
|
119
134
|
traceLimit;
|
|
@@ -121,6 +136,39 @@ class ScopeImpl {
|
|
|
121
136
|
sequence = 0;
|
|
122
137
|
lifetime = 0;
|
|
123
138
|
disposed = false;
|
|
139
|
+
readBarrier;
|
|
140
|
+
/** Internal document lifecycle: mark every owner before cancellation runs user code. */
|
|
141
|
+
suspendReads() {
|
|
142
|
+
if (this.disposed || this.readBarrier === void 0) return;
|
|
143
|
+
for (const key of this.streamedSelections.keys()) {
|
|
144
|
+
if (this.streamedFrames.get(key)?.at(-1)?.kind === "complete") continue;
|
|
145
|
+
this.streamedSelections.delete(key);
|
|
146
|
+
this.streamedFrames.delete(key);
|
|
147
|
+
this.streamedReady.delete(key);
|
|
148
|
+
}
|
|
149
|
+
this.streamedFailures.clear();
|
|
150
|
+
for (const entry of this.requests.values()) entry.stopAttempt();
|
|
151
|
+
for (const binding of this.derivedBindings.values()) binding.suspend();
|
|
152
|
+
}
|
|
153
|
+
resumeReads() {
|
|
154
|
+
if (this.disposed || this.readBarrier !== void 0) return;
|
|
155
|
+
(0, import_graph.signalBatch)(() => {
|
|
156
|
+
for (const [node, binding] of this.resources) {
|
|
157
|
+
(0, import_graph.refreshNode)(node);
|
|
158
|
+
const identity = this.streamedSelections.get(node.key);
|
|
159
|
+
if (identity && this.streamedFrames.has(node.key) && binding.bindStreamedSelection(identity)) {
|
|
160
|
+
this.flushStreamedResult(node, binding);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
for (const entry of this.requests.values()) {
|
|
164
|
+
if (this.readBarrier !== void 0) break;
|
|
165
|
+
if (!entry.active && !entry.state.snapshot.complete && entry.state.snapshot.status !== "error" && entry.consumers.size) {
|
|
166
|
+
entry.start(entry.state.snapshot.status !== "ready");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
for (const binding of this.derivedBindings.values()) binding.resume();
|
|
170
|
+
});
|
|
171
|
+
}
|
|
124
172
|
get scopeKey() {
|
|
125
173
|
return this.key;
|
|
126
174
|
}
|
|
@@ -130,9 +178,9 @@ class ScopeImpl {
|
|
|
130
178
|
get retired() {
|
|
131
179
|
return this.disposed;
|
|
132
180
|
}
|
|
133
|
-
createNode(key, kind) {
|
|
181
|
+
createNode(key, kind, allowDuringRead = false) {
|
|
134
182
|
(0, import_graph.assertAlive)(this);
|
|
135
|
-
if (this.seedable) (0, import_graph.assertWritable)();
|
|
183
|
+
if (this.seedable && !allowDuringRead) (0, import_graph.assertWritable)();
|
|
136
184
|
requireKey(key, "Signal key");
|
|
137
185
|
if (this.nodes.has(key))
|
|
138
186
|
throw new TypeError(`Signal key "${key}" already exists in this scope.`);
|
|
@@ -146,6 +194,18 @@ class ScopeImpl {
|
|
|
146
194
|
this.nodes.set(key, node);
|
|
147
195
|
return node;
|
|
148
196
|
}
|
|
197
|
+
declaredNode(key, kind) {
|
|
198
|
+
(0, import_graph.assertAlive)(this);
|
|
199
|
+
requireKey(key, "Signal key");
|
|
200
|
+
const existing = this.nodes.get(key);
|
|
201
|
+
if (existing) {
|
|
202
|
+
if (existing.kind !== kind) {
|
|
203
|
+
throw new TypeError(`Signal key "${key}" already has kind "${existing.kind}".`);
|
|
204
|
+
}
|
|
205
|
+
return [existing, false];
|
|
206
|
+
}
|
|
207
|
+
return [this.createNode(key, kind, true), true];
|
|
208
|
+
}
|
|
149
209
|
initialSeed(key) {
|
|
150
210
|
return this.seedEntries.get(seedKey(key)) ?? this.seedEntries.get(seedKey(key, "snapshot"));
|
|
151
211
|
}
|
|
@@ -175,28 +235,182 @@ class ScopeImpl {
|
|
|
175
235
|
this.consumeSeed(key);
|
|
176
236
|
return node;
|
|
177
237
|
}
|
|
238
|
+
createSignalDeclaration(key, initial, preferInitial = false) {
|
|
239
|
+
const [node, created] = this.declaredNode(key, "signal");
|
|
240
|
+
if (!created) return node;
|
|
241
|
+
const seed = this.initialSeed(key) ?? this.retainedSeed(key);
|
|
242
|
+
node.state = (0, import_graph.readyState)(seed && !preferInitial ? seed.value : initial);
|
|
243
|
+
node.lastState = node.state;
|
|
244
|
+
node.last = node.state.snapshot.value;
|
|
245
|
+
node.hasLast = true;
|
|
246
|
+
this.consumeSeed(key);
|
|
247
|
+
return node;
|
|
248
|
+
}
|
|
178
249
|
derived$(key, compute) {
|
|
179
250
|
if (typeof compute !== "function") throw new TypeError("derived$ requires a function.");
|
|
180
251
|
const node = this.createNode(key, "derived");
|
|
181
|
-
node.compute = () => (0, import_graph.derivedState)(
|
|
252
|
+
node.compute = (target) => (0, import_graph.derivedState)(target, compute);
|
|
182
253
|
this.initializeRetention(node);
|
|
183
254
|
this.consumeSeed(key);
|
|
184
255
|
return node;
|
|
185
256
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
257
|
+
/** Candidate state is private; the ordinary node/binding maps stay untouched. */
|
|
258
|
+
forkCandidate(node, target, frame) {
|
|
259
|
+
if (this.nodes.get(node.key) !== node || this.readBarrier || this.frames.size) {
|
|
260
|
+
throw new import_graph.CandidateUnsupportedError("Candidate frames require live, non-adopting nodes.");
|
|
261
|
+
}
|
|
262
|
+
const resource = this.resources.get(node);
|
|
263
|
+
if (resource) return resource.forkCandidate(target);
|
|
264
|
+
const binding = this.derivedBindings.get(node);
|
|
265
|
+
if (binding) {
|
|
266
|
+
if (!binding.forkCandidate) {
|
|
267
|
+
throw new import_graph.CandidateUnsupportedError(
|
|
268
|
+
"Async derived candidates are not supported by this prototype."
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
return binding.forkCandidate(target, frame);
|
|
272
|
+
}
|
|
273
|
+
target.compute = node.compute;
|
|
274
|
+
}
|
|
275
|
+
createDerivedDeclaration(key, compute, options, Binding) {
|
|
276
|
+
if (typeof compute !== "function") throw new TypeError("derived$ requires a function.");
|
|
277
|
+
const [node, created] = this.declaredNode(key, "derived");
|
|
278
|
+
if (!created) return node;
|
|
279
|
+
const binding = new Binding(this, node, compute, options);
|
|
280
|
+
this.derivedBindings.set(node, binding);
|
|
281
|
+
this.initializeRetention(node);
|
|
282
|
+
this.consumeSeed(key);
|
|
283
|
+
return node;
|
|
284
|
+
}
|
|
285
|
+
createResourceDeclaration(key, describe, initialize, unique = false) {
|
|
286
|
+
if (typeof describe !== "function")
|
|
287
|
+
throw new TypeError("A query resource requires a description.");
|
|
288
|
+
let node;
|
|
289
|
+
if (unique) node = this.createNode(key, "async");
|
|
290
|
+
else {
|
|
291
|
+
const [declared, created] = this.declaredNode(key, "async");
|
|
292
|
+
if (!created) return declared;
|
|
293
|
+
node = declared;
|
|
294
|
+
}
|
|
189
295
|
const seed = this.initialSeed(key);
|
|
190
296
|
const retained = this.retainedSeed(key);
|
|
191
297
|
this.initializeRetention(node);
|
|
192
298
|
(0, import_graph.signalBatch)(() => {
|
|
193
|
-
const binding = (
|
|
299
|
+
const binding = initialize(this, node, describe, seed, retained);
|
|
194
300
|
this.resources.set(node, binding);
|
|
195
301
|
(0, import_graph.refreshNode)(node);
|
|
302
|
+
this.flushStreamedResult(node, binding);
|
|
196
303
|
});
|
|
197
304
|
this.consumeSeed(key);
|
|
198
305
|
return node;
|
|
199
306
|
}
|
|
307
|
+
bindStreamedSelection(identity) {
|
|
308
|
+
(0, import_graph.assertAlive)(this);
|
|
309
|
+
const node = this.nodes.get(identity.nodeKey);
|
|
310
|
+
if (node && node.kind !== "async") return false;
|
|
311
|
+
const previous = this.streamedSelections.get(identity.nodeKey);
|
|
312
|
+
if (previous && !(0, import_streamed_signals_protocol.sameStreamFrameIdentity)(previous, identity)) {
|
|
313
|
+
this.streamedFrames.delete(identity.nodeKey);
|
|
314
|
+
this.streamedFailures.delete(identity.nodeKey);
|
|
315
|
+
this.streamedReady.delete(identity.nodeKey);
|
|
316
|
+
}
|
|
317
|
+
this.streamedSelections.set(identity.nodeKey, identity);
|
|
318
|
+
if (!node) return true;
|
|
319
|
+
return this.resources.get(node)?.bindStreamedSelection(identity) === true;
|
|
320
|
+
}
|
|
321
|
+
isStreamedSelectionPending(identity) {
|
|
322
|
+
const selected = this.streamedSelections.get(identity.nodeKey);
|
|
323
|
+
const node = this.nodes.get(identity.nodeKey);
|
|
324
|
+
return !this.retired && selected !== void 0 && (0, import_streamed_signals_protocol.sameStreamFrameIdentity)(selected, identity) && node?.kind === "async" && this.resources.get(node)?.isStreamedSelectionReady(selected) === false;
|
|
325
|
+
}
|
|
326
|
+
whenStreamedSelectionReady(identity, ready) {
|
|
327
|
+
const node = this.nodes.get(identity.nodeKey);
|
|
328
|
+
if (node && this.resources.get(node)?.isStreamedSelectionReady(identity)) return () => {
|
|
329
|
+
};
|
|
330
|
+
const registration = { identity, ready };
|
|
331
|
+
this.streamedReady.set(identity.nodeKey, registration);
|
|
332
|
+
return () => {
|
|
333
|
+
if (this.streamedReady.get(identity.nodeKey) === registration)
|
|
334
|
+
this.streamedReady.delete(identity.nodeKey);
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
streamedSelectionReady(binding) {
|
|
338
|
+
if (this.readBarrier !== void 0 || this.retired) return;
|
|
339
|
+
this.flushStreamedResult(binding.node, binding);
|
|
340
|
+
const registration = this.streamedReady.get(binding.node.key);
|
|
341
|
+
if (registration && binding.isStreamedSelectionReady(registration.identity)) {
|
|
342
|
+
this.streamedReady.delete(binding.node.key);
|
|
343
|
+
registration.ready();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
retainCompletedStreamedResult(identity, frames) {
|
|
347
|
+
if (!this.isStreamedSelectionPending(identity) || frames.at(-1)?.kind !== "complete")
|
|
348
|
+
return false;
|
|
349
|
+
const previous = this.streamedFrames.get(identity.nodeKey);
|
|
350
|
+
if (previous?.at(-1)?.kind === "complete") return false;
|
|
351
|
+
let sequence = previous?.length ?? 0;
|
|
352
|
+
for (const frame of frames) {
|
|
353
|
+
if (!(0, import_streamed_signals_protocol.sameStreamFrameIdentity)(identity, frame.identity) || frame.sequence !== sequence++)
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
356
|
+
if (previous) previous.push(...frames);
|
|
357
|
+
else this.streamedFrames.set(identity.nodeKey, frames);
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
discardCompletedStreamedSelection(identity) {
|
|
361
|
+
if (this.streamedSelections.get(identity.nodeKey) !== identity || this.streamedFrames.get(identity.nodeKey)?.at(-1)?.kind !== "complete")
|
|
362
|
+
return;
|
|
363
|
+
this.streamedFrames.delete(identity.nodeKey);
|
|
364
|
+
this.streamedSelections.delete(identity.nodeKey);
|
|
365
|
+
this.streamedReady.delete(identity.nodeKey);
|
|
366
|
+
this.streamedFailures.delete(identity.nodeKey);
|
|
367
|
+
}
|
|
368
|
+
acceptStreamedResult(frame) {
|
|
369
|
+
(0, import_graph.assertAlive)(this);
|
|
370
|
+
const selected = this.streamedSelections.get(frame.identity.nodeKey);
|
|
371
|
+
if (!selected || !(0, import_streamed_signals_protocol.sameStreamFrameIdentity)(selected, frame.identity)) return false;
|
|
372
|
+
const node = this.nodes.get(frame.identity.nodeKey);
|
|
373
|
+
if (!node) {
|
|
374
|
+
let frames = this.streamedFrames.get(frame.identity.nodeKey);
|
|
375
|
+
if (!frames) this.streamedFrames.set(frame.identity.nodeKey, frames = []);
|
|
376
|
+
frames.push(frame);
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
if (node.kind !== "async") return false;
|
|
380
|
+
return this.resources.get(node)?.acceptStreamed(frame) === true;
|
|
381
|
+
}
|
|
382
|
+
failStreamedResult(identity, error) {
|
|
383
|
+
(0, import_graph.assertAlive)(this);
|
|
384
|
+
const selected = this.streamedSelections.get(identity.nodeKey);
|
|
385
|
+
if (!selected || !(0, import_streamed_signals_protocol.sameStreamFrameIdentity)(selected, identity)) return false;
|
|
386
|
+
const node = this.nodes.get(identity.nodeKey);
|
|
387
|
+
if (!node) {
|
|
388
|
+
this.streamedFailures.set(identity.nodeKey, { identity, error });
|
|
389
|
+
return true;
|
|
390
|
+
}
|
|
391
|
+
if (node.kind !== "async") return false;
|
|
392
|
+
return this.resources.get(node)?.failStreamed(identity, error) === true;
|
|
393
|
+
}
|
|
394
|
+
flushStreamedResult(node, binding) {
|
|
395
|
+
if (this.readBarrier !== void 0) return;
|
|
396
|
+
const identity = this.streamedSelections.get(node.key);
|
|
397
|
+
if (!identity || !binding.isStreamedSelectionReady(identity)) return;
|
|
398
|
+
const frames = this.streamedFrames.get(node.key);
|
|
399
|
+
if (frames) {
|
|
400
|
+
this.streamedFrames.delete(node.key);
|
|
401
|
+
for (const frame of frames) {
|
|
402
|
+
if (!binding.acceptStreamed(frame)) {
|
|
403
|
+
binding.failStreamed(identity, new import_errors.SignalStreamError("identity"));
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
const failure = this.streamedFailures.get(node.key);
|
|
409
|
+
if (failure) {
|
|
410
|
+
this.streamedFailures.delete(node.key);
|
|
411
|
+
binding.failStreamed(failure.identity, failure.error);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
200
414
|
own(handle$) {
|
|
201
415
|
(0, import_graph.assertAlive)(this);
|
|
202
416
|
if (!(handle$ instanceof import_graph.ScopedNode) || handle$.owner !== this) {
|
|
@@ -205,7 +419,8 @@ class ScopeImpl {
|
|
|
205
419
|
return handle$;
|
|
206
420
|
}
|
|
207
421
|
get(handle$) {
|
|
208
|
-
|
|
422
|
+
const node = this.own(handle$);
|
|
423
|
+
return (0, import_graph.strictValue)((0, import_graph.readNode)(node), node.key);
|
|
209
424
|
}
|
|
210
425
|
set(handle$, value) {
|
|
211
426
|
this.own(handle$).set(value);
|
|
@@ -382,6 +597,12 @@ class ScopeImpl {
|
|
|
382
597
|
this.lifetime++;
|
|
383
598
|
for (const resource of this.resources.values()) resource.dispose();
|
|
384
599
|
this.resources.clear();
|
|
600
|
+
this.streamedSelections.clear();
|
|
601
|
+
this.streamedFrames.clear();
|
|
602
|
+
this.streamedFailures.clear();
|
|
603
|
+
this.streamedReady.clear();
|
|
604
|
+
for (const binding of this.derivedBindings.values()) binding.dispose();
|
|
605
|
+
this.derivedBindings.clear();
|
|
385
606
|
this.requests.clear();
|
|
386
607
|
this.queryDefinitions.clear();
|
|
387
608
|
for (const frame of this.frames) frame.release();
|
|
@@ -513,11 +734,54 @@ function createScope(options) {
|
|
|
513
734
|
function createLocalScope(scopeKey) {
|
|
514
735
|
return new ScopeImpl(scopeKey, { scopeKey }, false);
|
|
515
736
|
}
|
|
737
|
+
function createDeclaredSignalCell(owner, key, initial, preferInitial = false) {
|
|
738
|
+
if (!(owner instanceof ScopeImpl)) throw new TypeError("A direct signal needs an Octane scope.");
|
|
739
|
+
return owner.createSignalDeclaration(key, initial, preferInitial);
|
|
740
|
+
}
|
|
741
|
+
function createDerivedCellWith(owner, key, compute, options, Binding) {
|
|
742
|
+
if (!(owner instanceof ScopeImpl))
|
|
743
|
+
throw new TypeError("A direct derived signal needs an Octane scope.");
|
|
744
|
+
return owner.createDerivedDeclaration(key, compute, options, Binding);
|
|
745
|
+
}
|
|
746
|
+
function createResourceCellWith(owner, key, describe, initialize, unique = false) {
|
|
747
|
+
if (!(owner instanceof ScopeImpl)) throw new TypeError("A direct query needs an Octane scope.");
|
|
748
|
+
return owner.createResourceDeclaration(key, describe, initialize, unique);
|
|
749
|
+
}
|
|
750
|
+
function adoptResourceValue(handle$, requestKey, value) {
|
|
751
|
+
if (!(handle$ instanceof import_graph.ScopedNode) || !(handle$.owner instanceof ScopeImpl)) return false;
|
|
752
|
+
const binding = handle$.owner.resources.get(handle$);
|
|
753
|
+
return binding ? binding.adopt(requestKey, value) : false;
|
|
754
|
+
}
|
|
755
|
+
function getSignalScope(handle$) {
|
|
756
|
+
return handle$ instanceof import_graph.ScopedNode && handle$.owner instanceof ScopeImpl ? handle$.owner : void 0;
|
|
757
|
+
}
|
|
758
|
+
function getResourceSelectionAuthority(handle$) {
|
|
759
|
+
if (!(handle$ instanceof import_graph.ScopedNode) || !(handle$.owner instanceof ScopeImpl)) return;
|
|
760
|
+
return handle$.owner.resources.get(handle$)?.authority;
|
|
761
|
+
}
|
|
762
|
+
function bindScopeStreamedSelection(owner, identity) {
|
|
763
|
+
return owner instanceof ScopeImpl ? owner.bindStreamedSelection(identity) : false;
|
|
764
|
+
}
|
|
765
|
+
function acceptScopeStreamedResult(owner, frame) {
|
|
766
|
+
return owner instanceof ScopeImpl ? owner.acceptStreamedResult(frame) : false;
|
|
767
|
+
}
|
|
768
|
+
function failScopeStreamedResult(owner, identity, error) {
|
|
769
|
+
return owner instanceof ScopeImpl ? owner.failStreamedResult(identity, error) : false;
|
|
770
|
+
}
|
|
516
771
|
// Annotate the CommonJS export names for ESM import in node:
|
|
517
772
|
0 && (module.exports = {
|
|
518
773
|
ScopeImpl,
|
|
774
|
+
acceptScopeStreamedResult,
|
|
775
|
+
adoptResourceValue,
|
|
776
|
+
bindScopeStreamedSelection,
|
|
777
|
+
createDeclaredSignalCell,
|
|
778
|
+
createDerivedCellWith,
|
|
519
779
|
createLocalScope,
|
|
780
|
+
createResourceCellWith,
|
|
520
781
|
createScope,
|
|
521
782
|
endSignalBatch,
|
|
783
|
+
failScopeStreamedResult,
|
|
784
|
+
getResourceSelectionAuthority,
|
|
785
|
+
getSignalScope,
|
|
522
786
|
startSignalBatch
|
|
523
787
|
});
|
|
@@ -21,7 +21,9 @@ __export(errors_exports, {
|
|
|
21
21
|
ScopeDisposedError: () => ScopeDisposedError,
|
|
22
22
|
SignalCycleError: () => SignalCycleError,
|
|
23
23
|
SignalFrameError: () => SignalFrameError,
|
|
24
|
+
SignalIdleError: () => SignalIdleError,
|
|
24
25
|
SignalSerializationError: () => SignalSerializationError,
|
|
26
|
+
SignalStreamError: () => SignalStreamError,
|
|
25
27
|
SignalWriteError: () => SignalWriteError
|
|
26
28
|
});
|
|
27
29
|
module.exports = __toCommonJS(errors_exports);
|
|
@@ -43,12 +45,26 @@ class SignalCycleError extends Error {
|
|
|
43
45
|
this.name = "SignalCycleError";
|
|
44
46
|
}
|
|
45
47
|
}
|
|
48
|
+
class SignalIdleError extends Error {
|
|
49
|
+
constructor(key) {
|
|
50
|
+
super(`Signal "${key}" has no selected value.`);
|
|
51
|
+
this.name = "SignalIdleError";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
46
54
|
class SignalFrameError extends Error {
|
|
47
55
|
constructor(message) {
|
|
48
56
|
super(message);
|
|
49
57
|
this.name = "SignalFrameError";
|
|
50
58
|
}
|
|
51
59
|
}
|
|
60
|
+
class SignalStreamError extends Error {
|
|
61
|
+
code;
|
|
62
|
+
constructor(code) {
|
|
63
|
+
super(`Streamed signal failed with code "${code}".`);
|
|
64
|
+
this.code = code;
|
|
65
|
+
this.name = "SignalStreamError";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
52
68
|
class SignalSerializationError extends Error {
|
|
53
69
|
constructor(message) {
|
|
54
70
|
super(message);
|
|
@@ -60,6 +76,8 @@ class SignalSerializationError extends Error {
|
|
|
60
76
|
ScopeDisposedError,
|
|
61
77
|
SignalCycleError,
|
|
62
78
|
SignalFrameError,
|
|
79
|
+
SignalIdleError,
|
|
63
80
|
SignalSerializationError,
|
|
81
|
+
SignalStreamError,
|
|
64
82
|
SignalWriteError
|
|
65
83
|
});
|