@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.
Files changed (71) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +8 -3
  3. package/dist/commands/handler.d.ts.map +1 -1
  4. package/dist/commands/handler.js +52 -4
  5. package/dist/commands/handler.js.map +1 -1
  6. package/dist/commands/types.d.ts +5 -1
  7. package/dist/commands/types.d.ts.map +1 -1
  8. package/dist/index.d.ts +6 -6
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/ir/compiler.js +1 -0
  13. package/dist/ir/compiler.js.map +1 -1
  14. package/dist/ir/index.d.ts +1 -1
  15. package/dist/ir/index.d.ts.map +1 -1
  16. package/dist/ir/index.js.map +1 -1
  17. package/dist/ir/runtime-state.d.ts +4 -0
  18. package/dist/ir/runtime-state.d.ts.map +1 -1
  19. package/dist/ir/types.d.ts +53 -5
  20. package/dist/ir/types.d.ts.map +1 -1
  21. package/dist/messages/english.d.ts +1 -1
  22. package/dist/messages/english.d.ts.map +1 -1
  23. package/dist/messages/english.js +10 -0
  24. package/dist/messages/english.js.map +1 -1
  25. package/dist/messages/index.d.ts +1 -1
  26. package/dist/messages/index.d.ts.map +1 -1
  27. package/dist/messages/index.js.map +1 -1
  28. package/dist/messages/types.d.ts +9 -0
  29. package/dist/messages/types.d.ts.map +1 -1
  30. package/dist/renderer/registry.d.ts +2 -1
  31. package/dist/renderer/registry.d.ts.map +1 -1
  32. package/dist/renderer/registry.js.map +1 -1
  33. package/dist/renderer/types.d.ts +7 -7
  34. package/dist/renderer/types.d.ts.map +1 -1
  35. package/dist/runtime/document-limits.d.ts +19 -0
  36. package/dist/runtime/document-limits.d.ts.map +1 -0
  37. package/dist/runtime/document-limits.js +170 -0
  38. package/dist/runtime/document-limits.js.map +1 -0
  39. package/dist/runtime/document-runtime-control.d.ts +18 -0
  40. package/dist/runtime/document-runtime-control.d.ts.map +1 -0
  41. package/dist/runtime/document-runtime-control.js +11 -0
  42. package/dist/runtime/document-runtime-control.js.map +1 -0
  43. package/dist/runtime/document-runtime.d.ts +7 -0
  44. package/dist/runtime/document-runtime.d.ts.map +1 -0
  45. package/dist/runtime/document-runtime.js +574 -0
  46. package/dist/runtime/document-runtime.js.map +1 -0
  47. package/dist/runtime/document-update-session.d.ts +3 -0
  48. package/dist/runtime/document-update-session.d.ts.map +1 -0
  49. package/dist/runtime/document-update-session.js +320 -0
  50. package/dist/runtime/document-update-session.js.map +1 -0
  51. package/dist/runtime/index.d.ts +4 -2
  52. package/dist/runtime/index.d.ts.map +1 -1
  53. package/dist/runtime/index.js +3 -1
  54. package/dist/runtime/index.js.map +1 -1
  55. package/dist/runtime/runtime.d.ts +4 -0
  56. package/dist/runtime/runtime.d.ts.map +1 -1
  57. package/dist/runtime/runtime.js +420 -21
  58. package/dist/runtime/runtime.js.map +1 -1
  59. package/dist/runtime/types.d.ts +94 -4
  60. package/dist/runtime/types.d.ts.map +1 -1
  61. package/dist/schema/index.d.ts +1 -1
  62. package/dist/schema/index.d.ts.map +1 -1
  63. package/dist/schema/port.d.ts +19 -1
  64. package/dist/schema/port.d.ts.map +1 -1
  65. package/dist/state/signal.d.ts +1 -0
  66. package/dist/state/signal.d.ts.map +1 -1
  67. package/dist/state/signal.js +47 -10
  68. package/dist/state/signal.js.map +1 -1
  69. package/dist/types.d.ts +4 -0
  70. package/dist/types.d.ts.map +1 -1
  71. package/package.json +1 -1
