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,223 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates operations for projecting an opaque tree into a navigation model.
|
|
3
|
-
*
|
|
4
|
-
* Navigation ordering is intentionally a UI concern. The underlying TreeNode
|
|
5
|
-
* API need not promise a particular child-storage representation or ordering.
|
|
6
|
-
*/
|
|
7
|
-
export function createNavNodeApi(treeNodeApi, foldsApi, cursorApi, options) {
|
|
8
|
-
function entryIsBranch(entry) {
|
|
9
|
-
return 'children' in entry;
|
|
10
|
-
}
|
|
11
|
-
function compareTreeNodes(left, right) {
|
|
12
|
-
return options.compareEntries({
|
|
13
|
-
id: treeNodeApi.id(left),
|
|
14
|
-
value: treeNodeApi.value(left),
|
|
15
|
-
}, {
|
|
16
|
-
id: treeNodeApi.id(right),
|
|
17
|
-
value: treeNodeApi.value(right),
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Projects loaded children into navigation entries.
|
|
22
|
-
*
|
|
23
|
-
* Folded source entries are omitted from `entries` and represented in the
|
|
24
|
-
* synthetic `folded` row instead.
|
|
25
|
-
*/
|
|
26
|
-
function createNavNode(entries, foldRoot, parentPath) {
|
|
27
|
-
const visibleEntries = [];
|
|
28
|
-
const foldedEntries = [];
|
|
29
|
-
/*
|
|
30
|
-
* Navigation owns presentation order, so materialize and sort the child
|
|
31
|
-
* iterable before projecting it.
|
|
32
|
-
*/
|
|
33
|
-
const orderedEntries = [...entries].sort(compareTreeNodes);
|
|
34
|
-
for (const entry of orderedEntries) {
|
|
35
|
-
const entryId = treeNodeApi.id(entry);
|
|
36
|
-
const entryPath = [...parentPath, entryId];
|
|
37
|
-
const isFolded = foldsApi.isEntryHiddenAtPath(foldRoot, parentPath, entryId);
|
|
38
|
-
const navigationEntry = createNavEntry(entry, foldRoot, entryPath);
|
|
39
|
-
if (isFolded) {
|
|
40
|
-
foldedEntries.push(navigationEntry);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
visibleEntries.push(navigationEntry);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
entries: visibleEntries,
|
|
48
|
-
/*
|
|
49
|
-
* Fold state may contain entries that are not currently available in the
|
|
50
|
-
* loaded source tree. Do not render an empty synthetic row for them.
|
|
51
|
-
*/
|
|
52
|
-
folded: foldedEntries.length === 0
|
|
53
|
-
? null
|
|
54
|
-
: {
|
|
55
|
-
entries: foldedEntries,
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
function createNavEntry(entry, foldRoot, entryPath) {
|
|
60
|
-
return treeNodeApi.match(entry, {
|
|
61
|
-
leaf: ({ id }) => ({
|
|
62
|
-
id,
|
|
63
|
-
}),
|
|
64
|
-
unloadedBranch: ({ id }) => ({
|
|
65
|
-
id,
|
|
66
|
-
children: null,
|
|
67
|
-
}),
|
|
68
|
-
loadedBranch: ({ id, children }) => ({
|
|
69
|
-
id,
|
|
70
|
-
children: createNavNode(children, foldRoot, entryPath),
|
|
71
|
-
}),
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
function createRootNavBranch(root, foldRoot) {
|
|
75
|
-
return treeNodeApi.match(root, {
|
|
76
|
-
leaf: () => undefined,
|
|
77
|
-
unloadedBranch: ({ id }) => ({
|
|
78
|
-
id,
|
|
79
|
-
children: null,
|
|
80
|
-
}),
|
|
81
|
-
loadedBranch: ({ id, children }) => ({
|
|
82
|
-
id,
|
|
83
|
-
children: createNavNode(children, foldRoot, []),
|
|
84
|
-
}),
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
function rootCursors(rootNode) {
|
|
88
|
-
if (rootNode.children === null) {
|
|
89
|
-
return [[]];
|
|
90
|
-
}
|
|
91
|
-
return [[], ...cursorsInNode(rootNode.children, [])];
|
|
92
|
-
}
|
|
93
|
-
function cursorsInNode(node, parentPath) {
|
|
94
|
-
const cursors = [];
|
|
95
|
-
for (const entry of node.entries) {
|
|
96
|
-
const entryPath = [...parentPath, entry.id];
|
|
97
|
-
cursors.push(entryPath);
|
|
98
|
-
if (!entryIsBranch(entry) || entry.children === null) {
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
cursors.push(...cursorsInNode(entry.children, entryPath));
|
|
102
|
-
}
|
|
103
|
-
return cursors;
|
|
104
|
-
}
|
|
105
|
-
const navNodeApi = {
|
|
106
|
-
entryIsBranch,
|
|
107
|
-
from(root, foldRoot) {
|
|
108
|
-
return createRootNavBranch(root, foldRoot);
|
|
109
|
-
},
|
|
110
|
-
getNodeAtPath(navigation, path) {
|
|
111
|
-
const [currentId, ...remainingPath] = path;
|
|
112
|
-
/*
|
|
113
|
-
* An empty path identifies the current navigation node.
|
|
114
|
-
*/
|
|
115
|
-
if (currentId === undefined) {
|
|
116
|
-
return navigation;
|
|
117
|
-
}
|
|
118
|
-
const entry = navigation.entries.find((candidate) => candidate.id === currentId);
|
|
119
|
-
if (entry === undefined || !entryIsBranch(entry)) {
|
|
120
|
-
return undefined;
|
|
121
|
-
}
|
|
122
|
-
/*
|
|
123
|
-
* A null value represents a source branch whose children are not loaded.
|
|
124
|
-
*/
|
|
125
|
-
if (entry.children === null) {
|
|
126
|
-
return undefined;
|
|
127
|
-
}
|
|
128
|
-
return navNodeApi.getNodeAtPath(entry.children, remainingPath);
|
|
129
|
-
},
|
|
130
|
-
getEntryAtPath(navigation, path) {
|
|
131
|
-
const [currentId, ...remainingPath] = path;
|
|
132
|
-
/*
|
|
133
|
-
* A NavNode does not itself correspond to a NavEntry. Therefore [] does
|
|
134
|
-
* not resolve to an entry.
|
|
135
|
-
*/
|
|
136
|
-
if (currentId === undefined) {
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
const entry = navigation.entries.find((candidate) => candidate.id === currentId);
|
|
140
|
-
if (entry === undefined) {
|
|
141
|
-
return undefined;
|
|
142
|
-
}
|
|
143
|
-
if (remainingPath.length === 0) {
|
|
144
|
-
return entry;
|
|
145
|
-
}
|
|
146
|
-
if (!entryIsBranch(entry) || entry.children === null) {
|
|
147
|
-
return undefined;
|
|
148
|
-
}
|
|
149
|
-
return navNodeApi.getEntryAtPath(entry.children, remainingPath);
|
|
150
|
-
},
|
|
151
|
-
nextCursor(rootNode, cursor) {
|
|
152
|
-
const cursors = rootCursors(rootNode);
|
|
153
|
-
const currentIndex = cursors.findIndex((candidate) => cursorApi.equal(candidate, cursor));
|
|
154
|
-
if (currentIndex === -1 || currentIndex === cursors.length - 1) {
|
|
155
|
-
return undefined;
|
|
156
|
-
}
|
|
157
|
-
return cursors[currentIndex + 1];
|
|
158
|
-
},
|
|
159
|
-
previousCursor(rootNode, cursor) {
|
|
160
|
-
const cursors = rootCursors(rootNode);
|
|
161
|
-
const currentIndex = cursors.findIndex((candidate) => cursorApi.equal(candidate, cursor));
|
|
162
|
-
if (currentIndex <= 0) {
|
|
163
|
-
return undefined;
|
|
164
|
-
}
|
|
165
|
-
return cursors[currentIndex - 1];
|
|
166
|
-
},
|
|
167
|
-
cursorAfterFold(rootNode, cursor) {
|
|
168
|
-
// Folding root disallowed
|
|
169
|
-
if (cursor.length === 0) {
|
|
170
|
-
return undefined;
|
|
171
|
-
}
|
|
172
|
-
const cursors = rootCursors(rootNode);
|
|
173
|
-
const currentIndex = cursors.findIndex((candidate) => cursorApi.equal(candidate, cursor));
|
|
174
|
-
if (currentIndex === -1) {
|
|
175
|
-
return undefined;
|
|
176
|
-
}
|
|
177
|
-
// If the last entry, then cursor should go to previous entry
|
|
178
|
-
// This works to go to the root when the last entry in the root is folded.
|
|
179
|
-
if (currentIndex + 1 === cursors.length) {
|
|
180
|
-
return cursors[currentIndex - 1];
|
|
181
|
-
}
|
|
182
|
-
for (let index = currentIndex + 1; index < cursors.length; index += 1) {
|
|
183
|
-
const candidate = cursors[index];
|
|
184
|
-
if (candidate === undefined) {
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
// Skip any entries that are children of the entry about to be folded
|
|
188
|
-
if (cursorApi.cursorBelongsToSubtree(candidate, cursor)) {
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
return candidate;
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
parentCursor(_navigation, cursor) {
|
|
195
|
-
if (cursor.length === 0) {
|
|
196
|
-
return undefined;
|
|
197
|
-
}
|
|
198
|
-
return cursor.slice(0, -1);
|
|
199
|
-
},
|
|
200
|
-
cursors(navigation, parentPath = []) {
|
|
201
|
-
return cursorsInNode(navigation, parentPath);
|
|
202
|
-
},
|
|
203
|
-
visibleLeavesPaths(navigation, parentPath = []) {
|
|
204
|
-
const paths = [];
|
|
205
|
-
for (const entry of navigation.entries) {
|
|
206
|
-
const entryPath = [...parentPath, entry.id];
|
|
207
|
-
if (!entryIsBranch(entry)) {
|
|
208
|
-
paths.push(entryPath);
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
/*
|
|
212
|
-
* A null value means the source branch is not loaded/opened. It has no
|
|
213
|
-
* currently visible descendants.
|
|
214
|
-
*/
|
|
215
|
-
if (entry.children !== null) {
|
|
216
|
-
paths.push(...navNodeApi.visibleLeavesPaths(entry.children, entryPath));
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return paths;
|
|
220
|
-
},
|
|
221
|
-
};
|
|
222
|
-
return navNodeApi;
|
|
223
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nav-node.types.d.ts","sourceRoot":"","sources":["../../../src/trees/nav-node/nav-node.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { SerializableKey, TreeNodeApi } from '../tree-node/index.js';
|
|
2
|
-
import type { CursorApi } from '../cursor.js';
|
|
3
|
-
import type { StateApi } from './state.types.js';
|
|
4
|
-
/**
|
|
5
|
-
* Creates operations for navigating and resynchronizing tree-surfer state.
|
|
6
|
-
*/
|
|
7
|
-
export declare function createStateApi<Id extends SerializableKey, Value>(treeNodeApi: TreeNodeApi<Id, Value>, cursorApi: CursorApi<Id>): StateApi<Id, Value>;
|
|
8
|
-
//# sourceMappingURL=state.impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.impl.d.ts","sourceRoot":"","sources":["../../../src/trees/state/state.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEf,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,kBAAkB,CAAC;AAMxD;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EAC9D,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EACnC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,GACvB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CA4LrB"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import type { Cursor } from '../cursor.js';
|
|
3
|
-
import type { FoldsModel } from '../fold-node/index.js';
|
|
4
|
-
import type { SerializableKey, TreeNodeModel } from '../tree-node/index.js';
|
|
5
|
-
/**
|
|
6
|
-
* Serializable persistence/interchange model for tree-surfer state.
|
|
7
|
-
*
|
|
8
|
-
* This is intentionally distinct from runtime `State`: its root and folds use
|
|
9
|
-
* public structural models, while runtime state holds opaque TreeNode and
|
|
10
|
-
* Folds values.
|
|
11
|
-
*/
|
|
12
|
-
export type StateModel<Id extends SerializableKey, Value> = Readonly<{
|
|
13
|
-
root: TreeNodeModel<Id, Value>;
|
|
14
|
-
folds: FoldsModel<Id>;
|
|
15
|
-
cursor: Cursor<Id>;
|
|
16
|
-
}>;
|
|
17
|
-
/**
|
|
18
|
-
* Creates a schema for the serializable StateModel DTO.
|
|
19
|
-
*
|
|
20
|
-
* This validates only the persistence representation. Applications must decode
|
|
21
|
-
* the validated root and folds models through their specialized TreeNodeApi and
|
|
22
|
-
* FoldsApi before constructing opaque runtime State.
|
|
23
|
-
*/
|
|
24
|
-
export declare function createStateModelSchema<Id extends SerializableKey, Value>(rootSchema: z.ZodType<TreeNodeModel<Id, Value>>, foldsSchema: z.ZodType<FoldsModel<Id>>, cursorSchema: z.ZodType<Cursor<Id>>): z.ZodType<StateModel<Id, Value>>;
|
|
25
|
-
//# sourceMappingURL=state.schemas.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.schemas.d.ts","sourceRoot":"","sources":["../../../src/trees/state/state.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,QAAQ,CAAC;IACnE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;CACpB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EACtE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAC/C,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EACtC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAClC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAQlC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* Creates a schema for the serializable StateModel DTO.
|
|
4
|
-
*
|
|
5
|
-
* This validates only the persistence representation. Applications must decode
|
|
6
|
-
* the validated root and folds models through their specialized TreeNodeApi and
|
|
7
|
-
* FoldsApi before constructing opaque runtime State.
|
|
8
|
-
*/
|
|
9
|
-
export function createStateModelSchema(rootSchema, foldsSchema, cursorSchema) {
|
|
10
|
-
return z
|
|
11
|
-
.object({
|
|
12
|
-
root: rootSchema,
|
|
13
|
-
folds: foldsSchema,
|
|
14
|
-
cursor: cursorSchema,
|
|
15
|
-
})
|
|
16
|
-
.strict();
|
|
17
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { Cursor } from '../cursor.js';
|
|
2
|
-
import type { Folds } from '../fold-node/index.js';
|
|
3
|
-
import type { SerializableKey, TreeNode } from '../tree-node/index.js';
|
|
4
|
-
/**
|
|
5
|
-
* State for navigating a tree and its associated fold-state tree.
|
|
6
|
-
*
|
|
7
|
-
* Invariant: `root` is an open branch.
|
|
8
|
-
*
|
|
9
|
-
* Note: This cannot be represented through a structural intersection because
|
|
10
|
-
* TreeNode is opaque; enforce it when constructing State, using
|
|
11
|
-
* TreeNodeApi.state or TreeNodeApi.getChildren.
|
|
12
|
-
*
|
|
13
|
-
* @typeParam Id - Tree-node sibling ID type.
|
|
14
|
-
* @typeParam Value - Application-owned value stored in every tree node.
|
|
15
|
-
*/
|
|
16
|
-
export type State<Id extends SerializableKey, Value> = Readonly<{
|
|
17
|
-
root: TreeNode<Id, Value>;
|
|
18
|
-
folds: Folds<Id>;
|
|
19
|
-
cursor: Cursor<Id>;
|
|
20
|
-
}>;
|
|
21
|
-
export type StateApi<Id extends SerializableKey, Value> = Readonly<{
|
|
22
|
-
getNodeAtCursor(state: State<Id, Value>): TreeNode<Id, Value> | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Reloads the root's children and all descendant branches that were loaded
|
|
25
|
-
* in the previous state.
|
|
26
|
-
*
|
|
27
|
-
* `loadBranches([])` loads the root's direct children.
|
|
28
|
-
* `loadBranches(['src'])` loads the children of `src`, where `src` is the
|
|
29
|
-
* ID of a root child.
|
|
30
|
-
*
|
|
31
|
-
* Returned nodes must be valid TreeNode values created or decoded through
|
|
32
|
-
* the specialized TreeNodeApi for `Id` and `Value`.
|
|
33
|
-
*/
|
|
34
|
-
resync(oldState: State<Id, Value>, loadBranches: (path: readonly Id[]) => Promise<readonly TreeNode<Id, Value>[]>): Promise<State<Id, Value>>;
|
|
35
|
-
}>;
|
|
36
|
-
//# sourceMappingURL=state.types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.types.d.ts","sourceRoot":"","sources":["../../../src/trees/state/state.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,QAAQ,CAAC;IAC9D,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,QAAQ,CAAC;IACjE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;IAE1E;;;;;;;;;;OAUG;IACH,MAAM,CACJ,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAC1B,YAAY,EAAE,CACZ,IAAI,EAAE,SAAS,EAAE,EAAE,KAChB,OAAO,CAAC,SAAS,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,GAC3C,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.arb.d.ts","sourceRoot":"","sources":["../../../../src/trees/tree-node/deprecated/tree-node.arb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;GAIG;AACH,KAAK,UAAU,GAAG,MAAM,CAAC;AAOzB;;;GAGG;AACH,eAAO,MAAM,SAAS,sBAIpB,CAAC;AAEH;;GAEG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1D,KAAK,IAAI,GAAG,UAAU,EAAE,CAAC;AAEzB,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,EAAE,UAAU,EAAE,CAAC;CAC9B,CAAC;AAuEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,sCAEhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,sCAExC,CAAC;AAaF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,sBAAsB,CA0C5D,CAAC;AAEP;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,wCAIjC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;EAK3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;EAQnC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;EAYpC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,cAAc,qBAE1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,4BAA8C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.arb.debug.test.d.ts","sourceRoot":"","sources":["../../../../src/trees/tree-node/deprecated/tree-node.arb.debug.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.impl.d.ts","sourceRoot":"","sources":["../../../../src/trees/tree-node/deprecated/tree-node.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,eAAe,EACf,QAAQ,EACR,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,SAAS,eAAe,EAC1B,IAAI,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAC5B,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAqGzB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.schemas.d.ts","sourceRoot":"","sources":["../../../../src/trees/tree-node/deprecated/tree-node.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEjE;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,iDAA6C,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,SAAS,eAAe,EAC1B,IAAI,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;;EAoBrD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.test.d.ts","sourceRoot":"","sources":["../../../../src/trees/tree-node/deprecated/tree-node.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.types.d.ts","sourceRoot":"","sources":["../../../../src/trees/tree-node/deprecated/tree-node.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,QAAQ,CAClB,EAAE,SAAS,eAAe,EAC1B,IAAI,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAC7B,YAAY,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAEhD,+BAA+B;AAC/B,MAAM,MAAM,YAAY,CAAC,EAAE,SAAS,eAAe,IAAI;IACrD,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,cAAc,CACxB,EAAE,SAAS,eAAe,EAC1B,IAAI,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAC7B,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAE5D,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,CAC5B,EAAE,SAAS,eAAe,EAC1B,IAAI,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAC7B;IACF,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,oBAAoB,CAAC,EAAE,SAAS,eAAe,IAAI;IAC7D,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,IAAI,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,WAAW,CACrB,EAAE,SAAS,eAAe,EAC1B,IAAI,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAC7B;IACF,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9D,cAAc,CACZ,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,GAC7B,IAAI,IAAI,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACpC,YAAY,CACV,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,GAC7B,IAAI,IAAI,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAExC;;;;;;;;OAQG;IACH,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEhE;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAE3E;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,MAAM,EACd,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,EAAE,EAAE,EACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAC/B,MAAM,GAAG,SAAS,CAAC;IAEtB;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,EAAE,EAAE,EACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,SAAS,GACzC,IAAI,GAAG,SAAS,CAAC;CACrB,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export type * from './tree-node.model.js';
|
|
2
|
-
export { serializableKeySchema, createTreeNodeModelSchema, } from './tree-node.model.js';
|
|
3
|
-
export type * from './tree-node.types.js';
|
|
4
|
-
export { createTreeNodeApi } from './tree-node.impl.js';
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trees/tree-node/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,sBAAsB,CAAC;AAC1C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,mBAAmB,sBAAsB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import * as fc from 'fast-check';
|
|
2
|
-
import { TreeNodeModel } from './tree-node.model.js';
|
|
3
|
-
/**
|
|
4
|
-
* The ID and Values types used for the generated test trees.
|
|
5
|
-
*
|
|
6
|
-
* Short strings keep generated counterexamples readable. Values just have to
|
|
7
|
-
* be something easily checked for equality.
|
|
8
|
-
*/
|
|
9
|
-
type TestNodeId = string;
|
|
10
|
-
type TestValue = number;
|
|
11
|
-
type TestNodeModel = TreeNodeModel<TestNodeId, TestValue>;
|
|
12
|
-
type ModelAndPath = {
|
|
13
|
-
path: TestNodeId[];
|
|
14
|
-
model: TestNodeModel;
|
|
15
|
-
};
|
|
16
|
-
type ModelWithReachableModels = {
|
|
17
|
-
model: TestNodeModel;
|
|
18
|
-
/**
|
|
19
|
-
* Includes this model at `[]` and every descendant reachable through loaded
|
|
20
|
-
* branches. Descendants behind unloaded branches are intentionally absent.
|
|
21
|
-
*/
|
|
22
|
-
reachableModels: ModelAndPath[];
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Generates valid string IDs for test nodes. Note that the API just does
|
|
26
|
-
* comparisons on the IDs so we can safely restrict to any subset.
|
|
27
|
-
*/
|
|
28
|
-
export declare const testIdArb: fc.Arbitrary<string>;
|
|
29
|
-
/**
|
|
30
|
-
* Generates serializable application values for test nodes.
|
|
31
|
-
*/
|
|
32
|
-
export declare const testValueArb: fc.Arbitrary<number>;
|
|
33
|
-
/**
|
|
34
|
-
* Generates a leaf model.
|
|
35
|
-
*/
|
|
36
|
-
export declare const generatedLeafModelArb: fc.Arbitrary<ModelWithReachableModels>;
|
|
37
|
-
/**
|
|
38
|
-
* Generates an unloaded-branch model.
|
|
39
|
-
*/
|
|
40
|
-
export declare const generatedUnloadedBranchModelArb: fc.Arbitrary<ModelWithReachableModels>;
|
|
41
|
-
/**
|
|
42
|
-
* Generates a leaf, an unloaded branch, or a loaded branch.
|
|
43
|
-
*
|
|
44
|
-
* Loaded branches have unique child IDs. Root IDs are made unique separately
|
|
45
|
-
* when generating a forest.
|
|
46
|
-
*
|
|
47
|
-
* The weighted choice gives recursive open branches a geometric dropoff.
|
|
48
|
-
*/
|
|
49
|
-
export declare const generatedNodeArb: fc.Arbitrary<ModelWithReachableModels>;
|
|
50
|
-
/**
|
|
51
|
-
* Generates an array of generated nodes with unique sibling IDs.
|
|
52
|
-
*
|
|
53
|
-
* The result is suitable for use as the loaded children of an open branch.
|
|
54
|
-
*/
|
|
55
|
-
export declare const generatedNodesArrayArb: fc.Arbitrary<ModelWithReachableModels[]>;
|
|
56
|
-
/**
|
|
57
|
-
* An array of root-level nodes and all paths that can be resolved through
|
|
58
|
-
* those nodes.
|
|
59
|
-
*
|
|
60
|
-
* Paths through closed branches stop at the closed branch because its
|
|
61
|
-
* descendants are not loaded.
|
|
62
|
-
*/
|
|
63
|
-
export declare const nodeAndPathsArb: fc.Arbitrary<{
|
|
64
|
-
root: TestNodeModel;
|
|
65
|
-
pathEntries: ModelAndPath[];
|
|
66
|
-
}>;
|
|
67
|
-
/**
|
|
68
|
-
* Generates root-level nodes and a path to one of their reachable nodes.
|
|
69
|
-
*
|
|
70
|
-
* Every generated path is valid for `getAtPath`; unreachable paths are not
|
|
71
|
-
* included.
|
|
72
|
-
*/
|
|
73
|
-
export declare const nodeAndPathAndExpectedArb: fc.Arbitrary<{
|
|
74
|
-
root: TestNodeModel;
|
|
75
|
-
path: string[];
|
|
76
|
-
expected: TestNodeModel;
|
|
77
|
-
}>;
|
|
78
|
-
/**
|
|
79
|
-
* Generates root-level nodes and a path to one of their branch nodes.
|
|
80
|
-
*
|
|
81
|
-
* Both open and closed branches are included. A path to a closed branch is
|
|
82
|
-
* valid, but a path through a closed branch cannot reach any descendants.
|
|
83
|
-
*/
|
|
84
|
-
export declare const nodesArrayAndBranchPathArb: fc.Arbitrary<{
|
|
85
|
-
root: TestNodeModel;
|
|
86
|
-
path: string[];
|
|
87
|
-
expected: TestNodeModel;
|
|
88
|
-
}>;
|
|
89
|
-
/**
|
|
90
|
-
* Generates a new array of loaded child nodes.
|
|
91
|
-
*
|
|
92
|
-
* The generated nodes have unique IDs, making the result suitable for use as
|
|
93
|
-
* the children of an open branch.
|
|
94
|
-
*/
|
|
95
|
-
export declare const newBranchesArb: fc.Arbitrary<TestNodeModel[]>;
|
|
96
|
-
/**
|
|
97
|
-
* Generates either a new array of loaded child nodes or `null`.
|
|
98
|
-
*
|
|
99
|
-
* An array represents an open branch, including an open branch with no
|
|
100
|
-
* children. `null` represents a closed branch.
|
|
101
|
-
*/
|
|
102
|
-
export declare const newBranchesOrNullArb: fc.Arbitrary<TestNodeModel[] | null>;
|
|
103
|
-
export {};
|
|
104
|
-
//# sourceMappingURL=tree-node.arb.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.arb.d.ts","sourceRoot":"","sources":["../../../src/trees/tree-node/tree-node.arb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;GAKG;AACH,KAAK,UAAU,GAAG,MAAM,CAAC;AACzB,KAAK,SAAS,GAAG,MAAM,CAAC;AAGxB,KAAK,aAAa,GAAG,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAE1D,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB;;;OAGG;IACH,eAAe,EAAE,YAAY,EAAE,CAAC;CACjC,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,SAAS,sBAIpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,sBAGvB,CAAC;AAiEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAEnB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAGjB,CAAC;AAUnE;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAyC3D,CAAC;AAEV;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,0CAIjC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;EAK3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;EAQnC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;EAYpC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,cAAc,+BAE1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,sCAA8C,CAAC"}
|