@texaryn/core 0.14.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/index.d.ts +4 -4
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/ir/index.d.ts +1 -1
  7. package/dist/ir/index.d.ts.map +1 -1
  8. package/dist/ir/index.js.map +1 -1
  9. package/dist/ir/types.d.ts +50 -4
  10. package/dist/ir/types.d.ts.map +1 -1
  11. package/dist/renderer/registry.d.ts +2 -1
  12. package/dist/renderer/registry.d.ts.map +1 -1
  13. package/dist/renderer/registry.js.map +1 -1
  14. package/dist/renderer/types.d.ts +7 -7
  15. package/dist/renderer/types.d.ts.map +1 -1
  16. package/dist/runtime/document-limits.d.ts +19 -0
  17. package/dist/runtime/document-limits.d.ts.map +1 -0
  18. package/dist/runtime/document-limits.js +170 -0
  19. package/dist/runtime/document-limits.js.map +1 -0
  20. package/dist/runtime/document-runtime-control.d.ts +18 -0
  21. package/dist/runtime/document-runtime-control.d.ts.map +1 -0
  22. package/dist/runtime/document-runtime-control.js +11 -0
  23. package/dist/runtime/document-runtime-control.js.map +1 -0
  24. package/dist/runtime/document-runtime.d.ts +7 -0
  25. package/dist/runtime/document-runtime.d.ts.map +1 -0
  26. package/dist/runtime/document-runtime.js +574 -0
  27. package/dist/runtime/document-runtime.js.map +1 -0
  28. package/dist/runtime/document-update-session.d.ts +3 -0
  29. package/dist/runtime/document-update-session.d.ts.map +1 -0
  30. package/dist/runtime/document-update-session.js +320 -0
  31. package/dist/runtime/document-update-session.js.map +1 -0
  32. package/dist/runtime/index.d.ts +4 -2
  33. package/dist/runtime/index.d.ts.map +1 -1
  34. package/dist/runtime/index.js +3 -1
  35. package/dist/runtime/index.js.map +1 -1
  36. package/dist/runtime/runtime.d.ts +4 -0
  37. package/dist/runtime/runtime.d.ts.map +1 -1
  38. package/dist/runtime/runtime.js +395 -21
  39. package/dist/runtime/runtime.js.map +1 -1
  40. package/dist/runtime/types.d.ts +86 -4
  41. package/dist/runtime/types.d.ts.map +1 -1
  42. package/dist/state/signal.d.ts +1 -0
  43. package/dist/state/signal.d.ts.map +1 -1
  44. package/dist/state/signal.js +47 -10
  45. package/dist/state/signal.js.map +1 -1
  46. package/dist/types.d.ts +4 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @texaryn/core
2
2
 
3
+ ## 0.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2c2786f: Add a standalone version 2 display document runtime, semantic renderer roots, bounded server update sessions, and validated host action arguments.
8
+ - 2c2786f: Add an optional Yjs adapter for convergent scalar field editing, with runtime mutation observation, command guards, and atomic remote snapshots.
9
+
3
10
  ## 0.14.0
4
11
 
5
12
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export type { NodeId, StableItemId, JsonPointer, MaybePromise, JsonSchemaType, ValidationResult, ValidationError, VisibleError, } from './types.js';
2
- export type { UIDocument, UINode, NodeBase, NodeAnnotations, FieldNode, FieldType, FieldConstraints, EnumOption, ContainerNode, ArrayMeta, TextNode, ActionNode, RuntimeState, NodeRuntimeState, ValidationState, InteractionState, SubmissionState, IdentityMap, } from './ir/index.js';
1
+ export type { NodeId, StableItemId, JsonPointer, JsonScalar, JsonValue, MaybePromise, JsonSchemaType, ValidationResult, ValidationError, VisibleError, } from './types.js';
2
+ export type { AnyUIDocument, UIDocument, UIDocumentV2, UIDocumentVersion, UINode, DocumentNode, DisplayNodeBase, DisplayContainerNode, DisplayTextNode, DisplayActionNode, ListNode, TableNode, TableColumn, NodeBase, NodeAnnotations, FieldNode, FieldType, FieldConstraints, EnumOption, ContainerNode, ArrayMeta, TextNode, ActionNode, RuntimeState, NodeRuntimeState, ValidationState, InteractionState, SubmissionState, IdentityMap, } from './ir/index.js';
3
3
  export type { CompileResult } from './ir/index.js';
