@texaryn/core 0.1.0-alpha.0 → 0.1.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 +29 -0
- package/README.md +345 -0
- package/dist/commands/handler.js +24 -6
- package/dist/commands/handler.js.map +1 -1
- package/dist/commands/types.d.ts +1 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +197 -47
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +4 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/validation-scheduler.d.ts +20 -0
- package/dist/runtime/validation-scheduler.d.ts.map +1 -0
- package/dist/runtime/validation-scheduler.js +70 -0
- package/dist/runtime/validation-scheduler.js.map +1 -0
- package/dist/state/index.d.ts +1 -1
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +1 -1
- package/dist/state/index.js.map +1 -1
- package/dist/state/store.d.ts +1 -0
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +8 -1
- package/dist/state/store.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# @texaryn/core
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- afa1f81: Add display-policy-aware error presentation. Core runtime computes `showErrors` per node (`touched && invalid`) and maintains a reactive `visibleErrors` aggregate. React prop getters set `aria-invalid` and error-linked `aria-describedby` only when `showErrors` is true. New `FieldErrors` component replaces inline error rendering in all default widgets. New standalone `ErrorSummary` component subscribes to `visibleErrors`.
|
|
8
|
+
- 65d58b2: Add automatic validation triggered by blur, change, and submit hints with configurable debounce, epoch-based stale result protection, and submission race handling.
|
|
9
|
+
- 18f74ea: First public alpha: JSON Schema to React form pipeline.
|
|
10
|
+
|
|
11
|
+
Schema evaluation, IR compiler, headless runtime, React bindings, default widgets, and prop getters.
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- e8807f4: Add submission lifecycle with snapshot semantics.
|
|
16
|
+
Submit captures the current form data as an immutable attempt. Validation
|
|
17
|
+
and onSubmit both operate on the captured snapshot, not live state.
|
|
18
|
+
Duplicate Submit while validating or submitting is a no-op. Edits during
|
|
19
|
+
submitting update the form but do not alter the in-flight payload or
|
|
20
|
+
trigger blur/change validation. Reset or destroy during an in-flight
|
|
21
|
+
submission cleanly cancels via a generation counter.
|
|
22
|
+
|
|
23
|
+
## 0.1.0-alpha.0
|
|
24
|
+
|
|
25
|
+
### Minor Changes
|
|
26
|
+
|
|
27
|
+
- 18f74ea: First public alpha: JSON Schema to React form pipeline.
|
|
28
|
+
|
|
29
|
+
Schema evaluation, IR compiler, headless runtime, React bindings, default widgets, and prop getters.
|
package/README.md
ADDED
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
# @texaryn/core
|
|
2
|
+
|
|
3
|
+
Framework-neutral UI IR, compiler, runtime, state, commands, identity, and renderer registry for Texaryn.
|
|
4
|
+
|
|
5
|
+
> Status: pre-1.0. Public APIs may change before 1.0.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add @texaryn/core
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`@texaryn/core` has no React or DOM dependency.
|
|
14
|
+
|
|
15
|
+
## What it does
|
|
16
|
+
|
|
17
|
+
Texaryn keeps schema evaluation, UI structure, runtime state, and rendering separate:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
SchemaEvaluationPort
|
|
21
|
+
|
|
|
22
|
+
v
|
|
23
|
+
SchemaProjection
|
|
24
|
+
|
|
|
25
|
+
v
|
|
26
|
+
compile()
|
|
27
|
+
|
|
|
28
|
+
v
|
|
29
|
+
UIDocument
|
|
30
|
+
|
|
|
31
|
+
v
|
|
32
|
+
FormRuntime
|
|
33
|
+
|
|
|
34
|
+
v
|
|
35
|
+
Renderer
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The core package owns the framework-neutral contracts and deterministic runtime. A schema adapter supplies semantic information through `SchemaEvaluationPort`, and a renderer consumes the resulting UI document and runtime state.
|
|
39
|
+
|
|
40
|
+
## Quick start
|
|
41
|
+
|
|
42
|
+
Most applications use `@texaryn/core` together with a schema adapter and a renderer.
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import { createFormRuntime } from '@texaryn/core'
|
|
46
|
+
import { createJsonSchemaAdapter } from '@texaryn/schema-json'
|
|
47
|
+
|
|
48
|
+
const schema = {
|
|
49
|
+
type: 'object',
|
|
50
|
+
properties: {
|
|
51
|
+
name: { type: 'string', title: 'Name' },
|
|
52
|
+
},
|
|
53
|
+
required: ['name'],
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const adapter = await createJsonSchemaAdapter(schema)
|
|
57
|
+
|
|
58
|
+
const runtime = createFormRuntime(adapter, {
|
|
59
|
+
initialData: { name: '' },
|
|
60
|
+
onSubmit(data) {
|
|
61
|
+
console.log(data)
|
|
62
|
+
},
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
const document = runtime.document.getSnapshot()
|
|
66
|
+
const data = runtime.data.getSnapshot()
|
|
67
|
+
|
|
68
|
+
console.log(document.rootId, data)
|
|
69
|
+
|
|
70
|
+
runtime.dispatch({ type: 'Submit' })
|
|
71
|
+
|
|
72
|
+
runtime.destroy()
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Schema evaluation contract
|
|
76
|
+
|
|
77
|
+
Schema libraries integrate with Texaryn through `SchemaEvaluationPort`:
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
interface SchemaEvaluationPort {
|
|
81
|
+
project(data: unknown): SchemaProjection
|
|
82
|
+
validate(data: unknown): ValidationResult | Promise<ValidationResult>
|
|
83
|
+
validateAt?(
|
|
84
|
+
data: unknown,
|
|
85
|
+
pointer: JsonPointer,
|
|
86
|
+
): ValidationResult | Promise<ValidationResult>
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The core does not parse or validate JSON Schema itself. That responsibility belongs to schema adapter packages such as `@texaryn/schema-json`.
|
|
91
|
+
|
|
92
|
+
## Runtime
|
|
93
|
+
|
|
94
|
+
Create a runtime with:
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import { createFormRuntime } from '@texaryn/core'
|
|
98
|
+
|
|
99
|
+
const runtime = createFormRuntime(port, {
|
|
100
|
+
initialData,
|
|
101
|
+
hints,
|
|
102
|
+
onSubmit,
|
|
103
|
+
})
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
A `FormRuntime` exposes stores for:
|
|
107
|
+
|
|
108
|
+
- `document`, the current `UIDocument`
|
|
109
|
+
- `data`, the current form data
|
|
110
|
+
- `submission`, the current submission state
|
|
111
|
+
|
|
112
|
+
It also exposes:
|
|
113
|
+
|
|
114
|
+
- `dispatch(command)`
|
|
115
|
+
- `getNodeState(nodeId)`
|
|
116
|
+
- `destroy()`
|
|
117
|
+
|
|
118
|
+
Node state is kept outside the UI IR and includes value, validation, dirty/touched state, visibility, and disabled state.
|
|
119
|
+
|
|
120
|
+
## Commands
|
|
121
|
+
|
|
122
|
+
The runtime currently understands:
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
{ type: 'SetValue', nodeId, value }
|
|
126
|
+
{ type: 'InsertItem', containerId, index, value? }
|
|
127
|
+
{ type: 'RemoveItem', containerId, index }
|
|
128
|
+
{ type: 'MoveItem', containerId, from, to }
|
|
129
|
+
{ type: 'SetTouched', nodeId }
|
|
130
|
+
{ type: 'Submit' }
|
|
131
|
+
{ type: 'Reset', data? }
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Commands are data. They do not contain renderer or DOM behavior.
|
|
135
|
+
|
|
136
|
+
## UI IR
|
|
137
|
+
|
|
138
|
+
`compile()` converts a `SchemaProjection` into a flat, versioned `UIDocument`:
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
interface UIDocument {
|
|
142
|
+
version: 1
|
|
143
|
+
rootId: NodeId
|
|
144
|
+
nodes: Record<NodeId, UINode>
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The IR contains semantic nodes such as fields, containers, text, and actions. It describes what the UI means, not how a framework should render it.
|
|
149
|
+
|
|
150
|
+
## UI hints
|
|
151
|
+
|
|
152
|
+
Presentation can be layered on top of schema semantics:
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
const hints = {
|
|
156
|
+
'/email': {
|
|
157
|
+
placeholder: 'you@example.com',
|
|
158
|
+
order: 1,
|
|
159
|
+
},
|
|
160
|
+
'/bio': {
|
|
161
|
+
widget: 'textarea',
|
|
162
|
+
helpText: 'Tell us about yourself.',
|
|
163
|
+
order: 2,
|
|
164
|
+
},
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Hints can also control when validation runs:
|
|
169
|
+
|
|
170
|
+
```ts
|
|
171
|
+
const hints = {
|
|
172
|
+
'/email': { validationTrigger: 'blur' },
|
|
173
|
+
'/search': { validationTrigger: 'change' },
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Three triggers are supported: `blur` validates on field blur (`SetTouched`), `change` validates after a debounce on value changes (`SetValue`, array mutations), and `submit` validates only on form submission. Fields without a `validationTrigger` hint are not automatically validated on blur or change; submit always validates the entire form regardless of hints.
|
|
178
|
+
|
|
179
|
+
The change debounce defaults to 300ms and can be configured:
|
|
180
|
+
|
|
181
|
+
```ts
|
|
182
|
+
const runtime = createFormRuntime(port, {
|
|
183
|
+
initialData,
|
|
184
|
+
hints,
|
|
185
|
+
validationDebounceMs: 500,
|
|
186
|
+
})
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Validation remains full-form: `port.validate(data)` is called with the entire form data, and errors are distributed to nodes by their data pointers. Synchronous validators skip the `pending` state entirely.
|
|
190
|
+
|
|
191
|
+
Errors are not displayed immediately. The runtime computes a `showErrors` flag per node: a field's errors become visible only when it is both `touched` (the user has interacted with it) and `invalid`. The form-level `visibleErrors` store aggregates all currently visible errors for use in error summaries. React's `useField` hook returns `showErrors`, and `getInputProps` sets `aria-invalid` and the error ID in `aria-describedby` only when `showErrors` is true.
|
|
192
|
+
|
|
193
|
+
Pass hints to `createFormRuntime()` or, in React, to `useForm()`.
|
|
194
|
+
|
|
195
|
+
## Submission lifecycle
|
|
196
|
+
|
|
197
|
+
Dispatching `Submit` captures the current form data as an immutable snapshot and triggers full-form validation against it. If validation passes, the runtime transitions to `submitting` and calls `onSubmit` with the captured data:
|
|
198
|
+
|
|
199
|
+
```ts
|
|
200
|
+
const runtime = createFormRuntime(port, {
|
|
201
|
+
initialData: { name: '' },
|
|
202
|
+
onSubmit: async (data) => {
|
|
203
|
+
await api.save(data)
|
|
204
|
+
},
|
|
205
|
+
})
|
|
206
|
+
runtime.dispatch({ type: 'Submit' })
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The `submission` store tracks the lifecycle: `idle`, `validating`, `submitting`, `submitted`. A failed `onSubmit` returns to `idle` with the error on `submission.error`. Dispatching `Submit` while already `validating` or `submitting` is a no-op.
|
|
210
|
+
|
|
211
|
+
Edits during `validating` cancel the submission attempt and return to `idle`. Edits during `submitting` update the live form data but do not alter the in-flight payload or trigger validation. A `Reset` during submission cleanly cancels via a generation counter, so late completions from abandoned attempts are ignored.
|
|
212
|
+
|
|
213
|
+
## Renderer registry
|
|
214
|
+
|
|
215
|
+
The core exports a framework-neutral renderer registry:
|
|
216
|
+
|
|
217
|
+
```ts
|
|
218
|
+
import { createRendererRegistry } from '@texaryn/core'
|
|
219
|
+
|
|
220
|
+
const registry = createRendererRegistry()
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Framework packages can register concrete widget components without adding framework dependencies to the runtime.
|
|
224
|
+
|
|
225
|
+
## Stable array identity
|
|
226
|
+
|
|
227
|
+
The core includes identity helpers used to keep dynamic array items stable across inserts, removals, moves, and recompilation:
|
|
228
|
+
|
|
229
|
+
- `createIdentityMap`
|
|
230
|
+
- `registerArray`
|
|
231
|
+
- `insertItem`
|
|
232
|
+
- `removeItem`
|
|
233
|
+
- `moveItem`
|
|
234
|
+
- `resolvePointer`
|
|
235
|
+
- `reconcile`
|
|
236
|
+
|
|
237
|
+
## Key exports
|
|
238
|
+
|
|
239
|
+
### Core types
|
|
240
|
+
|
|
241
|
+
- `NodeId`
|
|
242
|
+
- `StableItemId`
|
|
243
|
+
- `JsonPointer`
|
|
244
|
+
- `MaybePromise`
|
|
245
|
+
- `JsonSchemaType`
|
|
246
|
+
- `ValidationResult`
|
|
247
|
+
- `ValidationError`
|
|
248
|
+
- `VisibleError`
|
|
249
|
+
|
|
250
|
+
### Schema and IR
|
|
251
|
+
|
|
252
|
+
- `SchemaEvaluationPort`
|
|
253
|
+
- `SchemaProjection`
|
|
254
|
+
- `NodeProjection`
|
|
255
|
+
- `ChildProjection`
|
|
256
|
+
- `AnnotationSet`
|
|
257
|
+
- `UIDocument`
|
|
258
|
+
- `UINode`
|
|
259
|
+
- `NodeBase`
|
|
260
|
+
- `NodeAnnotations`
|
|
261
|
+
- `FieldNode`
|
|
262
|
+
- `FieldType`
|
|
263
|
+
- `FieldConstraints`
|
|
264
|
+
- `EnumOption`
|
|
265
|
+
- `ContainerNode`
|
|
266
|
+
- `ArrayMeta`
|
|
267
|
+
- `TextNode`
|
|
268
|
+
- `ActionNode`
|
|
269
|
+
- `CompileResult`
|
|
270
|
+
- `compile`
|
|
271
|
+
|
|
272
|
+
### UI hints
|
|
273
|
+
|
|
274
|
+
- `UIHints`
|
|
275
|
+
- `FieldHints`
|
|
276
|
+
- `ArrayHints`
|
|
277
|
+
|
|
278
|
+
### Runtime and state
|
|
279
|
+
|
|
280
|
+
- `createFormRuntime`
|
|
281
|
+
- `FormRuntime`
|
|
282
|
+
- `FormRuntimeOptions`
|
|
283
|
+
- `NodeState`
|
|
284
|
+
- `RuntimeState`
|
|
285
|
+
- `NodeRuntimeState`
|
|
286
|
+
- `ValidationState`
|
|
287
|
+
- `InteractionState`
|
|
288
|
+
- `SubmissionState`
|
|
289
|
+
- `IdentityMap`
|
|
290
|
+
- `createStore`
|
|
291
|
+
- `Store`
|
|
292
|
+
- `WritableStore`
|
|
293
|
+
|
|
294
|
+
### Commands
|
|
295
|
+
|
|
296
|
+
- `Command`
|
|
297
|
+
- `Effect`
|
|
298
|
+
- `CommandResult`
|
|
299
|
+
- `processCommand`
|
|
300
|
+
|
|
301
|
+
### JSON Pointer helpers
|
|
302
|
+
|
|
303
|
+
- `getAtPointer`
|
|
304
|
+
- `setAtPointer`
|
|
305
|
+
- `parsePointer`
|
|
306
|
+
|
|
307
|
+
### Stable array identity
|
|
308
|
+
|
|
309
|
+
- `createIdentityMap`
|
|
310
|
+
- `registerArray`
|
|
311
|
+
- `insertItem`
|
|
312
|
+
- `removeItem`
|
|
313
|
+
- `moveItem`
|
|
314
|
+
- `resolvePointer`
|
|
315
|
+
- `reconcile`
|
|
316
|
+
- `ReconcileOptions`
|
|
317
|
+
|
|
318
|
+
### Rendering
|
|
319
|
+
|
|
320
|
+
- `createRendererRegistry`
|
|
321
|
+
- `RendererRegistry`
|
|
322
|
+
- `WidgetTester`
|
|
323
|
+
- `WidgetEntry`
|
|
324
|
+
|
|
325
|
+
## Design constraints
|
|
326
|
+
|
|
327
|
+
`@texaryn/core` intentionally does not depend on:
|
|
328
|
+
|
|
329
|
+
- React
|
|
330
|
+
- the DOM
|
|
331
|
+
- a JSON Schema implementation
|
|
332
|
+
- an AI SDK or transport protocol
|
|
333
|
+
|
|
334
|
+
That boundary is what allows the same runtime model to support different schema engines and renderers.
|
|
335
|
+
|
|
336
|
+
## Related packages
|
|
337
|
+
|
|
338
|
+
- [`@texaryn/schema-json`](../schema-json/README.md), primary JSON Schema adapter
|
|
339
|
+
- [`@texaryn/react`](../react/README.md), React bindings and default renderer
|
|
340
|
+
|
|
341
|
+
See the [repository README](../../README.md) and [ROADMAP](../../ROADMAP.md) for the full architecture.
|
|
342
|
+
|
|
343
|
+
## License
|
|
344
|
+
|
|
345
|
+
Apache-2.0
|
package/dist/commands/handler.js
CHANGED
|
@@ -35,7 +35,10 @@ function handleSetValue(state, cmd, document) {
|
|
|
35
35
|
});
|
|
36
36
|
return {
|
|
37
37
|
nextState: { ...state, data: newData, nodes },
|
|
38
|
-
effects: [
|
|
38
|
+
effects: [
|
|
39
|
+
{ type: 'recompile', reason: 'data-changed' },
|
|
40
|
+
{ type: 'validate', nodeIds: [cmd.nodeId], trigger: 'change' },
|
|
41
|
+
],
|
|
39
42
|
};
|
|
40
43
|
}
|
|
41
44
|
function handleInsertItem(state, cmd, document) {
|
|
@@ -50,7 +53,10 @@ function handleInsertItem(state, cmd, document) {
|
|
|
50
53
|
const { map: newIdentities } = insertItem(state.identities, cmd.containerId, cmd.index);
|
|
51
54
|
return {
|
|
52
55
|
nextState: { ...state, data: newData, identities: newIdentities },
|
|
53
|
-
effects: [
|
|
56
|
+
effects: [
|
|
57
|
+
{ type: 'recompile', reason: 'data-changed' },
|
|
58
|
+
{ type: 'validate', nodeIds: [cmd.containerId], trigger: 'change' },
|
|
59
|
+
],
|
|
54
60
|
};
|
|
55
61
|
}
|
|
56
62
|
function handleRemoveItem(state, cmd, document) {
|
|
@@ -65,7 +71,10 @@ function handleRemoveItem(state, cmd, document) {
|
|
|
65
71
|
const { map: newIdentities } = removeItem(state.identities, cmd.containerId, cmd.index);
|
|
66
72
|
return {
|
|
67
73
|
nextState: { ...state, data: newData, identities: newIdentities },
|
|
68
|
-
effects: [
|
|
74
|
+
effects: [
|
|
75
|
+
{ type: 'recompile', reason: 'data-changed' },
|
|
76
|
+
{ type: 'validate', nodeIds: [cmd.containerId], trigger: 'change' },
|
|
77
|
+
],
|
|
69
78
|
};
|
|
70
79
|
}
|
|
71
80
|
function handleMoveItem(state, cmd, document) {
|
|
@@ -83,7 +92,10 @@ function handleMoveItem(state, cmd, document) {
|
|
|
83
92
|
const newIdentities = moveItem(state.identities, cmd.containerId, cmd.from, cmd.to);
|
|
84
93
|
return {
|
|
85
94
|
nextState: { ...state, data: newData, identities: newIdentities },
|
|
86
|
-
effects: [
|
|
95
|
+
effects: [
|
|
96
|
+
{ type: 'recompile', reason: 'data-changed' },
|
|
97
|
+
{ type: 'validate', nodeIds: [cmd.containerId], trigger: 'change' },
|
|
98
|
+
],
|
|
87
99
|
};
|
|
88
100
|
}
|
|
89
101
|
function handleSetTouched(state, cmd) {
|
|
@@ -95,16 +107,22 @@ function handleSetTouched(state, cmd) {
|
|
|
95
107
|
interaction: { ...prev.interaction, touched: true },
|
|
96
108
|
});
|
|
97
109
|
}
|
|
98
|
-
return {
|
|
110
|
+
return {
|
|
111
|
+
nextState: { ...state, nodes },
|
|
112
|
+
effects: [{ type: 'validate', nodeIds: [cmd.nodeId], trigger: 'blur' }],
|
|
113
|
+
};
|
|
99
114
|
}
|
|
100
115
|
function handleSubmit(state) {
|
|
116
|
+
if (state.submission.status === 'validating' || state.submission.status === 'submitting') {
|
|
117
|
+
return { nextState: state, effects: [] };
|
|
118
|
+
}
|
|
101
119
|
const allNodeIds = [...state.nodes.keys()];
|
|
102
120
|
return {
|
|
103
121
|
nextState: {
|
|
104
122
|
...state,
|
|
105
123
|
submission: { status: 'validating' },
|
|
106
124
|
},
|
|
107
|
-
effects: [{ type: 'validate', nodeIds: allNodeIds }],
|
|
125
|
+
effects: [{ type: 'validate', nodeIds: allNodeIds, trigger: 'submit' }],
|
|
108
126
|
};
|
|
109
127
|
}
|
|
110
128
|
function handleReset(state, cmd, document) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/commands/handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,MAAM,UAAU,cAAc,CAC5B,KAAmB,EACnB,OAAgB,EAChB,QAAoB;IAEpB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QACjD,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QACnD,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QACnD,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QACjD,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACzC,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;QAC5B,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,KAAmB,EACnB,GAAyD,EACzD,QAAoB;IAEpB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAgB,CAAC,CAAA;IACjD,IAAI,IAAI,EAAE,WAAW,IAAI,IAAI;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAEvE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;IACrE,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE;QACpB,GAAG,IAAI;QACP,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC7E,CAAC,CAAA;IAEF,OAAO;QACL,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/commands/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAErC,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAErC,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAA;AAEvD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { NodeId, StableItemId, JsonPointer, MaybePromise, JsonSchemaType, ValidationResult, ValidationError, } from './types.js';
|
|
1
|
+
export type { NodeId, StableItemId, JsonPointer, MaybePromise, JsonSchemaType, ValidationResult, ValidationError, VisibleError, } from './types.js';
|
|
2
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';
|
|
3
3
|
export type { CompileResult } from './ir/index.js';
|
|
4
4
|
export { compile } from './ir/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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;AAEvC,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEvE,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,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,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,GACV,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAavC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,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,GACV,MAAM,qBAAqB,CAAA;AAI5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAW7D,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAa,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAW7D,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAa,MAAM,YAAY,CAAA;AAqD5E,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAgWb"}
|
package/dist/runtime/runtime.js
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import { compile } from '../ir/compiler.js';
|
|
2
2
|
import { processCommand } from '../commands/handler.js';
|
|
3
|
-
import { createStore } from '../state/store.js';
|
|
3
|
+
import { createStore, createComputedStore } from '../state/store.js';
|
|
4
4
|
import { batch } from '../state/signal.js';
|
|
5
5
|
import { getAtPointer } from '../json-pointer.js';
|
|
6
|
+
import { createValidationScheduler } from './validation-scheduler.js';
|
|
7
|
+
function isDataMutatingCommand(command) {
|
|
8
|
+
switch (command.type) {
|
|
9
|
+
case 'SetValue':
|
|
10
|
+
case 'InsertItem':
|
|
11
|
+
case 'RemoveItem':
|
|
12
|
+
case 'MoveItem':
|
|
13
|
+
case 'Reset':
|
|
14
|
+
return true;
|
|
15
|
+
default:
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
6
19
|
function defaultNodeState(value) {
|
|
7
20
|
return {
|
|
8
21
|
value,
|
|
@@ -11,14 +24,17 @@ function defaultNodeState(value) {
|
|
|
11
24
|
};
|
|
12
25
|
}
|
|
13
26
|
function createNodeStoreBundle(nodeState, uiNode) {
|
|
27
|
+
const touched = createStore(nodeState.interaction.touched);
|
|
28
|
+
const validationStatus = createStore(nodeState.validation.status);
|
|
14
29
|
return {
|
|
15
30
|
value: createStore(nodeState.value),
|
|
16
31
|
errors: createStore(nodeState.validation.errors),
|
|
17
32
|
dirty: createStore(nodeState.interaction.dirty),
|
|
18
|
-
touched
|
|
33
|
+
touched,
|
|
19
34
|
visible: createStore(uiNode.visible),
|
|
20
35
|
disabled: createStore(uiNode.disabled),
|
|
21
|
-
validationStatus
|
|
36
|
+
validationStatus,
|
|
37
|
+
showErrors: createComputedStore(() => touched.getSnapshot() && validationStatus.getSnapshot() === 'invalid'),
|
|
22
38
|
};
|
|
23
39
|
}
|
|
24
40
|
export function createFormRuntime(port, options = {}) {
|
|
@@ -29,6 +45,7 @@ export function createFormRuntime(port, options = {}) {
|
|
|
29
45
|
const documentStore = createStore(initialCompile.document);
|
|
30
46
|
const dataStore = createStore(initialData);
|
|
31
47
|
const submissionStore = createStore({ status: 'idle' });
|
|
48
|
+
const visibleErrorsStore = createStore([]);
|
|
32
49
|
const nodeStores = new Map();
|
|
33
50
|
const nodes = new Map();
|
|
34
51
|
for (const key of Object.keys(currentDoc.nodes)) {
|
|
@@ -47,6 +64,8 @@ export function createFormRuntime(port, options = {}) {
|
|
|
47
64
|
submission: { status: 'idle' },
|
|
48
65
|
};
|
|
49
66
|
let destroyed = false;
|
|
67
|
+
let submissionGeneration = 0;
|
|
68
|
+
let currentAttempt = null;
|
|
50
69
|
function syncNodeStores() {
|
|
51
70
|
for (const [nodeId, nodeRuntimeState] of state.nodes) {
|
|
52
71
|
const bundle = nodeStores.get(nodeId);
|
|
@@ -58,6 +77,25 @@ export function createFormRuntime(port, options = {}) {
|
|
|
58
77
|
bundle.errors.set(nodeRuntimeState.validation.errors);
|
|
59
78
|
bundle.validationStatus.set(nodeRuntimeState.validation.status);
|
|
60
79
|
}
|
|
80
|
+
refreshVisibleErrors();
|
|
81
|
+
}
|
|
82
|
+
function refreshVisibleErrors() {
|
|
83
|
+
const result = [];
|
|
84
|
+
for (const [nodeId, bundle] of nodeStores) {
|
|
85
|
+
if (!bundle.showErrors.getSnapshot())
|
|
86
|
+
continue;
|
|
87
|
+
const errors = bundle.errors.getSnapshot();
|
|
88
|
+
if (errors.length === 0)
|
|
89
|
+
continue;
|
|
90
|
+
const uiNode = currentDoc.nodes[nodeId];
|
|
91
|
+
result.push({
|
|
92
|
+
nodeId,
|
|
93
|
+
fieldTitle: uiNode?.annotations?.title,
|
|
94
|
+
pointer: uiNode?.dataPointer ?? null,
|
|
95
|
+
errors,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
visibleErrorsStore.set(result);
|
|
61
99
|
}
|
|
62
100
|
function handleRecompile() {
|
|
63
101
|
const nextProjection = port.project(state.data);
|
|
@@ -106,67 +144,150 @@ export function createFormRuntime(port, options = {}) {
|
|
|
106
144
|
nodeStores.delete(nodeId);
|
|
107
145
|
}
|
|
108
146
|
}
|
|
147
|
+
refreshVisibleErrors();
|
|
109
148
|
}
|
|
110
|
-
function
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
bundle.validationStatus.set(status);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
let submission = state.submission;
|
|
133
|
-
const wasSubmitting = state.submission.status === 'validating';
|
|
134
|
-
if (wasSubmitting) {
|
|
135
|
-
submission = result.valid ? { status: 'submitting' } : { status: 'idle' };
|
|
136
|
-
}
|
|
137
|
-
state = { ...state, nodes: nextNodes, submission };
|
|
138
|
-
submissionStore.set(submission);
|
|
139
|
-
if (wasSubmitting && result.valid) {
|
|
140
|
-
void runOnSubmit();
|
|
149
|
+
function applyNodeValidationResult(result) {
|
|
150
|
+
const errorsByPointer = new Map();
|
|
151
|
+
for (const error of result.errors) {
|
|
152
|
+
const list = errorsByPointer.get(error.instancePointer) ?? [];
|
|
153
|
+
list.push(error);
|
|
154
|
+
errorsByPointer.set(error.instancePointer, list);
|
|
155
|
+
}
|
|
156
|
+
const nextNodes = new Map(state.nodes);
|
|
157
|
+
for (const [nodeId, nodeRuntimeState] of nextNodes) {
|
|
158
|
+
const uiNode = currentDoc.nodes[nodeId];
|
|
159
|
+
if (uiNode?.dataPointer == null)
|
|
160
|
+
continue;
|
|
161
|
+
const nodeErrors = errorsByPointer.get(uiNode.dataPointer) ?? [];
|
|
162
|
+
const status = nodeErrors.length > 0 ? 'invalid' : 'valid';
|
|
163
|
+
nextNodes.set(nodeId, { ...nodeRuntimeState, validation: { status, errors: nodeErrors } });
|
|
164
|
+
const bundle = nodeStores.get(nodeId);
|
|
165
|
+
if (bundle) {
|
|
166
|
+
bundle.errors.set(nodeErrors);
|
|
167
|
+
bundle.validationStatus.set(status);
|
|
141
168
|
}
|
|
142
|
-
}
|
|
169
|
+
}
|
|
170
|
+
state = { ...state, nodes: nextNodes };
|
|
171
|
+
refreshVisibleErrors();
|
|
143
172
|
}
|
|
144
|
-
function runOnSubmit() {
|
|
145
|
-
return Promise.resolve(options.onSubmit?.(
|
|
173
|
+
function runOnSubmit(attempt) {
|
|
174
|
+
return Promise.resolve(options.onSubmit?.(attempt.data))
|
|
146
175
|
.then(() => {
|
|
147
|
-
if (destroyed)
|
|
176
|
+
if (destroyed || attempt.generation !== submissionGeneration)
|
|
148
177
|
return;
|
|
149
178
|
batch(() => {
|
|
179
|
+
currentAttempt = null;
|
|
150
180
|
state = { ...state, submission: { status: 'submitted' } };
|
|
151
181
|
submissionStore.set(state.submission);
|
|
152
182
|
});
|
|
153
183
|
})
|
|
154
184
|
.catch((error) => {
|
|
155
|
-
if (destroyed)
|
|
185
|
+
if (destroyed || attempt.generation !== submissionGeneration)
|
|
156
186
|
return;
|
|
157
187
|
batch(() => {
|
|
188
|
+
currentAttempt = null;
|
|
158
189
|
state = { ...state, submission: { status: 'idle', error } };
|
|
159
190
|
submissionStore.set(state.submission);
|
|
160
191
|
});
|
|
161
192
|
});
|
|
162
193
|
}
|
|
163
|
-
function
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
194
|
+
function onValidationPending() {
|
|
195
|
+
if (destroyed)
|
|
196
|
+
return;
|
|
197
|
+
batch(() => {
|
|
198
|
+
const nextNodes = new Map(state.nodes);
|
|
199
|
+
for (const [nodeId, nodeRuntimeState] of nextNodes) {
|
|
200
|
+
nextNodes.set(nodeId, {
|
|
201
|
+
...nodeRuntimeState,
|
|
202
|
+
validation: { ...nodeRuntimeState.validation, status: 'pending' },
|
|
203
|
+
});
|
|
204
|
+
const bundle = nodeStores.get(nodeId);
|
|
205
|
+
if (bundle)
|
|
206
|
+
bundle.validationStatus.set('pending');
|
|
207
|
+
}
|
|
208
|
+
state = { ...state, nodes: nextNodes };
|
|
209
|
+
refreshVisibleErrors();
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
function onValidationResult(result, trigger) {
|
|
213
|
+
if (destroyed)
|
|
214
|
+
return;
|
|
215
|
+
batch(() => {
|
|
216
|
+
applyNodeValidationResult(result);
|
|
217
|
+
if (trigger === 'submit' && state.submission.status === 'validating') {
|
|
218
|
+
const attempt = currentAttempt;
|
|
219
|
+
if (result.valid && attempt) {
|
|
220
|
+
const submission = { status: 'submitting' };
|
|
221
|
+
state = { ...state, submission };
|
|
222
|
+
submissionStore.set(submission);
|
|
223
|
+
void runOnSubmit(attempt);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
currentAttempt = null;
|
|
227
|
+
const submission = { status: 'idle' };
|
|
228
|
+
state = { ...state, submission };
|
|
229
|
+
submissionStore.set(submission);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
function resetPendingNodes() {
|
|
235
|
+
const nextNodes = new Map(state.nodes);
|
|
236
|
+
let changed = false;
|
|
237
|
+
for (const [nodeId, nodeRuntimeState] of nextNodes) {
|
|
238
|
+
if (nodeRuntimeState.validation.status !== 'pending')
|
|
239
|
+
continue;
|
|
240
|
+
nextNodes.set(nodeId, {
|
|
241
|
+
...nodeRuntimeState,
|
|
242
|
+
validation: { ...nodeRuntimeState.validation, status: 'idle' },
|
|
243
|
+
});
|
|
244
|
+
const bundle = nodeStores.get(nodeId);
|
|
245
|
+
if (bundle)
|
|
246
|
+
bundle.validationStatus.set('idle');
|
|
247
|
+
changed = true;
|
|
248
|
+
}
|
|
249
|
+
if (changed) {
|
|
250
|
+
state = { ...state, nodes: nextNodes };
|
|
251
|
+
refreshVisibleErrors();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function onValidationError(error, trigger) {
|
|
255
|
+
if (destroyed)
|
|
256
|
+
return;
|
|
257
|
+
batch(() => {
|
|
258
|
+
resetPendingNodes();
|
|
259
|
+
if (trigger === 'submit') {
|
|
260
|
+
currentAttempt = null;
|
|
261
|
+
state = { ...state, submission: { status: 'idle', error } };
|
|
262
|
+
submissionStore.set(state.submission);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
const scheduler = createValidationScheduler({
|
|
267
|
+
runValidation: (trigger) => port.validate(trigger === 'submit' && currentAttempt
|
|
268
|
+
? currentAttempt.data
|
|
269
|
+
: state.data),
|
|
270
|
+
onPending: onValidationPending,
|
|
271
|
+
onResult: onValidationResult,
|
|
272
|
+
onError: onValidationError,
|
|
273
|
+
}, options.validationDebounceMs);
|
|
274
|
+
function hintMatchesTrigger(nodeIds, trigger) {
|
|
275
|
+
return nodeIds.some((nodeId) => {
|
|
276
|
+
const uiNode = currentDoc.nodes[nodeId];
|
|
277
|
+
const pointer = uiNode?.dataPointer;
|
|
278
|
+
if (pointer == null)
|
|
279
|
+
return false;
|
|
280
|
+
return options.hints?.[pointer]?.validationTrigger === trigger;
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
function handleValidateEffect(effect) {
|
|
284
|
+
if (state.submission.status === 'submitting' && effect.trigger !== 'submit') {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
if (effect.trigger !== 'submit' && !hintMatchesTrigger(effect.nodeIds, effect.trigger)) {
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
scheduler.schedule(effect.trigger);
|
|
170
291
|
}
|
|
171
292
|
function handleEffect(effect) {
|
|
172
293
|
switch (effect.type) {
|
|
@@ -174,7 +295,7 @@ export function createFormRuntime(port, options = {}) {
|
|
|
174
295
|
handleRecompile();
|
|
175
296
|
break;
|
|
176
297
|
case 'validate':
|
|
177
|
-
|
|
298
|
+
handleValidateEffect(effect);
|
|
178
299
|
break;
|
|
179
300
|
default:
|
|
180
301
|
break;
|
|
@@ -183,8 +304,33 @@ export function createFormRuntime(port, options = {}) {
|
|
|
183
304
|
function dispatch(command) {
|
|
184
305
|
if (destroyed)
|
|
185
306
|
return;
|
|
307
|
+
const mutatesData = isDataMutatingCommand(command);
|
|
308
|
+
if (mutatesData) {
|
|
309
|
+
scheduler.invalidate();
|
|
310
|
+
if (command.type === 'Reset') {
|
|
311
|
+
scheduler.cancelScheduled();
|
|
312
|
+
submissionGeneration++;
|
|
313
|
+
currentAttempt = null;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
186
316
|
const { nextState, effects } = processCommand(state, command, currentDoc);
|
|
187
317
|
state = nextState;
|
|
318
|
+
const isAcceptedSubmit = effects.some((e) => e.type === 'validate' && e.trigger === 'submit');
|
|
319
|
+
if (isAcceptedSubmit) {
|
|
320
|
+
currentAttempt = { generation: ++submissionGeneration, data: state.data };
|
|
321
|
+
scheduler.cancelScheduled();
|
|
322
|
+
}
|
|
323
|
+
if (mutatesData && state.submission.status === 'validating') {
|
|
324
|
+
submissionGeneration++;
|
|
325
|
+
currentAttempt = null;
|
|
326
|
+
state = { ...state, submission: { status: 'idle' } };
|
|
327
|
+
}
|
|
328
|
+
if (mutatesData) {
|
|
329
|
+
// Reset nodes stuck at pending from an invalidated in-flight validation
|
|
330
|
+
batch(() => {
|
|
331
|
+
resetPendingNodes();
|
|
332
|
+
});
|
|
333
|
+
}
|
|
188
334
|
batch(() => {
|
|
189
335
|
dataStore.set(state.data);
|
|
190
336
|
submissionStore.set(state.submission);
|
|
@@ -199,12 +345,16 @@ export function createFormRuntime(port, options = {}) {
|
|
|
199
345
|
}
|
|
200
346
|
function destroy() {
|
|
201
347
|
destroyed = true;
|
|
348
|
+
submissionGeneration++;
|
|
349
|
+
currentAttempt = null;
|
|
350
|
+
scheduler.destroy();
|
|
202
351
|
nodeStores.clear();
|
|
203
352
|
}
|
|
204
353
|
return {
|
|
205
354
|
document: documentStore,
|
|
206
355
|
data: dataStore,
|
|
207
356
|
submission: submissionStore,
|
|
357
|
+
visibleErrors: visibleErrorsStore,
|
|
208
358
|
dispatch,
|
|
209
359
|
getNodeState,
|
|
210
360
|
destroy,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/types.d.ts
CHANGED
|
@@ -3,11 +3,12 @@ import type { UIDocument } 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 } from '../types.js';
|
|
6
|
+
import type { NodeId, MaybePromise, ValidationError, VisibleError } from '../types.js';
|
|
7
7
|
export interface FormRuntimeOptions {
|
|
8
8
|
initialData?: unknown;
|
|
9
9
|
hints?: UIHints;
|
|
10
10
|
onSubmit?: (data: unknown) => MaybePromise<void>;
|
|
11
|
+
validationDebounceMs?: number;
|
|
11
12
|
}
|
|
12
13
|
export interface NodeState {
|
|
13
14
|
readonly value: Store<unknown>;
|
|
@@ -17,11 +18,13 @@ export interface NodeState {
|
|
|
17
18
|
readonly visible: Store<boolean>;
|
|
18
19
|
readonly disabled: Store<boolean>;
|
|
19
20
|
readonly validationStatus: Store<'idle' | 'pending' | 'valid' | 'invalid'>;
|
|
21
|
+
readonly showErrors: Store<boolean>;
|
|
20
22
|
}
|
|
21
23
|
export interface FormRuntime {
|
|
22
24
|
readonly document: Store<UIDocument>;
|
|
23
25
|
readonly data: Store<unknown>;
|
|
24
26
|
readonly submission: Store<SubmissionState>;
|
|
27
|
+
readonly visibleErrors: Store<VisibleError[]>;
|
|
25
28
|
dispatch(command: Command): void;
|
|
26
29
|
getNodeState(nodeId: NodeId): NodeState | undefined;
|
|
27
30
|
destroy(): void;
|
|
@@ -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,MAAM,aAAa,CAAA;
|
|
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;AAEtF,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;CAC9B;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,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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { MaybePromise, ValidationResult } from '../types.js';
|
|
2
|
+
export type ValidationTrigger = 'blur' | 'change' | 'submit';
|
|
3
|
+
export interface SchedulerCallbacks {
|
|
4
|
+
runValidation: (trigger: ValidationTrigger) => MaybePromise<ValidationResult>;
|
|
5
|
+
onPending: () => void;
|
|
6
|
+
onResult: (result: ValidationResult, trigger: ValidationTrigger) => void;
|
|
7
|
+
onError: (error: unknown, trigger: ValidationTrigger) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface ValidationScheduler {
|
|
10
|
+
/** Schedule a validation run. Change triggers are debounced. */
|
|
11
|
+
schedule(trigger: ValidationTrigger): void;
|
|
12
|
+
/** Increment the epoch, invalidating in-flight and future-stale results. */
|
|
13
|
+
invalidate(): void;
|
|
14
|
+
/** Cancel queued debounce timers without touching the epoch. */
|
|
15
|
+
cancelScheduled(): void;
|
|
16
|
+
/** Clean up all timers and prevent in-flight results from calling back. */
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare function createValidationScheduler(callbacks: SchedulerCallbacks, debounceMs?: number): ValidationScheduler;
|
|
20
|
+
//# sourceMappingURL=validation-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-scheduler.d.ts","sourceRoot":"","sources":["../../src/runtime/validation-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,YAAY,CAAC,gBAAgB,CAAC,CAAA;IAC7E,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACxE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC9D;AAED,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC1C,4EAA4E;IAC5E,UAAU,IAAI,IAAI,CAAA;IAClB,gEAAgE;IAChE,eAAe,IAAI,IAAI,CAAA;IACvB,2EAA2E;IAC3E,OAAO,IAAI,IAAI,CAAA;CAChB;AAQD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,kBAAkB,EAC7B,UAAU,GAAE,MAA4B,GACvC,mBAAmB,CAoErB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const DEFAULT_DEBOUNCE_MS = 300;
|
|
2
|
+
function isThenable(value) {
|
|
3
|
+
return value != null && typeof value.then === 'function';
|
|
4
|
+
}
|
|
5
|
+
export function createValidationScheduler(callbacks, debounceMs = DEFAULT_DEBOUNCE_MS) {
|
|
6
|
+
let epoch = 0;
|
|
7
|
+
let debounceTimer = null;
|
|
8
|
+
let destroyed = false;
|
|
9
|
+
function clearDebounceTimer() {
|
|
10
|
+
if (debounceTimer != null) {
|
|
11
|
+
clearTimeout(debounceTimer);
|
|
12
|
+
debounceTimer = null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function runValidationNow(trigger) {
|
|
16
|
+
if (destroyed)
|
|
17
|
+
return;
|
|
18
|
+
const capturedEpoch = epoch;
|
|
19
|
+
let result;
|
|
20
|
+
try {
|
|
21
|
+
result = callbacks.runValidation(trigger);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
callbacks.onError(err, trigger);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (isThenable(result)) {
|
|
28
|
+
callbacks.onPending();
|
|
29
|
+
result.then((r) => {
|
|
30
|
+
if (!destroyed && capturedEpoch === epoch)
|
|
31
|
+
callbacks.onResult(r, trigger);
|
|
32
|
+
}, (err) => {
|
|
33
|
+
if (!destroyed && capturedEpoch === epoch)
|
|
34
|
+
callbacks.onError(err, trigger);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
callbacks.onResult(result, trigger);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
schedule(trigger) {
|
|
43
|
+
if (destroyed)
|
|
44
|
+
return;
|
|
45
|
+
if (trigger === 'change') {
|
|
46
|
+
clearDebounceTimer();
|
|
47
|
+
debounceTimer = setTimeout(() => {
|
|
48
|
+
debounceTimer = null;
|
|
49
|
+
runValidationNow('change');
|
|
50
|
+
}, debounceMs);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
runValidationNow(trigger);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
invalidate() {
|
|
57
|
+
epoch += 1;
|
|
58
|
+
// No longer cancels debounce timer. The timer fires against current
|
|
59
|
+
// data and captures the current epoch, so stale results are still gated.
|
|
60
|
+
},
|
|
61
|
+
cancelScheduled() {
|
|
62
|
+
clearDebounceTimer();
|
|
63
|
+
},
|
|
64
|
+
destroy() {
|
|
65
|
+
destroyed = true;
|
|
66
|
+
clearDebounceTimer();
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=validation-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-scheduler.js","sourceRoot":"","sources":["../../src/runtime/validation-scheduler.ts"],"names":[],"mappings":"AAsBA,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAE/B,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,KAAK,IAAI,IAAI,IAAI,OAAQ,KAA4B,CAAC,IAAI,KAAK,UAAU,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,SAA6B,EAC7B,aAAqB,mBAAmB;IAExC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,aAAa,GAAyC,IAAI,CAAA;IAC9D,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,SAAS,kBAAkB;QACzB,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,YAAY,CAAC,aAAa,CAAC,CAAA;YAC3B,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,OAA0B;QAClD,IAAI,SAAS;YAAE,OAAM;QACrB,MAAM,aAAa,GAAG,KAAK,CAAA;QAE3B,IAAI,MAAsC,CAAA;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/B,OAAM;QACR,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,SAAS,EAAE,CAAA;YACrB,MAAM,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,EAAE;gBACJ,IAAI,CAAC,SAAS,IAAI,aAAa,KAAK,KAAK;oBAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAC3E,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;gBACN,IAAI,CAAC,SAAS,IAAI,aAAa,KAAK,KAAK;oBAAE,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC5E,CAAC,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,CAAC,OAA0B;YACjC,IAAI,SAAS;gBAAE,OAAM;YACrB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzB,kBAAkB,EAAE,CAAA;gBACpB,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,aAAa,GAAG,IAAI,CAAA;oBACpB,gBAAgB,CAAC,QAAQ,CAAC,CAAA;gBAC5B,CAAC,EAAE,UAAU,CAAC,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,UAAU;YACR,KAAK,IAAI,CAAC,CAAA;YACV,oEAAoE;YACpE,yEAAyE;QAC3E,CAAC;QAED,eAAe;YACb,kBAAkB,EAAE,CAAA;QACtB,CAAC;QAED,OAAO;YACL,SAAS,GAAG,IAAI,CAAA;YAChB,kBAAkB,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/state/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { Store, WritableStore } from './store.js';
|
|
2
|
-
export { createStore } from './store.js';
|
|
2
|
+
export { createStore, createComputedStore } from './store.js';
|
|
3
3
|
export { createSignal, createComputed, batch, subscribeToSignal } from './signal.js';
|
|
4
4
|
export type { Signal, Computed } from './signal.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpF,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/state/index.js
CHANGED
package/dist/state/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/state/store.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,WAAW,IAAI,CAAC,CAAA;IAChB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAChD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAQhE"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,WAAW,IAAI,CAAC,CAAA;IAChB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAChD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAQhE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAM5D"}
|
package/dist/state/store.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createSignal, subscribeToSignal } from './signal.js';
|
|
1
|
+
import { createSignal, createComputed, subscribeToSignal } from './signal.js';
|
|
2
2
|
export function createStore(initialValue) {
|
|
3
3
|
const signal = createSignal(initialValue);
|
|
4
4
|
return {
|
|
@@ -7,4 +7,11 @@ export function createStore(initialValue) {
|
|
|
7
7
|
set: (value) => signal.set(value),
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
|
+
export function createComputedStore(fn) {
|
|
11
|
+
const computed = createComputed(fn);
|
|
12
|
+
return {
|
|
13
|
+
getSnapshot: () => computed.get(),
|
|
14
|
+
subscribe: (listener) => subscribeToSignal(computed, listener),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
10
17
|
//# sourceMappingURL=store.js.map
|
package/dist/state/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAY7E,MAAM,UAAU,WAAW,CAAI,YAAe;IAC5C,MAAM,MAAM,GAAc,YAAY,CAAC,YAAY,CAAC,CAAA;IAEpD,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;QAC/B,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC5D,GAAG,EAAE,CAAC,KAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;KACrC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,EAAW;IAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;IACnC,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;QACjC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC/D,CAAA;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -19,4 +19,10 @@ export interface ValidationError {
|
|
|
19
19
|
message?: string;
|
|
20
20
|
params: Record<string, unknown>;
|
|
21
21
|
}
|
|
22
|
+
export interface VisibleError {
|
|
23
|
+
nodeId: NodeId;
|
|
24
|
+
fieldTitle: string | undefined;
|
|
25
|
+
pointer: JsonPointer | null;
|
|
26
|
+
errors: ValidationError[];
|
|
27
|
+
}
|
|
22
28
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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"}
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@texaryn/core",
|
|
3
|
-
"version": "0.1.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Framework-neutral UI IR, compiler, runtime, and renderer registry for schema-driven forms",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
|
-
"dist"
|
|
28
|
+
"dist",
|
|
29
|
+
"CHANGELOG.md"
|
|
29
30
|
],
|
|
30
31
|
"scripts": {
|
|
31
32
|
"build": "tsc --build"
|