@@ -1,12 +1,70 @@
1
1
  import type { Store } from '../state/store.js';
2
- import type { UIDocument } from '../ir/types.js';
2
+ import type { AnyUIDocument, UIDocument, UIDocumentV2 } from '../ir/types.js';
3
3
  import type { UIHints } from '../hints/types.js';
4
4
  import type { Command } from '../commands/types.js';
5
5
  import type { SubmissionState } from '../ir/runtime-state.js';
6
- import type { NodeId, MaybePromise, ValidationError, VisibleError } from '../types.js';
6
+ import type { JsonScalar, JsonValue, NodeId, StableItemId, MaybePromise, ValidationError, VisibleError } from '../types.js';
7
7
  import type { DefaultConflict, DefaultRefusal } from '../initialization/index.js';
8
8
  /** Which initialization policy consumes the schema's `default` annotations. */
9
9
  export type InitializationPolicy = 'none' | 'schema-defaults';
10
+ export interface UIDocumentRuntime<Document extends AnyUIDocument = AnyUIDocument, Data = unknown> {
11
+ readonly document: Store<Document>;
12
+ readonly data: Store<Data>;
13
+ destroy(): void;
14
+ }
15
+ export interface DocumentCollectionRow {
16
+ readonly id: StableItemId;
17
+ readonly value: JsonScalar;
18
+ readonly cells: readonly JsonScalar[];
19
+ }
20
+ export interface DocumentActionContext {
21
+ readonly nodeId: NodeId;
22
+ readonly document: UIDocumentV2;
23
+ readonly data: JsonValue;
24
+ }
25
+ export type DocumentActionHandler = (args: JsonValue | undefined, context: DocumentActionContext) => MaybePromise<void>;
26
+ export type DocumentActionArgumentValidator = (args: JsonValue | undefined) => JsonValue | undefined;
27
+ export interface DocumentActionRegistration {
28
+ handler: DocumentActionHandler;
29
+ validateArgs?: DocumentActionArgumentValidator;
30
+ }
31
+ export type DocumentAction = DocumentActionHandler | DocumentActionRegistration;
32
+ export interface DocumentRuntimeLimits {
33
+ maxJsonDepth: number;
34
+ maxJsonValues: number;
35
+ maxArrayItems: number;
36
+ maxStringLength: number;
37
+ maxTotalStringLength: number;
38
+ maxDocumentNodes: number;
39
+ maxDocumentTreeDepth: number;
40
+ maxRowsPerCollection: number;
41
+ maxCollectionRows: number;
42
+ maxTableCells: number;
43
+ }
44
+ export interface DocumentRuntimeOptions {
45
+ initialData?: unknown;
46
+ actions?: Readonly<Record<string, DocumentAction>>;
47
+ limits?: Partial<DocumentRuntimeLimits>;
48
+ }
49
+ export interface DocumentRuntime extends UIDocumentRuntime<UIDocumentV2, JsonValue> {
50
+ replaceDocument(document: unknown): void;
51
+ setData(data: unknown): void;
52
+ replaceSnapshot(document: unknown, data: unknown): void;
53
+ getCollection(nodeId: NodeId): Store<readonly DocumentCollectionRow[]> | undefined;
54
+ hasActionHandler(actionType: string): boolean;
55
+ invokeAction(nodeId: NodeId): Promise<void>;
56
+ }
57
+ export interface DocumentUpdateSessionOptions {
58
+ maxMessagesPerSecond?: number;
59
+ maxPatchOperations?: number;
60
+ now?: () => number;
61
+ onNotificationError: (error: unknown) => void;
62
+ }
63
+ export interface DocumentUpdateSession {
64
+ apply(message: unknown): void;
65
+ getRevision(): number | undefined;
66
+ destroy(): void;
67
+ }
10
68
  /**
11
69
  * What one run of ADR-003's initialization pass did, without the data, which
12
70
  * the runtime publishes on `data` like any other.
@@ -31,6 +89,14 @@ export interface FormRuntimeOptions {
31
89
  hints?: UIHints;
32
90
  onSubmit?: (data: unknown) => MaybePromise<void>;
33
91
  validationDebounceMs?: number;
92
+ /**
93
+ * `'retain'`, the default, validates and submits all current form data.
94
+ * `'projected'` asks the adapter for a submission snapshot with locations
95
+ * outside its currently applicable schema removed. The runtime validates
96
+ * that same snapshot and leaves live form data untouched. Creation fails if
97
+ * the adapter does not implement `projectSubmission`.
98
+ */
99
+ submission?: 'retain' | 'projected';
34
100
  /**
35
101
  * ADR-003. `'none'`, the default, materialises nothing: given `{}` the
36
102
  * runtime's data stays `{}`.
@@ -52,6 +118,23 @@ export interface FormRuntimeOptions {
52
118
  */