4
4
  export { compile } from './ir/index.js';
5
5
  export { objectChildKey } from './ir/index.js';
@@ -11,8 +11,8 @@ export type { Store, WritableStore } from './state/index.js';
11
11
  export { createStore } from './state/index.js';
12
12
  export type { Command, Effect, CommandResult } from './commands/index.js';
13
13
  export { processCommand } from './commands/index.js';
14
- export type { FormRuntime, FormRuntimeOptions, InitializationPolicy, InitializationReport, NodeState, } from './runtime/index.js';
15
- export { createFormRuntime } from './runtime/index.js';
14
+ export type { UIDocumentRuntime, DocumentRuntime, DocumentRuntimeOptions, DocumentCollectionRow, DocumentActionContext, DocumentActionHandler, DocumentActionArgumentValidator, DocumentActionRegistration, DocumentAction, DocumentRuntimeLimits, DocumentUpdateSession, DocumentUpdateSessionOptions, FormRuntime, FormRuntimeOptions, FormMutation, FormCommandGuard, FormCommandGuardContext, RemoteSnapshotOptions, InitializationPolicy, InitializationReport, NodeState, } from './runtime/index.js';
15
+ export { createDocumentRuntime, createDocumentUpdateSession, createFormRuntime, RemoteSnapshotNotificationError, } from './runtime/index.js';
16
16
  export type { DefaultConflict, DefaultRefusal } from './initialization/index.js';
17
17
  export { getAtPointer, setAtPointer, parsePointer } from './json-pointer.js';
18
18
  export { createIdentityMap, registerArray, insertItem, removeItem, moveItem, resolvePointer, reconcile, identityKey, ROOT_IDENTITY_KEY, } from './identity/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,UAAU,EACV,MAAM,EACN,QAAQ,EACR,eAAe,EACf,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,eAAe,CAAA;AAEtB,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEvE,YAAY,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEpE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,GACV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAItD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEhF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEzF,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ export { objectChildKey } from './ir/index.js';
3
3
  export { englishMessages, mergeMessages } from './messages/index.js';
4
4
  export { createStore } from './state/index.js';
5
5
  export { processCommand } from './commands/index.js';
6
- export { createFormRuntime } from './runtime/index.js';
6
+ export { createDocumentRuntime, createDocumentUpdateSession, createFormRuntime, RemoteSnapshotNotificationError, } from './runtime/index.js';
7
7
  export { getAtPointer, setAtPointer, parsePointer } from './json-pointer.js';
8
8
  export { createIdentityMap, registerArray, insertItem, removeItem, moveItem, resolvePointer, reconcile, identityKey, ROOT_IDENTITY_KEY, } from './identity/index.js';
9
9
  export { createRendererRegistry } from './renderer/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AA2B9C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AASpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAMtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAI5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8CA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AA2B9C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAyBpD,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,+BAA+B,GAChC,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAI5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1,4 +1,4 @@
1
- export type { UIDocument, UINode, NodeBase, NodeAnnotations, FieldNode, FieldType, FieldConstraints, EnumOption, ContainerNode, ArrayMeta, TextNode, ActionNode, } from './types.js';
1
+ export type { AnyUIDocument, UIDocument, UIDocumentV2, UIDocumentVersion, UINode, DocumentNode, DisplayNodeBase, DisplayContainerNode, DisplayTextNode, DisplayActionNode, ListNode, TableNode, TableColumn, NodeBase, NodeAnnotations, FieldNode, FieldType, FieldConstraints, EnumOption, ContainerNode, ArrayMeta, TextNode, ActionNode, } from './types.js';
2
2
  export type { RuntimeState, NodeRuntimeState, ValidationState, InteractionState, SubmissionState, IdentityMap, } from './runtime-state.js';
3
3
  export type { CompileResult } from './compiler-types.js';
4
4
  export { compile } from './compiler.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,MAAM,EACN,QAAQ,EACR,eAAe,EACf,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,eAAe,EACf,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,12 +1,58 @@
