dirvi-lib 0.11.0-beta.1 → 0.11.0-beta.13
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/dist/app/app-methods.d.ts +53 -0
- package/dist/app/app-methods.d.ts.map +1 -0
- package/dist/app/index.d.ts +1 -1
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +1 -1
- package/dist/app/reducer/effect-to-action.d.ts +2 -2
- package/dist/app/reducer/effect-to-action.d.ts.map +1 -1
- package/dist/app/reducer/effect-to-action.js +87 -32
- package/dist/app/reducer/reducer-action.d.ts +12 -6
- package/dist/app/reducer/reducer-action.d.ts.map +1 -1
- package/dist/app/reducer/reducer.d.ts +4 -2
- package/dist/app/reducer/reducer.d.ts.map +1 -1
- package/dist/app/reducer/reducer.js +106 -72
- package/dist/feedback/feedback.impl.d.ts.map +1 -1
- package/dist/feedback/feedback.types.d.ts +1 -1
- package/dist/feedback/feedback.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 +1 -1
- package/dist/input/application/intent-to-effect.d.ts +2 -2
- package/dist/input/application/intent-to-effect.d.ts.map +1 -1
- package/dist/input/application/intent-to-effect.js +10 -11
- package/dist/input/application/parse-ex-command.d.ts +17 -0
- package/dist/input/application/parse-ex-command.d.ts.map +1 -0
- package/dist/input/application/{parse-command.js → parse-ex-command.js} +84 -54
- package/dist/input/application/parse-normal-command.d.ts +1 -1
- package/dist/input/application/parse-normal-command.d.ts.map +1 -1
- package/dist/input/domain/effect.d.ts +20 -9
- package/dist/input/domain/effect.d.ts.map +1 -1
- package/dist/state-and-nav/cursor.d.ts +89 -0
- package/dist/state-and-nav/cursor.d.ts.map +1 -0
- package/dist/state-and-nav/cursor.js +84 -0
- package/dist/{trees → state-and-nav}/fold-node/deprecated/fold-node.impl.d.ts +1 -1
- package/dist/state-and-nav/fold-node/deprecated/fold-node.impl.d.ts.map +1 -0
- package/dist/state-and-nav/fold-node/deprecated/fold-node.test.d.ts.map +1 -0
- package/dist/{trees → state-and-nav}/fold-node/deprecated/fold-node.test.js +2 -2
- package/dist/{trees → state-and-nav}/fold-node/deprecated/fold-node.types.d.ts +2 -2
- package/dist/state-and-nav/fold-node/deprecated/fold-node.types.d.ts.map +1 -0
- package/dist/{trees → state-and-nav}/fold-node/fold-node.impl.d.ts +3 -3
- package/dist/state-and-nav/fold-node/fold-node.impl.d.ts.map +1 -0
- package/dist/{trees → state-and-nav}/fold-node/fold-node.impl.js +2 -2
- package/dist/{trees → state-and-nav}/fold-node/fold-node.model.d.ts +1 -1
- package/dist/state-and-nav/fold-node/fold-node.model.d.ts.map +1 -0
- package/dist/{trees → state-and-nav}/fold-node/fold-node.types.d.ts +2 -2
- package/dist/state-and-nav/fold-node/fold-node.types.d.ts.map +1 -0
- package/dist/state-and-nav/fold-node/index.d.ts.map +1 -0
- package/dist/state-and-nav/index.d.ts +16 -0
- package/dist/state-and-nav/index.d.ts.map +1 -0
- package/dist/state-and-nav/index.js +6 -0
- package/dist/state-and-nav/nav/nav.ordered.impl.d.ts +12 -0
- package/dist/state-and-nav/nav/nav.ordered.impl.d.ts.map +1 -0
- package/dist/state-and-nav/nav/nav.ordered.impl.js +77 -0
- package/dist/state-and-nav/nav/nav.traversal.d.ts +11 -0
- package/dist/state-and-nav/nav/nav.traversal.d.ts.map +1 -0
- package/dist/state-and-nav/nav/nav.traversal.js +204 -0
- package/dist/{trees/nav-node/nav-node.types.d.ts → state-and-nav/nav/nav.types.d.ts} +37 -23
- package/dist/state-and-nav/nav/nav.types.d.ts.map +1 -0
- package/dist/state-and-nav/nav/nav.unordered.impl.d.ts +13 -0
- package/dist/state-and-nav/nav/nav.unordered.impl.d.ts.map +1 -0
- package/dist/state-and-nav/nav/nav.unordered.impl.js +77 -0
- package/dist/state-and-nav/state/state.impl.d.ts +9 -0
- package/dist/state-and-nav/state/state.impl.d.ts.map +1 -0
- package/dist/{trees → state-and-nav}/state/state.impl.js +62 -9
- package/dist/state-and-nav/state/state.schemas.d.ts +2 -0
- package/dist/state-and-nav/state/state.schemas.d.ts.map +1 -0
- package/dist/state-and-nav/state/state.schemas.js +39 -0
- package/dist/state-and-nav/state/state.types.d.ts +72 -0
- package/dist/state-and-nav/state/state.types.d.ts.map +1 -0
- package/dist/state-and-nav/tree/deprecated/tree-node.arb.d.ts.map +1 -0
- package/dist/state-and-nav/tree/deprecated/tree-node.arb.debug.test.d.ts.map +1 -0
- package/dist/state-and-nav/tree/deprecated/tree-node.impl.d.ts.map +1 -0
- package/dist/state-and-nav/tree/deprecated/tree-node.schemas.d.ts.map +1 -0
- package/dist/state-and-nav/tree/deprecated/tree-node.test.d.ts.map +1 -0
- package/dist/state-and-nav/tree/deprecated/tree-node.types.d.ts.map +1 -0
- package/dist/state-and-nav/tree/index.d.ts +7 -0
- package/dist/state-and-nav/tree/index.d.ts.map +1 -0
- package/dist/state-and-nav/tree/index.js +1 -0
- package/dist/state-and-nav/tree/tree-node.arb.d.ts +94 -0
- package/dist/state-and-nav/tree/tree-node.arb.d.ts.map +1 -0
- package/dist/state-and-nav/tree/tree-node.arb.debug.test.d.ts +2 -0
- package/dist/state-and-nav/tree/tree-node.arb.debug.test.d.ts.map +1 -0
- package/dist/state-and-nav/tree/tree-node.arb.debug.test.js +54 -0
- package/dist/state-and-nav/tree/tree-node.arb.js +188 -0
- package/dist/state-and-nav/tree/tree-node.model.d.ts +194 -0
- package/dist/state-and-nav/tree/tree-node.model.d.ts.map +1 -0
- package/dist/state-and-nav/tree/tree-node.model.js +110 -0
- package/dist/state-and-nav/tree/tree-node.test.d.ts +2 -0
- package/dist/state-and-nav/tree/tree-node.test.d.ts.map +1 -0
- package/dist/state-and-nav/tree/tree-node.test.js +234 -0
- package/dist/{trees/tree-node/tree-node.impl.d.ts → state-and-nav/tree/tree.impl.d.ts} +3 -3
- package/dist/state-and-nav/tree/tree.impl.d.ts.map +1 -0
- package/dist/{trees/tree-node/tree-node.impl.js → state-and-nav/tree/tree.impl.js} +20 -17
- package/dist/{trees/tree-node/tree-node.types.d.ts → state-and-nav/tree/tree.types.d.ts} +67 -47
- package/dist/state-and-nav/tree/tree.types.d.ts.map +1 -0
- package/dist/state-and-nav/tree/tree.types.js +1 -0
- package/package.json +3 -2
- package/dist/app/app-api.d.ts +0 -74
- package/dist/app/app-api.d.ts.map +0 -1
- package/dist/app/app-api.js +0 -11
- package/dist/input/application/parse-command.d.ts +0 -14
- package/dist/input/application/parse-command.d.ts.map +0 -1
- package/dist/trees/cursor.d.ts +0 -59
- package/dist/trees/cursor.d.ts.map +0 -1
- package/dist/trees/cursor.js +0 -55
- package/dist/trees/fold-node/deprecated/fold-node.impl.d.ts.map +0 -1
- package/dist/trees/fold-node/deprecated/fold-node.test.d.ts.map +0 -1
- package/dist/trees/fold-node/deprecated/fold-node.types.d.ts.map +0 -1
- package/dist/trees/fold-node/fold-node.impl.d.ts.map +0 -1
- package/dist/trees/fold-node/fold-node.model.d.ts.map +0 -1
- package/dist/trees/fold-node/fold-node.types.d.ts.map +0 -1
- package/dist/trees/fold-node/index.d.ts.map +0 -1
- package/dist/trees/index.d.ts +0 -9
- package/dist/trees/index.d.ts.map +0 -1
- package/dist/trees/index.js +0 -8
- package/dist/trees/nav-node/nav-node.impl.d.ts +0 -29
- package/dist/trees/nav-node/nav-node.impl.d.ts.map +0 -1
- package/dist/trees/nav-node/nav-node.impl.js +0 -223
- package/dist/trees/nav-node/nav-node.types.d.ts.map +0 -1
- package/dist/trees/state/state.impl.d.ts +0 -8
- package/dist/trees/state/state.impl.d.ts.map +0 -1
- package/dist/trees/state/state.schemas.d.ts +0 -25
- package/dist/trees/state/state.schemas.d.ts.map +0 -1
- package/dist/trees/state/state.schemas.js +0 -17
- package/dist/trees/state/state.types.d.ts +0 -36
- package/dist/trees/state/state.types.d.ts.map +0 -1
- package/dist/trees/tree-node/deprecated/tree-node.arb.d.ts.map +0 -1
- package/dist/trees/tree-node/deprecated/tree-node.arb.debug.test.d.ts.map +0 -1
- package/dist/trees/tree-node/deprecated/tree-node.impl.d.ts.map +0 -1
- package/dist/trees/tree-node/deprecated/tree-node.schemas.d.ts.map +0 -1
- package/dist/trees/tree-node/deprecated/tree-node.test.d.ts.map +0 -1
- package/dist/trees/tree-node/deprecated/tree-node.types.d.ts.map +0 -1
- package/dist/trees/tree-node/index.d.ts +0 -5
- package/dist/trees/tree-node/index.d.ts.map +0 -1
- package/dist/trees/tree-node/index.js +0 -2
- package/dist/trees/tree-node/tree-node.arb.d.ts +0 -104
- package/dist/trees/tree-node/tree-node.arb.d.ts.map +0 -1
- package/dist/trees/tree-node/tree-node.arb.js +0 -188
- package/dist/trees/tree-node/tree-node.impl.d.ts.map +0 -1
- package/dist/trees/tree-node/tree-node.model.d.ts +0 -78
- package/dist/trees/tree-node/tree-node.model.d.ts.map +0 -1
- package/dist/trees/tree-node/tree-node.model.js +0 -37
- package/dist/trees/tree-node/tree-node.types.d.ts.map +0 -1
- /package/dist/{trees/fold-node/deprecated/fold-node.types.js → app/app-methods.js} +0 -0
- /package/dist/{trees → state-and-nav}/fold-node/deprecated/fold-node.impl.js +0 -0
- /package/dist/{trees → state-and-nav}/fold-node/deprecated/fold-node.test.d.ts +0 -0
- /package/dist/{trees/fold-node → state-and-nav/fold-node/deprecated}/fold-node.types.js +0 -0
- /package/dist/{trees → state-and-nav}/fold-node/fold-node.model.js +0 -0
- /package/dist/{trees/nav-node/nav-node.types.js → state-and-nav/fold-node/fold-node.types.js} +0 -0
- /package/dist/{trees → state-and-nav}/fold-node/index.d.ts +0 -0
- /package/dist/{trees → state-and-nav}/fold-node/index.js +0 -0
- /package/dist/{trees/state/state.types.js → state-and-nav/nav/nav.types.js} +0 -0
- /package/dist/{trees/tree-node/deprecated/tree-node.types.js → state-and-nav/state/state.types.js} +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.arb.d.ts +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.arb.debug.test.d.ts +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.arb.debug.test.js +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.arb.js +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.impl.d.ts +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.impl.js +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.schemas.d.ts +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.schemas.js +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.test.d.ts +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.test.js +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.types.d.ts +0 -0
- /package/dist/{trees/tree-node → state-and-nav/tree/deprecated}/tree-node.types.js +0 -0
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import * as fc from 'fast-check';
|
|
2
|
-
/**
|
|
3
|
-
* Characters used for readable generated node IDs.
|
|
4
|
-
*/
|
|
5
|
-
const smallLetterCharacters = Array.from('abcdefghijklmnopqrstuvwxyz');
|
|
6
|
-
/**
|
|
7
|
-
* Generates valid string IDs for test nodes. Note that the API just does
|
|
8
|
-
* comparisons on the IDs so we can safely restrict to any subset.
|
|
9
|
-
*/
|
|
10
|
-
export const testIdArb = fc.string({
|
|
11
|
-
unit: fc.constantFrom(...smallLetterCharacters),
|
|
12
|
-
minLength: 1,
|
|
13
|
-
maxLength: 8,
|
|
14
|
-
});
|
|
15
|
-
/**
|
|
16
|
-
* Generates serializable application values for test nodes.
|
|
17
|
-
*/
|
|
18
|
-
export const testValueArb = fc.integer({
|
|
19
|
-
min: -10_000,
|
|
20
|
-
max: 10_000,
|
|
21
|
-
});
|
|
22
|
-
const generatedLeafModel = (id, value) => {
|
|
23
|
-
const model = {
|
|
24
|
-
id,
|
|
25
|
-
value,
|
|
26
|
-
};
|
|
27
|
-
return {
|
|
28
|
-
model,
|
|
29
|
-
reachableModels: [{ path: [], model }],
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
function generatedUnloadedBranchModel(id, value) {
|
|
33
|
-
const model = {
|
|
34
|
-
id,
|
|
35
|
-
value,
|
|
36
|
-
children: null,
|
|
37
|
-
};
|
|
38
|
-
return {
|
|
39
|
-
model,
|
|
40
|
-
reachableModels: [{ path: [], model }],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Creates the metadata for a loaded branch and all descendants reachable
|
|
45
|
-
* through its loaded child collection.
|
|
46
|
-
*
|
|
47
|
-
* Child-array order is not semantically meaningful to the tree API. The
|
|
48
|
-
* generator happens to use an array because `TreeNodeModel` is serializable.
|
|
49
|
-
*/
|
|
50
|
-
function generatedLoadedBranchModel(id, value, children) {
|
|
51
|
-
const model = {
|
|
52
|
-
id,
|
|
53
|
-
value,
|
|
54
|
-
children: children.map(({ model: child }) => child),
|
|
55
|
-
};
|
|
56
|
-
const reachableDescendants = children.flatMap(({ model: childModel, reachableModels }) => reachableModels.map(({ path, model: reachableModel }) => ({
|
|
57
|
-
path: [childModel.id, ...path],
|
|
58
|
-
model: reachableModel,
|
|
59
|
-
})));
|
|
60
|
-
return {
|
|
61
|
-
model,
|
|
62
|
-
reachableModels: [{ path: [], model }, ...reachableDescendants],
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Generates a leaf model.
|
|
67
|
-
*/
|
|
68
|
-
export const generatedLeafModelArb = fc
|
|
69
|
-
.tuple(testIdArb, testValueArb)
|
|
70
|
-
.map(([id, value]) => generatedLeafModel(id, value));
|
|
71
|
-
/**
|
|
72
|
-
* Generates an unloaded-branch model.
|
|
73
|
-
*/
|
|
74
|
-
export const generatedUnloadedBranchModelArb = fc
|
|
75
|
-
.tuple(testIdArb, testValueArb)
|
|
76
|
-
.map(([id, value]) => generatedUnloadedBranchModel(id, value));
|
|
77
|
-
/**
|
|
78
|
-
* Generates either kind of terminal model.
|
|
79
|
-
*
|
|
80
|
-
* Both leaves and unloaded branches terminate path traversal.
|
|
81
|
-
*/
|
|
82
|
-
const generatedTerminalModelArb = fc.oneof(generatedLeafModelArb, generatedUnloadedBranchModelArb);
|
|
83
|
-
/**
|
|
84
|
-
* Generates a leaf, an unloaded branch, or a loaded branch.
|
|
85
|
-
*
|
|
86
|
-
* Loaded branches have unique child IDs. Root IDs are made unique separately
|
|
87
|
-
* when generating a forest.
|
|
88
|
-
*
|
|
89
|
-
* The weighted choice gives recursive open branches a geometric dropoff.
|
|
90
|
-
*/
|
|
91
|
-
export const generatedNodeArb = fc.letrec((tie) => {
|
|
92
|
-
const generatedChildModelArb = tie('node');
|
|
93
|
-
/**
|
|
94
|
-
* Generates the loaded children of an open branch.
|
|
95
|
-
*
|
|
96
|
-
* Sibling IDs must be unique so that child lookup is unambiguous. The
|
|
97
|
-
* maximum length also limits the branching factor of recursive examples.
|
|
98
|
-
*/
|
|
99
|
-
const generatedOpenChildrenArb = fc.uniqueArray(generatedChildModelArb, {
|
|
100
|
-
minLength: 0,
|
|
101
|
-
maxLength: 4,
|
|
102
|
-
size: 'medium',
|
|
103
|
-
selector: ({ model }) => model.id,
|
|
104
|
-
});
|
|
105
|
-
/**
|
|
106
|
-
* Generates an open branch and its reachable descendants.
|
|
107
|
-
*/
|
|
108
|
-
const generatedLoadedBranchModelArb = fc
|
|
109
|
-
.tuple(testIdArb, testValueArb, generatedOpenChildrenArb)
|
|
110
|
-
.map(([id, value, children]) => generatedLoadedBranchModel(id, value, children));
|
|
111
|
-
return {
|
|
112
|
-
node: fc
|
|
113
|
-
.integer({
|
|
114
|
-
min: 0,
|
|
115
|
-
max: 9999,
|
|
116
|
-
})
|
|
117
|
-
.chain((choice) =>
|
|
118
|
-
// 5046 works for getAtPath tests, but too heavy for modifyAtPath tests
|
|
119
|
-
choice >= 5050
|
|
120
|
-
? generatedLoadedBranchModelArb
|
|
121
|
-
: generatedTerminalModelArb),
|
|
122
|
-
};
|
|
123
|
-
}).node;
|
|
124
|
-
/**
|
|
125
|
-
* Generates an array of generated nodes with unique sibling IDs.
|
|
126
|
-
*
|
|
127
|
-
* The result is suitable for use as the loaded children of an open branch.
|
|
128
|
-
*/
|
|
129
|
-
export const generatedNodesArrayArb = fc.uniqueArray(generatedNodeArb, {
|
|
130
|
-
minLength: 0,
|
|
131
|
-
size: 'small',
|
|
132
|
-
selector: (generated) => generated.model.id,
|
|
133
|
-
});
|
|
134
|
-
/**
|
|
135
|
-
* An array of root-level nodes and all paths that can be resolved through
|
|
136
|
-
* those nodes.
|
|
137
|
-
*
|
|
138
|
-
* Paths through closed branches stop at the closed branch because its
|
|
139
|
-
* descendants are not loaded.
|
|
140
|
-
*/
|
|
141
|
-
export const nodeAndPathsArb = generatedNodeArb.map(({ model: root, reachableModels }) => ({
|
|
142
|
-
root,
|
|
143
|
-
pathEntries: reachableModels,
|
|
144
|
-
}));
|
|
145
|
-
/**
|
|
146
|
-
* Generates root-level nodes and a path to one of their reachable nodes.
|
|
147
|
-
*
|
|
148
|
-
* Every generated path is valid for `getAtPath`; unreachable paths are not
|
|
149
|
-
* included.
|
|
150
|
-
*/
|
|
151
|
-
export const nodeAndPathAndExpectedArb = nodeAndPathsArb
|
|
152
|
-
.filter(({ pathEntries }) => pathEntries.length > 0)
|
|
153
|
-
.chain(({ root, pathEntries }) => fc.constantFrom(...pathEntries).map(({ path, model }) => ({
|
|
154
|
-
root,
|
|
155
|
-
path,
|
|
156
|
-
expected: model,
|
|
157
|
-
})));
|
|
158
|
-
/**
|
|
159
|
-
* Generates root-level nodes and a path to one of their branch nodes.
|
|
160
|
-
*
|
|
161
|
-
* Both open and closed branches are included. A path to a closed branch is
|
|
162
|
-
* valid, but a path through a closed branch cannot reach any descendants.
|
|
163
|
-
*/
|
|
164
|
-
export const nodesArrayAndBranchPathArb = nodeAndPathsArb
|
|
165
|
-
.map(({ root, pathEntries }) => ({
|
|
166
|
-
root,
|
|
167
|
-
branchPathEntries: pathEntries.filter(({ model }) => 'children' in model),
|
|
168
|
-
}))
|
|
169
|
-
.filter(({ branchPathEntries }) => branchPathEntries.length > 0)
|
|
170
|
-
.chain(({ root, branchPathEntries }) => fc.constantFrom(...branchPathEntries).map(({ path, model }) => ({
|
|
171
|
-
root,
|
|
172
|
-
path,
|
|
173
|
-
expected: model,
|
|
174
|
-
})));
|
|
175
|
-
/**
|
|
176
|
-
* Generates a new array of loaded child nodes.
|
|
177
|
-
*
|
|
178
|
-
* The generated nodes have unique IDs, making the result suitable for use as
|
|
179
|
-
* the children of an open branch.
|
|
180
|
-
*/
|
|
181
|
-
export const newBranchesArb = generatedNodesArrayArb.map((generatedNodes) => generatedNodes.map(({ model }) => model));
|
|
182
|
-
/**
|
|
183
|
-
* Generates either a new array of loaded child nodes or `null`.
|
|
184
|
-
*
|
|
185
|
-
* An array represents an open branch, including an open branch with no
|
|
186
|
-
* children. `null` represents a closed branch.
|
|
187
|
-
*/
|
|
188
|
-
export const newBranchesOrNullArb = fc.oneof(newBranchesArb, fc.constant(null));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.impl.d.ts","sourceRoot":"","sources":["../../../src/trees/tree-node/tree-node.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EAGZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,sBAAsB,CAAC;AAqJ3E;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,SAAS,eAAe,EAC1B,KAAK,KACF,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAiR1B"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* A serializable primitive suitable for use as a stable tree-node ID.
|
|
4
|
-
*
|
|
5
|
-
* @remarks
|
|
6
|
-
*
|
|
7
|
-
* A node ID identifies a node among its direct siblings. It is not required
|
|
8
|
-
* to be globally unique across the whole tree: two nodes in different
|
|
9
|
-
* branches may have the same ID.
|
|
10
|
-
*
|
|
11
|
-
* Numeric IDs must be finite. TypeScript cannot represent the exclusion of
|
|
12
|
-
* `NaN`, `Infinity`, and `-Infinity` from `number`, so values received from
|
|
13
|
-
* an untrusted source should be validated at an application boundary, for
|
|
14
|
-
* example with `serializableKeySchema`.
|
|
15
|
-
*
|
|
16
|
-
* Applications should normally define a narrower domain-specific ID type.
|
|
17
|
-
* Branded ID types prevent IDs from unrelated domains from being mixed
|
|
18
|
-
* accidentally, even when both use strings at runtime.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
*
|
|
22
|
-
* ```ts
|
|
23
|
-
* const menuIdSchema = z
|
|
24
|
-
* .string()
|
|
25
|
-
* .min(1)
|
|
26
|
-
* .brand<'MenuId'>();
|
|
27
|
-
*
|
|
28
|
-
* type MenuId = z.output<typeof menuIdSchema>;
|
|
29
|
-
*
|
|
30
|
-
* type MenuItem = Readonly<{
|
|
31
|
-
* label: string;
|
|
32
|
-
* href?: string;
|
|
33
|
-
* }>;
|
|
34
|
-
*
|
|
35
|
-
* type MenuTree = TreeNode<MenuId, MenuItem>;
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export type SerializableKey = string | number;
|
|
39
|
-
/**
|
|
40
|
-
* Validates a serializable primitive suitable for use as a stable tree-node ID.
|
|
41
|
-
*
|
|
42
|
-
* Strings are always accepted. Numbers must be finite: `NaN`, `Infinity`, and
|
|
43
|
-
* `-Infinity` are rejected.
|
|
44
|
-
*/
|
|
45
|
-
export declare const serializableKeySchema: z.ZodType<SerializableKey>;
|
|
46
|
-
/**
|
|
47
|
-
* A structural, serializable snapshot of a tree node.
|
|
48
|
-
*
|
|
49
|
-
* This is a public persistence and interchange model for `TreeNode`; it is
|
|
50
|
-
* not the runtime representation of an opaque `TreeNode` value.
|
|
51
|
-
*
|
|
52
|
-
* Loaded children are represented by an array because JSON has no native
|
|
53
|
-
* unordered collection type. The array encodes an unordered collection of
|
|
54
|
-
* sibling-unique nodes: its iteration order has no semantic meaning and is
|
|
55
|
-
* not guaranteed to be preserved by `TreeNodeApi.fromModel`,
|
|
56
|
-
* `TreeNodeApi.toModel`, or other tree operations.
|
|
57
|
-
*
|
|
58
|
-
* Applications that need visual or navigation order should derive ordered UI
|
|
59
|
-
* rows from the tree using an explicit ordering policy.
|
|
60
|
-
*/
|
|
61
|
-
export type TreeNodeModel<Id extends SerializableKey, Value> = LeafTreeNodeModel<Id, Value> | UnloadedBranchTreeNodeModel<Id, Value> | LoadedBranchTreeNodeModel<Id, Value>;
|
|
62
|
-
export type LeafTreeNodeModel<Id extends SerializableKey, Value> = Readonly<{
|
|
63
|
-
id: Id;
|
|
64
|
-
value: Value;
|
|
65
|
-
children?: never;
|
|
66
|
-
}>;
|
|
67
|
-
export type UnloadedBranchTreeNodeModel<Id extends SerializableKey, Value> = Readonly<{
|
|
68
|
-
id: Id;
|
|
69
|
-
value: Value;
|
|
70
|
-
children: null;
|
|
71
|
-
}>;
|
|
72
|
-
export type LoadedBranchTreeNodeModel<Id extends SerializableKey, Value> = Readonly<{
|
|
73
|
-
id: Id;
|
|
74
|
-
value: Value;
|
|
75
|
-
children: readonly TreeNodeModel<Id, Value>[];
|
|
76
|
-
}>;
|
|
77
|
-
export declare function createTreeNodeModelSchema<Id extends SerializableKey, Value>(idSchema: z.ZodType<Id>, valueSchema: z.ZodType<Value>): z.ZodType<TreeNodeModel<Id, Value>>;
|
|
78
|
-
//# sourceMappingURL=tree-node.model.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.model.d.ts","sourceRoot":"","sources":["../../../src/trees/tree-node/tree-node.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAG3D,CAAC;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IACvD,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,GAC5B,2BAA2B,CAAC,EAAE,EAAE,KAAK,CAAC,GACtC,yBAAyB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAEzC,MAAM,MAAM,iBAAiB,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,QAAQ,CAAC;IAC1E,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,2BAA2B,CACrC,EAAE,SAAS,eAAe,EAC1B,KAAK,IACH,QAAQ,CAAC;IACX,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,CACnC,EAAE,SAAS,eAAe,EAC1B,KAAK,IACH,QAAQ,CAAC;IACX,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,SAAS,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EACzE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EACvB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAC5B,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CA+BrC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* Validates a serializable primitive suitable for use as a stable tree-node ID.
|
|
4
|
-
*
|
|
5
|
-
* Strings are always accepted. Numbers must be finite: `NaN`, `Infinity`, and
|
|
6
|
-
* `-Infinity` are rejected.
|
|
7
|
-
*/
|
|
8
|
-
export const serializableKeySchema = z.union([
|
|
9
|
-
z.string(),
|
|
10
|
-
z.number(),
|
|
11
|
-
]);
|
|
12
|
-
export function createTreeNodeModelSchema(idSchema, valueSchema) {
|
|
13
|
-
let nodeSchema;
|
|
14
|
-
nodeSchema = z.lazy(() => z.union([
|
|
15
|
-
z
|
|
16
|
-
.object({
|
|
17
|
-
id: idSchema,
|
|
18
|
-
value: valueSchema,
|
|
19
|
-
})
|
|
20
|
-
.strict(),
|
|
21
|
-
z
|
|
22
|
-
.object({
|
|
23
|
-
id: idSchema,
|
|
24
|
-
value: valueSchema,
|
|
25
|
-
children: z.null(),
|
|
26
|
-
})
|
|
27
|
-
.strict(),
|
|
28
|
-
z
|
|
29
|
-
.object({
|
|
30
|
-
id: idSchema,
|
|
31
|
-
value: valueSchema,
|
|
32
|
-
children: z.array(nodeSchema),
|
|
33
|
-
})
|
|
34
|
-
.strict(),
|
|
35
|
-
]));
|
|
36
|
-
return nodeSchema;
|
|
37
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.types.d.ts","sourceRoot":"","sources":["../../../src/trees/tree-node/tree-node.types.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{trees/nav-node/nav-node.types.js → state-and-nav/fold-node/fold-node.types.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{trees/tree-node/deprecated/tree-node.types.js → state-and-nav/state/state.types.js}
RENAMED
|
File without changes
|
|
File without changes
|
/package/dist/{trees/tree-node → state-and-nav/tree}/deprecated/tree-node.arb.debug.test.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|