tree-processor 0.5.1 → 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.
- package/README.md +97 -2
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/tree-processor.cjs.js +29 -23
- package/dist/tree-processor.esm.js +12 -6
- package/dist/tree-processor.umd.js +19 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
一个轻量级的树结构数据处理工具库,使用 TypeScript 编写,支持 tree-shaking,每个格式打包体积约 **3-4 KB**(ESM: 3.25 KB,CJS: 3.42 KB,UMD: 3.56 KB)。
|
|
4
4
|
|
|
5
|
-
目前已支持 mapTree、forEachTree、filterTree、findTree、pushTree、unshiftTree、popTree、shiftTree、someTree、everyTree、includesTree、atTree、indexOfTree、atIndexOfTree、getParentTree、nodeDepthMap、dedupTree、removeTree 和
|
|
5
|
+
目前已支持 mapTree、forEachTree、filterTree、findTree、pushTree、unshiftTree、popTree、shiftTree、someTree、everyTree、includesTree、atTree、indexOfTree、atIndexOfTree、getParentTree、nodeDepthMap、dedupTree、removeTree、isEmptyTree、isTree 和 isForest。每个方法的最后一个参数可以自定义 children 和 id 的属性名。
|
|
6
6
|
|
|
7
7
|
## ✨ 特性
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
- 🎯 **类似数组 API** - 提供 map、filter、find 等熟悉的数组方法
|
|
13
13
|
- ⚙️ **自定义字段名** - 支持自定义 children 和 id 字段名
|
|
14
14
|
- ✅ **零依赖** - 无外部依赖,开箱即用
|
|
15
|
-
- 🧪 **完善的测试覆盖** - 包含
|
|
15
|
+
- 🧪 **完善的测试覆盖** - 包含 160 个测试用例,覆盖基础功能、边界情况、异常处理、复杂场景、npm 包导入等
|
|
16
16
|
|
|
17
17
|
## 📦 安装
|
|
18
18
|
|
|
@@ -280,6 +280,101 @@ const isEmpty = t.isEmptyTree(treeData)
|
|
|
280
280
|
console.log(isEmpty) // true 表示树为空,false 表示树不为空
|
|
281
281
|
```
|
|
282
282
|
|
|
283
|
+
### isTree(判断数据是否是树结构)
|
|
284
|
+
|
|
285
|
+
判断数据是否是树结构(单个对象)。树结构必须是一个对象(不能是数组、null、undefined 或基本类型),如果存在 children 字段,必须是数组类型,并且会递归检查所有子节点。
|
|
286
|
+
|
|
287
|
+
```javascript
|
|
288
|
+
// 有效的树结构
|
|
289
|
+
const tree = {
|
|
290
|
+
id: 1,
|
|
291
|
+
name: 'node1',
|
|
292
|
+
children: [
|
|
293
|
+
{ id: 2, name: 'node2' },
|
|
294
|
+
{ id: 3, name: 'node3' },
|
|
295
|
+
],
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
const isValid = t.isTree(tree)
|
|
299
|
+
console.log(isValid) // true
|
|
300
|
+
|
|
301
|
+
// 无效的树结构
|
|
302
|
+
const invalidTree = {
|
|
303
|
+
id: 1,
|
|
304
|
+
children: null, // children 不能是 null
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
const isInvalid = t.isTree(invalidTree)
|
|
308
|
+
console.log(isInvalid) // false
|
|
309
|
+
|
|
310
|
+
// 支持自定义字段名
|
|
311
|
+
const customTree = {
|
|
312
|
+
nodeId: 1,
|
|
313
|
+
name: 'node1',
|
|
314
|
+
subNodes: [
|
|
315
|
+
{ nodeId: 2, name: 'node2' },
|
|
316
|
+
],
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
const fieldNames = { children: 'subNodes', id: 'nodeId' };
|
|
320
|
+
const isValidCustom = t.isTree(customTree, fieldNames)
|
|
321
|
+
console.log(isValidCustom) // true
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### isForest(判断数据是否是森林结构)
|
|
325
|
+
|
|
326
|
+
判断数据是否是森林结构(数组)。森林结构必须是一个数组,数组中的每个元素都必须是有效的树结构。
|
|
327
|
+
|
|
328
|
+
```javascript
|
|
329
|
+
// 有效的森林结构
|
|
330
|
+
const forest = [
|
|
331
|
+
{
|
|
332
|
+
id: 1,
|
|
333
|
+
name: 'node1',
|
|
334
|
+
children: [
|
|
335
|
+
{ id: 2, name: 'node2' },
|
|
336
|
+
],
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
id: 3,
|
|
340
|
+
name: 'node3',
|
|
341
|
+
children: [{ id: 4, name: 'node4' }],
|
|
342
|
+
},
|
|
343
|
+
];
|
|
344
|
+
|
|
345
|
+
const isValid = t.isForest(forest)
|
|
346
|
+
console.log(isValid) // true
|
|
347
|
+
|
|
348
|
+
// 空数组也是有效的森林结构
|
|
349
|
+
const emptyForest = []
|
|
350
|
+
const isEmptyValid = t.isForest(emptyForest)
|
|
351
|
+
console.log(isEmptyValid) // true
|
|
352
|
+
|
|
353
|
+
// 无效的森林结构
|
|
354
|
+
const invalidForest = [
|
|
355
|
+
{ id: 1, children: [{ id: 2 }] },
|
|
356
|
+
'not a tree', // 数组元素必须是树结构
|
|
357
|
+
];
|
|
358
|
+
|
|
359
|
+
const isInvalid = t.isForest(invalidForest)
|
|
360
|
+
console.log(isInvalid) // false
|
|
361
|
+
|
|
362
|
+
// 支持自定义字段名
|
|
363
|
+
const customForest = [
|
|
364
|
+
{
|
|
365
|
+
nodeId: 1,
|
|
366
|
+
name: 'node1',
|
|
367
|
+
subNodes: [
|
|
368
|
+
{ nodeId: 2, name: 'node2' },
|
|
369
|
+
],
|
|
370
|
+
},
|
|
371
|
+
];
|
|
372
|
+
|
|
373
|
+
const fieldNames = { children: 'subNodes', id: 'nodeId' };
|
|
374
|
+
const isValidCustom = t.isForest(customForest, fieldNames)
|
|
375
|
+
console.log(isValidCustom) // true
|
|
376
|
+
```
|
|
377
|
+
|
|
283
378
|
## 自定义字段名
|
|
284
379
|
|
|
285
380
|
所有方法都支持自定义 children 和 id 的属性名,通过最后一个参数传入配置对象:
|
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export declare function forEachTree(tree: TreeData, callback: (node: TreeNode) =
|
|
|
23
23
|
export declare function isEmptyTree(tree: TreeData): boolean;
|
|
24
24
|
export declare function getParentTree(tree: TreeData, targetId: any, fieldNames?: FieldNames): TreeNode | null;
|
|
25
25
|
export declare function includesTree(tree: TreeData, targetId: any, fieldNames?: FieldNames): boolean;
|
|
26
|
+
export declare function isTree(data: any, fieldNames?: FieldNames): boolean;
|
|
27
|
+
export declare function isForest(data: any, fieldNames?: FieldNames): boolean;
|
|
26
28
|
declare const treeProcessor: {
|
|
27
29
|
mapTree: typeof mapTree;
|
|
28
30
|
filterTree: typeof filterTree;
|
|
@@ -43,6 +45,8 @@ declare const treeProcessor: {
|
|
|
43
45
|
isEmptyTree: typeof isEmptyTree;
|
|
44
46
|
getParentTree: typeof getParentTree;
|
|
45
47
|
includesTree: typeof includesTree;
|
|
48
|
+
isTree: typeof isTree;
|
|
49
|
+
isForest: typeof isForest;
|
|
46
50
|
};
|
|
47
51
|
export default treeProcessor;
|
|
48
52
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAaD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAK3C,MAAM,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;AASlC,wBAAgB,OAAO,CACrB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,GAAG,EACjC,UAAU,GAAE,UAAgC,GAC3C,GAAG,EAAE,CAeP;AASD,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,EACpD,UAAU,GAAE,UAAgC,GAC3C,QAAQ,CAiBV;AASD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,EACxC,UAAU,GAAE,UAAgC,GAC3C,QAAQ,GAAG,IAAI,CAcjB;AAUD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,GAAG,EACnB,OAAO,EAAE,QAAQ,EACjB,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAqBT;AAUD,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,GAAG,EACnB,OAAO,EAAE,QAAQ,EACjB,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAqBT;AASD,wBAAgB,OAAO,CACrB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,GAAG,EACX,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAsBT;AASD,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,GAAG,EACX,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAsBT;AASD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,EACrC,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAaT;AASD,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,EACrC,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAaT;AAUD,wBAAgB,MAAM,CACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,UAAgC,GAC3C,QAAQ,GAAG,IAAI,CAqCjB;AASD,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,GAAG,EACb,UAAU,GAAE,UAAgC,GAC3C,MAAM,EAAE,GAAG,IAAI,CAsBjB;AASD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,GAAE,UAAgC,GAC3C,QAAQ,GAAG,IAAI,CA4BjB;AAQD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,EACd,UAAU,GAAE,UAAgC,GAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AASD,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,EACX,UAAU,GAAE,UAAgC,GAC3C,QAAQ,CA+BV;AASD,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,GAAG,EACb,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAuBT;AAQD,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,EAClC,UAAU,GAAE,UAAgC,GAC3C,IAAI,CAYN;AAOD,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,GACb,OAAO,CAET;AASD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,GAAG,EACb,UAAU,GAAE,UAAgC,GAC3C,QAAQ,GAAG,IAAI,CAqBjB;AASD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,GAAG,EACb,UAAU,GAAE,UAAgC,GAC3C,OAAO,CAaT;AAKD,QAAA,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/stats.html
CHANGED
|
@@ -4929,7 +4929,7 @@ var drawChart = (function (exports) {
|
|
|
4929
4929
|
</script>
|
|
4930
4930
|
<script>
|
|
4931
4931
|
/*<!--*/
|
|
4932
|
-
const data = {"version":2,"tree":{"name":"root","children":[{"name":"tree-processor.
|
|
4932
|
+
const data = {"version":2,"tree":{"name":"root","children":[{"name":"tree-processor.esm.js","children":[{"name":"src/index.ts","uid":"69ea8d72-1"}]}],"isRoot":true},"nodeParts":{"69ea8d72-1":{"renderedLength":12228,"gzipLength":1669,"brotliLength":1461,"metaUid":"69ea8d72-0"}},"nodeMetas":{"69ea8d72-0":{"id":"\\src\\index.ts","moduleParts":{"tree-processor.esm.js":"69ea8d72-1"},"imported":[],"importedBy":[],"isEntry":true}},"env":{"rollup":"4.56.0"},"options":{"gzip":true,"brotli":true,"sourcemap":false}};
|
|
4933
4933
|
|
|
4934
4934
|
const run = () => {
|
|
4935
4935
|
const width = window.innerWidth;
|
|
@@ -6,59 +6,65 @@ return function r(n){for(const o of n){i.push(e(o))
|
|
|
6
6
|
const n=o[t.children]
|
|
7
7
|
Array.isArray(n)&&n.length>0&&r(n)}}(n),i}function e(n,e,t=r){const i=[]
|
|
8
8
|
return function r(n){n.forEach((n,o)=>{e(n,o)&&i.push(n)
|
|
9
|
-
const
|
|
10
|
-
Array.isArray(
|
|
9
|
+
const s=n[t.children]
|
|
10
|
+
Array.isArray(s)&&s.length>0&&r(s,o)})}(n),i}function t(n,e,i=r){for(const r of n){if(e(r))return r
|
|
11
11
|
const n=r[i.children]
|
|
12
12
|
if(Array.isArray(n)&&n.length>0){const r=t(n,e,i)
|
|
13
13
|
if(r)return r}}return null}function i(n,e,t,i=r){return function r(n){for(const o of n){if(o[i.id]===e)return o[i.children]||(o[i.children]=[]),o[i.children].push(t),!0
|
|
14
14
|
const n=o[i.children]
|
|
15
15
|
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function o(n,e,t,i=r){return function r(n){for(const o of n){if(o[i.id]===e)return o[i.children]||(o[i.children]=[]),o[i.children].unshift(t),!0
|
|
16
16
|
const n=o[i.children]
|
|
17
|
-
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function
|
|
17
|
+
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function s(n,e,t=r){return function r(n){for(const i of n){if(i[t.id]===e){const r=i[t.children]
|
|
18
18
|
return!!(Array.isArray(r)&&r.length>0)&&(r.pop(),!0)}const n=i[t.children]
|
|
19
19
|
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function u(n,e,t=r){return function r(n){for(const i of n){if(i[t.id]===e){const r=i[t.children]
|
|
20
20
|
return!!(Array.isArray(r)&&r.length>0)&&(r.shift(),!0)}const n=i[t.children]
|
|
21
|
-
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function
|
|
21
|
+
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function f(n,e,t=r){for(const r of n){if(e(r))return!0
|
|
22
22
|
const n=r[t.children]
|
|
23
|
-
if(Array.isArray(n)&&n.length>0&&
|
|
23
|
+
if(Array.isArray(n)&&n.length>0&&f(n,e,t))return!0}return!1}function c(n,e,t=r){for(const r of n){if(!e(r))return!1
|
|
24
24
|
const n=r[t.children]
|
|
25
|
-
if(Array.isArray(n)&&n.length>0&&!
|
|
25
|
+
if(Array.isArray(n)&&n.length>0&&!c(n,e,t))return!1}return!0}function l(n,e,t,i=r){const o=function r(n){for(const t of n){if(t[i.id]===e)return t
|
|
26
26
|
const n=t[i.children]
|
|
27
27
|
if(Array.isArray(n)&&n.length>0){const e=r(n)
|
|
28
28
|
if(e)return e}}return null}(n)
|
|
29
29
|
if(!o)return null
|
|
30
|
-
const
|
|
31
|
-
if(!Array.isArray(
|
|
32
|
-
const u=t>=0?t:
|
|
33
|
-
return u>=0&&u<
|
|
34
|
-
if(
|
|
35
|
-
const s
|
|
36
|
-
if(Array.isArray(
|
|
30
|
+
const s=o[i.children]
|
|
31
|
+
if(!Array.isArray(s)||0===s.length)return null
|
|
32
|
+
const u=t>=0?t:s.length+t
|
|
33
|
+
return u>=0&&u<s.length?s[u]:null}function h(n,e,t=r){return function r(n,i=[]){for(let o=0;o<n.length;o++){const s=n[o],u=[...i,o]
|
|
34
|
+
if(s[t.id]===e)return u
|
|
35
|
+
const f=s[t.children]
|
|
36
|
+
if(Array.isArray(f)&&f.length>0){const n=r(f,u)
|
|
37
37
|
if(n)return n}}return null}(n)}function a(n,e,t=r){if(!Array.isArray(e)||0===e.length)return null
|
|
38
38
|
let i=n
|
|
39
39
|
for(let r=0;r<e.length;r++){const n=e[r]
|
|
40
40
|
if(!Array.isArray(i)||n<0||n>=i.length)return null
|
|
41
41
|
const o=i[n]
|
|
42
42
|
if(r===e.length-1)return o
|
|
43
|
-
const
|
|
44
|
-
if(!Array.isArray(
|
|
45
|
-
i=
|
|
43
|
+
const s=o[t.children]
|
|
44
|
+
if(!Array.isArray(s))return null
|
|
45
|
+
i=s}return null}function d(n,e=r){const t={}
|
|
46
46
|
return function r(n,i=1){for(const o of n){t[o[e.id]]=i
|
|
47
47
|
const n=o[e.children]
|
|
48
48
|
Array.isArray(n)&&n.length>0&&r(n,i+1)}}(n),t}function y(n,e,t=r){const i=new Set
|
|
49
49
|
return function r(n){const o=[]
|
|
50
|
-
for(const
|
|
50
|
+
for(const s of n){const n=s[e]
|
|
51
51
|
if(null!=n){if(i.has(n))continue
|
|
52
|
-
i.add(n)}const u={...
|
|
53
|
-
Array.isArray(
|
|
52
|
+
i.add(n)}const u={...s},f=s[t.children]
|
|
53
|
+
Array.isArray(f)&&f.length>0&&(u[t.children]=r(f)),o.push(u)}return o}(n)}function A(n,e,t=r){return function r(n){for(let i=0;i<n.length;i++){const o=n[i]
|
|
54
54
|
if(o[t.id]===e)return n.splice(i,1),!0
|
|
55
|
-
const
|
|
56
|
-
if(Array.isArray(
|
|
55
|
+
const s=o[t.children]
|
|
56
|
+
if(Array.isArray(s)&&s.length>0&&r(s))return!0}return!1}(n)}function p(n,e,t=r){!function r(n){for(const i of n){e(i)
|
|
57
57
|
const n=i[t.children]
|
|
58
58
|
Array.isArray(n)&&n.length>0&&r(n)}}(n)}function T(r){return!Array.isArray(r)||0===r.length}function g(n,e,t=r){return function r(n,i=null){for(const o of n){if(o[t.id]===e)return i
|
|
59
59
|
const n=o[t.children]
|
|
60
60
|
if(Array.isArray(n)&&n.length>0){const e=r(n,o)
|
|
61
61
|
if(null!==e)return e}}return null}(n)}function x(n,e,t=r){for(const r of n){if(r[t.id]===e)return!0
|
|
62
62
|
const n=r[t.children]
|
|
63
|
-
if(Array.isArray(n)&&n.length>0&&x(n,e,t))return!0}return!1}
|
|
64
|
-
|
|
63
|
+
if(Array.isArray(n)&&n.length>0&&x(n,e,t))return!0}return!1}function m(n,e=r){if(!n||"object"!=typeof n||Array.isArray(n))return!1
|
|
64
|
+
const t=n[e.children]
|
|
65
|
+
if(void 0!==t){if(null===t)return!1
|
|
66
|
+
if(!Array.isArray(t))return!1
|
|
67
|
+
for(const r of t)if(!m(r,e))return!1}return!0}function v(n,e=r){if(!Array.isArray(n))return!1
|
|
68
|
+
for(const r of n)if(!m(r,e))return!1
|
|
69
|
+
return!0}const E={mapTree:n,filterTree:e,findTree:t,pushTree:i,unshiftTree:o,popTree:s,shiftTree:u,someTree:f,everyTree:c,atTree:l,indexOfTree:h,atIndexOfTree:a,nodeDepthMap:d,dedupTree:y,removeTree:A,forEachTree:p,isEmptyTree:T,getParentTree:g,includesTree:x,isTree:m,isForest:v}
|
|
70
|
+
exports.atIndexOfTree=a,exports.atTree=l,exports.dedupTree=y,exports.default=E,exports.everyTree=c,exports.filterTree=e,exports.findTree=t,exports.forEachTree=p,exports.getParentTree=g,exports.includesTree=x,exports.indexOfTree=h,exports.isEmptyTree=T,exports.isForest=v,exports.isTree=m,exports.mapTree=n,exports.nodeDepthMap=d,exports.popTree=s,exports.pushTree=i,exports.removeTree=A,exports.shiftTree=u,exports.someTree=f,exports.unshiftTree=o
|
|
@@ -18,9 +18,9 @@ if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function u(n,t,e=r){
|
|
|
18
18
|
return!!(Array.isArray(r)&&r.length>0)&&(r.shift(),!0)}const n=i[e.children]
|
|
19
19
|
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(n)}function f(n,t,e=r){for(const r of n){if(t(r))return!0
|
|
20
20
|
const n=r[e.children]
|
|
21
|
-
if(Array.isArray(n)&&n.length>0&&f(n,t,e))return!0}return!1}function
|
|
21
|
+
if(Array.isArray(n)&&n.length>0&&f(n,t,e))return!0}return!1}function s(n,t,e=r){for(const r of n){if(!t(r))return!1
|
|
22
22
|
const n=r[e.children]
|
|
23
|
-
if(Array.isArray(n)&&n.length>0&&!
|
|
23
|
+
if(Array.isArray(n)&&n.length>0&&!s(n,t,e))return!1}return!0}function l(n,t,e,i=r){const o=function r(n){for(const e of n){if(e[i.id]===t)return e
|
|
24
24
|
const n=e[i.children]
|
|
25
25
|
if(Array.isArray(n)&&n.length>0){const t=r(n)
|
|
26
26
|
if(t)return t}}return null}(n)
|
|
@@ -40,10 +40,10 @@ const o=i[n]
|
|
|
40
40
|
if(r===t.length-1)return o
|
|
41
41
|
const c=o[e.children]
|
|
42
42
|
if(!Array.isArray(c))return null
|
|
43
|
-
i=c}return null}function
|
|
43
|
+
i=c}return null}function y(n,t=r){const e={}
|
|
44
44
|
return function r(n,i=1){for(const o of n){e[o[t.id]]=i
|
|
45
45
|
const n=o[t.children]
|
|
46
|
-
Array.isArray(n)&&n.length>0&&r(n,i+1)}}(n),e}function
|
|
46
|
+
Array.isArray(n)&&n.length>0&&r(n,i+1)}}(n),e}function d(n,t,e=r){const i=new Set
|
|
47
47
|
return function r(n){const o=[]
|
|
48
48
|
for(const c of n){const n=c[t]
|
|
49
49
|
if(null!=n){if(i.has(n))continue
|
|
@@ -58,5 +58,11 @@ const n=o[e.children]
|
|
|
58
58
|
if(Array.isArray(n)&&n.length>0){const t=r(n,o)
|
|
59
59
|
if(null!==t)return t}}return null}(n)}function m(n,t,e=r){for(const r of n){if(r[e.id]===t)return!0
|
|
60
60
|
const n=r[e.children]
|
|
61
|
-
if(Array.isArray(n)&&n.length>0&&m(n,t,e))return!0}return!1}
|
|
62
|
-
|
|
61
|
+
if(Array.isArray(n)&&n.length>0&&m(n,t,e))return!0}return!1}function v(n,t=r){if(!n||"object"!=typeof n||Array.isArray(n))return!1
|
|
62
|
+
const e=n[t.children]
|
|
63
|
+
if(void 0!==e){if(null===e)return!1
|
|
64
|
+
if(!Array.isArray(e))return!1
|
|
65
|
+
for(const r of e)if(!v(r,t))return!1}return!0}function x(n,t=r){if(!Array.isArray(n))return!1
|
|
66
|
+
for(const r of n)if(!v(r,t))return!1
|
|
67
|
+
return!0}const E={mapTree:n,filterTree:t,findTree:e,pushTree:i,unshiftTree:o,popTree:c,shiftTree:u,someTree:f,everyTree:s,atTree:l,indexOfTree:h,atIndexOfTree:a,nodeDepthMap:y,dedupTree:d,removeTree:A,forEachTree:g,isEmptyTree:T,getParentTree:p,includesTree:m,isTree:v,isForest:x}
|
|
68
|
+
export{a as atIndexOfTree,l as atTree,d as dedupTree,E as default,s as everyTree,t as filterTree,e as findTree,g as forEachTree,p as getParentTree,m as includesTree,h as indexOfTree,T as isEmptyTree,x as isForest,v as isTree,n as mapTree,y as nodeDepthMap,c as popTree,i as pushTree,A as removeTree,u as shiftTree,f as someTree,o as unshiftTree}
|
|
@@ -13,9 +13,9 @@ if(n)return n}}return null}function o(r,e,t,i=n){return function r(n){for(const
|
|
|
13
13
|
const n=o[i.children]
|
|
14
14
|
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(r)}function f(r,e,t,i=n){return function r(n){for(const o of n){if(o[i.id]===e)return o[i.children]||(o[i.children]=[]),o[i.children].unshift(t),!0
|
|
15
15
|
const n=o[i.children]
|
|
16
|
-
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(r)}function c(r,e,t=n){return function r(n){for(const i of n){if(i[t.id]===e){const r=i[t.children]
|
|
17
|
-
return!!(Array.isArray(r)&&r.length>0)&&(r.pop(),!0)}const n=i[t.children]
|
|
18
16
|
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(r)}function u(r,e,t=n){return function r(n){for(const i of n){if(i[t.id]===e){const r=i[t.children]
|
|
17
|
+
return!!(Array.isArray(r)&&r.length>0)&&(r.pop(),!0)}const n=i[t.children]
|
|
18
|
+
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(r)}function c(r,e,t=n){return function r(n){for(const i of n){if(i[t.id]===e){const r=i[t.children]
|
|
19
19
|
return!!(Array.isArray(r)&&r.length>0)&&(r.shift(),!0)}const n=i[t.children]
|
|
20
20
|
if(Array.isArray(n)&&n.length>0&&r(n))return!0}return!1}(r)}function s(r,e,t=n){for(const n of r){if(e(n))return!0
|
|
21
21
|
const r=n[t.children]
|
|
@@ -28,12 +28,12 @@ if(e)return e}}return null}(r)
|
|
|
28
28
|
if(!o)return null
|
|
29
29
|
const f=o[i.children]
|
|
30
30
|
if(!Array.isArray(f)||0===f.length)return null
|
|
31
|
-
const
|
|
32
|
-
return
|
|
33
|
-
if(f[t.id]===e)return
|
|
34
|
-
const
|
|
35
|
-
if(Array.isArray(
|
|
36
|
-
if(n)return n}}return null}(r)}function
|
|
31
|
+
const u=t>=0?t:f.length+t
|
|
32
|
+
return u>=0&&u<f.length?f[u]:null}function a(r,e,t=n){return function r(n,i=[]){for(let o=0;o<n.length;o++){const f=n[o],u=[...i,o]
|
|
33
|
+
if(f[t.id]===e)return u
|
|
34
|
+
const c=f[t.children]
|
|
35
|
+
if(Array.isArray(c)&&c.length>0){const n=r(c,u)
|
|
36
|
+
if(n)return n}}return null}(r)}function d(r,e,t=n){if(!Array.isArray(e)||0===e.length)return null
|
|
37
37
|
let i=r
|
|
38
38
|
for(let r=0;r<e.length;r++){const n=e[r]
|
|
39
39
|
if(!Array.isArray(i)||n<0||n>=i.length)return null
|
|
@@ -48,8 +48,8 @@ Array.isArray(n)&&n.length>0&&r(n,i+1)}}(r),t}function A(r,e,t=n){const i=new Se
|
|
|
48
48
|
return function r(n){const o=[]
|
|
49
49
|
for(const f of n){const n=f[e]
|
|
50
50
|
if(null!=n){if(i.has(n))continue
|
|
51
|
-
i.add(n)}const
|
|
52
|
-
Array.isArray(
|
|
51
|
+
i.add(n)}const u={...f},c=f[t.children]
|
|
52
|
+
Array.isArray(c)&&c.length>0&&(u[t.children]=r(c)),o.push(u)}return o}(r)}function T(r,e,t=n){return function r(n){for(let i=0;i<n.length;i++){const o=n[i]
|
|
53
53
|
if(o[t.id]===e)return n.splice(i,1),!0
|
|
54
54
|
const f=o[t.children]
|
|
55
55
|
if(Array.isArray(f)&&f.length>0&&r(f))return!0}return!1}(r)}function g(r,e,t=n){!function r(n){for(const i of n){e(i)
|
|
@@ -57,7 +57,13 @@ const n=i[t.children]
|
|
|
57
57
|
Array.isArray(n)&&n.length>0&&r(n)}}(r)}function p(r){return!Array.isArray(r)||0===r.length}function m(r,e,t=n){return function r(n,i=null){for(const o of n){if(o[t.id]===e)return i
|
|
58
58
|
const n=o[t.children]
|
|
59
59
|
if(Array.isArray(n)&&n.length>0){const e=r(n,o)
|
|
60
|
-
if(null!==e)return e}}return null}(r)}function
|
|
60
|
+
if(null!==e)return e}}return null}(r)}function v(r,e,t=n){for(const n of r){if(n[t.id]===e)return!0
|
|
61
61
|
const r=n[t.children]
|
|
62
|
-
if(Array.isArray(r)&&r.length>0&&
|
|
63
|
-
|
|
62
|
+
if(Array.isArray(r)&&r.length>0&&v(r,e,t))return!0}return!1}function x(r,e=n){if(!r||"object"!=typeof r||Array.isArray(r))return!1
|
|
63
|
+
const t=r[e.children]
|
|
64
|
+
if(void 0!==t){if(null===t)return!1
|
|
65
|
+
if(!Array.isArray(t))return!1
|
|
66
|
+
for(const r of t)if(!x(r,e))return!1}return!0}function b(r,e=n){if(!Array.isArray(r))return!1
|
|
67
|
+
for(const n of r)if(!x(n,e))return!1
|
|
68
|
+
return!0}const E={mapTree:e,filterTree:t,findTree:i,pushTree:o,unshiftTree:f,popTree:u,shiftTree:c,someTree:s,everyTree:l,atTree:h,indexOfTree:a,atIndexOfTree:d,nodeDepthMap:y,dedupTree:A,removeTree:T,forEachTree:g,isEmptyTree:p,getParentTree:m,includesTree:v,isTree:x,isForest:b}
|
|
69
|
+
r.atIndexOfTree=d,r.atTree=h,r.dedupTree=A,r.default=E,r.everyTree=l,r.filterTree=t,r.findTree=i,r.forEachTree=g,r.getParentTree=m,r.includesTree=v,r.indexOfTree=a,r.isEmptyTree=p,r.isForest=b,r.isTree=x,r.mapTree=e,r.nodeDepthMap=y,r.popTree=u,r.pushTree=o,r.removeTree=T,r.shiftTree=c,r.someTree=s,r.unshiftTree=f,Object.defineProperties(r,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tree-processor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "A lightweight TypeScript library for processing tree-structured data with comprehensive methods (map, filter, find, push, pop, remove, getParent, includes, etc.), supporting tree-shaking and custom field names",
|
|
5
5
|
"main": "dist/tree-processor.cjs.js",
|
|
6
6
|
"module": "dist/tree-processor.esm.js",
|