1
- import type { NodeId, StableItemId, JsonPointer } from '../types.js';
1
+ import type { JsonPointer, NodeId, StableItemId } from '../types.js';
2
2
  import type { IdentityKey } from '../identity/key.js';
3
3
  import type { ProjectionBoundary, ProjectionBoundaryTarget } from '../schema/port.js';
4
- export interface UIDocument {
5
- version: 1;
4
+ export type UIDocumentVersion = 1 | 2;
5
+ export interface UIDocument<Version extends UIDocumentVersion = 1> {
6
+ version: Version;
6
7
  rootId: NodeId;
7
- nodes: Record<string, UINode>;
8
+ nodes: Record<string, Version extends 1 ? UINode : DocumentNode>;
8
9
  }
10
+ export type UIDocumentV2 = UIDocument<2>;
11
+ export type AnyUIDocument = UIDocument<1> | UIDocumentV2;
9
12
  export type UINode = FieldNode | ContainerNode | TextNode | ActionNode;
13
+ export type DocumentNode = DisplayContainerNode | DisplayTextNode | DisplayActionNode | ListNode | TableNode;
14
+ export interface DisplayNodeBase {
15
+ id: NodeId;
16
+ type: string;
17
+ parentId: NodeId | null;
18
+ annotations: NodeAnnotations;
19
+ }
20
+ export interface DisplayContainerNode extends DisplayNodeBase {
21
+ type: 'container';
22
+ containerType: 'group' | 'layout';
23
+ children: NodeId[];
24
+ }
25
+ export interface DisplayTextNode extends DisplayNodeBase {
26
+ type: 'text';
27
+ content: string;
28
+ textRole: 'heading' | 'paragraph' | 'help';
29
+ }
30
+ export interface DisplayActionNode extends DisplayNodeBase {
31
+ type: 'action';
32
+ actionType: string;
33
+ label: string;
34
+ actionArgs?: import('../types.js').JsonValue;
35
+ buttonRole: 'button';
36
+ }
37
+ export interface ListNode extends DisplayNodeBase {
38
+ type: 'list';
39
+ collectionId: string;
40
+ dataPointer: JsonPointer;
41
+ valuePointer: JsonPointer;
42
+ rowKeyPointer?: JsonPointer;
43
+ }
44
+ export interface TableColumn {
45
+ id: string;
46
+ label: string;
47
+ valuePointer: JsonPointer;
48
+ }
49
+ export interface TableNode extends DisplayNodeBase {
50
+ type: 'table';
51
+ collectionId: string;
52
+ dataPointer: JsonPointer;
53
+ rowKeyPointer?: JsonPointer;
54
+ columns: TableColumn[];
55
+ }
10
56
  export interface NodeBase {
11
57
  id: NodeId;
12
58
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { UINode } from '../ir/types.js';
1
2
  import type { RendererRegistry } from './types.js';
2
- export declare function createRendererRegistry<T>(): RendererRegistry<T>;
3
+ export declare function createRendererRegistry<T, Node = UINode>(): RendererRegistry<T, Node>;
3
4
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/renderer/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEhE,wBAAgB,sBAAsB,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAkB/D"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/renderer/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEhE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAkBpF"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/renderer/registry.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAkD,EAAE,CAAA;IAEjE,OAAO;QACL,QAAQ,CAAC,MAAM,EAAE,SAAS;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,CAAC,IAAY;YAClB,IAAI,IAAwD,CAAA;YAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBACtC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAClD,IAAI,GAAG,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YACD,OAAO,IAAI,EAAE,SAAS,CAAA;QACxB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/renderer/registry.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAwD,EAAE,CAAA;IAEvE,OAAO;QACL,QAAQ,CAAC,MAAM,EAAE,SAAS;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,CAAC,IAAU;YAChB,IAAI,IAA8D,CAAA;YAClE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBACtC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAClD,IAAI,GAAG,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YACD,OAAO,IAAI,EAAE,SAAS,CAAA;QACxB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import type { UINode } from '../ir/types.js';
2
- export interface WidgetTester {
3
- test(node: UINode): boolean;
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, component: T): void;
12
- resolve(node: UINode): T | undefined;
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;IAC3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,CAAC,CAAA;CACb;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,CAAA;IAClD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;CACrC"}
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"}