@texaryn/core 0.8.0 → 0.10.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 +123 -0
- package/dist/commands/handler.d.ts +13 -0
- package/dist/commands/handler.d.ts.map +1 -1
- package/dist/commands/handler.js +22 -4
- package/dist/commands/handler.js.map +1 -1
- package/dist/commands/types.d.ts +16 -1
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/initialization/index.d.ts +4 -0
- package/dist/initialization/index.d.ts.map +1 -0
- package/dist/initialization/index.js +3 -0
- package/dist/initialization/index.js.map +1 -0
- package/dist/initialization/kernel.d.ts +133 -0
- package/dist/initialization/kernel.d.ts.map +1 -0
- package/dist/initialization/kernel.js +223 -0
- package/dist/initialization/kernel.js.map +1 -0
- package/dist/initialization/view.d.ts +16 -0
- package/dist/initialization/view.d.ts.map +1 -0
- package/dist/initialization/view.js +41 -0
- package/dist/initialization/view.js.map +1 -0
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +106 -4
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +58 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schema/port.d.ts +59 -11
- package/dist/schema/port.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,128 @@
|
|
|
1
1
|
# @texaryn/core
|
|
2
2
|
|
|
3
|
+
## 0.10.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- aa69a86: Initializes a row inserted with no value, closing #127.
|
|
8
|
+
|
|
9
|
+
Under `initialization: 'schema-defaults'`, `InsertItem` with no `value` now adds
|
|
10
|
+
a row carrying its item defaults: an object item arrives with its declared
|
|
11
|
+
properties filled, a scalar item holding the item default. An explicit `value`,
|
|
12
|
+
including `null`, is preserved exactly, and with no policy configured the row is
|
|
13
|
+
`null` as before.
|
|
14
|
+
|
|
15
|
+
`cmd.value ?? null` was never wrong about the element it produced. The defect was
|
|
16
|
+
that nothing downstream could tell an omitted value from an explicit `null`,
|
|
17
|
+
since both arrive as `null`. `CommandResult` therefore gained an optional
|
|
18
|
+
`provisional`, naming the locations a command created without a value being
|
|
19
|
+
stated for them, and `InsertItem` reports the row it added. The element in the
|
|
20
|
+
data is still `null`, because an array cannot hold a hole and `undefined` is not
|
|
21
|
+
JSON: the distinction travels beside the data rather than in it, so nothing but
|
|
22
|
+
JSON ever reaches the schema port.
|
|
23
|
+
|
|
24
|
+
Provisional status ends at the first write at or beneath the location. Held for
|
|
25
|
+
the run, an item declaring `default: 'seed'` would read as absent on every pass
|
|
26
|
+
and be written on every pass, exhausting the budget and discarding everything.
|
|
27
|
+
"At or beneath" rather than "at", because an object row is created by a write to
|
|
28
|
+
one of its properties.
|
|
29
|
+
|
|
30
|
+
A row whose seeding does not converge keeps the insert and holds `null`: the
|
|
31
|
+
insert establishes no baseline, so ADR-003 keeps it, while the seeding is
|
|
32
|
+
transactional and none of it survives.
|
|
33
|
+
- 0afa5a2: Accepts ADR-003 and wires its initialization pass to the runtime.
|
|
34
|
+
|
|
35
|
+
`FormRuntimeOptions.initialization: 'schema-defaults'` fills every reachable
|
|
36
|
+
location the schema declares a `default` for and the data leaves absent. The
|
|
37
|
+
default stays `'none'`: given `{}` the runtime's data is still `{}`, and
|
|
38
|
+
projection never mutates data.
|
|
39
|
+
|
|
40
|
+
A location is filled when it becomes reachable, so the pass runs again after
|
|
41
|
+
every edit that can change what is reachable. Clicking a discriminator fills the
|
|
42
|
+
branch it reveals, which is what the reference does and what the Backstage
|
|
43
|
+
template the adoption exercise uses needs.
|
|
44
|
+
|
|
45
|
+
Failure is delivered by call surface, because they can carry different things.
|
|
46
|
+
`createFormRuntime` returns a value, so a run that does not converge within its
|
|
47
|
+
budget **throws** and the caller never receives a runtime. `dispatch` returns
|
|
48
|
+
void and is typically called from an event handler, so it reports on the new
|
|
49
|
+
`FormRuntime.initialization` store instead. What is discarded there depends on
|
|
50
|
+
what the moment establishes: a `Reset` establishes a baseline, so it is refused
|
|
51
|
+
whole and nothing lands, while an ordinary edit establishes none, so the edit
|
|
52
|
+
lands and only the seeding is discarded.
|
|
53
|
+
|
|
54
|
+
`FormRuntime.initialization` holds an `InitializationReport` or `undefined` where
|
|
55
|
+
no policy is configured, carrying the locations left absent because their
|
|
56
|
+
applicable declarations disagreed and those left absent because filling would
|
|
57
|
+
have meant guessing or destroying.
|
|
58
|
+
|
|
59
|
+
It publishes a new report on every data-mutating dispatch under the policy, even
|
|
60
|
+
one where the pass wrote nothing, because each dispatch is a run and what a run
|
|
61
|
+
finds can change as the user types. Anything subscribed to it therefore updates
|
|
62
|
+
per edit.
|
|
63
|
+
|
|
64
|
+
Adding a member to `FormRuntime` breaks a hand-written implementation of it, such
|
|
65
|
+
as a test double, which has to supply `initialization`. Every value that comes
|
|
66
|
+
from `createFormRuntime` is unaffected.
|
|
67
|
+
|
|
68
|
+
## 0.9.0
|
|
69
|
+
|
|
70
|
+
### Minor Changes
|
|
71
|
+
|
|
72
|
+
- a53724c: Report two disagreeing applicable defaults rather than merging them
|
|
73
|
+
|
|
74
|
+
`AnnotationSet.default` is one value, so an adapter that merges before core sees
|
|
75
|
+
anything reported whichever declaration its merge kept. For
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
{
|
|
79
|
+
type: 'object',
|
|
80
|
+
allOf: [
|
|
81
|
+
{ properties: { x: { type: 'string', default: 'a' } } },
|
|
82
|
+
{ properties: { x: { type: 'string', default: 'b' } } },
|
|
83
|
+
],
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`@texaryn/schema-json` reported `'b'` and `@texaryn/schema-json-hyperjump`
|
|
88
|
+
reported `'a'`. Neither is wrong, which is why neither can be the answer: in
|
|
89
|
+
JSON Schema two `allOf` branches are conjunctive and neither is nearer.
|
|
90
|
+
|
|
91
|
+
`/x` now projects with no `default` at all, and the projection carries an
|
|
92
|
+
`ambiguous-default` diagnostic naming the two schema positions that disagreed.
|
|
93
|
+
That is the rule `ambiguous-projection-shape` already applies to a shape two
|
|
94
|
+
keyword families disagree about, one level down.
|
|
95
|
+
|
|
96
|
+
Scope is declarations that apply to every instance: a location's own, and those
|
|
97
|
+
reached through `allOf` and `$ref`. A declaration carried by `oneOf`, `anyOf`,
|
|
98
|
+
`if`/`then`/`else` or `dependentSchemas` competes with the base only while its
|
|
99
|
+
branch applies, so whether it disagrees is a state of the data rather than a
|
|
100
|
+
fact about the schema, and `SchemaProjection.diagnostics` carries the latter.
|
|
101
|
+
Those still collapse, tracked as #142.
|
|
102
|
+
|
|
103
|
+
**Behaviour change.** A caller reading `annotations.default` for such a location
|
|
104
|
+
used to get a value and now gets `undefined`. That value was one library's
|
|
105
|
+
traversal order, so relying on it was relying on the adapter rather than on the
|
|
106
|
+
schema, but it is a change and this is why the bump is `minor`, which is the
|
|
107
|
+
break bump under 0.x.
|
|
108
|
+
|
|
109
|
+
`ProjectionDiagnostic` gains an optional `sources`, the schema positions a
|
|
110
|
+
diagnostic is about, as JSON Pointers into the schema document with the root as
|
|
111
|
+
the empty string. A position reached through `$ref` is named by what it resolves
|
|
112
|
+
to. Both adapters report in that form, so a diagnostic means the same thing
|
|
113
|
+
whichever produced it.
|
|
114
|
+
|
|
115
|
+
`@texaryn/schema-json-hyperjump` implements the same rule and gains the same
|
|
116
|
+
break. It is unpublished, so it carries no version here. It also returns a
|
|
117
|
+
`diagnostics` array for the first time, carrying `ambiguous-default` and only
|
|
118
|
+
that code: it detects neither shape code, so an empty array from it is not a
|
|
119
|
+
claim that no schema in the projection was ambiguous.
|
|
120
|
+
|
|
121
|
+
`NodeProjection.itemAnnotations.default` is unchanged and still collapses. It
|
|
122
|
+
describes an array's item schema rather than being an instance location, so
|
|
123
|
+
there is no pointer an omission there could be reported at, and the element
|
|
124
|
+
locations the data provides each report their own conflict.
|
|
125
|
+
|
|
3
126
|
## 0.8.0
|
|
4
127
|
|
|
5
128
|
### Minor Changes
|
|
@@ -2,4 +2,17 @@ import type { UIDocument } from '../ir/types.js';
|
|
|
2
2
|
import type { RuntimeState } from '../ir/runtime-state.js';
|
|
3
3
|
import type { Command, CommandResult } from './types.js';
|
|
4
4
|
export declare function processCommand(state: RuntimeState, command: Command, document: UIDocument): CommandResult;
|
|
5
|
+
/** Reset replaces state wholesale: identity is re-matched, so nested arrays under a reordered row may be minted afresh. */
|
|
6
|
+
/**
|
|
7
|
+
* What a `Reset` establishes as the new baseline, before any policy runs over
|
|
8
|
+
* it.
|
|
9
|
+
*
|
|
10
|
+
* `data` is optional rather than nullable, so an explicit `null` is a reset to
|
|
11
|
+
* `null` and not a reset to the initial data. Exported because the runtime has
|
|
12
|
+
* to initialize that target before the command reaches this handler, and the
|
|
13
|
+
* two would drift if each decided separately what `undefined` means.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resetTarget(state: RuntimeState, cmd: {
|
|
16
|
+
data?: unknown;
|
|
17
|
+
}): unknown;
|
|
5
18
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/commands/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAsBxD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,UAAU,GACnB,aAAa,CAqBf"}
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/commands/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAsBxD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,UAAU,GACnB,aAAa,CAqBf;AAmJD,2HAA2H;AAC3H;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAEjF"}
|
package/dist/commands/handler.js
CHANGED
|
@@ -70,11 +70,19 @@ function handleInsertItem(state, cmd, document) {
|
|
|
70
70
|
const arr = getAtPointer(state.data, container.dataPointer) ?? [];
|
|
71
71
|
if (cmd.index < 0 || cmd.index > arr.length)
|
|
72
72
|
return { nextState: state, effects: [] };
|
|
73
|
-
|
|
73
|
+
// `undefined` rather than `?? null`, so an explicit `null` is a row holding
|
|
74
|
+
// `null` and not a row nobody stated a value for. Both put `null` in the
|
|
75
|
+
// array, because an array cannot hold a hole and `undefined` is not JSON, so
|
|
76
|
+
// the difference travels beside the data rather than in it.
|
|
77
|
+
const stated = cmd.value !== undefined;
|
|
78
|
+
const newArr = [...arr.slice(0, cmd.index), stated ? cmd.value : null, ...arr.slice(cmd.index)];
|
|
74
79
|
const newData = setAtPointer(state.data, container.dataPointer, newArr);
|
|
75
80
|
const { map: newIdentities } = insertItem(state.identities, key, cmd.index);
|
|
76
81
|
return {
|
|
77
82
|
nextState: { ...state, data: newData, identities: newIdentities },
|
|
83
|
+
provisional: stated
|
|
84
|
+
? undefined
|
|
85
|
+
: [`${container.dataPointer}/${cmd.index}`],
|
|
78
86
|
effects: [
|
|
79
87
|
{ type: 'recompile', reason: 'data-changed' },
|
|
80
88
|
{ type: 'validate', nodeIds: [cmd.containerId], trigger: 'change' },
|
|
@@ -150,10 +158,20 @@ function handleSubmit(state) {
|
|
|
150
158
|
};
|
|
151
159
|
}
|
|
152
160
|
/** Reset replaces state wholesale: identity is re-matched, so nested arrays under a reordered row may be minted afresh. */
|
|
161
|
+
/**
|
|
162
|
+
* What a `Reset` establishes as the new baseline, before any policy runs over
|
|
163
|
+
* it.
|
|
164
|
+
*
|
|
165
|
+
* `data` is optional rather than nullable, so an explicit `null` is a reset to
|
|
166
|
+
* `null` and not a reset to the initial data. Exported because the runtime has
|
|
167
|
+
* to initialize that target before the command reaches this handler, and the
|
|
168
|
+
* two would drift if each decided separately what `undefined` means.
|
|
169
|
+
*/
|
|
170
|
+
export function resetTarget(state, cmd) {
|
|
171
|
+
return cmd.data === undefined ? state.initialData : cmd.data;
|
|
172
|
+
}
|
|
153
173
|
function handleReset(state, cmd, document) {
|
|
154
|
-
|
|
155
|
-
// to `null` and not a reset to the initial data.
|
|
156
|
-
const newData = cmd.data === undefined ? state.initialData : cmd.data;
|
|
174
|
+
const newData = resetTarget(state, cmd);
|
|
157
175
|
const nodes = new Map();
|
|
158
176
|
for (const [id] of state.nodes) {
|
|
159
177
|
const node = document.nodes[id];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/commands/handler.ts"],"names":[],"mappings":"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
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import type { NodeId } from '../types.js';
|
|
1
|
+
import type { JsonPointer, NodeId } from '../types.js';
|
|
2
2
|
import type { RuntimeState } from '../ir/runtime-state.js';
|
|
3
3
|
export type Command = {
|
|
4
4
|
type: 'SetValue';
|
|
@@ -46,5 +46,20 @@ export type Effect = {
|
|
|
46
46
|
export interface CommandResult {
|
|
47
47
|
nextState: RuntimeState;
|
|
48
48
|
effects: Effect[];
|
|
49
|
+
/**
|
|
50
|
+
* Locations the command created without a value being stated for them.
|
|
51
|
+
*
|
|
52
|
+
* Today this is the row an `InsertItem` with no `value` adds. The element in
|
|
53
|
+
* the data is `null`, because an array cannot hold a hole and `undefined` is
|
|
54
|
+
* not JSON, and that `null` is indistinguishable from one a caller passed
|
|
55
|
+
* explicitly. An initialization policy needs the difference, so the handler
|
|
56
|
+
* says which it was rather than leaving the value to be interpreted.
|
|
57
|
+
*
|
|
58
|
+
* Reported here rather than derived by the caller because only the handler
|
|
59
|
+
* knows the command was applied: an out-of-range index is a no-op, and naming
|
|
60
|
+
* a location it declined to create would invite filling a row that does not
|
|
61
|
+
* exist.
|
|
62
|
+
*/
|
|
63
|
+
provisional?: readonly JsonPointer[];
|
|
49
64
|
}
|
|
50
65
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACtD,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;IACjB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;CACrC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ export type { Store, WritableStore } from './state/index.js';
|
|
|
8
8
|
export { createStore } from './state/index.js';
|
|
9
9
|
export type { Command, Effect, CommandResult } from './commands/index.js';
|
|
10
10
|
export { processCommand } from './commands/index.js';
|
|
11
|
-
export type { FormRuntime, FormRuntimeOptions, NodeState } from './runtime/index.js';
|
|
11
|
+
export type { FormRuntime, FormRuntimeOptions, InitializationPolicy, InitializationReport, NodeState, } from './runtime/index.js';
|
|
12
12
|
export { createFormRuntime } from './runtime/index.js';
|
|
13
|
+
export type { DefaultConflict, DefaultRefusal } from './initialization/index.js';
|
|
13
14
|
export { getAtPointer, setAtPointer, parsePointer } from './json-pointer.js';
|
|
14
15
|
export { createIdentityMap, registerArray, insertItem, removeItem, moveItem, resolvePointer, reconcile, identityKey, ROOT_IDENTITY_KEY, } from './identity/index.js';
|
|
15
16
|
export type { ReconcileOptions, IdentityKey, IdentitySegment } from './identity/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,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,oBAAoB,EACpB,wBAAwB,EACxB,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,
|
|
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,oBAAoB,EACpB,wBAAwB,EACxB,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,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"}
|
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;AAevC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAevC,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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { Location, InitializationView, ProjectView, DefaultConflict, DefaultRefusal, InitializationResult, InitializeOptions, } from './kernel.js';
|
|
2
|
+
export { initializeDefaults } from './kernel.js';
|
|
3
|
+
export { viewFromProjection } from './view.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/initialization/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/initialization/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { JsonPointer } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The initialization pass from ADR-003, over a normalized view of a schema
|
|
4
|
+
* rather than a `SchemaProjection`.
|
|
5
|
+
*
|
|
6
|
+
* Reached through `FormRuntimeOptions.initialization`, which is the whole of the
|
|
7
|
+
* published surface. `initializeDefaults` itself is not exported: a caller who
|
|
8
|
+
* could run the pass over arbitrary data could produce a baseline the runtime
|
|
9
|
+
* never agreed to, and rule 6 makes what the pass wrote the baseline.
|
|
10
|
+
*
|
|
11
|
+
* The input stays a normalized view now that the port can supply one, because
|
|
12
|
+
* the two are different questions. What a projection says is `view.ts`, which
|
|
13
|
+
* is small and entirely about translation; what the pass does with it is here,
|
|
14
|
+
* and is the part ADR-003 argues.
|
|
15
|
+
*
|
|
16
|
+
* The view is a function of a data snapshot, so what applies is re-asked after
|
|
17
|
+
* every write. Rule 4 needs that: a default can reveal a branch whose own
|
|
18
|
+
* defaults were not reachable before it was written.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Where a default applies, as a JSON Pointer.
|
|
22
|
+
*
|
|
23
|
+
* A pointer is enough here because the pass carries no materialization history
|
|
24
|
+
* across edits: a location is an address within one snapshot, not the identity
|
|
25
|
+
* of a row over time. Persistent per-location state, if a later revision of the
|
|
26
|
+
* contract needs it, has to use core's stable item identity instead, because
|
|
27
|
+
* removing a row renumbers the pointers of the rows after it.
|
|
28
|
+
*/
|
|
29
|
+
export type Location = JsonPointer;
|
|
30
|
+
/**
|
|
31
|
+
* What applies to one data snapshot.
|
|
32
|
+
*
|
|
33
|
+
* This is what a `SchemaProjection` says, restated as the three things the pass
|
|
34
|
+
* reads. A location appears in at most one of `defaults` and `conflicts`, which
|
|
35
|
+
* the port guarantees: it omits `AnnotationSet.default` exactly where it reports
|
|
36
|
+
* `ambiguous-default`.
|
|
37
|
+
*/
|
|
38
|
+
export interface InitializationView {
|
|
39
|
+
/** Locations the schema exposes for the instance as it stands. */
|
|
40
|
+
readonly reachable: ReadonlySet<Location>;
|
|
41
|
+
/** The one value declared at a location, where the schema declares one. */
|
|
42
|
+
readonly defaults: ReadonlyMap<Location, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Locations where declarations that apply whatever the instance is disagree,
|
|
45
|
+
* mapped to the schema positions that disagreed.
|
|
46
|
+
*
|
|
47
|
+
* Carried separately rather than as a list of candidates, because the port
|
|
48
|
+
* reports the disagreement without reporting the values: there is no merged
|
|
49
|
+
* value it could give, which is why it omits the annotation. Resolving
|
|
50
|
+
* declarations is therefore the port's job and not this pass's, and the pass
|
|
51
|
+
* needs only the fact, to leave the location alone and to stop a descendant
|
|
52
|
+
* creating it.
|
|
53
|
+
*/
|
|
54
|
+
readonly conflicts: ReadonlyMap<Location, readonly string[]>;
|
|
55
|
+
}
|
|
56
|
+
export type ProjectView = (data: unknown) => InitializationView;
|
|
57
|
+
/** Two or more applicable declarations that do not agree. */
|
|
58
|
+
export interface DefaultConflict {
|
|
59
|
+
readonly location: Location;
|
|
60
|
+
/** The schema positions that disagreed, as the port reported them. */
|
|
61
|
+
readonly sources: readonly string[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A default the pass declined to apply. Reported rather than skipped, because an
|
|
65
|
+
* absent location that nothing explains is the failure mode the applicator depth
|
|
66
|
+
* cap in #118 taught against.
|
|
67
|
+
*/
|
|
68
|
+
export interface DefaultRefusal {
|
|
69
|
+
readonly location: Location;
|
|
70
|
+
readonly reason:
|
|
71
|
+
/** An ancestor holds a scalar, so writing would destroy it. */
|
|
72
|
+
'non-container-ancestor'
|
|
73
|
+
/** An ancestor is absent and the pointer does not say what kind of container it is. */
|
|
74
|
+
| 'unknown-container-kind';
|
|
75
|
+
}
|
|
76
|
+
export type InitializationResult = {
|
|
77
|
+
readonly outcome: 'initialized';
|
|
78
|
+
readonly data: unknown;
|
|
79
|
+
/**
|
|
80
|
+
* Locations this run filled, in the order they were written.
|
|
81
|
+
*
|
|
82
|
+
* A seeding between construction and the next `Reset` happens against a
|
|
83
|
+
* baseline that is already fixed, so those locations are `modified` and
|
|
84
|
+
* nothing else can work that out: the runtime builds node state fresh or
|
|
85
|
+
* carries the answer from before the run.
|
|
86
|
+
*/
|
|
87
|
+
readonly written: readonly Location[];
|
|
88
|
+
/** Locations left absent because their declarations disagreed. */
|
|
89
|
+
readonly conflicts: readonly DefaultConflict[];
|
|
90
|
+
/** Locations left absent because the pass would have had to guess or destroy. */
|
|
91
|
+
readonly refusals: readonly DefaultRefusal[];
|
|
92
|
+
readonly passes: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Nothing was written. ADR-003 makes exhaustion transactional: keeping the
|
|
96
|
+
* partial writes would make the resulting data depend on the budget, which is
|
|
97
|
+
* an arbitrary number.
|
|
98
|
+
*/
|
|
99
|
+
| {
|
|
100
|
+
readonly outcome: 'budget-exhausted';
|
|
101
|
+
readonly passes: number;
|
|
102
|
+
};
|
|
103
|
+
export interface InitializeOptions {
|
|
104
|
+
/**
|
|
105
|
+
* A recursive schema can keep revealing locations, so passes are bounded.
|
|
106
|
+
* Monotonicity alone does not terminate: it only guarantees that a pass
|
|
107
|
+
* writing nothing is the end.
|
|
108
|
+
*/
|
|
109
|
+
readonly maxPasses?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Locations the caller created without stating a value for them, which read
|
|
112
|
+
* as absent until something is written.
|
|
113
|
+
*
|
|
114
|
+
* An `InsertItem` with no `value` adds a row holding `null`, because an array
|
|
115
|
+
* cannot hold a hole and `undefined` is not JSON. That `null` is a value by
|
|
116
|
+
* every rule here, so without this the row's own declarations are refused and
|
|
117
|
+
* the caller gets `null` where a default was declared.
|
|
118
|
+
*
|
|
119
|
+
* **Consumed by the first write at or beneath the location, never held for
|
|
120
|
+
* the run.** Held, an item declaring `default: 'seed'` would read as absent
|
|
121
|
+
* again on the next pass, be written again, and run to the budget, which
|
|
122
|
+
* discards everything. "At or beneath" rather than "at", because an object
|
|
123
|
+
* item is created by a write to one of its properties: a rule keyed on the
|
|
124
|
+
* row itself would leave it reading as absent while it holds a real object,
|
|
125
|
+
* which a later declaration could then overwrite.
|
|
126
|
+
*
|
|
127
|
+
* Keyed on the write rather than on the value, because a row that has just
|
|
128
|
+
* been filled with a declared `null` holds exactly what the placeholder does.
|
|
129
|
+
*/
|
|
130
|
+
readonly provisional?: readonly Location[];
|
|
131
|
+
}
|
|
132
|
+
export declare function initializeDefaults(data: unknown, view: ProjectView, options?: InitializeOptions): InitializationResult;
|
|
133
|
+
//# sourceMappingURL=kernel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/initialization/kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACzC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;CAC7D;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,kBAAkB,CAAA;AAE/D,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,MAAM;IACb,+DAA+D;IAC7D,wBAAwB;IAC1B,uFAAuF;OACrF,wBAAwB,CAAA;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAA;IACrC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAA;IAC9C,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAA;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AACH;;;;GAIG;GACD;IAAE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;CAC3C;AAID,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,iBAAsB,GAC9B,oBAAoB,CAmBtB"}
|