treenode.ts 0.4.0 → 0.6.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.
@@ -3,12 +3,12 @@ import { IParseable } from "./IParseable";
3
3
  * Search callback passed to `.pre`, `.post`, and `.breadth`.
4
4
  * @public
5
5
  */
6
- export declare type SearchCallback<T> = (node: TreeNode<T>) => (boolean | void);
6
+ export declare 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 declare type SearchStrategy = 'pre' | 'post' | 'breadth';
11
+ export declare type SearchStrategy = "pre" | "post" | "breadth";
12
12
  /**
13
13
  * @public
14
14
  */
@@ -49,6 +49,10 @@ export declare class TreeNode<T> {
49
49
  * Returns a shallow-copy.
50
50
  */
51
51
  clone(): TreeNode<T>;
52
+ /**
53
+ * Returns a node given a list of indices
54
+ */
55
+ fetch(indices: number[]): TreeNode<T> | null;
52
56
  /**
53
57
  * Returns list of nodes to the root.
54
58
  */
@@ -57,6 +61,10 @@ export declare class TreeNode<T> {
57
61
  * Iterates over a node's children and returns a new root node.
58
62
  */
59
63
  map<U>(callback: (node: TreeNode<T>) => U): TreeNode<U>;
64
+ /**
65
+ * Iterates over a node's children and returns a new root node.
66
+ */
67
+ mapAsync<U>(callback: (node: TreeNode<T>, parent?: TreeNode<U>) => Promise<U>, parent?: TreeNode<U>): Promise<TreeNode<U>>;
60
68
  /**
61
69
  * Breadth-first search, return true in the callback to end iteration.
62
70
  */
@@ -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,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAExE;;;GAGG;AACH,oBAAY,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAExD;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC;IAEZ,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAC1B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAFvB,KAAK,EAAE,CAAC,EACR,MAAM,GAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAW,EACjC,QAAQ,GAAE,QAAQ,CAAC,CAAC,CAAC,EAAO;IAGrC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAMjD;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,EAAE,CAGtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAMpC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAI/B;;OAEG;IACH,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;IASnB;;OAEG;IACH,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;IAUpB;;OAEG;IACH,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;IAUrB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAUvD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAcxD;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAWpD;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAWrD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;IAM9C;;OAEG;IACH,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;CAM1B"}
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,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;AAEtE;;;GAGG;AACH,oBAAY,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAExD;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC;IAEZ,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAC1B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAFvB,KAAK,EAAE,CAAC,EACR,MAAM,GAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAW,EACjC,QAAQ,GAAE,QAAQ,CAAC,CAAC,CAAC,EAAO;IAGrC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAMjD;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,EAAE,CAGtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAMpC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAI/B;;OAEG;IACH,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;IASnB;;OAEG;IACH,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;IAUpB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAU5C;;OAEG;IACH,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;IAUrB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAUvD;;OAEG;IACG,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAUhI;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAcxD;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAWpD;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAWrD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;IAQ9C;;OAEG;IACH,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;CAM1B"}
package/dist/TreeNode.js CHANGED
@@ -1,4 +1,40 @@
1
1
  "use strict";
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;
13
+ return g = { next: verb(0), "throw": verb(1), "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 (_) 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
+ };
2
38
  var __spreadArray = (this && this.__spreadArray) || function (to, from) {
3
39
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
4
40
  to[j] = from[i];
@@ -96,6 +132,20 @@ var TreeNode = /** @class */ (function () {
96
132
  });
97
133
  return node;
98
134
  };
135
+ /**
136
+ * Returns a node given a list of indices
137
+ */
138
+ TreeNode.prototype.fetch = function (indices) {
139
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
140
+ var node = this;
141
+ for (var _i = 0, indices_1 = indices; _i < indices_1.length; _i++) {
142
+ var i = indices_1[_i];
143
+ node = node.children[i];
144
+ if (!node)
145
+ return null;
146
+ }
147
+ return node || null;
148
+ };
99
149
  /**
100
150
  * Returns list of nodes to the root.
101
151
  */
@@ -121,6 +171,40 @@ var TreeNode = /** @class */ (function () {
121
171
  });
122
172
  return node;
123
173
  };
174
+ /**
175
+ * Iterates over a node's children and returns a new root node.
176
+ */
177
+ TreeNode.prototype.mapAsync = function (callback, parent) {
178
+ return __awaiter(this, void 0, void 0, function () {
179
+ var node, _a, _b;
180
+ var _this = this;
181
+ return __generator(this, function (_c) {
182
+ switch (_c.label) {
183
+ case 0:
184
+ _a = TreeNode.bind;
185
+ return [4 /*yield*/, callback(this, parent)];
186
+ case 1:
187
+ node = new (_a.apply(TreeNode, [void 0, _c.sent()]))();
188
+ _b = node;
189
+ return [4 /*yield*/, Promise.all(this.children.map(function (child) { return __awaiter(_this, void 0, void 0, function () {
190
+ var newChild;
191
+ return __generator(this, function (_a) {
192
+ switch (_a.label) {
193
+ case 0: return [4 /*yield*/, child.mapAsync(callback, node)];
194
+ case 1:
195
+ newChild = _a.sent();
196
+ newChild.parent = node;
197
+ return [2 /*return*/, newChild];
198
+ }
199
+ });
200
+ }); }))];
201
+ case 2:
202
+ _b.children = _c.sent();
203
+ return [2 /*return*/, node];
204
+ }
205
+ });
206
+ });
207
+ };
124
208
  /**
125
209
  * Breadth-first search, return true in the callback to end iteration.
126
210
  */
@@ -167,7 +251,9 @@ var TreeNode = /** @class */ (function () {
167
251
  */
168
252
  TreeNode.prototype.flatten = function (method) {
169
253
  var list = [];
170
- this[method].call(this, function (node) { list.push(node); });
254
+ this[method].call(this, function (node) {
255
+ list.push(node);
256
+ });
171
257
  return list;
172
258
  };
173
259
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNode.js","sourceRoot":"","sources":["../src/TreeNode.ts"],"names":[],"mappings":"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"}
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,4DAA4D;QAC5D,IAAI,IAAI,GAAgB,IAAI,CAAC;QAC7B,KAAgB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;YAApB,IAAM,CAAC,gBAAA;YACV,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;IACG,2BAAQ,GAAd,UAAkB,QAAiE,EAAE,MAAoB;;;;;;;6BACtF,QAAQ;wBAAI,qBAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAA;;wBAAnD,IAAI,GAAG,cAAI,QAAQ,WAAI,SAA4B,KAAC;wBAC1D,KAAA,IAAI,CAAA;wBAAY,qBAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAO,KAAK;;;;gDAC7C,qBAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAA;;4CAA/C,QAAQ,GAAG,SAAoC;4CACrD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;4CACvB,sBAAO,QAAQ,EAAC;;;iCACjB,CAAC,CAAC,EAAA;;wBAJH,GAAK,QAAQ,GAAG,SAIb,CAAC;wBACJ,sBAAO,IAAI,EAAC;;;;KACb;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,AArMD,IAqMC;AArMY,4BAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "treenode.ts",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Tree-like data structure for typescript",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "homepage": "https://github.com/lubert/treenode.ts#readme",
28
28
  "devDependencies": {
29
- "@microsoft/api-documenter": "^7.13.6",
29
+ "@microsoft/api-documenter": "^7.17.17",
30
30
  "@microsoft/api-extractor": "^7.15.1",
31
31
  "@types/jest": "^26.0.23",
32
32
  "@typescript-eslint/eslint-plugin": "^4.23.0",
@@ -1,92 +0,0 @@
1
-
2
- /**
3
- * @public
4
- */
5
- export declare interface IParseable<T> {
6
- model: T;
7
- children: IParseable<T>[];
8
- }
9
-
10
- /**
11
- * Search callback passed to `.pre`, `.post`, and `.breadth`.
12
- * @public
13
- */
14
- export declare type SearchCallback<T> = (node: TreeNode<T>) => (boolean | void);
15
-
16
- /**
17
- * Search methods on TreeNode, passed to `.flatten`.
18
- * @public
19
- */
20
- export declare type SearchStrategy = 'pre' | 'post' | 'breadth';
21
-
22
- /**
23
- * @public
24
- */
25
- export declare class TreeNode<T> {
26
- model: T;
27
- parent: TreeNode<T> | null;
28
- children: TreeNode<T>[];
29
- constructor(model: T, parent?: TreeNode<T> | null, children?: TreeNode<T>[]);
30
- /**
31
- * Parses object into a tree and returns the root node.
32
- */
33
- static parse<T>(tree: IParseable<T>): TreeNode<T>;
34
- /**
35
- * Index of the node among its siblings.
36
- */
37
- get index(): number;
38
- /**
39
- * Indices from the root to the node.
40
- */
41
- get indices(): number[];
42
- /**
43
- * Returns true if the node has children.
44
- */
45
- get hasChildren(): boolean;
46
- /**
47
- * Add node as a child.
48
- */
49
- add(child: TreeNode<T>): TreeNode<T>;
50
- /**
51
- * Add model as a child.
52
- */
53
- addModel(model: T): TreeNode<T>;
54
- /**
55
- * Remove current node and its children from the tree and return.
56
- */
57
- drop(): TreeNode<T>;
58
- /**
59
- * Returns a shallow-copy.
60
- */
61
- clone(): TreeNode<T>;
62
- /**
63
- * Returns list of nodes to the root.
64
- */
65
- path(): TreeNode<T>[];
66
- /**
67
- * Iterates over a node's children and returns a new root node.
68
- */
69
- map<U>(callback: (node: TreeNode<T>) => U): TreeNode<U>;
70
- /**
71
- * Breadth-first search, return true in the callback to end iteration.
72
- */
73
- breadth(callback: SearchCallback<T>): TreeNode<T> | null;
74
- /**
75
- * Depth-first pre-order search, return true in the callback to end iteration.
76
- */
77
- pre(callback: SearchCallback<T>): TreeNode<T> | null;
78
- /**
79
- * Depth-first post-order search, return true in the callback to end iteration.
80
- */
81
- post(callback: SearchCallback<T>): TreeNode<T> | null;
82
- /**
83
- * Returns a list of nodes.
84
- */
85
- flatten(method: SearchStrategy): TreeNode<T>[];
86
- /**
87
- * Returns an object representation of the tree.
88
- */
89
- toObject(): IParseable<T>;
90
- }
91
-
92
- export { }
@@ -1,11 +0,0 @@
1
- // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
- // It should be published with your NPM package. It should not be tracked by Git.
3
- {
4
- "tsdocVersion": "0.12",
5
- "toolPackages": [
6
- {
7
- "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.15.1"
9
- }
10
- ]
11
- }