tree-processor 0.5.1 → 0.6.1
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 +10 -4
- package/dist/tree-processor.umd.js +19 -13
- package/package.json +2 -2
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、isSingleTree 和 isMultipleTrees。每个方法的最后一个参数可以自定义 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
|
+
### isSingleTree(判断数据是否是单个树结构)
|
|
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.isSingleTree(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.isSingleTree(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.isSingleTree(customTree, fieldNames)
|
|
321
|
+
console.log(isValidCustom) // true
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### isMultipleTrees(判断数据是否是多个树结构)
|
|
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.isMultipleTrees(forest)
|
|
346
|
+
console.log(isValid) // true
|
|
347
|
+
|
|
348
|
+
// 空数组也是有效的多个树结构
|
|
349
|
+
const emptyForest = []
|
|
350
|
+
const isEmptyValid = t.isMultipleTrees(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.isMultipleTrees(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.isMultipleTrees(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 isSingleTree(data: any, fieldNames?: FieldNames): boolean;
|
|
27
|
+
export declare function isMultipleTrees(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
|
+
isSingleTree: typeof isSingleTree;
|
|
49
|
+
isMultipleTrees: typeof isMultipleTrees;
|
|
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":"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
|
|
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.umd.js","children":[{"name":"src/index.ts","uid":"10314601-1"}]}],"isRoot":true},"nodeParts":{"10314601-1":{"renderedLength":12266,"gzipLength":1681,"brotliLength":1475,"metaUid":"10314601-0"}},"nodeMetas":{"10314601-0":{"id":"\\src\\index.ts","moduleParts":{"tree-processor.umd.js":"10314601-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 M={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,isSingleTree:m,isMultipleTrees:v}
|
|
70
|
+
exports.atIndexOfTree=a,exports.atTree=l,exports.dedupTree=y,exports.default=M,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.isMultipleTrees=v,exports.isSingleTree=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
|
|
@@ -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:l,atTree:s,indexOfTree:h,atIndexOfTree:a,nodeDepthMap:y,dedupTree:d,removeTree:A,forEachTree:g,isEmptyTree:T,getParentTree:p,includesTree:m,isSingleTree:v,isMultipleTrees:x}
|
|
68
|
+
export{a as atIndexOfTree,s as atTree,d as dedupTree,E as default,l 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 isMultipleTrees,v as isSingleTree,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 M={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,isSingleTree:x,isMultipleTrees:b}
|
|
69
|
+
r.atIndexOfTree=d,r.atTree=h,r.dedupTree=A,r.default=M,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.isMultipleTrees=b,r.isSingleTree=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.1",
|
|
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",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"every",
|
|
43
43
|
"at",
|
|
44
44
|
"indexOf",
|
|
45
|
-
"
|
|
45
|
+
"deduplicate",
|
|
46
46
|
"tree-processor"
|
|
47
47
|
],
|
|
48
48
|
"author": "",
|