@texaryn/core 0.13.0 → 0.15.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 +15 -0
- package/README.md +8 -3
- package/dist/commands/handler.d.ts.map +1 -1
- package/dist/commands/handler.js +52 -4
- package/dist/commands/handler.js.map +1 -1
- package/dist/commands/types.d.ts +5 -1
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ir/compiler.js +1 -0
- package/dist/ir/compiler.js.map +1 -1
- package/dist/ir/index.d.ts +1 -1
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/runtime-state.d.ts +4 -0
- package/dist/ir/runtime-state.d.ts.map +1 -1
- package/dist/ir/types.d.ts +53 -5
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/messages/english.d.ts +1 -1
- package/dist/messages/english.d.ts.map +1 -1
- package/dist/messages/english.js +10 -0
- package/dist/messages/english.js.map +1 -1
- package/dist/messages/index.d.ts +1 -1
- package/dist/messages/index.d.ts.map +1 -1
- package/dist/messages/index.js.map +1 -1
- package/dist/messages/types.d.ts +9 -0
- package/dist/messages/types.d.ts.map +1 -1
- package/dist/renderer/registry.d.ts +2 -1
- package/dist/renderer/registry.d.ts.map +1 -1
- package/dist/renderer/registry.js.map +1 -1
- package/dist/renderer/types.d.ts +7 -7
- package/dist/renderer/types.d.ts.map +1 -1
- package/dist/runtime/document-limits.d.ts +19 -0
- package/dist/runtime/document-limits.d.ts.map +1 -0
- package/dist/runtime/document-limits.js +170 -0
- package/dist/runtime/document-limits.js.map +1 -0
- package/dist/runtime/document-runtime-control.d.ts +18 -0
- package/dist/runtime/document-runtime-control.d.ts.map +1 -0
- package/dist/runtime/document-runtime-control.js +11 -0
- package/dist/runtime/document-runtime-control.js.map +1 -0
- package/dist/runtime/document-runtime.d.ts +7 -0
- package/dist/runtime/document-runtime.d.ts.map +1 -0
- package/dist/runtime/document-runtime.js +574 -0
- package/dist/runtime/document-runtime.js.map +1 -0
- package/dist/runtime/document-update-session.d.ts +3 -0
- package/dist/runtime/document-update-session.d.ts.map +1 -0
- package/dist/runtime/document-update-session.js +320 -0
- package/dist/runtime/document-update-session.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -2
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +3 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/runtime.d.ts +4 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +420 -21
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +94 -4
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/port.d.ts +19 -1
- package/dist/schema/port.d.ts.map +1 -1
- package/dist/state/signal.d.ts +1 -0
- package/dist/state/signal.d.ts.map +1 -1
- package/dist/state/signal.js +47 -10
- package/dist/state/signal.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/renderer/types.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { UINode } from '../ir/types.js';
|
|
2
|
-
export interface WidgetTester {
|
|
3
|
-
test(node:
|
|
2
|
+
export interface WidgetTester<Node = UINode> {
|
|
3
|
+
test(node: Node): boolean;
|
|
4
4
|
rank: number;
|
|
5
5
|
}
|
|
6
|
-
export interface WidgetEntry<T = unknown> {
|
|
7
|
-
tester: WidgetTester
|
|
6
|
+
export interface WidgetEntry<T = unknown, Node = UINode> {
|
|
7
|
+
tester: WidgetTester<Node>;
|
|
8
8
|
component: T;
|
|
9
9
|
}
|
|
10
|
-
export interface RendererRegistry<T = unknown> {
|
|
11
|
-
register(tester: WidgetTester
|
|
12
|
-
resolve(node:
|
|
10
|
+
export interface RendererRegistry<T = unknown, Node = UINode> {
|
|
11
|
+
register(tester: WidgetTester<Node>, component: T): void;
|
|
12
|
+
resolve(node: Node): T | undefined;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,WAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,MAAM;IACzC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,GAAG,MAAM;IACrD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;IAC1B,SAAS,EAAE,CAAC,CAAA;CACb;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,GAAG,MAAM;IAC1D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,CAAA;IACxD,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,SAAS,CAAA;CACnC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DocumentRuntimeLimits } from './types.js';
|
|
2
|
+
export declare const documentRuntimeLimitMaximums: Readonly<DocumentRuntimeLimits>;
|
|
3
|
+
export declare const maxPatchCandidateValuesPerMessage = 1000000;
|
|
4
|
+
export interface JsonTraversalBudget {
|
|
5
|
+
visitedValues: number;
|
|
6
|
+
maxVisitedValues: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveDocumentRuntimeLimits(requested: Partial<DocumentRuntimeLimits> | undefined): DocumentRuntimeLimits;
|
|
9
|
+
export declare function preflightJson(input: unknown, path: string, limits: DocumentRuntimeLimits, work?: JsonTraversalBudget): void;
|
|
10
|
+
export declare function preflightJsonRoots(roots: readonly {
|
|
11
|
+
value: unknown;
|
|
12
|
+
path: string;
|
|
13
|
+
}[], limits: DocumentRuntimeLimits, work?: JsonTraversalBudget): void;
|
|
14
|
+
export declare function assertDocumentNodeCount(value: Record<string, unknown>, limits: DocumentRuntimeLimits): void;
|
|
15
|
+
export declare function assertDocumentTreeDepth(rootId: string, nodes: ReadonlyMap<string, {
|
|
16
|
+
type: string;
|
|
17
|
+
children?: readonly string[];
|
|
18
|
+
}>, limits: DocumentRuntimeLimits): void;
|
|
19
|
+
//# sourceMappingURL=document-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-limits.d.ts","sourceRoot":"","sources":["../../src/runtime/document-limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,qBAAqB,CAWvE,CAAA;AAEF,eAAO,MAAM,iCAAiC,UAAY,CAAA;AAE1D,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,GACpD,qBAAqB,CAoBvB;AAsBD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,qBAAqB,EAC7B,IAAI,CAAC,EAAE,mBAAmB,GACzB,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAClD,MAAM,EAAE,qBAAqB,EAC7B,IAAI,CAAC,EAAE,mBAAmB,GACzB,IAAI,CA6EN;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAI3G;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC,EAC1E,MAAM,EAAE,qBAAqB,GAC5B,IAAI,CA0BN"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
export const documentRuntimeLimitMaximums = Object.freeze({
|
|
2
|
+
maxJsonDepth: 64,
|
|
3
|
+
maxJsonValues: 250_000,
|
|
4
|
+
maxArrayItems: 10_000,
|
|
5
|
+
maxStringLength: 1_000_000,
|
|
6
|
+
maxTotalStringLength: 10_000_000,
|
|
7
|
+
maxDocumentNodes: 10_000,
|
|
8
|
+
maxDocumentTreeDepth: 64,
|
|
9
|
+
maxRowsPerCollection: 10_000,
|
|
10
|
+
maxCollectionRows: 20_000,
|
|
11
|
+
maxTableCells: 100_000,
|
|
12
|
+
});
|
|
13
|
+
export const maxPatchCandidateValuesPerMessage = 1_000_000;
|
|
14
|
+
export function resolveDocumentRuntimeLimits(requested) {
|
|
15
|
+
if (requested === undefined)
|
|
16
|
+
return { ...documentRuntimeLimitMaximums };
|
|
17
|
+
if (requested === null || typeof requested !== 'object' || Array.isArray(requested)) {
|
|
18
|
+
throw new TypeError('limits must be an object');
|
|
19
|
+
}
|
|
20
|
+
const allowed = new Set(Object.keys(documentRuntimeLimitMaximums));
|
|
21
|
+
for (const key of Reflect.ownKeys(requested)) {
|
|
22
|
+
if (typeof key !== 'string' || !allowed.has(key))
|
|
23
|
+
throw new TypeError(`limits.${String(key)} is not supported`);
|
|
24
|
+
}
|
|
25
|
+
const result = { ...documentRuntimeLimitMaximums };
|
|
26
|
+
for (const key of allowed) {
|
|
27
|
+
const value = requested[key];
|
|
28
|
+
if (value === undefined)
|
|
29
|
+
continue;
|
|
30
|
+
const maximum = documentRuntimeLimitMaximums[key];
|
|
31
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > maximum) {
|
|
32
|
+
throw new RangeError(`limits.${key} must be an integer from 1 to ${maximum}`);
|
|
33
|
+
}
|
|
34
|
+
result[key] = value;
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
function isPlainObject(value) {
|
|
39
|
+
const prototype = Object.getPrototypeOf(value);
|
|
40
|
+
return prototype === Object.prototype || prototype === null;
|
|
41
|
+
}
|
|
42
|
+
function addStringLength(length, path, limits, totals) {
|
|
43
|
+
if (length > limits.maxStringLength)
|
|
44
|
+
throw new TypeError(`${path} exceeds the maximum string length`);
|
|
45
|
+
totals.stringLength += length;
|
|
46
|
+
if (totals.stringLength > limits.maxTotalStringLength) {
|
|
47
|
+
throw new TypeError(`${path} exceeds the maximum total string length`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function preflightJson(input, path, limits, work) {
|
|
51
|
+
preflightJsonRoots([{ value: input, path }], limits, work);
|
|
52
|
+
}
|
|
53
|
+
export function preflightJsonRoots(roots, limits, work) {
|
|
54
|
+
const active = new Set();
|
|
55
|
+
const totals = { values: 0, stringLength: 0 };
|
|
56
|
+
const stack = [];
|
|
57
|
+
for (let index = roots.length - 1; index >= 0; index -= 1) {
|
|
58
|
+
stack.push({ value: roots[index].value, path: roots[index].path, depth: 0 });
|
|
59
|
+
}
|
|
60
|
+
while (stack.length > 0) {
|
|
61
|
+
const entry = stack.pop();
|
|
62
|
+
if ('exit' in entry) {
|
|
63
|
+
active.delete(entry.exit);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
totals.values += 1;
|
|
67
|
+
if (totals.values > limits.maxJsonValues)
|
|
68
|
+
throw new TypeError(`${entry.path} exceeds the maximum JSON value count`);
|
|
69
|
+
if (work) {
|
|
70
|
+
work.visitedValues += 1;
|
|
71
|
+
if (work.visitedValues > work.maxVisitedValues) {
|
|
72
|
+
throw new TypeError('patch candidate traversal exceeds the per-message work limit');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (entry.depth > limits.maxJsonDepth)
|
|
76
|
+
throw new TypeError(`${entry.path} exceeds the maximum JSON depth`);
|
|
77
|
+
const value = entry.value;
|
|
78
|
+
if (value === null || typeof value === 'boolean')
|
|
79
|
+
continue;
|
|
80
|
+
if (typeof value === 'string') {
|
|
81
|
+
addStringLength(value.length, entry.path, limits, totals);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (typeof value === 'number') {
|
|
85
|
+
if (!Number.isFinite(value))
|
|
86
|
+
throw new TypeError(`${entry.path} must contain a finite number`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (typeof value !== 'object')
|
|
90
|
+
throw new TypeError(`${entry.path} is not a JSON value`);
|
|
91
|
+
if (active.has(value))
|
|
92
|
+
throw new TypeError(`${entry.path} contains a cycle`);
|
|
93
|
+
active.add(value);
|
|
94
|
+
stack.push({ exit: value });
|
|
95
|
+
if (Array.isArray(value)) {
|
|
96
|
+
if (value.length > limits.maxArrayItems)
|
|
97
|
+
throw new TypeError(`${entry.path} exceeds the maximum array item count`);
|
|
98
|
+
const keys = Reflect.ownKeys(value);
|
|
99
|
+
if (keys.length !== value.length + 1 || keys.some((key) => {
|
|
100
|
+
if (key === 'length')
|
|
101
|
+
return false;
|
|
102
|
+
if (typeof key !== 'string' || !/^(0|[1-9]\d*)$/.test(key))
|
|
103
|
+
return true;
|
|
104
|
+
const index = Number(key);
|
|
105
|
+
return !Number.isSafeInteger(index) || index >= value.length;
|
|
106
|
+
})) {
|
|
107
|
+
throw new TypeError(`${entry.path} contains a non-JSON array property`);
|
|
108
|
+
}
|
|
109
|
+
for (let index = value.length - 1; index >= 0; index -= 1) {
|
|
110
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
111
|
+
if (!descriptor || !('value' in descriptor) || !descriptor.enumerable) {
|
|
112
|
+
throw new TypeError(`${entry.path}[${index}] must be a JSON property`);
|
|
113
|
+
}
|
|
114
|
+
stack.push({ value: descriptor.value, path: `${entry.path}[${index}]`, depth: entry.depth + 1 });
|
|
115
|
+
}
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (!isPlainObject(value))
|
|
119
|
+
throw new TypeError(`${entry.path} must be a plain JSON object`);
|
|
120
|
+
const keys = Reflect.ownKeys(value);
|
|
121
|
+
if (keys.length > limits.maxJsonValues - totals.values) {
|
|
122
|
+
throw new TypeError(`${entry.path} exceeds the maximum JSON value count`);
|
|
123
|
+
}
|
|
124
|
+
for (let index = keys.length - 1; index >= 0; index -= 1) {
|
|
125
|
+
const key = keys[index];
|
|
126
|
+
if (typeof key !== 'string')
|
|
127
|
+
throw new TypeError(`${entry.path} must not contain symbol properties`);
|
|
128
|
+
addStringLength(key.length, `${entry.path} property name`, limits, totals);
|
|
129
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
130
|
+
if (!descriptor || !('value' in descriptor) || !descriptor.enumerable) {
|
|
131
|
+
throw new TypeError(`${entry.path}.${key} must be a JSON property`);
|
|
132
|
+
}
|
|
133
|
+
stack.push({ value: descriptor.value, path: `${entry.path}.${key}`, depth: entry.depth + 1 });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export function assertDocumentNodeCount(value, limits) {
|
|
138
|
+
if (Object.keys(value).length > limits.maxDocumentNodes) {
|
|
139
|
+
throw new TypeError(`document.nodes exceeds the maximum node count of ${limits.maxDocumentNodes}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export function assertDocumentTreeDepth(rootId, nodes, limits) {
|
|
143
|
+
const stack = [{ nodeId: rootId, depth: 1 }];
|
|
144
|
+
const active = new Set();
|
|
145
|
+
const visited = new Set();
|
|
146
|
+
while (stack.length > 0) {
|
|
147
|
+
const entry = stack.pop();
|
|
148
|
+
if (entry.exit) {
|
|
149
|
+
active.delete(entry.nodeId);
|
|
150
|
+
visited.add(entry.nodeId);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (active.has(entry.nodeId))
|
|
154
|
+
throw new TypeError(`document.nodes.${entry.nodeId} creates a cycle`);
|
|
155
|
+
if (visited.has(entry.nodeId))
|
|
156
|
+
continue;
|
|
157
|
+
if (entry.depth > limits.maxDocumentTreeDepth) {
|
|
158
|
+
throw new TypeError(`document tree exceeds the maximum depth of ${limits.maxDocumentTreeDepth}`);
|
|
159
|
+
}
|
|
160
|
+
active.add(entry.nodeId);
|
|
161
|
+
stack.push({ nodeId: entry.nodeId, depth: entry.depth, exit: true });
|
|
162
|
+
const node = nodes.get(entry.nodeId);
|
|
163
|
+
if (node?.type === 'container') {
|
|
164
|
+
for (let index = (node.children?.length ?? 0) - 1; index >= 0; index -= 1) {
|
|
165
|
+
stack.push({ nodeId: node.children[index], depth: entry.depth + 1 });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=document-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-limits.js","sourceRoot":"","sources":["../../src/runtime/document-limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DocumentRuntimeLimits } from './types.js';
|
|
2
|
+
export interface InternalSnapshotCommit {
|
|
3
|
+
readonly document: unknown;
|
|
4
|
+
readonly data: unknown;
|
|
5
|
+
readonly mutationVersion: number;
|
|
6
|
+
}
|
|
7
|
+
export interface DocumentRuntimeControl {
|
|
8
|
+
readonly limits: Readonly<DocumentRuntimeLimits>;
|
|
9
|
+
getMutationVersion(): number;
|
|
10
|
+
replaceSnapshot(document: unknown, data: unknown, options: {
|
|
11
|
+
preserveUnkeyed: boolean;
|
|
12
|
+
publishDocument: boolean;
|
|
13
|
+
publishData: boolean;
|
|
14
|
+
}, onCommit: (commit: InternalSnapshotCommit) => void): void;
|
|
15
|
+
}
|
|
16
|
+
export declare function registerDocumentRuntimeControl(runtime: object, control: DocumentRuntimeControl): void;
|
|
17
|
+
export declare function getDocumentRuntimeControl(runtime: object): DocumentRuntimeControl;
|
|
18
|
+
//# sourceMappingURL=document-runtime-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-runtime-control.d.ts","sourceRoot":"","sources":["../../src/runtime/document-runtime-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAA;IAChD,kBAAkB,IAAI,MAAM,CAAA;IAC5B,eAAe,CACb,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE;QACP,eAAe,EAAE,OAAO,CAAA;QACxB,eAAe,EAAE,OAAO,CAAA;QACxB,WAAW,EAAE,OAAO,CAAA;KACrB,EACD,QAAQ,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,GACjD,IAAI,CAAA;CACR;AAID,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAErG;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,CAIjF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const controls = new WeakMap();
|
|
2
|
+
export function registerDocumentRuntimeControl(runtime, control) {
|
|
3
|
+
controls.set(runtime, control);
|
|
4
|
+
}
|
|
5
|
+
export function getDocumentRuntimeControl(runtime) {
|
|
6
|
+
const control = controls.get(runtime);
|
|
7
|
+
if (!control)
|
|
8
|
+
throw new TypeError('runtime was not created by createDocumentRuntime');
|
|
9
|
+
return control;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=document-runtime-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-runtime-control.js","sourceRoot":"","sources":["../../src/runtime/document-runtime-control.ts"],"names":[],"mappings":"AAuBA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAkC,CAAA;AAE9D,MAAM,UAAU,8BAA8B,CAAC,OAAe,EAAE,OAA+B;IAC7F,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAA;IACrF,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DocumentRuntime, DocumentRuntimeOptions } from './types.js';
|
|
2
|
+
import type { JsonValue } from '../types.js';
|
|
3
|
+
import type { JsonTraversalBudget } from './document-limits.js';
|
|
4
|
+
import type { DocumentRuntimeLimits } from './types.js';
|
|
5
|
+
export declare function cloneJson(value: unknown, path: string, limits: DocumentRuntimeLimits, work?: JsonTraversalBudget): JsonValue;
|
|
6
|
+
export declare function createDocumentRuntime(inputDocument: unknown, options?: DocumentRuntimeOptions): DocumentRuntime;
|
|
7
|
+
//# sourceMappingURL=document-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/document-runtime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAKV,eAAe,EACf,sBAAsB,EACvB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAA2B,SAAS,EAAwB,MAAM,aAAa,CAAA;AAQ3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAsCvD,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,qBAAqB,EAC7B,IAAI,CAAC,EAAE,mBAAmB,GACzB,SAAS,CAGX;AAgVD,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,OAAO,EACtB,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAqNjB"}
|