53
119
  initialization?: InitializationPolicy;
54
120
  }
121
+ export interface FormMutation {
122
+ readonly command?: Command;
123
+ readonly origin?: unknown;
124
+ readonly beforeData: unknown;
125
+ readonly data: unknown;
126
+ readonly beforeDocument: UIDocument;
127
+ readonly document: UIDocument;
128
+ readonly changedPointers?: readonly string[];
129
+ }
130
+ export interface FormCommandGuardContext {
131
+ readonly document: UIDocument;
132
+ readonly data: unknown;
133
+ }
134
+ export type FormCommandGuard = (command: Command, context: FormCommandGuardContext) => string | undefined;
135
+ export interface RemoteSnapshotOptions {
136
+ readonly origin?: unknown;
137
+ }
55
138
  export interface NodeState {
56
139
  readonly value: Store<unknown>;
57
140
  readonly errors: Store<ValidationError[]>;
@@ -62,7 +145,7 @@ export interface NodeState {
62
145
  readonly validationStatus: Store<'idle' | 'pending' | 'valid' | 'invalid'>;
63
146
  readonly showErrors: Store<boolean>;
64
147
  }
65
- export interface FormRuntime {
148
+ export interface FormRuntime extends UIDocumentRuntime<UIDocument, unknown> {
66
149
  readonly document: Store<UIDocument>;
67
150
  readonly data: Store<unknown>;
68
151
  readonly submission: Store<SubmissionState>;
@@ -87,7 +170,14 @@ export interface FormRuntime {
87
170
  * rather than one run over data.
88
171
  */
89
172
  readonly initialization: Store<InitializationReport | undefined>;
90
- dispatch(command: Command): void;
173
+ readonly initializationPolicy: InitializationPolicy;
174
+ dispatch(command: Command, options?: {
175
+ origin?: unknown;
176
+ }): void;
177
+ subscribeMutations(listener: (mutation: FormMutation) => void, onError: (error: unknown) => void): () => void;
178
+ registerCommandGuard(guard: FormCommandGuard, onRejected?: (reason: string) => void): () => void;
179
+ applyRemoteSnapshot(data: unknown, options?: RemoteSnapshotOptions): void;
180
+ lockArrayStructure(): () => void;
91
181
  getNodeState(nodeId: NodeId): NodeState | undefined;
92
182
  destroy(): void;
93
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEjF,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,iBAAiB,CAAA;AAE7D;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAA;IAC9C,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAA;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,GACD;IAAE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,YAAY,CAAC,IAAI,CAAC,CAAA;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAA;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;IAC1E,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IAC3C,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAA;IAC7C;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAA;IAChE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;IACnD,OAAO,IAAI,IAAI,CAAA;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export type { SchemaEvaluationPort, SchemaProjection, ProjectionDiagnostic, ProjectionDiagnosticCode, NodeProjection, ProjectionBoundary, ChildProjection, AnnotationSet, } from './port.js';
1
+ export type { SchemaEvaluationPort, SchemaProjection, ProjectionDiagnostic, ProjectionDiagnosticCode, NodeProjection, ProjectionBoundary, ProjectionBoundaryTarget, ProjectionOptions, ChildProjection, AnnotationSet, } from './port.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,aAAa,GACd,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,WAAW,CAAA"}
@@ -1,7 +1,9 @@
1
1
  import type { JsonPointer, JsonSchemaType, MaybePromise, ValidationResult } from '../types.js';
2
2
  import type { FieldConstraints, EnumOption } from '../ir/types.js';
3
3
  export interface SchemaEvaluationPort {
4
- project(data: unknown): SchemaProjection;
4
+ project(data: unknown, options?: ProjectionOptions): SchemaProjection;
5
+ /** Returns an independent snapshot with data from inactive schema declarations removed. */
6
+ projectSubmission?(data: unknown): unknown;
5
7
  validate(data: unknown): MaybePromise<ValidationResult>;
6
8
  validateAt?(data: unknown, pointer: JsonPointer): MaybePromise<ValidationResult>;
7
9
  }
@@ -117,6 +119,20 @@ export type ProjectionDiagnosticCode =
117
119
  */
118
120
  | 'ambiguous-default';
119
121
  export type ProjectionBoundary = 'recursion' | 'budget';
122
+ export interface ProjectionOptions {
123
+ /** Boundary tokens from the current projection to admit into the view. */
124
+ expandedBoundaryTokens?: ReadonlySet<string>;
125
+ /** Changes when instance pointers can refer to different logical array items. */
126
+ boundaryGeneration?: number;
127
+ }
128
+ export interface ProjectionBoundaryTarget {
129
+ /** Instance location that the projection withheld. */
130
+ pointer: JsonPointer;
131
+ /** Why the projection withheld this location. */
132
+ reason: ProjectionBoundary;
133
+ /** Opaque token scoped to the schema location and instance pointer. */
134
+ token: string;
135
+ }
120
136
  export interface NodeProjection {
121
137
  /**
122
138
  * The shape a renderer should present, which is not an assertion about the
@@ -155,6 +171,8 @@ export interface NodeProjection {
155
171
  */
156
172
  provisional?: boolean;
157
173
  boundaries?: readonly ProjectionBoundary[];
174
+ /** Individual withheld locations that may be explicitly revealed in the view. */
175
+ boundaryTargets?: readonly ProjectionBoundaryTarget[];
158
176
  /** Reached only by expanding recursion past the data, so a policy must not write here (ADR-007). */
159
177
  recursiveExpansion?: boolean;
160
178
  /** The schema positions that supplied `annotations.default`, when this node applies a position on a cycle. */
@@ -1 +1 @@
1
- {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/schema/port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAElE,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAA;IAExC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAA;IAEvD,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAA;CACjF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;IACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkDG;IACH,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAC9C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,wBAAwB,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,MAAM,wBAAwB;AAClC;;;;GAIG;AACD,4BAA4B;AAC9B;;;;;GAKG;GACD,6BAA6B;AAC/B;;;;;;;;;;;;;GAaG;GACD,mBAAmB,CAAA;AAEvB,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEvD,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,gBAAgB,CAAA;IAC7B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,UAAU,EAAE,CAAA;IACzB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC1C,oGAAoG;IACpG,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,8GAA8G;IAC9G,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,WAAW,EAAE,aAAa,CAAA;IAC1B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,aAAa,CAAA;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB"}
1
+ {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/schema/port.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare function isBatchActive(): boolean;
1
2
  export interface Signal<T> {
2
3
  get(): T;
3
4
  set(value: T): void;
@@ -1 +1 @@
1
- {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/state/signal.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,IAAI,CAAC,CAAA;IACR,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,GAAG,IAAI,CAAC,CAAA;CACT;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAE1D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAE1D;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAY1C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAC/B,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAKZ"}
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/state/signal.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAiBD,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,IAAI,CAAC,CAAA;IACR,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,GAAG,IAAI,CAAC,CAAA;CACT;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAE1D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAE1D;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAgB1C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAC/B,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAKZ"}
@@ -1,6 +1,25 @@
1
1
  let currentComputation = null;
2
2
  let batchDepth = 0;
3
3
  const pendingNotifications = new Set();
4
+ export function isBatchActive() {
5
+ return batchDepth > 0;
6
+ }
7
+ function throwNotificationErrors(errors) {
8
+ if (errors.length === 1)
9
+ throw errors[0];
10
+ if (errors.length > 1)
11
+ throw new AggregateError(errors, 'Multiple signal notifications failed');
12
+ }
13
+ function notifyListeners(listeners, errors) {
14
+ for (const listener of listeners) {
15
+ try {
16
+ listener();
17
+ }
18
+ catch (error) {
19
+ errors.push(error);
20
+ }
21
+ }
22
+ }
4
23
  export function createSignal(initialValue) {
5
24
  return new SignalImpl(initialValue);
6
25
  }
@@ -9,18 +28,22 @@ export function createComputed(fn) {
9
28
  }
10
29
  export function batch(fn) {
11
30
  batchDepth++;
31
+ const errors = [];
12
32
  try {
13
33
  fn();
14
34
  }
35
+ catch (error) {
36
+ errors.push(error);
37
+ }
15
38
  finally {
16
39
  batchDepth--;
17
40
  if (batchDepth === 0) {
18
41
  const fns = [...pendingNotifications];
19
42
  pendingNotifications.clear();
20
- for (const f of fns)
21
- f();
43
+ notifyListeners(fns, errors);
22
44
  }
23
45
  }
46
+ throwNotificationErrors(errors);
24
47
  }
25
48
  export function subscribeToSignal(source, listener) {
26
49
  const impl = source;
@@ -50,16 +73,23 @@ class SignalImpl {
50
73
  this.notify();
51
74
  }
52
75
  notify() {
53
- for (const dep of this.dependents)
54
- dep.markDirty();
76
+ const errors = [];
77
+ for (const dep of this.dependents) {
78
+ try {
79
+ dep.markDirty();
80
+ }
81
+ catch (error) {
82
+ errors.push(error);
83
+ }
84
+ }
55
85
  if (batchDepth > 0) {
56
86
  for (const fn of this.subscribers)
57
87
  pendingNotifications.add(fn);
58
88
  }
59
89
  else {
60
- for (const fn of this.subscribers)
61
- fn();
90
+ notifyListeners(this.subscribers, errors);
62
91
  }
92
+ throwNotificationErrors(errors);
63
93
  }
64
94
  }
65
95
  class ComputedImpl {
@@ -85,16 +115,23 @@ class ComputedImpl {
85
115
  if (this.dirty)
86
116
  return;
87
117
  this.dirty = true;
88
- for (const dep of this.dependents)
89
- dep.markDirty();
118
+ const errors = [];
119
+ for (const dep of this.dependents) {
120
+ try {
121
+ dep.markDirty();
122
+ }
123
+ catch (error) {
124
+ errors.push(error);
125
+ }
126
+ }
90
127
  if (batchDepth > 0) {
91
128
  for (const fn of this.subscribers)
92
129
  pendingNotifications.add(fn);
93
130
  }
94
131
  else {
95
- for (const fn of this.subscribers)
96
- fn();
132
+ notifyListeners(this.subscribers, errors);
97
133
  }
134
+ throwNotificationErrors(errors);
98
135
  }
99
136
  recompute() {
100
137
  for (const source of this.sources) {
@@ -1 +1 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/state/signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/state/signal.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -7,6 +7,10 @@ export type StableItemId = string & {
7
7
  export type JsonPointer = string & {
8
8
  __brand: 'JsonPointer';
9
9
  };
10
+ export type JsonScalar = string | number | boolean | null;
11
+ export type JsonValue = JsonScalar | JsonValue[] | {
12
+ [key: string]: JsonValue;
13
+ };
10
14
  export type MaybePromise<T> = T | Promise<T>;
11
15
  export type JsonSchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null';
12
16
  export interface ValidationResult {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,CAAA;AAC/D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAE5C,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,GACP,MAAM,CAAA;AAEV,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,CAAA;AAC/D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AACzD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAE/E,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAE5C,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,GACP,MAAM,CAAA;AAEV,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@texaryn/core",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "Headless runtime for JSON Schema forms and schema-driven UI: a framework-neutral UI IR, compiler, form state and renderer registry, used with @texaryn/schema-json and a React, Vue or Web Components binding",
5
5
  "keywords": [
6
6
  "json-schema",