@odinlin/utils 0.0.2 → 1.0.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 +16 -20
- package/dist/browser/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/browser/array/arrayCast.cjs +29 -0
- package/dist/browser/array/arrayCast.d.ts +27 -0
- package/dist/browser/array/arrayCast.d.ts.map +1 -0
- package/dist/browser/array/arrayCast.js +30 -0
- package/dist/browser/array/arrayCast.js.map +1 -0
- package/dist/browser/array/index.cjs +3 -0
- package/dist/browser/array/index.d.ts +2 -0
- package/dist/browser/array/index.js +3 -0
- package/dist/browser/browser.cjs +196 -0
- package/dist/browser/browser.d.ts +37 -0
- package/dist/browser/browser.js +30 -0
- package/dist/browser/constants/index.cjs +19 -0
- package/dist/browser/constants/index.d.ts +16 -0
- package/dist/browser/constants/index.d.ts.map +1 -0
- package/dist/browser/constants/index.js +17 -0
- package/dist/browser/constants/index.js.map +1 -0
- package/dist/browser/date/index.cjs +8 -0
- package/dist/browser/date/index.d.ts +3 -0
- package/dist/browser/date/index.js +4 -0
- package/dist/browser/date/prettyMs.cjs +9 -0
- package/dist/browser/date/prettyMs.d.ts +8 -0
- package/dist/browser/date/prettyMs.d.ts.map +1 -0
- package/dist/browser/date/prettyMs.js +8 -0
- package/dist/browser/date/prettyMs.js.map +1 -0
- package/dist/browser/date/timeAgo.cjs +14 -0
- package/dist/browser/date/timeAgo.d.ts +15 -0
- package/dist/browser/date/timeAgo.d.ts.map +1 -0
- package/dist/browser/date/timeAgo.js +11 -0
- package/dist/browser/date/timeAgo.js.map +1 -0
- package/dist/browser/file/browser.cjs +25 -0
- package/dist/browser/file/browser.d.ts +7 -0
- package/dist/browser/file/browser.js +7 -0
- package/dist/browser/file/fileBuffer.browser.cjs +115 -0
- package/dist/browser/file/fileBuffer.browser.d.ts +88 -0
- package/dist/browser/file/fileBuffer.browser.d.ts.map +1 -0
- package/dist/browser/file/fileBuffer.browser.js +115 -0
- package/dist/browser/file/fileBuffer.browser.js.map +1 -0
- package/dist/browser/file/fileBytes.cjs +9 -0
- package/dist/browser/file/fileBytes.d.ts +8 -0
- package/dist/browser/file/fileBytes.d.ts.map +1 -0
- package/dist/browser/file/fileBytes.js +8 -0
- package/dist/browser/file/fileBytes.js.map +1 -0
- package/dist/browser/file/fileType.browser.cjs +22 -0
- package/dist/browser/file/fileType.browser.d.ts +19 -0
- package/dist/browser/file/fileType.browser.d.ts.map +1 -0
- package/dist/browser/file/fileType.browser.js +15 -0
- package/dist/browser/file/fileType.browser.js.map +1 -0
- package/dist/browser/file/fileXml.browser.cjs +8 -0
- package/dist/browser/file/fileXml.browser.d.ts +12 -0
- package/dist/browser/file/fileXml.browser.d.ts.map +1 -0
- package/dist/browser/file/fileXml.browser.js +7 -0
- package/dist/browser/file/fileXml.browser.js.map +1 -0
- package/dist/browser/file/interface.d.ts +26 -0
- package/dist/browser/file/interface.d.ts.map +1 -0
- package/dist/browser/function/index.cjs +10 -0
- package/dist/browser/function/index.d.ts +8 -0
- package/dist/browser/function/index.d.ts.map +1 -0
- package/dist/browser/function/index.js +9 -0
- package/dist/browser/function/index.js.map +1 -0
- package/dist/browser/is/index.cjs +42 -0
- package/dist/browser/is/index.d.ts +7 -0
- package/dist/browser/is/index.js +8 -0
- package/dist/browser/is/isJSON.cjs +44 -0
- package/dist/browser/is/isJSON.d.ts +30 -0
- package/dist/browser/is/isJSON.d.ts.map +1 -0
- package/dist/browser/is/isJSON.js +41 -0
- package/dist/browser/is/isJSON.js.map +1 -0
- package/dist/browser/is/isPlatform.cjs +20 -0
- package/dist/browser/is/isPlatform.d.ts +16 -0
- package/dist/browser/is/isPlatform.d.ts.map +1 -0
- package/dist/browser/is/isPlatform.js +19 -0
- package/dist/browser/is/isPlatform.js.map +1 -0
- package/dist/browser/is/isPrimitive.cjs +91 -0
- package/dist/browser/is/isPrimitive.d.ts +79 -0
- package/dist/browser/is/isPrimitive.d.ts.map +1 -0
- package/dist/browser/is/isPrimitive.js +79 -0
- package/dist/browser/is/isPrimitive.js.map +1 -0
- package/dist/browser/is/isPrimitiveWithout.cjs +86 -0
- package/dist/browser/is/isPrimitiveWithout.d.ts +72 -0
- package/dist/browser/is/isPrimitiveWithout.d.ts.map +1 -0
- package/dist/browser/is/isPrimitiveWithout.js +74 -0
- package/dist/browser/is/isPrimitiveWithout.js.map +1 -0
- package/dist/browser/is/isTagOf.cjs +21 -0
- package/dist/browser/is/isTagOf.d.ts +12 -0
- package/dist/browser/is/isTagOf.d.ts.map +1 -0
- package/dist/browser/is/isTagOf.js +21 -0
- package/dist/browser/is/isTagOf.js.map +1 -0
- package/dist/browser/is/isTypeOf.cjs +29 -0
- package/dist/browser/is/isTypeOf.d.ts +16 -0
- package/dist/browser/is/isTypeOf.d.ts.map +1 -0
- package/dist/browser/is/isTypeOf.js +28 -0
- package/dist/browser/is/isTypeOf.js.map +1 -0
- package/dist/browser/object/index.cjs +3 -0
- package/dist/browser/object/index.d.ts +2 -0
- package/dist/browser/object/index.js +3 -0
- package/dist/browser/object/objectClone.cjs +22 -0
- package/dist/browser/object/objectClone.d.ts +8 -0
- package/dist/browser/object/objectClone.d.ts.map +1 -0
- package/dist/browser/object/objectClone.js +22 -0
- package/dist/browser/object/objectClone.js.map +1 -0
- package/dist/browser/promise/awaitTo.cjs +8 -0
- package/dist/browser/promise/awaitTo.d.ts +7 -0
- package/dist/browser/promise/awaitTo.d.ts.map +1 -0
- package/dist/browser/promise/awaitTo.js +8 -0
- package/dist/browser/promise/awaitTo.js.map +1 -0
- package/dist/browser/promise/index.cjs +6 -0
- package/dist/browser/promise/index.d.ts +3 -0
- package/dist/browser/promise/index.js +4 -0
- package/dist/browser/promise/pLimit.cjs +11 -0
- package/dist/browser/promise/pLimit.d.ts +10 -0
- package/dist/browser/promise/pLimit.d.ts.map +1 -0
- package/dist/browser/promise/pLimit.js +9 -0
- package/dist/browser/promise/pLimit.js.map +1 -0
- package/dist/browser/regexp/OTHERS.cjs +16 -0
- package/dist/browser/regexp/OTHERS.d.ts +14 -0
- package/dist/browser/regexp/OTHERS.d.ts.map +1 -0
- package/dist/browser/regexp/OTHERS.js +15 -0
- package/dist/browser/regexp/OTHERS.js.map +1 -0
- package/dist/browser/regexp/RULES.cjs +698 -0
- package/dist/browser/regexp/RULES.d.ts +434 -0
- package/dist/browser/regexp/RULES.d.ts.map +1 -0
- package/dist/browser/regexp/RULES.js +615 -0
- package/dist/browser/regexp/RULES.js.map +1 -0
- package/dist/browser/regexp/index.cjs +89 -0
- package/dist/browser/regexp/index.d.ts +13 -0
- package/dist/browser/regexp/index.d.ts.map +1 -0
- package/dist/browser/regexp/index.js +4 -0
- package/dist/browser/request/browser.cjs +8 -0
- package/dist/browser/request/browser.d.ts +4 -0
- package/dist/browser/request/browser.js +4 -0
- package/dist/browser/request/instance.cjs +135 -0
- package/dist/browser/request/instance.d.ts +45 -0
- package/dist/browser/request/instance.d.ts.map +1 -0
- package/dist/browser/request/instance.js +134 -0
- package/dist/browser/request/instance.js.map +1 -0
- package/dist/browser/request/interceptors.browser.cjs +66 -0
- package/dist/browser/request/interceptors.browser.d.ts +25 -0
- package/dist/browser/request/interceptors.browser.d.ts.map +1 -0
- package/dist/browser/request/interceptors.browser.js +63 -0
- package/dist/browser/request/interceptors.browser.js.map +1 -0
- package/dist/browser/request/interface.d.ts +54 -0
- package/dist/browser/request/interface.d.ts.map +1 -0
- package/dist/browser/string/className.cjs +13 -0
- package/dist/browser/string/className.d.ts +11 -0
- package/dist/browser/string/className.d.ts.map +1 -0
- package/dist/browser/string/className.js +10 -0
- package/dist/browser/string/className.js.map +1 -0
- package/dist/browser/string/index.cjs +7 -0
- package/dist/browser/string/index.d.ts +3 -0
- package/dist/browser/string/index.js +4 -0
- package/dist/browser/string/proto.cjs +37 -0
- package/dist/browser/string/proto.d.ts +19 -0
- package/dist/browser/string/proto.d.ts.map +1 -0
- package/dist/browser/string/proto.js +36 -0
- package/dist/browser/string/proto.js.map +1 -0
- package/dist/browser/tree/index.cjs +7 -0
- package/dist/browser/tree/index.d.ts +5 -0
- package/dist/browser/tree/index.js +5 -0
- package/dist/browser/tree/interface.d.ts +40 -0
- package/dist/browser/tree/interface.d.ts.map +1 -0
- package/dist/browser/tree/treeFilter.cjs +58 -0
- package/dist/browser/tree/treeFilter.d.ts +14 -0
- package/dist/browser/tree/treeFilter.d.ts.map +1 -0
- package/dist/browser/tree/treeFilter.js +59 -0
- package/dist/browser/tree/treeFilter.js.map +1 -0
- package/dist/browser/tree/treeFlatten.cjs +23 -0
- package/dist/browser/tree/treeFlatten.d.ts +15 -0
- package/dist/browser/tree/treeFlatten.d.ts.map +1 -0
- package/dist/browser/tree/treeFlatten.js +24 -0
- package/dist/browser/tree/treeFlatten.js.map +1 -0
- package/dist/browser/tree/treeGenerate.cjs +37 -0
- package/dist/browser/tree/treeGenerate.d.ts +16 -0
- package/dist/browser/tree/treeGenerate.d.ts.map +1 -0
- package/dist/browser/tree/treeGenerate.js +37 -0
- package/dist/browser/tree/treeGenerate.js.map +1 -0
- package/dist/noExternal/browser.esm.html +94 -0
- package/dist/noExternal/browser.esm.js +10734 -0
- package/dist/noExternal/browser.esm.min.js +16 -0
- package/dist/noExternal/browser.esm.min.js.map +1 -0
- package/dist/noExternal/browser.umd.html +28 -0
- package/dist/noExternal/browser.umd.js +10905 -0
- package/dist/noExternal/browser.umd.min.js +16 -0
- package/dist/noExternal/browser.umd.min.js.map +1 -0
- package/dist/noExternal/node.cjs.js +18282 -0
- package/dist/noExternal/node.cjs.min.js +0 -0
- package/dist/noExternal/node.cjs.min.js.map +1 -0
- package/dist/noExternal/node.esm.js +21727 -0
- package/dist/noExternal/node.esm.min.js +36 -0
- package/dist/noExternal/node.esm.min.js.map +1 -0
- package/dist/node/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/node/array/arrayCast.cjs +29 -0
- package/dist/node/array/arrayCast.d.ts +27 -0
- package/dist/node/array/arrayCast.d.ts.map +1 -0
- package/dist/node/array/arrayCast.js +30 -0
- package/dist/node/array/arrayCast.js.map +1 -0
- package/dist/node/array/index.cjs +3 -0
- package/dist/node/array/index.d.ts +2 -0
- package/dist/node/array/index.js +3 -0
- package/dist/node/constants/index.cjs +19 -0
- package/dist/node/constants/index.d.ts +16 -0
- package/dist/node/constants/index.d.ts.map +1 -0
- package/dist/node/constants/index.js +17 -0
- package/dist/node/constants/index.js.map +1 -0
- package/dist/node/date/index.cjs +8 -0
- package/dist/node/date/index.d.ts +3 -0
- package/dist/node/date/index.js +4 -0
- package/dist/node/date/prettyMs.cjs +9 -0
- package/dist/node/date/prettyMs.d.ts +8 -0
- package/dist/node/date/prettyMs.d.ts.map +1 -0
- package/dist/node/date/prettyMs.js +8 -0
- package/dist/node/date/prettyMs.js.map +1 -0
- package/dist/node/date/timeAgo.cjs +14 -0
- package/dist/node/date/timeAgo.d.ts +15 -0
- package/dist/node/date/timeAgo.d.ts.map +1 -0
- package/dist/node/date/timeAgo.js +11 -0
- package/dist/node/date/timeAgo.js.map +1 -0
- package/dist/node/file/fileBuffer.node.cjs +115 -0
- package/dist/node/file/fileBuffer.node.d.ts +88 -0
- package/dist/node/file/fileBuffer.node.d.ts.map +1 -0
- package/dist/node/file/fileBuffer.node.js +115 -0
- package/dist/node/file/fileBuffer.node.js.map +1 -0
- package/dist/node/file/fileBytes.cjs +9 -0
- package/dist/node/file/fileBytes.d.ts +8 -0
- package/dist/node/file/fileBytes.d.ts.map +1 -0
- package/dist/node/file/fileBytes.js +8 -0
- package/dist/node/file/fileBytes.js.map +1 -0
- package/dist/node/file/fileType.node.cjs +22 -0
- package/dist/node/file/fileType.node.d.ts +19 -0
- package/dist/node/file/fileType.node.d.ts.map +1 -0
- package/dist/node/file/fileType.node.js +15 -0
- package/dist/node/file/fileType.node.js.map +1 -0
- package/dist/node/file/fileXml.node.cjs +10 -0
- package/dist/node/file/fileXml.node.d.ts +8 -0
- package/dist/node/file/fileXml.node.d.ts.map +1 -0
- package/dist/node/file/fileXml.node.js +9 -0
- package/dist/node/file/fileXml.node.js.map +1 -0
- package/dist/node/file/interface.d.ts +26 -0
- package/dist/node/file/interface.d.ts.map +1 -0
- package/dist/node/file/node.cjs +25 -0
- package/dist/node/file/node.d.ts +7 -0
- package/dist/node/file/node.js +7 -0
- package/dist/node/function/index.cjs +10 -0
- package/dist/node/function/index.d.ts +8 -0
- package/dist/node/function/index.d.ts.map +1 -0
- package/dist/node/function/index.js +9 -0
- package/dist/node/function/index.js.map +1 -0
- package/dist/node/is/index.cjs +42 -0
- package/dist/node/is/index.d.ts +7 -0
- package/dist/node/is/index.js +8 -0
- package/dist/node/is/isJSON.cjs +44 -0
- package/dist/node/is/isJSON.d.ts +30 -0
- package/dist/node/is/isJSON.d.ts.map +1 -0
- package/dist/node/is/isJSON.js +41 -0
- package/dist/node/is/isJSON.js.map +1 -0
- package/dist/node/is/isPlatform.cjs +20 -0
- package/dist/node/is/isPlatform.d.ts +16 -0
- package/dist/node/is/isPlatform.d.ts.map +1 -0
- package/dist/node/is/isPlatform.js +19 -0
- package/dist/node/is/isPlatform.js.map +1 -0
- package/dist/node/is/isPrimitive.cjs +91 -0
- package/dist/node/is/isPrimitive.d.ts +79 -0
- package/dist/node/is/isPrimitive.d.ts.map +1 -0
- package/dist/node/is/isPrimitive.js +79 -0
- package/dist/node/is/isPrimitive.js.map +1 -0
- package/dist/node/is/isPrimitiveWithout.cjs +86 -0
- package/dist/node/is/isPrimitiveWithout.d.ts +72 -0
- package/dist/node/is/isPrimitiveWithout.d.ts.map +1 -0
- package/dist/node/is/isPrimitiveWithout.js +74 -0
- package/dist/node/is/isPrimitiveWithout.js.map +1 -0
- package/dist/node/is/isTagOf.cjs +21 -0
- package/dist/node/is/isTagOf.d.ts +12 -0
- package/dist/node/is/isTagOf.d.ts.map +1 -0
- package/dist/node/is/isTagOf.js +21 -0
- package/dist/node/is/isTagOf.js.map +1 -0
- package/dist/node/is/isTypeOf.cjs +29 -0
- package/dist/node/is/isTypeOf.d.ts +16 -0
- package/dist/node/is/isTypeOf.d.ts.map +1 -0
- package/dist/node/is/isTypeOf.js +28 -0
- package/dist/node/is/isTypeOf.js.map +1 -0
- package/dist/node/node.cjs +196 -0
- package/dist/node/node.d.ts +37 -0
- package/dist/node/node.js +30 -0
- package/dist/node/object/index.cjs +3 -0
- package/dist/node/object/index.d.ts +2 -0
- package/dist/node/object/index.js +3 -0
- package/dist/node/object/objectClone.cjs +22 -0
- package/dist/node/object/objectClone.d.ts +8 -0
- package/dist/node/object/objectClone.d.ts.map +1 -0
- package/dist/node/object/objectClone.js +22 -0
- package/dist/node/object/objectClone.js.map +1 -0
- package/dist/node/promise/awaitTo.cjs +8 -0
- package/dist/node/promise/awaitTo.d.ts +7 -0
- package/dist/node/promise/awaitTo.d.ts.map +1 -0
- package/dist/node/promise/awaitTo.js +8 -0
- package/dist/node/promise/awaitTo.js.map +1 -0
- package/dist/node/promise/index.cjs +6 -0
- package/dist/node/promise/index.d.ts +3 -0
- package/dist/node/promise/index.js +4 -0
- package/dist/node/promise/pLimit.cjs +11 -0
- package/dist/node/promise/pLimit.d.ts +10 -0
- package/dist/node/promise/pLimit.d.ts.map +1 -0
- package/dist/node/promise/pLimit.js +9 -0
- package/dist/node/promise/pLimit.js.map +1 -0
- package/dist/node/regexp/OTHERS.cjs +16 -0
- package/dist/node/regexp/OTHERS.d.ts +14 -0
- package/dist/node/regexp/OTHERS.d.ts.map +1 -0
- package/dist/node/regexp/OTHERS.js +15 -0
- package/dist/node/regexp/OTHERS.js.map +1 -0
- package/dist/node/regexp/RULES.cjs +698 -0
- package/dist/node/regexp/RULES.d.ts +434 -0
- package/dist/node/regexp/RULES.d.ts.map +1 -0
- package/dist/node/regexp/RULES.js +615 -0
- package/dist/node/regexp/RULES.js.map +1 -0
- package/dist/node/regexp/index.cjs +89 -0
- package/dist/node/regexp/index.d.ts +13 -0
- package/dist/node/regexp/index.d.ts.map +1 -0
- package/dist/node/regexp/index.js +4 -0
- package/dist/node/request/instance.cjs +135 -0
- package/dist/node/request/instance.d.ts +45 -0
- package/dist/node/request/instance.d.ts.map +1 -0
- package/dist/node/request/instance.js +134 -0
- package/dist/node/request/instance.js.map +1 -0
- package/dist/node/request/interceptors.node.cjs +66 -0
- package/dist/node/request/interceptors.node.d.ts +25 -0
- package/dist/node/request/interceptors.node.d.ts.map +1 -0
- package/dist/node/request/interceptors.node.js +63 -0
- package/dist/node/request/interceptors.node.js.map +1 -0
- package/dist/node/request/interface.d.ts +54 -0
- package/dist/node/request/interface.d.ts.map +1 -0
- package/dist/node/request/node.cjs +8 -0
- package/dist/node/request/node.d.ts +4 -0
- package/dist/node/request/node.js +4 -0
- package/dist/node/string/className.cjs +13 -0
- package/dist/node/string/className.d.ts +11 -0
- package/dist/node/string/className.d.ts.map +1 -0
- package/dist/node/string/className.js +10 -0
- package/dist/node/string/className.js.map +1 -0
- package/dist/node/string/index.cjs +7 -0
- package/dist/node/string/index.d.ts +3 -0
- package/dist/node/string/index.js +4 -0
- package/dist/node/string/proto.cjs +37 -0
- package/dist/node/string/proto.d.ts +19 -0
- package/dist/node/string/proto.d.ts.map +1 -0
- package/dist/node/string/proto.js +36 -0
- package/dist/node/string/proto.js.map +1 -0
- package/dist/node/tree/index.cjs +7 -0
- package/dist/node/tree/index.d.ts +5 -0
- package/dist/node/tree/index.js +5 -0
- package/dist/node/tree/interface.d.ts +40 -0
- package/dist/node/tree/interface.d.ts.map +1 -0
- package/dist/node/tree/treeFilter.cjs +58 -0
- package/dist/node/tree/treeFilter.d.ts +14 -0
- package/dist/node/tree/treeFilter.d.ts.map +1 -0
- package/dist/node/tree/treeFilter.js +59 -0
- package/dist/node/tree/treeFilter.js.map +1 -0
- package/dist/node/tree/treeFlatten.cjs +23 -0
- package/dist/node/tree/treeFlatten.d.ts +15 -0
- package/dist/node/tree/treeFlatten.d.ts.map +1 -0
- package/dist/node/tree/treeFlatten.js +24 -0
- package/dist/node/tree/treeFlatten.js.map +1 -0
- package/dist/node/tree/treeGenerate.cjs +37 -0
- package/dist/node/tree/treeGenerate.d.ts +16 -0
- package/dist/node/tree/treeGenerate.d.ts.map +1 -0
- package/dist/node/tree/treeGenerate.js +37 -0
- package/dist/node/tree/treeGenerate.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +10 -0
- package/dist/version.js.map +1 -0
- package/package.json +95 -53
- package/LICENSE +0 -21
- package/dist/index.cjs +0 -403
- package/dist/index.d.ts +0 -496
- package/dist/index.mjs +0 -307
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/tree/treeGenerate.ts
|
|
3
|
+
/**
|
|
4
|
+
* @title 借助对象的引用将平铺结构转化为树形结构
|
|
5
|
+
* @param {any[]} items 平铺结构数组
|
|
6
|
+
* @param {Omit<TreeOptions, 'filter'>} options 配置项
|
|
7
|
+
* @returns 树形结构数组
|
|
8
|
+
*
|
|
9
|
+
* @reference https://juejin.cn/post/6983904373508145189#heading-8
|
|
10
|
+
*/
|
|
11
|
+
function treeGenerate(items, options) {
|
|
12
|
+
const { parentIdKey = "pid", primaryIdKey = "id", childrenKey = "children", rootValue = null } = options || {};
|
|
13
|
+
const aTree = [];
|
|
14
|
+
const oItem = {};
|
|
15
|
+
for (const item of items) {
|
|
16
|
+
const primaryId = item[primaryIdKey];
|
|
17
|
+
const parentId = item[parentIdKey];
|
|
18
|
+
if (!oItem[primaryId]) oItem[primaryId] = {
|
|
19
|
+
...item,
|
|
20
|
+
[childrenKey]: []
|
|
21
|
+
};
|
|
22
|
+
else oItem[primaryId] = {
|
|
23
|
+
...item,
|
|
24
|
+
[childrenKey]: oItem[primaryId][childrenKey]
|
|
25
|
+
};
|
|
26
|
+
const treeItem = oItem[primaryId];
|
|
27
|
+
if (parentId === rootValue) aTree.push(treeItem);
|
|
28
|
+
else {
|
|
29
|
+
if (!oItem[parentId]) oItem[parentId] = { [childrenKey]: [] };
|
|
30
|
+
oItem[parentId][childrenKey].push(treeItem);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return aTree;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
exports.treeGenerate = treeGenerate;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TreeOptions } from "./interface.js";
|
|
2
|
+
|
|
3
|
+
//#region src/tree/treeGenerate.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @title 借助对象的引用将平铺结构转化为树形结构
|
|
7
|
+
* @param {any[]} items 平铺结构数组
|
|
8
|
+
* @param {Omit<TreeOptions, 'filter'>} options 配置项
|
|
9
|
+
* @returns 树形结构数组
|
|
10
|
+
*
|
|
11
|
+
* @reference https://juejin.cn/post/6983904373508145189#heading-8
|
|
12
|
+
*/
|
|
13
|
+
declare function treeGenerate(items: any[], options?: Omit<TreeOptions, 'filter'>): any[];
|
|
14
|
+
//#endregion
|
|
15
|
+
export { treeGenerate };
|
|
16
|
+
//# sourceMappingURL=treeGenerate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeGenerate.d.ts","names":[],"sources":["../../../src/tree/treeGenerate.ts"],"sourcesContent":[],"mappings":";;;;;;AAUA;;;;;;iBAAgB,YAAA,yBAAqC,KAAK"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/tree/treeGenerate.ts
|
|
2
|
+
/**
|
|
3
|
+
* @title 借助对象的引用将平铺结构转化为树形结构
|
|
4
|
+
* @param {any[]} items 平铺结构数组
|
|
5
|
+
* @param {Omit<TreeOptions, 'filter'>} options 配置项
|
|
6
|
+
* @returns 树形结构数组
|
|
7
|
+
*
|
|
8
|
+
* @reference https://juejin.cn/post/6983904373508145189#heading-8
|
|
9
|
+
*/
|
|
10
|
+
function treeGenerate(items, options) {
|
|
11
|
+
const { parentIdKey = "pid", primaryIdKey = "id", childrenKey = "children", rootValue = null } = options || {};
|
|
12
|
+
const aTree = [];
|
|
13
|
+
const oItem = {};
|
|
14
|
+
for (const item of items) {
|
|
15
|
+
const primaryId = item[primaryIdKey];
|
|
16
|
+
const parentId = item[parentIdKey];
|
|
17
|
+
if (!oItem[primaryId]) oItem[primaryId] = {
|
|
18
|
+
...item,
|
|
19
|
+
[childrenKey]: []
|
|
20
|
+
};
|
|
21
|
+
else oItem[primaryId] = {
|
|
22
|
+
...item,
|
|
23
|
+
[childrenKey]: oItem[primaryId][childrenKey]
|
|
24
|
+
};
|
|
25
|
+
const treeItem = oItem[primaryId];
|
|
26
|
+
if (parentId === rootValue) aTree.push(treeItem);
|
|
27
|
+
else {
|
|
28
|
+
if (!oItem[parentId]) oItem[parentId] = { [childrenKey]: [] };
|
|
29
|
+
oItem[parentId][childrenKey].push(treeItem);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return aTree;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { treeGenerate };
|
|
37
|
+
//# sourceMappingURL=treeGenerate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeGenerate.js","names":["aTree: any[]","oItem: Record<PropertyKey, any>"],"sources":["../../../src/tree/treeGenerate.ts"],"sourcesContent":["import type { TreeOptions } from './interface'\n\n/**\n * @title 借助对象的引用将平铺结构转化为树形结构\n * @param {any[]} items 平铺结构数组\n * @param {Omit<TreeOptions, 'filter'>} options 配置项\n * @returns 树形结构数组\n *\n * @reference https://juejin.cn/post/6983904373508145189#heading-8\n */\nexport function treeGenerate(items: any[], options?: Omit<TreeOptions, 'filter'>): any[] {\n const { parentIdKey = 'pid', primaryIdKey = 'id', childrenKey = 'children', rootValue = null } = options || {}\n\n // 树形结构最终结果\n const aTree: any[] = []\n // 原始数据项的主键映射\n const oItem: Record<PropertyKey, any> = {}\n\n for (const item of items) {\n const primaryId = item[primaryIdKey] as PropertyKey\n const parentId = item[parentIdKey] as PropertyKey\n\n // 更新映射\n if (!oItem[primaryId]) {\n oItem[primaryId] = { ...item, [childrenKey]: [] }\n }\n else {\n oItem[primaryId] = { ...item, [childrenKey]: oItem[primaryId][childrenKey] }\n }\n\n const treeItem = oItem[primaryId]\n // 根节点直接添加到树形结构最终结果,非根节点则添加到父节点的 children 数组中(注意此时父节点可能未加入 oItem 映射)\n if (parentId === rootValue) {\n aTree.push(treeItem)\n }\n else {\n if (!oItem[parentId]) {\n oItem[parentId] = { [childrenKey]: [] }\n }\n oItem[parentId][childrenKey].push(treeItem)\n }\n }\n\n return aTree\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgB,aAAa,OAAc,SAA8C;CACvF,MAAM,EAAE,cAAc,OAAO,eAAe,MAAM,cAAc,YAAY,YAAY,SAAS,WAAW,EAAE;CAG9G,MAAMA,QAAe,EAAE;CAEvB,MAAMC,QAAkC,EAAE;AAE1C,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,YAAY,KAAK;EACvB,MAAM,WAAW,KAAK;AAGtB,MAAI,CAAC,MAAM,WACT,OAAM,aAAa;GAAE,GAAG;IAAO,cAAc,EAAE;GAAE;MAGjD,OAAM,aAAa;GAAE,GAAG;IAAO,cAAc,MAAM,WAAW;GAAc;EAG9E,MAAM,WAAW,MAAM;AAEvB,MAAI,aAAa,UACf,OAAM,KAAK,SAAS;OAEjB;AACH,OAAI,CAAC,MAAM,UACT,OAAM,YAAY,GAAG,cAAc,EAAE,EAAE;AAEzC,SAAM,UAAU,aAAa,KAAK,SAAS;;;AAI/C,QAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","names":[],"sources":["../src/version.ts"],"sourcesContent":[],"mappings":";cAEa"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","names":["packageJson.version"],"sources":["../package.json","../src/version.ts"],"sourcesContent":["{\n \"$schema\": \"https://json.schemastore.org/package\",\n \"name\": \"@odinlin/utils\",\n \"type\": \"module\",\n \"version\": \"1.0.0\",\n \"description\": \"utils\",\n \"author\": \"odinlin <topazur@163.com>\",\n \"license\": \"MIT\",\n \"keywords\": [\n \"array\",\n \"constants\",\n \"date\",\n \"file\",\n \"is\",\n \"object\",\n \"promise\",\n \"regexp\",\n \"request\",\n \"string\",\n \"tree\"\n ],\n \"sideEffects\": false,\n \"exports\": {\n \".\": {\n \"browser\": {\n \"types\": \"./dist/browser/browser.d.ts\",\n \"import\": \"./dist/browser/browser.js\",\n \"require\": \"./dist/browser/browser.cjs\",\n \"default\": \"./dist/browser/browser.js\"\n },\n \"node\": {\n \"types\": \"./dist/node/node.d.ts\",\n \"import\": \"./dist/node/node.js\",\n \"require\": \"./dist/node/node.cjs\",\n \"default\": \"./dist/node/node.js\"\n },\n \"default\": {\n \"types\": \"./dist/node/node.d.ts\",\n \"require\": \"./dist/node/node.cjs\",\n \"default\": \"./dist/node/node.js\"\n }\n },\n \"./internal/*\": {\n \"browser\": {\n \"types\": \"./dist/browser/*.d.ts\",\n \"import\": \"./dist/browser/*.js\",\n \"require\": \"./dist/browser/*.cjs\",\n \"default\": \"./dist/browser/*.js\"\n },\n \"node\": {\n \"types\": \"./dist/node/*.d.ts\",\n \"import\": \"./dist/node/*.js\",\n \"require\": \"./dist/node/*.cjs\",\n \"default\": \"./dist/node/*.js\"\n },\n \"default\": {\n \"types\": \"./dist/node/*.d.ts\",\n \"require\": \"./dist/node/*.cjs\",\n \"default\": \"./dist/node/*.js\"\n }\n },\n \"./version.js\": \"./dist/version.js\",\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/node/node.cjs\",\n \"module\": \"./dist/node/node.js\",\n \"unpkg\": \"dist/noExternal/browser.umd.js\",\n \"jsdelivr\": \"dist/noExternal/browser.umd.js\",\n \"types\": \"./dist/node/node.d.ts\",\n \"files\": [\n \"README.md\",\n \"dist\",\n \"package.json\"\n ],\n \"scripts\": {\n \"postinstall\": \"playwright install chromium\",\n \"prepublishOnly\": \"npm run build\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest\",\n \"dev\": \"tsdown --watch\",\n \"build\": \"tsdown\",\n \"bumpp\": \"bumpp --commit 'chore(package/utils): release v%s' --no-tag --no-push\",\n \"publish\": \"npm publish --registry=https://registry.npmjs.org/ --access public\",\n \"release\": \"npm run bumpp && npm run publish\",\n \"anyRule\": \"node ./__scripts__/anyRule.cjs\"\n },\n \"dependencies\": {\n \"await-to-js\": \"^3.0.0\",\n \"axios\": \"^1.13.1\",\n \"buffer-npm\": \"npm:buffer@6\",\n \"classnames\": \"^2.5.1\",\n \"clsx\": \"^2.1.1\",\n \"es-toolkit\": \"^1.41.0\",\n \"file-type\": \"^21.1.1\",\n \"p-limit\": \"^7.2.0\",\n \"pretty-bytes\": \"^7.1.0\",\n \"pretty-ms\": \"^9.3.0\",\n \"throttle-debounce\": \"^5.0.2\",\n \"timeago.js\": \"^4.0.2\",\n \"xmldom\": \"^0.6.0\"\n },\n \"devDependencies\": {\n \"@types/throttle-debounce\": \"^5.0.2\",\n \"@types/xmldom\": \"^0.1.34\",\n \"@vitest/browser\": \"^4.0.14\",\n \"@vitest/browser-playwright\": \"^4.0.14\",\n \"@vitest/coverage-v8\": \"^4.0.14\",\n \"bumpp\": \"^10.3.2\",\n \"fast-glob\": \"^3.3.3\",\n \"memfs\": \"^4.51.0\",\n \"msw\": \"^2.11.6\",\n \"playwright\": \"^1.56.1\",\n \"tsdown\": \"^0.16.7\",\n \"typescript\": \"catalog:typescript\",\n \"vitest\": \"^4.0.14\"\n }\n}\n","import packageJson from '../package.json'\n\nexport const version = packageJson.version\n"],"mappings":";gBAIa;;;;ACFb,MAAa,UAAUA"}
|
package/package.json
CHANGED
|
@@ -1,75 +1,117 @@
|
|
|
1
1
|
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/package",
|
|
2
3
|
"name": "@odinlin/utils",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
4
|
+
"type": "module",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"description": "utils",
|
|
5
7
|
"author": "odinlin <topazur@163.com>",
|
|
6
8
|
"license": "MIT",
|
|
7
|
-
"homepage": "https://github.com/topazur/utils#readme",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/topazur/utils.git"
|
|
11
|
-
},
|
|
12
|
-
"bugs": {
|
|
13
|
-
"url": "https://github.com/topazur/utils/issues"
|
|
14
|
-
},
|
|
15
9
|
"keywords": [
|
|
16
|
-
"
|
|
10
|
+
"array",
|
|
11
|
+
"constants",
|
|
12
|
+
"date",
|
|
13
|
+
"file",
|
|
14
|
+
"is",
|
|
15
|
+
"object",
|
|
16
|
+
"promise",
|
|
17
|
+
"regexp",
|
|
18
|
+
"request",
|
|
19
|
+
"string",
|
|
20
|
+
"tree"
|
|
17
21
|
],
|
|
18
22
|
"sideEffects": false,
|
|
19
23
|
"exports": {
|
|
20
24
|
".": {
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
"browser": {
|
|
26
|
+
"types": "./dist/browser/browser.d.ts",
|
|
27
|
+
"import": "./dist/browser/browser.js",
|
|
28
|
+
"require": "./dist/browser/browser.cjs",
|
|
29
|
+
"default": "./dist/browser/browser.js"
|
|
30
|
+
},
|
|
31
|
+
"node": {
|
|
32
|
+
"types": "./dist/node/node.d.ts",
|
|
33
|
+
"import": "./dist/node/node.js",
|
|
34
|
+
"require": "./dist/node/node.cjs",
|
|
35
|
+
"default": "./dist/node/node.js"
|
|
36
|
+
},
|
|
37
|
+
"default": {
|
|
38
|
+
"types": "./dist/node/node.d.ts",
|
|
39
|
+
"require": "./dist/node/node.cjs",
|
|
40
|
+
"default": "./dist/node/node.js"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"./internal/*": {
|
|
44
|
+
"browser": {
|
|
45
|
+
"types": "./dist/browser/*.d.ts",
|
|
46
|
+
"import": "./dist/browser/*.js",
|
|
47
|
+
"require": "./dist/browser/*.cjs",
|
|
48
|
+
"default": "./dist/browser/*.js"
|
|
49
|
+
},
|
|
50
|
+
"node": {
|
|
51
|
+
"types": "./dist/node/*.d.ts",
|
|
52
|
+
"import": "./dist/node/*.js",
|
|
53
|
+
"require": "./dist/node/*.cjs",
|
|
54
|
+
"default": "./dist/node/*.js"
|
|
55
|
+
},
|
|
56
|
+
"default": {
|
|
57
|
+
"types": "./dist/node/*.d.ts",
|
|
58
|
+
"require": "./dist/node/*.cjs",
|
|
59
|
+
"default": "./dist/node/*.js"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"./version.js": "./dist/version.js",
|
|
63
|
+
"./package.json": "./package.json"
|
|
25
64
|
},
|
|
26
|
-
"main": "dist/
|
|
27
|
-
"module": "dist/
|
|
28
|
-
"
|
|
65
|
+
"main": "./dist/node/node.cjs",
|
|
66
|
+
"module": "./dist/node/node.js",
|
|
67
|
+
"unpkg": "dist/noExternal/browser.umd.js",
|
|
68
|
+
"jsdelivr": "dist/noExternal/browser.umd.js",
|
|
69
|
+
"types": "./dist/node/node.d.ts",
|
|
29
70
|
"files": [
|
|
71
|
+
"README.md",
|
|
30
72
|
"dist",
|
|
31
|
-
"
|
|
73
|
+
"package.json"
|
|
32
74
|
],
|
|
33
75
|
"scripts": {
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"build": "rollup -c",
|
|
37
|
-
"dev": "nr build --watch",
|
|
38
|
-
"build:pkgroll": "pkgroll --minify",
|
|
39
|
-
"dev:pkgroll": "pkgroll --watch",
|
|
40
|
-
"release": "bumpp --commit --push --tag && npm publish",
|
|
76
|
+
"postinstall": "playwright install chromium",
|
|
77
|
+
"prepublishOnly": "npm run build",
|
|
41
78
|
"typecheck": "tsc --noEmit",
|
|
42
79
|
"test": "vitest",
|
|
43
|
-
"
|
|
80
|
+
"dev": "tsdown --watch",
|
|
81
|
+
"build": "tsdown",
|
|
82
|
+
"bumpp": "bumpp --commit 'chore(package/utils): release v%s' --no-tag --no-push",
|
|
83
|
+
"publish": "npm publish --registry=https://registry.npmjs.org/ --access public",
|
|
84
|
+
"release": "npm run bumpp && npm run publish",
|
|
85
|
+
"anyRule": "node ./__scripts__/anyRule.cjs"
|
|
44
86
|
},
|
|
45
87
|
"dependencies": {
|
|
46
|
-
"
|
|
88
|
+
"await-to-js": "^3.0.0",
|
|
89
|
+
"axios": "^1.13.1",
|
|
90
|
+
"buffer-npm": "npm:buffer@6",
|
|
91
|
+
"classnames": "^2.5.1",
|
|
92
|
+
"clsx": "^2.1.1",
|
|
93
|
+
"es-toolkit": "^1.41.0",
|
|
94
|
+
"file-type": "^21.1.1",
|
|
95
|
+
"p-limit": "^7.2.0",
|
|
96
|
+
"pretty-bytes": "^7.1.0",
|
|
97
|
+
"pretty-ms": "^9.3.0",
|
|
98
|
+
"throttle-debounce": "^5.0.2",
|
|
99
|
+
"timeago.js": "^4.0.2",
|
|
100
|
+
"xmldom": "^0.6.0"
|
|
47
101
|
},
|
|
48
102
|
"devDependencies": {
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"rollup-plugin-esbuild": "^4.10.1",
|
|
63
|
-
"typescript": "^4.8.3",
|
|
64
|
-
"vitest": "^0.23.4"
|
|
65
|
-
},
|
|
66
|
-
"eslintIgnore": [
|
|
67
|
-
"dist",
|
|
68
|
-
"node_modules",
|
|
69
|
-
"*.d.ts"
|
|
70
|
-
],
|
|
71
|
-
"publishConfig": {
|
|
72
|
-
"access": "public",
|
|
73
|
-
"registry": "https://registry.npmjs.org/"
|
|
103
|
+
"@types/throttle-debounce": "^5.0.2",
|
|
104
|
+
"@types/xmldom": "^0.1.34",
|
|
105
|
+
"@vitest/browser": "^4.0.14",
|
|
106
|
+
"@vitest/browser-playwright": "^4.0.14",
|
|
107
|
+
"@vitest/coverage-v8": "^4.0.14",
|
|
108
|
+
"bumpp": "^10.3.2",
|
|
109
|
+
"fast-glob": "^3.3.3",
|
|
110
|
+
"memfs": "^4.51.0",
|
|
111
|
+
"msw": "^2.11.6",
|
|
112
|
+
"playwright": "^1.56.1",
|
|
113
|
+
"tsdown": "^0.16.7",
|
|
114
|
+
"typescript": "catalog:typescript",
|
|
115
|
+
"vitest": "^4.0.14"
|
|
74
116
|
}
|
|
75
117
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022 odinlin
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|