zcw-shared 1.20.0 → 1.21.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.
Files changed (114) hide show
  1. package/dist/functions/array-object/deepClone.d.ts +12 -0
  2. package/dist/functions/array-object/deepClone.js +131 -0
  3. package/dist/functions/array-object/deepClone.js.map +1 -0
  4. package/dist/functions/array-object/flatten.d.ts +7 -0
  5. package/dist/functions/array-object/flatten.js +60 -0
  6. package/dist/functions/array-object/flatten.js.map +1 -0
  7. package/dist/functions/array-object/unique.d.ts +10 -0
  8. package/dist/functions/array-object/unique.js +85 -0
  9. package/dist/functions/array-object/unique.js.map +1 -0
  10. package/dist/functions/data-structures/Heap.d.ts +11 -0
  11. package/dist/functions/data-structures/Heap.js +91 -0
  12. package/dist/functions/data-structures/Heap.js.map +1 -0
  13. package/dist/functions/data-structures/LinkedList.d.ts +18 -0
  14. package/dist/functions/data-structures/LinkedList.js +135 -0
  15. package/dist/functions/data-structures/LinkedList.js.map +1 -0
  16. package/dist/functions/data-structures/PriorityQueue.d.ts +14 -0
  17. package/dist/functions/data-structures/PriorityQueue.js +77 -0
  18. package/dist/functions/data-structures/PriorityQueue.js.map +1 -0
  19. package/dist/functions/data-structures/Queue.d.ts +10 -0
  20. package/dist/functions/data-structures/Queue.js +27 -0
  21. package/dist/functions/data-structures/Queue.js.map +1 -0
  22. package/dist/functions/data-structures/Stack.d.ts +10 -0
  23. package/dist/functions/data-structures/Stack.js +27 -0
  24. package/dist/functions/data-structures/Stack.js.map +1 -0
  25. package/dist/functions/design-tokens/buildTokens.d.ts +76 -0
  26. package/dist/functions/design-tokens/buildTokens.js +183 -0
  27. package/dist/functions/design-tokens/buildTokens.js.map +1 -0
  28. package/dist/functions/design-tokens/generateVariables.d.ts +7 -0
  29. package/dist/functions/design-tokens/generateVariables.js +135 -0
  30. package/dist/functions/design-tokens/generateVariables.js.map +1 -0
  31. package/dist/functions/design-tokens/mixColors.d.ts +1 -0
  32. package/dist/functions/design-tokens/mixColors.js +38 -0
  33. package/dist/functions/design-tokens/mixColors.js.map +1 -0
  34. package/dist/functions/design-tokens/parseDesignTokens.d.ts +10 -0
  35. package/dist/functions/design-tokens/parseDesignTokens.js +216 -0
  36. package/dist/functions/design-tokens/parseDesignTokens.js.map +1 -0
  37. package/dist/functions/functional/compose.d.ts +1 -0
  38. package/dist/functions/functional/compose.js +10 -0
  39. package/dist/functions/functional/compose.js.map +1 -0
  40. package/dist/functions/functional/curry.d.ts +1 -0
  41. package/dist/functions/functional/curry.js +13 -0
  42. package/dist/functions/functional/curry.js.map +1 -0
  43. package/dist/functions/functional/pipe.d.ts +1 -0
  44. package/dist/functions/functional/pipe.js +10 -0
  45. package/dist/functions/functional/pipe.js.map +1 -0
  46. package/dist/functions/performance/debounce.d.ts +5 -0
  47. package/dist/functions/performance/debounce.js +12 -0
  48. package/dist/functions/performance/debounce.js.map +1 -0
  49. package/dist/functions/performance/memoize.d.ts +1 -0
  50. package/dist/functions/performance/memoize.js +13 -0
  51. package/dist/functions/performance/memoize.js.map +1 -0
  52. package/dist/functions/performance/throttle.d.ts +1 -0
  53. package/dist/functions/performance/throttle.js +11 -0
  54. package/dist/functions/performance/throttle.js.map +1 -0
  55. package/dist/functions/platform/tencent-cloud/deploy.tcb.d.ts +13 -0
  56. package/dist/functions/platform/tencent-cloud/deploy.tcb.js +46 -0
  57. package/dist/functions/platform/tencent-cloud/deploy.tcb.js.map +1 -0
  58. package/dist/functions/platform/tencent-cloud/getSecret.d.ts +4 -0
  59. package/dist/functions/platform/tencent-cloud/getSecret.js +19 -0
  60. package/dist/functions/platform/tencent-cloud/getSecret.js.map +1 -0
  61. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.d.ts +27 -0
  62. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js +287 -0
  63. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js.map +1 -0
  64. package/dist/functions/platform/uniapp/build.d.ts +21 -0
  65. package/dist/functions/platform/uniapp/build.js +83 -0
  66. package/dist/functions/platform/uniapp/build.js.map +1 -0
  67. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.d.ts +11 -0
  68. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js +30 -0
  69. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js.map +1 -0
  70. package/dist/functions/platform/uniapp/detectProjectType.d.ts +20 -0
  71. package/dist/functions/platform/uniapp/detectProjectType.js +68 -0
  72. package/dist/functions/platform/uniapp/detectProjectType.js.map +1 -0
  73. package/dist/functions/platform/uniapp/parseManifest.d.ts +18 -0
  74. package/dist/functions/platform/uniapp/parseManifest.js +49 -0
  75. package/dist/functions/platform/uniapp/parseManifest.js.map +1 -0
  76. package/dist/functions/platform/uniapp/waitForPages.d.ts +7 -0
  77. package/dist/functions/platform/uniapp/waitForPages.js +20 -0
  78. package/dist/functions/platform/uniapp/waitForPages.js.map +1 -0
  79. package/dist/functions/principles/functionBind.d.ts +4 -0
  80. package/dist/functions/principles/functionBind.js +33 -0
  81. package/dist/functions/principles/functionBind.js.map +1 -0
  82. package/dist/functions/principles/myInstanceof.d.ts +5 -0
  83. package/dist/functions/principles/myInstanceof.js +56 -0
  84. package/dist/functions/principles/myInstanceof.js.map +1 -0
  85. package/dist/functions/principles/myNew.d.ts +3 -0
  86. package/dist/functions/principles/myNew.js +19 -0
  87. package/dist/functions/principles/myNew.js.map +1 -0
  88. package/dist/functions/utils/createI18n.d.ts +2 -0
  89. package/dist/functions/utils/createI18n.js +97 -0
  90. package/dist/functions/utils/createI18n.js.map +1 -0
  91. package/dist/functions/utils/createReactive.d.ts +10 -0
  92. package/dist/functions/utils/createReactive.js +50 -0
  93. package/dist/functions/utils/createReactive.js.map +1 -0
  94. package/dist/functions/utils/diff.d.ts +25 -0
  95. package/dist/functions/utils/diff.js +316 -0
  96. package/dist/functions/utils/diff.js.map +1 -0
  97. package/dist/functions/utils/formatString.d.ts +5 -0
  98. package/dist/functions/utils/formatString.js +9 -0
  99. package/dist/functions/utils/formatString.js.map +1 -0
  100. package/dist/functions/utils/i18n.d.ts +27 -0
  101. package/dist/functions/utils/i18n.js +119 -0
  102. package/dist/functions/utils/i18n.js.map +1 -0
  103. package/dist/functions/utils/permission.d.ts +40 -0
  104. package/dist/functions/utils/permission.js +189 -0
  105. package/dist/functions/utils/permission.js.map +1 -0
  106. package/dist/functions/utils/pinia.d.ts +52 -0
  107. package/dist/functions/utils/pinia.js +183 -0
  108. package/dist/functions/utils/pinia.js.map +1 -0
  109. package/dist/hooks/usePermission.d.ts +7 -0
  110. package/dist/hooks/usePermission.js +123 -0
  111. package/dist/hooks/usePermission.js.map +1 -0
  112. package/package.json +12 -2
  113. package/references/xlsx.d.ts +51 -0
  114. package/types/reactive.d.ts +67 -0
