treenode.ts 0.5.0 → 0.7.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/dist/TreeNode.d.ts +64 -3
- package/dist/TreeNode.d.ts.map +1 -1
- package/dist/TreeNode.js +316 -27
- package/dist/TreeNode.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/treenode.ts.d.ts +63 -2
- package/dist/tsdoc-metadata.json +1 -1
- package/package.json +12 -11
package/dist/TreeNode.d.ts
CHANGED
|
@@ -3,12 +3,17 @@ import { IParseable } from "./IParseable";
|
|
|
3
3
|
* Search callback passed to `.pre`, `.post`, and `.breadth`.
|
|
4
4
|
* @public
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
6
|
+
export type SearchCallback<T> = (node: TreeNode<T>) => boolean | void;
|
|
7
7
|
/**
|
|
8
8
|
* Search methods on TreeNode, passed to `.flatten`.
|
|
9
9
|
* @public
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export type SearchStrategy = "pre" | "post" | "breadth";
|
|
12
|
+
/**
|
|
13
|
+
* Nested array representation of a tree.
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export type NestedArray<T> = T | [T, ...(NestedArray<T> | T[])[]];
|
|
12
17
|
/**
|
|
13
18
|
* @public
|
|
14
19
|
*/
|
|
@@ -16,6 +21,7 @@ export declare class TreeNode<T> {
|
|
|
16
21
|
model: T;
|
|
17
22
|
parent: TreeNode<T> | null;
|
|
18
23
|
children: TreeNode<T>[];
|
|
24
|
+
private _index;
|
|
19
25
|
constructor(model: T, parent?: TreeNode<T> | null, children?: TreeNode<T>[]);
|
|
20
26
|
/**
|
|
21
27
|
* Parses object into a tree and returns the root node.
|
|
@@ -29,10 +35,35 @@ export declare class TreeNode<T> {
|
|
|
29
35
|
* Indices from the root to the node.
|
|
30
36
|
*/
|
|
31
37
|
get indices(): number[];
|
|
38
|
+
/**
|
|
39
|
+
* Compressed path key: positive = run of first-children, negative = child index.
|
|
40
|
+
* e.g. [0,0,0,1,0,0] -> "3,-1,2"
|
|
41
|
+
*/
|
|
42
|
+
get pathKey(): string;
|
|
32
43
|
/**
|
|
33
44
|
* Returns true if the node has children.
|
|
34
45
|
*/
|
|
35
46
|
get hasChildren(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Returns true if the node is the root (has no parent).
|
|
49
|
+
*/
|
|
50
|
+
get isRoot(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Returns true if the node is a leaf (has no children).
|
|
53
|
+
*/
|
|
54
|
+
get isLeaf(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Returns the root node of the tree.
|
|
57
|
+
*/
|
|
58
|
+
get root(): TreeNode<T>;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the depth of the node (root is 0).
|
|
61
|
+
*/
|
|
62
|
+
get depth(): number;
|
|
63
|
+
/**
|
|
64
|
+
* Returns siblings of this node (excluding self).
|
|
65
|
+
*/
|
|
66
|
+
get siblings(): TreeNode<T>[];
|
|
36
67
|
/**
|
|
37
68
|
* Add node as a child.
|
|
38
69
|
*/
|
|
@@ -46,13 +77,18 @@ export declare class TreeNode<T> {
|
|
|
46
77
|
*/
|
|
47
78
|
drop(): TreeNode<T>;
|
|
48
79
|
/**
|
|
49
|
-
* Returns a shallow
|
|
80
|
+
* Returns a deep copy of structure, shallow copy of model.
|
|
50
81
|
*/
|
|
51
82
|
clone(): TreeNode<T>;
|
|
52
83
|
/**
|
|
53
84
|
* Returns a node given a list of indices
|
|
54
85
|
*/
|
|
55
86
|
fetch(indices: number[]): TreeNode<T> | null;
|
|
87
|
+
/**
|
|
88
|
+
* Returns a node given a pathKey string.
|
|
89
|
+
* @see pathKey
|
|
90
|
+
*/
|
|
91
|
+
fetchByPathKey(pathKey: string): TreeNode<T> | null;
|
|
56
92
|
/**
|
|
57
93
|
* Returns list of nodes to the root.
|
|
58
94
|
*/
|
|
@@ -61,6 +97,10 @@ export declare class TreeNode<T> {
|
|
|
61
97
|
* Iterates over a node's children and returns a new root node.
|
|
62
98
|
*/
|
|
63
99
|
map<U>(callback: (node: TreeNode<T>) => U): TreeNode<U>;
|
|
100
|
+
/**
|
|
101
|
+
* Iterates over a node's children and returns a new root node.
|
|
102
|
+
*/
|
|
103
|
+
mapAsync<U>(callback: (node: TreeNode<T>, parent: TreeNode<U> | undefined) => Promise<U>, parent?: TreeNode<U>): Promise<TreeNode<U>>;
|
|
64
104
|
/**
|
|
65
105
|
* Breadth-first search, return true in the callback to end iteration.
|
|
66
106
|
*/
|
|
@@ -73,10 +113,31 @@ export declare class TreeNode<T> {
|
|
|
73
113
|
* Depth-first post-order search, return true in the callback to end iteration.
|
|
74
114
|
*/
|
|
75
115
|
post(callback: SearchCallback<T>): TreeNode<T> | null;
|
|
116
|
+
/**
|
|
117
|
+
* Find the first node matching the predicate.
|
|
118
|
+
*/
|
|
119
|
+
find(predicate: (node: TreeNode<T>) => boolean, method?: SearchStrategy): TreeNode<T> | null;
|
|
120
|
+
/**
|
|
121
|
+
* Find all nodes matching the predicate.
|
|
122
|
+
*/
|
|
123
|
+
findAll(predicate: (node: TreeNode<T>) => boolean, method?: SearchStrategy): TreeNode<T>[];
|
|
76
124
|
/**
|
|
77
125
|
* Returns a list of nodes.
|
|
78
126
|
*/
|
|
79
127
|
flatten(method: SearchStrategy): TreeNode<T>[];
|
|
128
|
+
/**
|
|
129
|
+
* Returns a nested array representation of the tree.
|
|
130
|
+
* - Leaf -> value
|
|
131
|
+
* - Single child -> [model, ...childResult]
|
|
132
|
+
* - Multiple leaf children -> [model, [leaves...]]
|
|
133
|
+
* - Multiple mixed children -> [model, child1Result, child2Result, ...]
|
|
134
|
+
*/
|
|
135
|
+
toNestedArray(): NestedArray<T>;
|
|
136
|
+
/**
|
|
137
|
+
* Creates a tree from a nested array representation.
|
|
138
|
+
* @see toNestedArray
|
|
139
|
+
*/
|
|
140
|
+
static fromNestedArray<T>(input: NestedArray<T>): TreeNode<T>;
|
|
80
141
|
/**
|
|
81
142
|
* Returns an object representation of the tree.
|
|
82
143
|
*/
|
package/dist/TreeNode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNode.d.ts","sourceRoot":"","sources":["../src/TreeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"TreeNode.d.ts","sourceRoot":"","sources":["../src/TreeNode.ts"],"names":[],"mappings":"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"}
|
package/dist/TreeNode.js
CHANGED
|
@@ -1,8 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
6
46
|
};
|
|
7
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
48
|
exports.TreeNode = void 0;
|
|
@@ -16,6 +56,7 @@ var TreeNode = /** @class */ (function () {
|
|
|
16
56
|
this.model = model;
|
|
17
57
|
this.parent = parent;
|
|
18
58
|
this.children = children;
|
|
59
|
+
this._index = 0;
|
|
19
60
|
}
|
|
20
61
|
/**
|
|
21
62
|
* Parses object into a tree and returns the root node.
|
|
@@ -30,9 +71,7 @@ var TreeNode = /** @class */ (function () {
|
|
|
30
71
|
* Index of the node among its siblings.
|
|
31
72
|
*/
|
|
32
73
|
get: function () {
|
|
33
|
-
|
|
34
|
-
return 0;
|
|
35
|
-
return this.parent.children.indexOf(this);
|
|
74
|
+
return this._index;
|
|
36
75
|
},
|
|
37
76
|
enumerable: false,
|
|
38
77
|
configurable: true
|
|
@@ -42,9 +81,45 @@ var TreeNode = /** @class */ (function () {
|
|
|
42
81
|
* Indices from the root to the node.
|
|
43
82
|
*/
|
|
44
83
|
get: function () {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
84
|
+
var indices = [];
|
|
85
|
+
var node = this;
|
|
86
|
+
while (node.parent) {
|
|
87
|
+
indices.push(node.index);
|
|
88
|
+
node = node.parent;
|
|
89
|
+
}
|
|
90
|
+
return indices.reverse();
|
|
91
|
+
},
|
|
92
|
+
enumerable: false,
|
|
93
|
+
configurable: true
|
|
94
|
+
});
|
|
95
|
+
Object.defineProperty(TreeNode.prototype, "pathKey", {
|
|
96
|
+
/**
|
|
97
|
+
* Compressed path key: positive = run of first-children, negative = child index.
|
|
98
|
+
* e.g. [0,0,0,1,0,0] -> "3,-1,2"
|
|
99
|
+
*/
|
|
100
|
+
get: function () {
|
|
101
|
+
var indices = this.indices;
|
|
102
|
+
if (indices.length === 0)
|
|
103
|
+
return '';
|
|
104
|
+
var parts = [];
|
|
105
|
+
var zeroCount = 0;
|
|
106
|
+
for (var _i = 0, indices_1 = indices; _i < indices_1.length; _i++) {
|
|
107
|
+
var idx = indices_1[_i];
|
|
108
|
+
if (idx === 0) {
|
|
109
|
+
zeroCount++;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
if (zeroCount > 0) {
|
|
113
|
+
parts.push(zeroCount);
|
|
114
|
+
zeroCount = 0;
|
|
115
|
+
}
|
|
116
|
+
parts.push(-idx);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (zeroCount > 0) {
|
|
120
|
+
parts.push(zeroCount);
|
|
121
|
+
}
|
|
122
|
+
return parts.join(',');
|
|
48
123
|
},
|
|
49
124
|
enumerable: false,
|
|
50
125
|
configurable: true
|
|
@@ -59,11 +134,70 @@ var TreeNode = /** @class */ (function () {
|
|
|
59
134
|
enumerable: false,
|
|
60
135
|
configurable: true
|
|
61
136
|
});
|
|
137
|
+
Object.defineProperty(TreeNode.prototype, "isRoot", {
|
|
138
|
+
/**
|
|
139
|
+
* Returns true if the node is the root (has no parent).
|
|
140
|
+
*/
|
|
141
|
+
get: function () {
|
|
142
|
+
return this.parent === null;
|
|
143
|
+
},
|
|
144
|
+
enumerable: false,
|
|
145
|
+
configurable: true
|
|
146
|
+
});
|
|
147
|
+
Object.defineProperty(TreeNode.prototype, "isLeaf", {
|
|
148
|
+
/**
|
|
149
|
+
* Returns true if the node is a leaf (has no children).
|
|
150
|
+
*/
|
|
151
|
+
get: function () {
|
|
152
|
+
return !this.hasChildren;
|
|
153
|
+
},
|
|
154
|
+
enumerable: false,
|
|
155
|
+
configurable: true
|
|
156
|
+
});
|
|
157
|
+
Object.defineProperty(TreeNode.prototype, "root", {
|
|
158
|
+
/**
|
|
159
|
+
* Returns the root node of the tree.
|
|
160
|
+
*/
|
|
161
|
+
get: function () {
|
|
162
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
163
|
+
var node = this;
|
|
164
|
+
while (node.parent) {
|
|
165
|
+
node = node.parent;
|
|
166
|
+
}
|
|
167
|
+
return node;
|
|
168
|
+
},
|
|
169
|
+
enumerable: false,
|
|
170
|
+
configurable: true
|
|
171
|
+
});
|
|
172
|
+
Object.defineProperty(TreeNode.prototype, "depth", {
|
|
173
|
+
/**
|
|
174
|
+
* Returns the depth of the node (root is 0).
|
|
175
|
+
*/
|
|
176
|
+
get: function () {
|
|
177
|
+
return this.parent ? this.parent.depth + 1 : 0;
|
|
178
|
+
},
|
|
179
|
+
enumerable: false,
|
|
180
|
+
configurable: true
|
|
181
|
+
});
|
|
182
|
+
Object.defineProperty(TreeNode.prototype, "siblings", {
|
|
183
|
+
/**
|
|
184
|
+
* Returns siblings of this node (excluding self).
|
|
185
|
+
*/
|
|
186
|
+
get: function () {
|
|
187
|
+
var _this = this;
|
|
188
|
+
if (this.isRoot)
|
|
189
|
+
return [];
|
|
190
|
+
return this.parent.children.filter(function (child) { return child !== _this; });
|
|
191
|
+
},
|
|
192
|
+
enumerable: false,
|
|
193
|
+
configurable: true
|
|
194
|
+
});
|
|
62
195
|
/**
|
|
63
196
|
* Add node as a child.
|
|
64
197
|
*/
|
|
65
198
|
TreeNode.prototype.add = function (child) {
|
|
66
199
|
child.parent = this;
|
|
200
|
+
child._index = this.children.length;
|
|
67
201
|
this.children.push(child);
|
|
68
202
|
return child;
|
|
69
203
|
};
|
|
@@ -77,21 +211,27 @@ var TreeNode = /** @class */ (function () {
|
|
|
77
211
|
* Remove current node and its children from the tree and return.
|
|
78
212
|
*/
|
|
79
213
|
TreeNode.prototype.drop = function () {
|
|
80
|
-
if (this.
|
|
81
|
-
var idx = this.
|
|
214
|
+
if (!this.isRoot) {
|
|
215
|
+
var idx = this._index;
|
|
82
216
|
this.parent.children.splice(idx, 1);
|
|
217
|
+
// Update indices of subsequent siblings
|
|
218
|
+
for (var i = idx; i < this.parent.children.length; i++) {
|
|
219
|
+
this.parent.children[i]._index = i;
|
|
220
|
+
}
|
|
83
221
|
this.parent = null;
|
|
222
|
+
this._index = 0;
|
|
84
223
|
}
|
|
85
224
|
return this;
|
|
86
225
|
};
|
|
87
226
|
/**
|
|
88
|
-
* Returns a shallow
|
|
227
|
+
* Returns a deep copy of structure, shallow copy of model.
|
|
89
228
|
*/
|
|
90
229
|
TreeNode.prototype.clone = function () {
|
|
91
230
|
var node = new TreeNode(this.model);
|
|
92
|
-
node.children = this.children.map(function (child) {
|
|
231
|
+
node.children = this.children.map(function (child, i) {
|
|
93
232
|
var newChild = child.clone();
|
|
94
233
|
newChild.parent = node;
|
|
234
|
+
newChild._index = i;
|
|
95
235
|
return newChild;
|
|
96
236
|
});
|
|
97
237
|
return node;
|
|
@@ -100,47 +240,106 @@ var TreeNode = /** @class */ (function () {
|
|
|
100
240
|
* Returns a node given a list of indices
|
|
101
241
|
*/
|
|
102
242
|
TreeNode.prototype.fetch = function (indices) {
|
|
243
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
103
244
|
var node = this;
|
|
104
|
-
for (var _i = 0,
|
|
105
|
-
var i =
|
|
245
|
+
for (var _i = 0, indices_2 = indices; _i < indices_2.length; _i++) {
|
|
246
|
+
var i = indices_2[_i];
|
|
106
247
|
node = node.children[i];
|
|
107
248
|
if (!node)
|
|
108
249
|
return null;
|
|
109
250
|
}
|
|
110
|
-
return node
|
|
251
|
+
return node;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* Returns a node given a pathKey string.
|
|
255
|
+
* @see pathKey
|
|
256
|
+
*/
|
|
257
|
+
TreeNode.prototype.fetchByPathKey = function (pathKey) {
|
|
258
|
+
if (pathKey === '')
|
|
259
|
+
return this;
|
|
260
|
+
var indices = [];
|
|
261
|
+
var parts = pathKey.split(',').map(Number);
|
|
262
|
+
for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
|
|
263
|
+
var part = parts_1[_i];
|
|
264
|
+
if (part >= 0) {
|
|
265
|
+
for (var i = 0; i < part; i++) {
|
|
266
|
+
indices.push(0);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
indices.push(-part);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return this.fetch(indices);
|
|
111
274
|
};
|
|
112
275
|
/**
|
|
113
276
|
* Returns list of nodes to the root.
|
|
114
277
|
*/
|
|
115
278
|
TreeNode.prototype.path = function () {
|
|
116
279
|
var path = [];
|
|
117
|
-
var
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return path;
|
|
280
|
+
var node = this;
|
|
281
|
+
while (node) {
|
|
282
|
+
path.push(node);
|
|
283
|
+
node = node.parent;
|
|
284
|
+
}
|
|
285
|
+
return path.reverse();
|
|
124
286
|
};
|
|
125
287
|
/**
|
|
126
288
|
* Iterates over a node's children and returns a new root node.
|
|
127
289
|
*/
|
|
128
290
|
TreeNode.prototype.map = function (callback) {
|
|
129
291
|
var node = new TreeNode(callback(this));
|
|
130
|
-
node.children = this.children.map(function (child) {
|
|
292
|
+
node.children = this.children.map(function (child, i) {
|
|
131
293
|
var newChild = child.map(callback);
|
|
132
294
|
newChild.parent = node;
|
|
295
|
+
newChild._index = i;
|
|
133
296
|
return newChild;
|
|
134
297
|
});
|
|
135
298
|
return node;
|
|
136
299
|
};
|
|
300
|
+
/**
|
|
301
|
+
* Iterates over a node's children and returns a new root node.
|
|
302
|
+
*/
|
|
303
|
+
TreeNode.prototype.mapAsync = function (callback, parent) {
|
|
304
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
305
|
+
var node, _a, _b;
|
|
306
|
+
var _this = this;
|
|
307
|
+
return __generator(this, function (_c) {
|
|
308
|
+
switch (_c.label) {
|
|
309
|
+
case 0:
|
|
310
|
+
_a = TreeNode.bind;
|
|
311
|
+
return [4 /*yield*/, callback(this, parent)];
|
|
312
|
+
case 1:
|
|
313
|
+
node = new (_a.apply(TreeNode, [void 0, _c.sent()]))();
|
|
314
|
+
_b = node;
|
|
315
|
+
return [4 /*yield*/, Promise.all(this.children.map(function (child, i) { return __awaiter(_this, void 0, void 0, function () {
|
|
316
|
+
var newChild;
|
|
317
|
+
return __generator(this, function (_a) {
|
|
318
|
+
switch (_a.label) {
|
|
319
|
+
case 0: return [4 /*yield*/, child.mapAsync(callback, node)];
|
|
320
|
+
case 1:
|
|
321
|
+
newChild = _a.sent();
|
|
322
|
+
newChild.parent = node;
|
|
323
|
+
newChild._index = i;
|
|
324
|
+
return [2 /*return*/, newChild];
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}); }))];
|
|
328
|
+
case 2:
|
|
329
|
+
_b.children = _c.sent();
|
|
330
|
+
return [2 /*return*/, node];
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
};
|
|
137
335
|
/**
|
|
138
336
|
* Breadth-first search, return true in the callback to end iteration.
|
|
139
337
|
*/
|
|
140
338
|
TreeNode.prototype.breadth = function (callback) {
|
|
141
339
|
var queue = [this];
|
|
142
|
-
|
|
143
|
-
|
|
340
|
+
var head = 0;
|
|
341
|
+
while (head < queue.length) {
|
|
342
|
+
var node = queue[head++];
|
|
144
343
|
if (callback(node))
|
|
145
344
|
return node;
|
|
146
345
|
for (var i = 0, childCount = node.children.length; i < childCount; i++) {
|
|
@@ -175,6 +374,25 @@ var TreeNode = /** @class */ (function () {
|
|
|
175
374
|
return this;
|
|
176
375
|
return null;
|
|
177
376
|
};
|
|
377
|
+
/**
|
|
378
|
+
* Find the first node matching the predicate.
|
|
379
|
+
*/
|
|
380
|
+
TreeNode.prototype.find = function (predicate, method) {
|
|
381
|
+
if (method === void 0) { method = "pre"; }
|
|
382
|
+
return this[method](function (node) { return predicate(node); });
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Find all nodes matching the predicate.
|
|
386
|
+
*/
|
|
387
|
+
TreeNode.prototype.findAll = function (predicate, method) {
|
|
388
|
+
if (method === void 0) { method = "pre"; }
|
|
389
|
+
var results = [];
|
|
390
|
+
this[method](function (node) {
|
|
391
|
+
if (predicate(node))
|
|
392
|
+
results.push(node);
|
|
393
|
+
});
|
|
394
|
+
return results;
|
|
395
|
+
};
|
|
178
396
|
/**
|
|
179
397
|
* Returns a list of nodes.
|
|
180
398
|
*/
|
|
@@ -185,6 +403,77 @@ var TreeNode = /** @class */ (function () {
|
|
|
185
403
|
});
|
|
186
404
|
return list;
|
|
187
405
|
};
|
|
406
|
+
/**
|
|
407
|
+
* Returns a nested array representation of the tree.
|
|
408
|
+
* - Leaf -> value
|
|
409
|
+
* - Single child -> [model, ...childResult]
|
|
410
|
+
* - Multiple leaf children -> [model, [leaves...]]
|
|
411
|
+
* - Multiple mixed children -> [model, child1Result, child2Result, ...]
|
|
412
|
+
*/
|
|
413
|
+
TreeNode.prototype.toNestedArray = function () {
|
|
414
|
+
if (this.isLeaf) {
|
|
415
|
+
return this.model;
|
|
416
|
+
}
|
|
417
|
+
if (this.children.length === 1) {
|
|
418
|
+
var childResult = this.children[0].toNestedArray();
|
|
419
|
+
if (Array.isArray(childResult)) {
|
|
420
|
+
return __spreadArray([this.model], childResult, true);
|
|
421
|
+
}
|
|
422
|
+
return [this.model, childResult];
|
|
423
|
+
}
|
|
424
|
+
// Multiple children
|
|
425
|
+
var allLeaves = this.children.every(function (c) { return c.isLeaf; });
|
|
426
|
+
if (allLeaves) {
|
|
427
|
+
return [this.model, this.children.map(function (c) { return c.model; })];
|
|
428
|
+
}
|
|
429
|
+
return __spreadArray([this.model], this.children.map(function (c) { return c.toNestedArray(); }), true);
|
|
430
|
+
};
|
|
431
|
+
/**
|
|
432
|
+
* Creates a tree from a nested array representation.
|
|
433
|
+
* @see toNestedArray
|
|
434
|
+
*/
|
|
435
|
+
TreeNode.fromNestedArray = function (input) {
|
|
436
|
+
if (!Array.isArray(input)) {
|
|
437
|
+
return new TreeNode(input);
|
|
438
|
+
}
|
|
439
|
+
var model = input[0], rest = input.slice(1);
|
|
440
|
+
var node = new TreeNode(model);
|
|
441
|
+
if (rest.length === 0) {
|
|
442
|
+
return node;
|
|
443
|
+
}
|
|
444
|
+
if (rest.length === 1 && Array.isArray(rest[0])) {
|
|
445
|
+
var inner = rest[0];
|
|
446
|
+
var hasArrays_1 = inner.some(function (x) { return Array.isArray(x); });
|
|
447
|
+
if (!hasArrays_1) {
|
|
448
|
+
// Multiple leaf children
|
|
449
|
+
for (var _i = 0, _a = inner; _i < _a.length; _i++) {
|
|
450
|
+
var leaf = _a[_i];
|
|
451
|
+
node.addModel(leaf);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
// Single non-leaf child
|
|
456
|
+
node.add(TreeNode.fromNestedArray(inner));
|
|
457
|
+
}
|
|
458
|
+
return node;
|
|
459
|
+
}
|
|
460
|
+
var hasArrays = rest.some(function (x) { return Array.isArray(x); });
|
|
461
|
+
if (!hasArrays) {
|
|
462
|
+
// Chain: [model, a, b, c] = model -> a -> b -> c
|
|
463
|
+
var current = node;
|
|
464
|
+
for (var _b = 0, _c = rest; _b < _c.length; _b++) {
|
|
465
|
+
var val = _c[_b];
|
|
466
|
+
current = current.addModel(val);
|
|
467
|
+
}
|
|
468
|
+
return node;
|
|
469
|
+
}
|
|
470
|
+
// Multiple children with at least one non-leaf
|
|
471
|
+
for (var _d = 0, rest_1 = rest; _d < rest_1.length; _d++) {
|
|
472
|
+
var childResult = rest_1[_d];
|
|
473
|
+
node.add(TreeNode.fromNestedArray(childResult));
|
|
474
|
+
}
|
|
475
|
+
return node;
|
|
476
|
+
};
|
|
188
477
|
/**
|
|
189
478
|
* Returns an object representation of the tree.
|
|
190
479
|
*/
|
package/dist/TreeNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNode.js","sourceRoot":"","sources":["../src/TreeNode.ts"],"names":[],"mappings":";;;;;;;;AAcA;;GAEG;AACH;IACE,kBACS,KAAQ,EACR,MAAiC,EACjC,QAA4B;QAD5B,uBAAA,EAAA,aAAiC;QACjC,yBAAA,EAAA,aAA4B;QAF5B,UAAK,GAAL,KAAK,CAAG;QACR,WAAM,GAAN,MAAM,CAA2B;QACjC,aAAQ,GAAR,QAAQ,CAAoB;IAClC,CAAC;IAEJ;;OAEG;IACI,cAAK,GAAZ,UAAgB,IAAmB;QACjC,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAK,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAA/B,CAA+B,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,sBAAI,2BAAK;QAHT;;WAEG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;;;OAAA;IAKD,sBAAI,6BAAO;QAHX;;WAEG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,CAAC,OAAO;YACpC,uCAAW,IAAI,CAAC,MAAM,CAAC,OAAO,IAAE,IAAI,CAAC,KAAK,GAAE;QAC9C,CAAC;;;OAAA;IAKD,sBAAI,iCAAW;QAHf;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,CAAC;;;OAAA;IAED;;OAEG;IACH,sBAAG,GAAH,UAAI,KAAkB;QACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,2BAAQ,GAAR,UAAS,KAAQ;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAI,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,uBAAI,GAAJ;QACE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACxB,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,wBAAK,GAAL;QACE,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK;YACtC,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YACvB,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,wBAAK,GAAL,UAAM,OAAiB;QACrB,IAAI,IAAI,GAAgB,IAAI,CAAC;QAC7B,KAAc,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;YAAlB,IAAI,CAAC,gBAAA;YACR,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;SACxB;QACD,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,uBAAI,GAAJ;QACE,IAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAM,SAAS,GAAG,UAAC,IAAiB;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,MAAM;gBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAG,GAAH,UAAO,QAAkC;QACvC,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK;YACtC,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YACvB,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,0BAAO,GAAP,UAAQ,QAA2B;QACjC,IAAM,KAAK,GAAkB,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,KAAK,CAAC,MAAM,EAAE;YACnB,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAiB,CAAC;YAC1C,IAAI,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9B;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAG,GAAH,UAAI,QAA2B;QAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACtE,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;SACvB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,uBAAI,GAAJ,UAAK,QAA2B;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACtE,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;SACvB;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,0BAAO,GAAP,UAAQ,MAAsB;QAC5B,IAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAC,IAAI;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,2BAAQ,GAAR;QACE,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,QAAQ,EAAE,EAAhB,CAAgB,CAAC;SACzD,CAAC;IACJ,CAAC;IACH,eAAC;AAAD,CAAC,AAvLD,IAuLC;AAvLY,4BAAQ"}
|
|
1
|
+
{"version":3,"file":"TreeNode.js","sourceRoot":"","sources":["../src/TreeNode.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAmF;AAA1E,oGAAA,QAAQ,OAAA"}
|
package/dist/treenode.ts.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
/**
|
|
3
2
|
* @public
|
|
4
3
|
*/
|
|
@@ -7,6 +6,12 @@ export declare interface IParseable<T> {
|
|
|
7
6
|
children: IParseable<T>[];
|
|
8
7
|
}
|
|
9
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Nested array representation of a tree.
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export declare type NestedArray<T> = T | [T, ...(NestedArray<T> | T[])[]];
|
|
14
|
+
|
|
10
15
|
/**
|
|
11
16
|
* Search callback passed to `.pre`, `.post`, and `.breadth`.
|
|
12
17
|
* @public
|
|
@@ -26,6 +31,7 @@ export declare class TreeNode<T> {
|
|
|
26
31
|
model: T;
|
|
27
32
|
parent: TreeNode<T> | null;
|
|
28
33
|
children: TreeNode<T>[];
|
|
34
|
+
private _index;
|
|
29
35
|
constructor(model: T, parent?: TreeNode<T> | null, children?: TreeNode<T>[]);
|
|
30
36
|
/**
|
|
31
37
|
* Parses object into a tree and returns the root node.
|
|
@@ -39,10 +45,35 @@ export declare class TreeNode<T> {
|
|
|
39
45
|
* Indices from the root to the node.
|
|
40
46
|
*/
|
|
41
47
|
get indices(): number[];
|
|
48
|
+
/**
|
|
49
|
+
* Compressed path key: positive = run of first-children, negative = child index.
|
|
50
|
+
* e.g. [0,0,0,1,0,0] -> "3,-1,2"
|
|
51
|
+
*/
|
|
52
|
+
get pathKey(): string;
|
|
42
53
|
/**
|
|
43
54
|
* Returns true if the node has children.
|
|
44
55
|
*/
|
|
45
56
|
get hasChildren(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Returns true if the node is the root (has no parent).
|
|
59
|
+
*/
|
|
60
|
+
get isRoot(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Returns true if the node is a leaf (has no children).
|
|
63
|
+
*/
|
|
64
|
+
get isLeaf(): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the root node of the tree.
|
|
67
|
+
*/
|
|
68
|
+
get root(): TreeNode<T>;
|
|
69
|
+
/**
|
|
70
|
+
* Returns the depth of the node (root is 0).
|
|
71
|
+
*/
|
|
72
|
+
get depth(): number;
|
|
73
|
+
/**
|
|
74
|
+
* Returns siblings of this node (excluding self).
|
|
75
|
+
*/
|
|
76
|
+
get siblings(): TreeNode<T>[];
|
|
46
77
|
/**
|
|
47
78
|
* Add node as a child.
|
|
48
79
|
*/
|
|
@@ -56,13 +87,18 @@ export declare class TreeNode<T> {
|
|
|
56
87
|
*/
|
|
57
88
|
drop(): TreeNode<T>;
|
|
58
89
|
/**
|
|
59
|
-
* Returns a shallow
|
|
90
|
+
* Returns a deep copy of structure, shallow copy of model.
|
|
60
91
|
*/
|
|
61
92
|
clone(): TreeNode<T>;
|
|
62
93
|
/**
|
|
63
94
|
* Returns a node given a list of indices
|
|
64
95
|
*/
|
|
65
96
|
fetch(indices: number[]): TreeNode<T> | null;
|
|
97
|
+
/**
|
|
98
|
+
* Returns a node given a pathKey string.
|
|
99
|
+
* @see pathKey
|
|
100
|
+
*/
|
|
101
|
+
fetchByPathKey(pathKey: string): TreeNode<T> | null;
|
|
66
102
|
/**
|
|
67
103
|
* Returns list of nodes to the root.
|
|
68
104
|
*/
|
|
@@ -71,6 +107,10 @@ export declare class TreeNode<T> {
|
|
|
71
107
|
* Iterates over a node's children and returns a new root node.
|
|
72
108
|
*/
|
|
73
109
|
map<U>(callback: (node: TreeNode<T>) => U): TreeNode<U>;
|
|
110
|
+
/**
|
|
111
|
+
* Iterates over a node's children and returns a new root node.
|
|
112
|
+
*/
|
|
113
|
+
mapAsync<U>(callback: (node: TreeNode<T>, parent: TreeNode<U> | undefined) => Promise<U>, parent?: TreeNode<U>): Promise<TreeNode<U>>;
|
|
74
114
|
/**
|
|
75
115
|
* Breadth-first search, return true in the callback to end iteration.
|
|
76
116
|
*/
|
|
@@ -83,10 +123,31 @@ export declare class TreeNode<T> {
|
|
|
83
123
|
* Depth-first post-order search, return true in the callback to end iteration.
|
|
84
124
|
*/
|
|
85
125
|
post(callback: SearchCallback<T>): TreeNode<T> | null;
|
|
126
|
+
/**
|
|
127
|
+
* Find the first node matching the predicate.
|
|
128
|
+
*/
|
|
129
|
+
find(predicate: (node: TreeNode<T>) => boolean, method?: SearchStrategy): TreeNode<T> | null;
|
|
130
|
+
/**
|
|
131
|
+
* Find all nodes matching the predicate.
|
|
132
|
+
*/
|
|
133
|
+
findAll(predicate: (node: TreeNode<T>) => boolean, method?: SearchStrategy): TreeNode<T>[];
|
|
86
134
|
/**
|
|
87
135
|
* Returns a list of nodes.
|
|
88
136
|
*/
|
|
89
137
|
flatten(method: SearchStrategy): TreeNode<T>[];
|
|
138
|
+
/**
|
|
139
|
+
* Returns a nested array representation of the tree.
|
|
140
|
+
* - Leaf -> value
|
|
141
|
+
* - Single child -> [model, ...childResult]
|
|
142
|
+
* - Multiple leaf children -> [model, [leaves...]]
|
|
143
|
+
* - Multiple mixed children -> [model, child1Result, child2Result, ...]
|
|
144
|
+
*/
|
|
145
|
+
toNestedArray(): NestedArray<T>;
|
|
146
|
+
/**
|
|
147
|
+
* Creates a tree from a nested array representation.
|
|
148
|
+
* @see toNestedArray
|
|
149
|
+
*/
|
|
150
|
+
static fromNestedArray<T>(input: NestedArray<T>): TreeNode<T>;
|
|
90
151
|
/**
|
|
91
152
|
* Returns an object representation of the tree.
|
|
92
153
|
*/
|
package/dist/tsdoc-metadata.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "treenode.ts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Tree-like data structure for typescript",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"build:docs": "npm run build:api && api-documenter markdown --input ./temp --output ./docs",
|
|
11
11
|
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
|
12
12
|
"prepare": "tsc",
|
|
13
|
-
"test": "jest"
|
|
13
|
+
"test": "jest",
|
|
14
|
+
"test:coverage": "jest --coverage"
|
|
14
15
|
},
|
|
15
16
|
"repository": {
|
|
16
17
|
"type": "git",
|
|
@@ -26,15 +27,15 @@
|
|
|
26
27
|
},
|
|
27
28
|
"homepage": "https://github.com/lubert/treenode.ts#readme",
|
|
28
29
|
"devDependencies": {
|
|
29
|
-
"@microsoft/api-documenter": "^7.
|
|
30
|
-
"@microsoft/api-extractor": "^7.
|
|
31
|
-
"@types/jest": "^
|
|
32
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
33
|
-
"@typescript-eslint/parser": "^
|
|
34
|
-
"eslint": "^
|
|
35
|
-
"jest": "^
|
|
36
|
-
"ts-jest": "^
|
|
37
|
-
"typescript": "^
|
|
30
|
+
"@microsoft/api-documenter": "^7.28.2",
|
|
31
|
+
"@microsoft/api-extractor": "^7.55.2",
|
|
32
|
+
"@types/jest": "^29.5.14",
|
|
33
|
+
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
|
34
|
+
"@typescript-eslint/parser": "^7.18.0",
|
|
35
|
+
"eslint": "^8.57.1",
|
|
36
|
+
"jest": "^29.7.0",
|
|
37
|
+
"ts-jest": "^29.2.6",
|
|
38
|
+
"typescript": "^5.7.3"
|
|
38
39
|
},
|
|
39
40
|
"dependencies": {}
|
|
40
41
|
}
|