@@ -0,0 +1,12 @@
1
+ export interface DeepCloneOptions {
2
+ includeNonEnumerable?: boolean;
3
+ includeSymbol?: boolean;
4
+ includePrototype?: boolean;
5
+ customClone?: (value: any, defaultClone: (v: any) => any) => any;
6
+ }
7
+ export declare function deepClone<T>(value: T, options?: DeepCloneOptions): T;
8
+ export declare function deepCloneJSON<T>(value: T): T;
9
+ export interface DeepCloneStructuredDeps {
10
+ structuredClone?: <T>(value: T) => T;
11
+ }
12
+ export declare function deepCloneStructured<T>(value: T, deps: DeepCloneStructuredDeps): T;
@@ -0,0 +1,131 @@
1
+ export function deepClone(value, options = {}) {
2
+ const cache = new WeakMap();
3
+ function clone(val) {
4
+ if (val === null || typeof val !== 'object') {
5
+ return val;
6
+ }
7
+ if (cache.has(val)) {
8
+ return cache.get(val);
9
+ }
10
+ if (options.customClone) {
11
+ const customResult = options.customClone(val, clone);
12
+ if (customResult !== undefined) {
13
+ return customResult;
14
+ }
15
+ }
16
+ const type = Object.prototype.toString.call(val);
17
+ if (type === '[object Date]') {
18
+ return new Date(val.getTime());
19
+ }
20
+ if (type === '[object RegExp]') {
21
+ const pattern = val.source;
22
+ const flags = val.flags;
23
+ return new RegExp(pattern, flags);
24
+ }
25
+ if (val instanceof Error) {
26
+ const errorCopy = new val.constructor(val.message);
27
+ errorCopy.stack = val.stack;
28
+ errorCopy.name = val.name;
29
+ return errorCopy;
30
+ }
31
+ if (type === '[object Map]') {
32
+ const mapCopy = new Map();
33
+ cache.set(val, mapCopy);
34
+ val.forEach((value, key) => {
35
+ mapCopy.set(clone(key), clone(value));
36
+ });
37
+ return mapCopy;
38
+ }
39
+ if (type === '[object Set]') {
40
+ const setCopy = new Set();
41
+ cache.set(val, setCopy);
42
+ val.forEach(value => {
43
+ setCopy.add(clone(value));
44
+ });
45
+ return setCopy;
46
+ }
47
+ if (type === '[object WeakMap]') {
48
+ return new WeakMap();
49
+ }
50
+ if (type === '[object WeakSet]') {
51
+ return new WeakSet();
52
+ }
53
+ if (type === '[object ArrayBuffer]') {
54
+ const buffer = val;
55
+ const copy = new ArrayBuffer(buffer.byteLength);
56
+ new Uint8Array(copy).set(new Uint8Array(buffer));
57
+ return copy;
58
+ }
59
+ if (ArrayBuffer.isView(val) && !(val instanceof DataView)) {
60
+ const typedArray = val;
61
+ const TypedArrayConstructor = typedArray.constructor;
62
+ const copy = new TypedArrayConstructor(typedArray.length);
63
+ copy.set(typedArray);
64
+ return copy;
65
+ }
66
+ if (type === '[object DataView]') {
67
+ const dataView = val;
68
+ const bufferCopy = clone(dataView.buffer);
69
+ return new DataView(bufferCopy, dataView.byteOffset, dataView.byteLength);
70
+ }
71
+ if (Array.isArray(val)) {
72
+ const arrCopy = [];
73
+ cache.set(val, arrCopy);
74
+ for (let i = 0; i < val.length; i++) {
75
+ arrCopy[i] = clone(val[i]);
76
+ }
77
+ return arrCopy;
78
+ }
79
+ let objCopy;
80
+ if (options.includePrototype) {
81
+ objCopy = Object.create(Object.getPrototypeOf(val));
82
+ }
83
+ else {
84
+ objCopy = {};
85
+ }
86
+ cache.set(val, objCopy);
87
+ for (const key in val) {
88
+ if (Object.prototype.hasOwnProperty.call(val, key)) {
89
+ objCopy[key] = clone(val[key]);
90
+ }
91
+ }
92
+ if (options.includeNonEnumerable) {
93
+ const propertyNames = Object.getOwnPropertyNames(val);
94
+ for (const key of propertyNames) {
95
+ if (!objCopy.hasOwnProperty(key)) {
96
+ const descriptor = Object.getOwnPropertyDescriptor(val, key);
97
+ if (descriptor) {
98
+ Object.defineProperty(objCopy, key, {
99
+ ...descriptor,
100
+ value: clone(descriptor.value)
101
+ });
102
+ }
103
+ }
104
+ }
105
+ }
106
+ if (options.includeSymbol) {
107
+ const symbols = Object.getOwnPropertySymbols(val);
108
+ for (const symbol of symbols) {
109
+ const descriptor = Object.getOwnPropertyDescriptor(val, symbol);
110
+ if (descriptor) {
111
+ Object.defineProperty(objCopy, symbol, {
112
+ ...descriptor,
113
+ value: clone(descriptor.value)
114
+ });
115
+ }
116
+ }
117
+ }
118
+ return objCopy;
119
+ }
120
+ return clone(value);
121
+ }
122
+ export function deepCloneJSON(value) {
123
+ return JSON.parse(JSON.stringify(value));
124
+ }
125
+ export function deepCloneStructured(value, deps) {
126
+ if (deps.structuredClone) {
127
+ return deps.structuredClone(value);
128
+ }
129
+ return deepClone(value);
130
+ }
131
+ //# sourceMappingURL=deepClone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../../src/functions/array-object/deepClone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function flatten<T>(arr: any[], depth?: number): T[];
2
+ export declare function flattenReduce<T>(arr: any[], depth?: number): T[];
3
+ export declare function flattenIterative<T>(arr: any[]): T[];
4
+ export declare function flattenGenerator(arr: any[]): Generator<any>;
5
+ export declare function flattenWithGenerator<T>(arr: any[]): T[];
6
+ export declare function flattenToString(arr: any[]): number[];
7
+ export declare function flattenNative<T>(arr: any[], depth?: number): T[];
@@ -0,0 +1,60 @@
1
+ export function flatten(arr, depth = Infinity) {
2
+ const result = [];
3
+ function flattenHelper(items, currentDepth) {
4
+ for (const item of items) {
5
+ if (Array.isArray(item) && currentDepth > 0) {
6
+ flattenHelper(item, currentDepth - 1);
7
+ }
8
+ else {
9
+ result.push(item);
10
+ }
11
+ }
12
+ }
13
+ flattenHelper(arr, depth);
14
+ return result;
15
+ }
16
+ export function flattenReduce(arr, depth = Infinity) {
17
+ if (depth <= 0) {
18
+ return arr.slice();
19
+ }
20
+ return arr.reduce((acc, item) => {
21
+ if (Array.isArray(item)) {
22
+ return acc.concat(flattenReduce(item, depth - 1));
23
+ }
24
+ return acc.concat(item);
25
+ }, []);
26
+ }
27
+ export function flattenIterative(arr) {
28
+ const stack = [...arr];
29
+ const result = [];
30
+ while (stack.length) {
31
+ const item = stack.pop();
32
+ if (Array.isArray(item)) {
33
+ stack.push(...item);
34
+ }
35
+ else {
36
+ result.unshift(item);
37
+ }
38
+ }
39
+ return result;
40
+ }
41
+ export function* flattenGenerator(arr) {
42
+ for (const item of arr) {
43
+ if (Array.isArray(item)) {
44
+ yield* flattenGenerator(item);
45
+ }
46
+ else {
47
+ yield item;
48
+ }
49
+ }
50
+ }
51
+ export function flattenWithGenerator(arr) {
52
+ return [...flattenGenerator(arr)];
53
+ }
54
+ export function flattenToString(arr) {
55
+ return arr.toString().split(',').map(Number);
56
+ }
57
+ export function flattenNative(arr, depth = Infinity) {
58
+ return arr.flat(depth);
59
+ }
60
+ //# sourceMappingURL=flatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../../src/functions/array-object/flatten.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,OAAO,CAAI,GAAU,EAAE,QAAgB,QAAQ;IAC7D,MAAM,MAAM,GAAQ,EAAE,CAAA;IAEtB,SAAS,aAAa,CAAC,KAAY,EAAE,YAAoB;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC5C,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,CAAA;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,OAAO,MAAM,CAAA;AACf,CAAC;AAKD,MAAM,UAAU,aAAa,CAAI,GAAU,EAAE,QAAgB,QAAQ;IACnE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AAKD,MAAM,UAAU,gBAAgB,CAAI,GAAU;IAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;IACtB,MAAM,MAAM,GAAQ,EAAE,CAAA;IAEtB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;QAExB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAExB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACrB,CAAC;aAAM,CAAC;YAEN,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAKD,MAAM,SAAS,CAAC,CAAC,gBAAgB,CAAC,GAAU;IAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAA;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAKD,MAAM,UAAU,oBAAoB,CAAI,GAAU;IAChD,OAAO,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;AACnC,CAAC;AAKD,MAAM,UAAU,eAAe,CAAC,GAAU;IACxC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC9C,CAAC;AAKD,MAAM,UAAU,aAAa,CAAI,GAAU,EAAE,QAAgB,QAAQ;IACnE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function unique<T>(arr: T[]): T[];
2
+ export declare function uniqueLoop<T>(arr: T[]): T[];
3
+ export declare function uniqueIndexOf<T>(arr: T[]): T[];
4
+ export declare function uniqueIncludes<T>(arr: T[]): T[];
5
+ export declare function uniqueFilter<T>(arr: T[]): T[];
6
+ export declare function uniqueReduce<T>(arr: T[]): T[];
7
+ export declare function uniqueMap<T>(arr: T[]): T[];
8
+ export declare function uniqueBy<T extends Record<string, any>>(arr: T[], key: keyof T): T[];
9
+ export declare function uniqueWith<T, K>(arr: T[], fn: (item: T) => K): T[];
10
+ export declare function uniqueAndSort(arr: number[]): number[];
@@ -0,0 +1,85 @@
1
+ export function unique(arr) {
2
+ return [...new Set(arr)];
3
+ }
4
+ export function uniqueLoop(arr) {
5
+ const result = [];
6
+ for (let i = 0; i < arr.length; i++) {
7
+ let isDuplicate = false;
8
+ for (let j = 0; j < result.length; j++) {
9
+ if (arr[i] === result[j]) {
10
+ isDuplicate = true;
11
+ break;
12
+ }
13
+ }
14
+ if (!isDuplicate) {
15
+ result.push(arr[i]);
16
+ }
17
+ }
18
+ return result;
19
+ }
20
+ export function uniqueIndexOf(arr) {
21
+ const result = [];
22
+ for (let i = 0; i < arr.length; i++) {
23
+ if (result.indexOf(arr[i]) === -1) {
24
+ result.push(arr[i]);
25
+ }
26
+ }
27
+ return result;
28
+ }
29
+ export function uniqueIncludes(arr) {
30
+ const result = [];
31
+ for (const item of arr) {
32
+ if (!result.includes(item)) {
33
+ result.push(item);
34
+ }
35
+ }
36
+ return result;
37
+ }
38
+ export function uniqueFilter(arr) {
39
+ return arr.filter((item, index) => arr.indexOf(item) === index);
40
+ }
41
+ export function uniqueReduce(arr) {
42
+ return arr.reduce((acc, item) => {
43
+ if (!acc.includes(item)) {
44
+ acc.push(item);
45
+ }
46
+ return acc;
47
+ }, []);
48
+ }
49
+ export function uniqueMap(arr) {
50
+ const map = new Map();
51
+ const result = [];
52
+ for (const item of arr) {
53
+ if (!map.has(item)) {
54
+ map.set(item, true);
55
+ result.push(item);
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ export function uniqueBy(arr, key) {
61
+ const seen = new Set();
62
+ return arr.filter(item => {
63
+ const value = item[key];
64
+ if (seen.has(value)) {
65
+ return false;
66
+ }
67
+ seen.add(value);
68
+ return true;
69
+ });
70
+ }
71
+ export function uniqueWith(arr, fn) {
72
+ const seen = new Set();
73
+ return arr.filter(item => {
74
+ const key = fn(item);
75
+ if (seen.has(key)) {
76
+ return false;
77
+ }
78
+ seen.add(key);
79
+ return true;
80
+ });
81
+ }
82
+ export function uniqueAndSort(arr) {
83
+ return [...new Set(arr)].sort((a, b) => a - b);
84
+ }
85
+ //# sourceMappingURL=unique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique.js","sourceRoot":"","sources":["../../../src/functions/array-object/unique.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface Heap<T> {
2
+ insert(value: T): void;
3
+ extract(): T | undefined;
4
+ peek(): T | undefined;
5
+ size(): number;
6
+ isEmpty(): boolean;
7
+ clear(): void;
8
+ toArray(): T[];
9
+ }
10
+ export type HeapType = 'min' | 'max';
11
+ export declare function createHeap<T>(type?: HeapType, compare?: (a: T, b: T) => number): Heap<T>;
@@ -0,0 +1,91 @@
1
+ export function createHeap(type = 'min', compare) {
2
+ const heap = [];
3
+ const defaultCompare = (a, b) => {
4
+ if (a < b)
5
+ return -1;
6
+ if (a > b)
7
+ return 1;
8
+ return 0;
9
+ };
10
+ const compareFn = compare || defaultCompare;
11
+ const shouldSwap = (a, b) => {
12
+ const cmp = compareFn(a, b);
13
+ return type === 'min' ? cmp < 0 : cmp > 0;
14
+ };
15
+ function getParentIndex(index) {
16
+ return Math.floor((index - 1) / 2);
17
+ }
18
+ function getLeftChildIndex(index) {
19
+ return 2 * index + 1;
20
+ }
21
+ function getRightChildIndex(index) {
22
+ return 2 * index + 2;
23
+ }
24
+ function swap(i, j) {
25
+ [heap[i], heap[j]] = [heap[j], heap[i]];
26
+ }
27
+ function heapifyUp(index) {
28
+ while (index > 0) {
29
+ const parentIndex = getParentIndex(index);
30
+ if (shouldSwap(heap[index], heap[parentIndex])) {
31
+ swap(index, parentIndex);
32
+ index = parentIndex;
33
+ }
34
+ else {
35
+ break;
36
+ }
37
+ }
38
+ }
39
+ function heapifyDown(index) {
40
+ while (true) {
41
+ let targetIndex = index;
42
+ const leftIndex = getLeftChildIndex(index);
43
+ const rightIndex = getRightChildIndex(index);
44
+ if (leftIndex < heap.length && shouldSwap(heap[leftIndex], heap[targetIndex])) {
45
+ targetIndex = leftIndex;
46
+ }
47
+ if (rightIndex < heap.length && shouldSwap(heap[rightIndex], heap[targetIndex])) {
48
+ targetIndex = rightIndex;
49
+ }
50
+ if (targetIndex === index) {
51
+ break;
52
+ }
53
+ swap(index, targetIndex);
54
+ index = targetIndex;
55
+ }
56
+ }
57
+ return {
58
+ insert(value) {
59
+ heap.push(value);
60
+ heapifyUp(heap.length - 1);
61
+ },
62
+ extract() {
63
+ if (heap.length === 0) {
64
+ return undefined;
65
+ }
66
+ if (heap.length === 1) {
67
+ return heap.pop();
68
+ }
69
+ const root = heap[0];
70
+ heap[0] = heap.pop();
71
+ heapifyDown(0);
72
+ return root;
73
+ },
74
+ peek() {
75
+ return heap[0];
76
+ },
77
+ size() {
78
+ return heap.length;
79
+ },
80
+ isEmpty() {
81
+ return heap.length === 0;
82
+ },
83
+ clear() {
84
+ heap.length = 0;
85
+ },
86
+ toArray() {
87
+ return [...heap];
88
+ }
89
+ };
90
+ }
91
+ //# sourceMappingURL=Heap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heap.js","sourceRoot":"","sources":["../../../src/functions/data-structures/Heap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface ListNode<T> {
2
+ value: T;
3
+ next: ListNode<T> | null;
4
+ }
5
+ export interface LinkedList<T> {
6
+ prepend(value: T): void;
7
+ append(value: T): void;
8
+ insertAt(index: number, value: T): boolean;
9
+ removeAt(index: number): T | undefined;
10
+ indexOf(value: T): number;
11
+ get(index: number): T | undefined;
12
+ size(): number;
13
+ isEmpty(): boolean;
14
+ clear(): void;
15
+ toArray(): T[];
16
+ reverse(): void;
17
+ }
18
+ export declare function createLinkedList<T>(): LinkedList<T>;
@@ -0,0 +1,135 @@
1
+ export function createLinkedList() {
2
+ let head = null;
3
+ let length = 0;
4
+ return {
5
+ prepend(value) {
6
+ const newNode = { value, next: head };
7
+ head = newNode;
8
+ length++;
9
+ },
10
+ append(value) {
11
+ const newNode = { value, next: null };
12
+ if (!head) {
13
+ head = newNode;
14
+ }
15
+ else {
16
+ let current = head;
17
+ while (current.next) {
18
+ current = current.next;
19
+ }
20
+ current.next = newNode;
21
+ }
22
+ length++;
23
+ },
24
+ insertAt(index, value) {
25
+ if (index < 0 || index > length) {
26
+ return false;
27
+ }
28
+ if (index === 0) {
29
+ const newNode = { value, next: head };
30
+ head = newNode;
31
+ length++;
32
+ return true;
33
+ }
34
+ let current = head;
35
+ let prev = null;
36
+ let currentIndex = 0;
37
+ while (currentIndex < index && current) {
38
+ prev = current;
39
+ current = current.next;
40
+ currentIndex++;
41
+ }
42
+ if (prev) {
43
+ const newNode = { value, next: current };
44
+ prev.next = newNode;
45
+ length++;
46
+ return true;
47
+ }
48
+ return false;
49
+ },
50
+ removeAt(index) {
51
+ if (index < 0 || index >= length || !head) {
52
+ return undefined;
53
+ }
54
+ if (index === 0) {
55
+ const value = head.value;
56
+ head = head.next;
57
+ length--;
58
+ return value;
59
+ }
60
+ let current = head;
61
+ let prev = null;
62
+ let currentIndex = 0;
63
+ while (currentIndex < index && current) {
64
+ prev = current;
65
+ current = current.next;
66
+ currentIndex++;
67
+ }
68
+ if (prev && current) {
69
+ prev.next = current.next;
70
+ length--;
71
+ return current.value;
72
+ }
73
+ return undefined;
74
+ },
75
+ indexOf(value) {
76
+ let current = head;
77
+ let index = 0;
78
+ while (current) {
79
+ if (current.value === value) {
80
+ return index;
81
+ }
82
+ current = current.next;
83
+ index++;
84
+ }
85
+ return -1;
86
+ },
87
+ get(index) {
88
+ if (index < 0 || index >= length) {
89
+ return undefined;
90
+ }
91
+ let current = head;
92
+ let currentIndex = 0;
93
+ while (current && currentIndex < index) {
94
+ current = current.next;
95
+ currentIndex++;
96
+ }
97
+ return current?.value;
98
+ },
99
+ size() {
100
+ return length;
101
+ },
102
+ isEmpty() {
103
+ return length === 0;
104
+ },
105
+ clear() {
106
+ head = null;
107
+ length = 0;
108
+ },
109
+ toArray() {
110
+ const result = [];
111
+ let current = head;
112
+ while (current) {
113
+ result.push(current.value);
114
+ current = current.next;
115
+ }
116
+ return result;
117
+ },
118
+ reverse() {
119
+ if (!head || !head.next) {
120
+ return;
121
+ }
122
+ let prev = null;
123
+ let current = head;
124
+ let next = null;
125
+ while (current) {
126
+ next = current.next;
127
+ current.next = prev;
128
+ prev = current;
129
+ current = next;
130
+ }
131
+ head = prev;
132
+ }
133
+ };
134
+ }
135
+ //# sourceMappingURL=LinkedList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["../../../src/functions/data-structures/LinkedList.ts"],"names":[],"mappings":"AAoEA,MAAM,UAAU,gBAAgB;IAC9B,IAAI,IAAI,GAAuB,IAAI,CAAA;IACnC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,OAAO;QACL,OAAO,CAAC,KAAQ;YACd,MAAM,OAAO,GAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;YAClD,IAAI,GAAG,OAAO,CAAA;YACd,MAAM,EAAE,CAAA;QACV,CAAC;QAED,MAAM,CAAC,KAAQ;YACb,MAAM,OAAO,GAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;YAElD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,OAAO,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,GAAG,IAAI,CAAA;gBAClB,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;oBACpB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAA;gBACxB,CAAC;gBACD,OAAO,CAAC,IAAI,GAAG,OAAO,CAAA;YACxB,CAAC;YACD,MAAM,EAAE,CAAA;QACV,CAAC;QAED,QAAQ,CAAC,KAAa,EAAE,KAAQ;YAC9B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAA;YACd,CAAC;YAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;gBAClD,IAAI,GAAG,OAAO,CAAA;gBACd,MAAM,EAAE,CAAA;gBACR,OAAO,IAAI,CAAA;YACb,CAAC;YAED,IAAI,OAAO,GAAG,IAAI,CAAA;YAClB,IAAI,IAAI,GAAuB,IAAI,CAAA;YACnC,IAAI,YAAY,GAAG,CAAC,CAAA;YAEpB,OAAO,YAAY,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;gBACvC,IAAI,GAAG,OAAO,CAAA;gBACd,OAAO,GAAG,OAAO,CAAC,IAAI,CAAA;gBACtB,YAAY,EAAE,CAAA;YAChB,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,OAAO,GAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;gBACrD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;gBACnB,MAAM,EAAE,CAAA;gBACR,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAED,QAAQ,CAAC,KAAa;YACpB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1C,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBACxB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;gBAChB,MAAM,EAAE,CAAA;gBACR,OAAO,KAAK,CAAA;YACd,CAAC;YAED,IAAI,OAAO,GAAG,IAAI,CAAA;YAClB,IAAI,IAAI,GAAuB,IAAI,CAAA;YACnC,IAAI,YAAY,GAAG,CAAC,CAAA;YAEpB,OAAO,YAAY,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;gBACvC,IAAI,GAAG,OAAO,CAAA;gBACd,OAAO,GAAG,OAAO,CAAC,IAAK,CAAA;gBACvB,YAAY,EAAE,CAAA;YAChB,CAAC;YAED,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;gBACxB,MAAM,EAAE,CAAA;gBACR,OAAO,OAAO,CAAC,KAAK,CAAA;YACtB,CAAC;YAED,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,CAAC,KAAQ;YACd,IAAI,OAAO,GAAG,IAAI,CAAA;YAClB,IAAI,KAAK,GAAG,CAAC,CAAA;YAEb,OAAO,OAAO,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAA;gBACd,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAA;gBACtB,KAAK,EAAE,CAAA;YACT,CAAC;YAED,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;QAED,GAAG,CAAC,KAAa;YACf,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,IAAI,OAAO,GAAG,IAAI,CAAA;YAClB,IAAI,YAAY,GAAG,CAAC,CAAA;YAEpB,OAAO,OAAO,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;gBACvC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAA;gBACtB,YAAY,EAAE,CAAA;YAChB,CAAC;YAED,OAAO,OAAO,EAAE,KAAK,CAAA;QACvB,CAAC;QAED,IAAI;YACF,OAAO,MAAM,CAAA;QACf,CAAC;QAED,OAAO;YACL,OAAO,MAAM,KAAK,CAAC,CAAA;QACrB,CAAC;QAED,KAAK;YACH,IAAI,GAAG,IAAI,CAAA;YACX,MAAM,GAAG,CAAC,CAAA;QACZ,CAAC;QAED,OAAO;YACL,MAAM,MAAM,GAAQ,EAAE,CAAA;YACtB,IAAI,OAAO,GAAG,IAAI,CAAA;YAElB,OAAO,OAAO,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC1B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAA;YACxB,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,OAAO;YACL,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YAED,IAAI,IAAI,GAAuB,IAAI,CAAA;YACnC,IAAI,OAAO,GAAuB,IAAI,CAAA;YACtC,IAAI,IAAI,GAAuB,IAAI,CAAA;YAEnC,OAAO,OAAO,EAAE,CAAC;gBACf,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;gBACnB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;gBACnB,IAAI,GAAG,OAAO,CAAA;gBACd,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YAED,IAAI,GAAG,IAAI,CAAA;QACb,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface PriorityQueueItem<T> {
2
+ value: T;
3
+ priority: number;
4
+ }
5
+ export interface PriorityQueue<T> {
6
+ enqueue(item: T, priority: number): void;
7
+ dequeue(): T | undefined;
8
+ peek(): T | undefined;
9
+ size(): number;
10
+ isEmpty(): boolean;
11
+ clear(): void;
12
+ toArray(): PriorityQueueItem<T>[];
13
+ }
14
+ export declare function createPriorityQueue<T>(): PriorityQueue<T>;