@bemoje/array 0.0.9 → 0.1.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 (130) hide show
  1. package/README.md +6 -34
  2. package/package.json +10 -10
  3. package/{dist/types → src}/index.d.ts +0 -1
  4. package/src/index.js +33 -0
  5. package/src/index.js.map +1 -0
  6. package/{dist/types → src}/lib/arrAverage.d.ts +0 -1
  7. package/src/lib/arrAverage.js +22 -0
  8. package/src/lib/arrAverage.js.map +1 -0
  9. package/{dist/types → src}/lib/arrEachToString.d.ts +0 -1
  10. package/src/lib/arrEachToString.js +19 -0
  11. package/src/lib/arrEachToString.js.map +1 -0
  12. package/{dist/types → src}/lib/arrEvery.d.ts +0 -1
  13. package/src/lib/arrEvery.js +28 -0
  14. package/src/lib/arrEvery.js.map +1 -0
  15. package/{dist/types → src}/lib/arrFindIndicesOf.d.ts +0 -1
  16. package/src/lib/arrFindIndicesOf.js +20 -0
  17. package/src/lib/arrFindIndicesOf.js.map +1 -0
  18. package/{dist/types → src}/lib/arrFindLast.d.ts +0 -1
  19. package/src/lib/arrFindLast.js +22 -0
  20. package/src/lib/arrFindLast.js.map +1 -0
  21. package/{dist/types → src}/lib/arrFindLastIndexOf.d.ts +0 -1
  22. package/src/lib/arrFindLastIndexOf.js +25 -0
  23. package/src/lib/arrFindLastIndexOf.js.map +1 -0
  24. package/{dist/types → src}/lib/arrFlatten.d.ts +0 -1
  25. package/src/lib/arrFlatten.js +34 -0
  26. package/src/lib/arrFlatten.js.map +1 -0
  27. package/{dist/types → src}/lib/arrIndicesOf.d.ts +0 -1
  28. package/src/lib/arrIndicesOf.js +27 -0
  29. package/src/lib/arrIndicesOf.js.map +1 -0
  30. package/{dist/types → src}/lib/arrLast.d.ts +0 -1
  31. package/src/lib/arrLast.js +21 -0
  32. package/src/lib/arrLast.js.map +1 -0
  33. package/{dist/types → src}/lib/arrMapMutable.d.ts +0 -1
  34. package/src/lib/arrMapMutable.js +22 -0
  35. package/src/lib/arrMapMutable.js.map +1 -0
  36. package/{dist/types → src}/lib/arrObjectsToTable.d.ts +0 -1
  37. package/src/lib/arrObjectsToTable.js +37 -0
  38. package/src/lib/arrObjectsToTable.js.map +1 -0
  39. package/{dist/types → src}/lib/arrObjectsUniqueKeys.d.ts +0 -1
  40. package/src/lib/arrObjectsUniqueKeys.js +29 -0
  41. package/src/lib/arrObjectsUniqueKeys.js.map +1 -0
  42. package/{dist/types → src}/lib/arrRemoveDuplicates.d.ts +0 -1
  43. package/src/lib/arrRemoveDuplicates.js +20 -0
  44. package/src/lib/arrRemoveDuplicates.js.map +1 -0
  45. package/{dist/types → src}/lib/arrShallowEquals.d.ts +0 -1
  46. package/src/lib/arrShallowEquals.js +25 -0
  47. package/src/lib/arrShallowEquals.js.map +1 -0
  48. package/{dist/types → src}/lib/arrShuffle.d.ts +0 -1
  49. package/src/lib/arrShuffle.js +34 -0
  50. package/src/lib/arrShuffle.js.map +1 -0
  51. package/{dist/types → src}/lib/arrSome.d.ts +0 -1
  52. package/src/lib/arrSome.js +26 -0
  53. package/src/lib/arrSome.js.map +1 -0
  54. package/{dist/types → src}/lib/arrSortNumeric.d.ts +0 -1
  55. package/src/lib/arrSortNumeric.js +22 -0
  56. package/src/lib/arrSortNumeric.js.map +1 -0
  57. package/{dist/types → src}/lib/arrSortedInsertionIndex.d.ts +0 -1
  58. package/src/lib/arrSortedInsertionIndex.js +36 -0
  59. package/src/lib/arrSortedInsertionIndex.js.map +1 -0
  60. package/{dist/types → src}/lib/arrSplit.d.ts +0 -1
  61. package/src/lib/arrSplit.js +19 -0
  62. package/src/lib/arrSplit.js.map +1 -0
  63. package/{dist/types → src}/lib/arrSum.d.ts +0 -1
  64. package/src/lib/arrSum.js +18 -0
  65. package/src/lib/arrSum.js.map +1 -0
  66. package/{dist/types → src}/lib/arrSwap.d.ts +0 -1
  67. package/src/lib/arrSwap.js +24 -0
  68. package/src/lib/arrSwap.js.map +1 -0
  69. package/{dist/types → src}/lib/arrTableAssertRowsSameLength.d.ts +0 -1
  70. package/src/lib/arrTableAssertRowsSameLength.js +37 -0
  71. package/src/lib/arrTableAssertRowsSameLength.js.map +1 -0
  72. package/{dist/types → src}/lib/arrTableEachToString.d.ts +0 -1
  73. package/src/lib/arrTableEachToString.js +20 -0
  74. package/src/lib/arrTableEachToString.js.map +1 -0
  75. package/{dist/types → src}/lib/arrTableToCsv.d.ts +0 -1
  76. package/src/lib/arrTableToCsv.js +34 -0
  77. package/src/lib/arrTableToCsv.js.map +1 -0
  78. package/{dist/types → src}/lib/arrTableToObjects.d.ts +0 -1
  79. package/src/lib/arrTableToObjects.js +51 -0
  80. package/src/lib/arrTableToObjects.js.map +1 -0
  81. package/{dist/types → src}/lib/types/ArrayPredicate.d.ts +0 -1
  82. package/src/lib/types/ArrayPredicate.js +3 -0
  83. package/src/lib/types/ArrayPredicate.js.map +1 -0
  84. package/{dist/types → src}/lib/types/ArrayValueCallback.d.ts +0 -1
  85. package/src/lib/types/ArrayValueCallback.js +3 -0
  86. package/src/lib/types/ArrayValueCallback.js.map +1 -0
  87. package/{dist/types → src}/lib/types/ArrayVoidCallback.d.ts +0 -1
  88. package/src/lib/types/ArrayVoidCallback.js +3 -0
  89. package/src/lib/types/ArrayVoidCallback.js.map +1 -0
  90. package/{dist/types → src}/lib/types/NestedArray.d.ts +0 -1
  91. package/src/lib/types/NestedArray.js +3 -0
  92. package/src/lib/types/NestedArray.js.map +1 -0
  93. package/LICENSE +0 -21
  94. package/dist/index.cjs.js +0 -6
  95. package/dist/index.cjs.js.map +0 -1
  96. package/dist/index.esm.js +0 -6
  97. package/dist/index.esm.js.map +0 -1
  98. package/dist/types/index.d.ts.map +0 -1
  99. package/dist/types/lib/arrAverage.d.ts.map +0 -1
  100. package/dist/types/lib/arrEachToString.d.ts.map +0 -1
  101. package/dist/types/lib/arrEvery.d.ts.map +0 -1
  102. package/dist/types/lib/arrFindIndicesOf.d.ts.map +0 -1
  103. package/dist/types/lib/arrFindLast.d.ts.map +0 -1
  104. package/dist/types/lib/arrFindLastIndexOf.d.ts.map +0 -1
  105. package/dist/types/lib/arrFlatten.d.ts.map +0 -1
  106. package/dist/types/lib/arrIndicesOf.d.ts.map +0 -1
  107. package/dist/types/lib/arrLast.d.ts.map +0 -1
  108. package/dist/types/lib/arrMapMutable.d.ts.map +0 -1
  109. package/dist/types/lib/arrObjectsToTable.d.ts.map +0 -1
  110. package/dist/types/lib/arrObjectsUniqueKeys.d.ts.map +0 -1
  111. package/dist/types/lib/arrRemoveDuplicates.d.ts.map +0 -1
  112. package/dist/types/lib/arrShallowEquals.d.ts.map +0 -1
  113. package/dist/types/lib/arrShuffle.d.ts.map +0 -1
  114. package/dist/types/lib/arrSome.d.ts.map +0 -1
  115. package/dist/types/lib/arrSortNumeric.d.ts.map +0 -1
  116. package/dist/types/lib/arrSortedInsertionIndex.d.ts.map +0 -1
  117. package/dist/types/lib/arrSplit.d.ts.map +0 -1
  118. package/dist/types/lib/arrSum.d.ts.map +0 -1
  119. package/dist/types/lib/arrSwap.d.ts.map +0 -1
  120. package/dist/types/lib/arrTableAssertRowsSameLength.d.ts.map +0 -1
  121. package/dist/types/lib/arrTableEachToString.d.ts.map +0 -1
  122. package/dist/types/lib/arrTableToCsv.d.ts.map +0 -1
  123. package/dist/types/lib/arrTableToObjects.d.ts.map +0 -1
  124. package/dist/types/lib/types/ArrayPredicate.d.ts.map +0 -1
  125. package/dist/types/lib/types/ArrayValueCallback.d.ts.map +0 -1
  126. package/dist/types/lib/types/ArrayVoidCallback.d.ts.map +0 -1
  127. package/dist/types/lib/types/NestedArray.d.ts.map +0 -1
  128. package/jest.config.ts +0 -13
  129. package/project.json +0 -30
  130. package/tsconfig.spec.json +0 -9
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrShallowEquals = void 0;
4
+ const arrEvery_1 = require("./arrEvery");
5
+ /**
6
+ * This function compares the length of the two arrays and then checks if each element at the corresponding index is equal.
7
+ * @param input1 The first array to compare.
8
+ * @template T - The type of the elements in the arrays.
9
+ * @returns A boolean indicating whether the two arrays are shallowly equal.
10
+ * @param input2 The second array to compare.
11
+ * Checks if two arrays are shallowly equal.
12
+ * @example ```ts
13
+ * arrShallowEquals([1, 2, 3], [1, 2, 3]);
14
+ * //=> true
15
+ * arrShallowEquals([1, 2, 3], [1, 2, 4]);
16
+ * //=> false
17
+ * ```
18
+ */
19
+ function arrShallowEquals(input1, input2) {
20
+ if (input1.length !== input2.length)
21
+ return false;
22
+ return (0, arrEvery_1.arrEvery)(input1, (value, i) => value === input2[i]);
23
+ }
24
+ exports.arrShallowEquals = arrShallowEquals;
25
+ //# sourceMappingURL=arrShallowEquals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrShallowEquals.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrShallowEquals.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC;;;;;;;;;;;;;GAaG;AACH,SAAgB,gBAAgB,CAAI,MAAW,EAAE,MAAW;IAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACjD,OAAO,IAAA,mBAAQ,EAAC,MAAM,EAAE,CAAC,KAAQ,EAAE,CAAS,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACvE,CAAC;AAHD,4CAGC"}
@@ -11,4 +11,3 @@
11
11
  * ```
12
12
  */
13
13
  export declare function arrShuffle<T>(input: Array<T>): Array<T>;
14
- //# sourceMappingURL=arrShuffle.d.ts.map
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrShuffle = void 0;
4
+ const number_1 = require("@bemoje/number");
5
+ const arrShallowEquals_1 = require("./arrShallowEquals");
6
+ const arrSwap_1 = require("./arrSwap");
7
+ /**
8
+ * Shuffle items in an array in-place. Guarantees changes.
9
+ * @remarks This function does not guarantee that the order of the elements will be different after shuffling.
10
+ * @typeparam T - The type of the elements in the input array.
11
+ * @returns The same array, but shuffled.
12
+ * @param input The array to shuffle.
13
+ * @example ```ts
14
+ * const input = [1, 2, 3, 4, 5];
15
+ * arrShuffle(input);
16
+ * //=> [3, 1, 5, 2, 4]
17
+ * ```
18
+ */
19
+ function arrShuffle(input) {
20
+ if (input.length <= 1)
21
+ return input;
22
+ const original = input.slice();
23
+ let equal = true;
24
+ while (equal) {
25
+ for (let i = 0; i < input.length; i++) {
26
+ const newIndex = (0, number_1.randomIntBetween)(0, input.length - 1);
27
+ (0, arrSwap_1.arrSwap)(input, i, newIndex);
28
+ }
29
+ equal = (0, arrShallowEquals_1.arrShallowEquals)(input, original);
30
+ }
31
+ return input;
32
+ }
33
+ exports.arrShuffle = arrShuffle;
34
+ //# sourceMappingURL=arrShuffle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrShuffle.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrShuffle.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,yDAAqD;AACrD,uCAAmC;AAEnC;;;;;;;;;;;GAWG;AACH,SAAgB,UAAU,CAAI,KAAe;IAC3C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;IAC9B,IAAI,KAAK,GAAG,IAAI,CAAA;IAChB,OAAO,KAAK,EAAE;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACtD,IAAA,iBAAO,EAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;SAC5B;QACD,KAAK,GAAG,IAAA,mCAAgB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;KAC1C;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAZD,gCAYC"}
@@ -13,4 +13,3 @@ import type { ArrayPredicate } from './types/ArrayPredicate';
13
13
  * ```
14
14
  */
15
15
  export declare function arrSome<T>(input: Array<T>, predicate: ArrayPredicate<T>): boolean;
16
- //# sourceMappingURL=arrSome.d.ts.map
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrSome = void 0;
4
+ /**
5
+ * Checks if at least one element in the array satisfies the provided predicate.
6
+ * @param predicate The predicate function to apply to each element.
7
+ * @template T The type of elements in the input array.
8
+ * @returns Returns `true` if at least one element in the array passes the test implemented by the provided function, otherwise `false`.
9
+ * @param input The array to check.
10
+ * @example ```ts
11
+ * const numbers = [1, 2, 3, 4, 5];
12
+ * const isEven = (num) => num % 2 === 0;
13
+ * arrSome(numbers, isEven);
14
+ * //=> true
15
+ * ```
16
+ */
17
+ function arrSome(input, predicate) {
18
+ for (let i = 0, len = input.length; i < len; i++) {
19
+ if (predicate(input[i], i, input) === true) {
20
+ return true;
21
+ }
22
+ }
23
+ return false;
24
+ }
25
+ exports.arrSome = arrSome;
26
+ //# sourceMappingURL=arrSome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrSome.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrSome.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;GAYG;AACH,SAAgB,OAAO,CAAI,KAAe,EAAE,SAA4B;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAChD,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YAC1C,OAAO,IAAI,CAAA;SACZ;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAPD,0BAOC"}
@@ -12,4 +12,3 @@
12
12
  * ```
13
13
  */
14
14
  export declare function arrSortNumeric(input: Array<number | bigint | boolean>): Array<number | bigint | boolean>;
15
- //# sourceMappingURL=arrSortNumeric.d.ts.map
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrSortNumeric = void 0;
4
+ const sort_1 = require("@bemoje/sort");
5
+ /**
6
+ * Sorts an array of numbers, bigints, or booleans in ascending order.
7
+ * @returns The sorted array.
8
+ * @remarks This function uses the JavaScript `Array.prototype.sort()` method, which sorts elements in place.
9
+ * Therefore, the original array will be modified.
10
+ * @throws If any element in the input array is not a number, bigint, or boolean.
11
+ * @param input The array to be sorted.
12
+ * @example ```ts
13
+ * const input = [5, 2n, true, 10, false];
14
+ * arrSortNumeric(input);
15
+ * //=> [false, true, 2n, 5, 10]
16
+ * ```
17
+ */
18
+ function arrSortNumeric(input) {
19
+ return input.sort(sort_1.compareNumeric);
20
+ }
21
+ exports.arrSortNumeric = arrSortNumeric;
22
+ //# sourceMappingURL=arrSortNumeric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrSortNumeric.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrSortNumeric.ts"],"names":[],"mappings":";;;AAAA,uCAA6C;AAE7C;;;;;;;;;;;;GAYG;AACH,SAAgB,cAAc,CAAC,KAAuC;IACpE,OAAO,KAAK,CAAC,IAAI,CAAC,qBAAc,CAAC,CAAA;AACnC,CAAC;AAFD,wCAEC"}
@@ -14,4 +14,3 @@
14
14
  * ```
15
15
  */
16
16
  export declare function arrSortedInsertionIndex<T>(array: readonly T[], value: T, comparator: (a: T, b: T) => number): number;
17
- //# sourceMappingURL=arrSortedInsertionIndex.d.ts.map
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrSortedInsertionIndex = void 0;
4
+ /**
5
+ * Returns an index in the sorted array where the specified value could be inserted while maintaining the sorted order of the array.
6
+ * If the element is already in the array, returns the index after the last instance of the element.
7
+ * @param array - The sorted array to search.
8
+ * @param value - The value to locate in the array.
9
+ * @param comparator - A function that defines the sort order. If omitted, the array elements are converted to strings, then sorted according to each character's Unicode code point value.
10
+ * @returns The index at which the value could be inserted into array to maintain the array's sorted order.
11
+ * @example ```ts
12
+ * const array = [1, 2, 3, 5, 6];
13
+ * const value = 4;
14
+ * const comparator = (a, b) => a - b;
15
+ * const index = arrSortedLowerBound(array, value, comparator);
16
+ * console.log(index); // Output: 3
17
+ * ```
18
+ */
19
+ function arrSortedInsertionIndex(array, value, comparator) {
20
+ let first = 0;
21
+ let count = array.length;
22
+ while (count > 0) {
23
+ const step = Math.trunc(count / 2);
24
+ let it = first + step;
25
+ if (comparator(array[it], value) <= 0) {
26
+ first = ++it;
27
+ count -= step + 1;
28
+ }
29
+ else {
30
+ count = step;
31
+ }
32
+ }
33
+ return first;
34
+ }
35
+ exports.arrSortedInsertionIndex = arrSortedInsertionIndex;
36
+ //# sourceMappingURL=arrSortedInsertionIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrSortedInsertionIndex.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrSortedInsertionIndex.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,SAAgB,uBAAuB,CAAI,KAAmB,EAAE,KAAQ,EAAE,UAAkC;IAC1G,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;IACxB,OAAO,KAAK,GAAG,CAAC,EAAE;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAClC,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,CAAA;QACrB,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACtC,KAAK,GAAG,EAAE,EAAE,CAAA;YACZ,KAAK,IAAI,IAAI,GAAG,CAAC,CAAA;SAClB;aAAM;YACL,KAAK,GAAG,IAAI,CAAA;SACb;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAdD,0DAcC"}
@@ -1,2 +1 @@
1
1
  export declare function arrSplit<T>(array: T[], n: number): T[][];
2
- //# sourceMappingURL=arrSplit.d.ts.map
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrSplit = void 0;
4
+ const validation_1 = require("@bemoje/validation");
5
+ function arrSplit(array, n) {
6
+ (0, validation_1.assertion)(n, validation_1.isPositiveInteger);
7
+ const result = [];
8
+ if (array.length === 0)
9
+ return result;
10
+ if (n === 1)
11
+ return [array];
12
+ const chunkSize = Math.ceil(array.length / n);
13
+ for (let i = 0; i < array.length; i += chunkSize) {
14
+ result.push(array.slice(i, i + chunkSize));
15
+ }
16
+ return result;
17
+ }
18
+ exports.arrSplit = arrSplit;
19
+ //# sourceMappingURL=arrSplit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrSplit.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrSplit.ts"],"names":[],"mappings":";;;AAAA,mDAAiE;AAEjE,SAAgB,QAAQ,CAAI,KAAU,EAAE,CAAS;IAC/C,IAAA,sBAAS,EAAC,CAAC,EAAE,8BAAiB,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAU,EAAE,CAAA;IACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAA;IACrC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;QAChD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;KAC3C;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAVD,4BAUC"}
@@ -9,4 +9,3 @@
9
9
  * ```
10
10
  */
11
11
  export declare function arrSum(array: number[]): number;
12
- //# sourceMappingURL=arrSum.d.ts.map
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrSum = void 0;
4
+ /**
5
+ * Calculates the sum of an array of numbers.
6
+ * @returns The sum of all numbers in the array.
7
+ * @param array The array of numbers to sum.
8
+ * @example ```ts
9
+ * const numbers = [1, 2, 3, 4, 5];
10
+ * arrSum(numbers);
11
+ * //=> 15
12
+ * ```
13
+ */
14
+ function arrSum(array) {
15
+ return array.reduce((acc, cur) => acc + cur, 0);
16
+ }
17
+ exports.arrSum = arrSum;
18
+ //# sourceMappingURL=arrSum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrSum.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrSum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,SAAgB,MAAM,CAAC,KAAe;IACpC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;AACjD,CAAC;AAFD,wBAEC"}
@@ -12,4 +12,3 @@
12
12
  * ```
13
13
  */
14
14
  export declare function arrSwap<T>(input: Array<T>, from: number, to: number): Array<T>;
15
- //# sourceMappingURL=arrSwap.d.ts.map
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrSwap = void 0;
4
+ /**
5
+ * Swaps two elements in an array. This function takes an input array and swaps the elements at the specified indices.
6
+ * @param to The index of the element to swap to.
7
+ * @param from The index of the element to swap from.
8
+ * @template T - The type of elements in the array.
9
+ * @returns The modified array with swapped elements.
10
+ * @throws Will throw an error if 'from' or 'to' is not a valid index in the array.
11
+ * @param input The input array.
12
+ * @example ```ts
13
+ * const arr = [1, 2, 3, 4, 5]
14
+ * arrSwap(arr, 1, 3) //=> [1, 4, 3, 2, 5]
15
+ * ```
16
+ */
17
+ function arrSwap(input, from, to) {
18
+ if (from === to)
19
+ return input;
20
+ [input[from], input[to]] = [input[to], input[from]];
21
+ return input;
22
+ }
23
+ exports.arrSwap = arrSwap;
24
+ //# sourceMappingURL=arrSwap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrSwap.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrSwap.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,SAAgB,OAAO,CAAI,KAAe,EAAE,IAAY,EAAE,EAAU;IAClE,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAC5B;IAAA,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACpD,OAAO,KAAK,CAAA;AACd,CAAC;AAJD,0BAIC"}
@@ -23,4 +23,3 @@
23
23
  * ```
24
24
  */
25
25
  export declare function arrTableAssertRowsSameLength<T>(rows: T[][], headers?: string[]): void;
26
- //# sourceMappingURL=arrTableAssertRowsSameLength.d.ts.map
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrTableAssertRowsSameLength = void 0;
4
+ /**
5
+ * Asserts that all rows in a 2D array have the same length.
6
+ * @param - Optional array of headers to compare the row length against.
7
+ * @throws If any row in the array has a different length than the others.
8
+ * @param headers Optional. An array of headers. If provided, each row must have the same length as this array.
9
+ * @typeparam T - The type of elements in the rows.
10
+ * @param rows The 2D array to check.
11
+ * @example ```ts
12
+ * const rows = [
13
+ * [1, 2, 3],
14
+ * [4, 5, 6],
15
+ * [7, 8, 9],
16
+ * ];
17
+ * arrTableAssertRowsSameLength(rows);
18
+ * //=> undefined
19
+ * const rowsWithDifferentLength = [
20
+ * [1, 2, 3],
21
+ * [4, 5],
22
+ * [7, 8, 9],
23
+ * ];
24
+ * arrTableAssertRowsSameLength(rowsWithDifferentLength);
25
+ * //=> Error: Expected 3 columns, got 2
26
+ * ```
27
+ */
28
+ function arrTableAssertRowsSameLength(rows, headers) {
29
+ const numHeaders = (headers || rows[0]).length;
30
+ for (const row of rows) {
31
+ if (row.length !== numHeaders) {
32
+ throw new Error(`Expected ${numHeaders} columns, got ${row.length}`);
33
+ }
34
+ }
35
+ }
36
+ exports.arrTableAssertRowsSameLength = arrTableAssertRowsSameLength;
37
+ //# sourceMappingURL=arrTableAssertRowsSameLength.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrTableAssertRowsSameLength.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrTableAssertRowsSameLength.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,4BAA4B,CAAI,IAAW,EAAE,OAAkB;IAC7E,MAAM,UAAU,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;SACrE;KACF;AACH,CAAC;AAPD,oEAOC"}
@@ -10,4 +10,3 @@
10
10
  * ```
11
11
  */
12
12
  export declare function arrTableEachToString<T>(table: T[][]): string[][];
13
- //# sourceMappingURL=arrTableEachToString.d.ts.map
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrTableEachToString = void 0;
4
+ const arrEachToString_1 = require("./arrEachToString");
5
+ /**
6
+ * Coerce each value of a 2D array table to string.
7
+ * @template T - The type of the elements in the input array.
8
+ * @returns The converted 2D array where each element is a string.
9
+ * @param table The 2D array to convert.
10
+ * @example ```ts
11
+ * const input: number[][] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
12
+ * arrTableEachToString(input);
13
+ * //=> [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
14
+ * ```
15
+ */
16
+ function arrTableEachToString(table) {
17
+ return table.map(arrEachToString_1.arrEachToString);
18
+ }
19
+ exports.arrTableEachToString = arrTableEachToString;
20
+ //# sourceMappingURL=arrTableEachToString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrTableEachToString.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrTableEachToString.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAEnD;;;;;;;;;;GAUG;AACH,SAAgB,oBAAoB,CAAI,KAAY;IAClD,OAAO,KAAK,CAAC,GAAG,CAAC,iCAAe,CAAC,CAAA;AACnC,CAAC;AAFD,oDAEC"}
@@ -18,4 +18,3 @@
18
18
  * ```
19
19
  */
20
20
  export declare function arrTableToCsv<T>(input: T[][], delimiter?: string, replaceLinebreakWith?: string): string;
21
- //# sourceMappingURL=arrTableToCsv.d.ts.map
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrTableToCsv = void 0;
4
+ const string_1 = require("@bemoje/string");
5
+ /**
6
+ * Converts a 2D array to a CSV string.
7
+ * @param input The input 2D array.
8
+ * @remarks This function is useful for exporting data to CSV format.
9
+ * @param replaceLinebreakWith The character used to replace line breaks in the CSV string. Defaults to '|'.
10
+ * @typeparam T - The type of the elements in the input array.
11
+ * @returns The CSV string representation of the input array.
12
+ * @param delimiter The delimiter to use for separating values in the CSV string.
13
+ * @example ```ts
14
+ * const input = [
15
+ * ['Name', 'Age', 'Country'],
16
+ * ['John', '25', 'USA'],
17
+ * ['Alice', '30', 'Canada'],
18
+ * ['Bob', '35', 'UK'],
19
+ * ];
20
+ * arrTableToCsv(input);
21
+ * //=> "Name;Age;Country\nJohn;25;USA\nAlice;30;Canada\nBob;35;UK"
22
+ * ```
23
+ */
24
+ function arrTableToCsv(input, delimiter = ';', replaceLinebreakWith = '|') {
25
+ return input
26
+ .map((row) => {
27
+ return row
28
+ .map((item) => (0, string_1.strReplaceAll)(item + '', delimiter, '').replace(/\r*\n/g, replaceLinebreakWith))
29
+ .join(delimiter);
30
+ })
31
+ .join('\n');
32
+ }
33
+ exports.arrTableToCsv = arrTableToCsv;
34
+ //# sourceMappingURL=arrTableToCsv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrTableToCsv.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrTableToCsv.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAE9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,aAAa,CAAI,KAAY,EAAE,SAAS,GAAG,GAAG,EAAE,oBAAoB,GAAG,GAAG;IACxF,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,GAAG;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAa,EAAC,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;aAC9F,IAAI,CAAC,SAAS,CAAC,CAAA;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AARD,sCAQC"}
@@ -20,4 +20,3 @@
20
20
  * ```
21
21
  */
22
22
  export declare function arrTableToObjects<T>(rows: T[][], headers?: string[], ignoreKeys?: Set<string>): Record<string, T>[];
23
- //# sourceMappingURL=arrTableToObjects.d.ts.map
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrTableToObjects = void 0;
4
+ /**
5
+ * Converts a 2D array representing a table into an array of objects.
6
+ * @param rows The 2D array representing the table.
7
+ * @template T - The type of the elements in the rows.
8
+ * @param headers The headers to use as keys for the objects. If not provided, the first row of the table is used as headers.
9
+ * @returns An array of objects, where each object represents a row in the table.
10
+ * @throws Throws an error if the headers are not provided and the table is empty or only contains one row.
11
+ * @param headers Optional array of headers for the table.
12
+ * @example ```ts
13
+ * const table = [
14
+ * ['Name', 'Age', 'Country'],
15
+ * ['John', 25, 'USA'],
16
+ * ['Jane', 30, 'Canada'],
17
+ * ];
18
+ * const headers = ['Name', 'Age', 'Country'];
19
+ * arrTableToObjects(table, headers) //=> [
20
+ * // { Name: 'John', Age: 25, Country: 'USA' },
21
+ * // { Name: 'Jane', Age: 30, Country: 'Canada' },
22
+ * // ]
23
+ * ```
24
+ */
25
+ function arrTableToObjects(rows, headers, ignoreKeys) {
26
+ if (headers) {
27
+ if (!rows.length)
28
+ return [];
29
+ }
30
+ else {
31
+ if (rows.length <= 1)
32
+ return [];
33
+ headers = rows[0].map((header) => {
34
+ return header === null || header === undefined ? '' : String(header);
35
+ });
36
+ rows = rows.slice(1);
37
+ }
38
+ const _headers = headers;
39
+ return rows.map((row) => {
40
+ const o = {};
41
+ for (let i = 0; i < _headers.length; i++) {
42
+ const header = _headers[i];
43
+ if (ignoreKeys && ignoreKeys.has(header))
44
+ continue;
45
+ o[header] = row[i];
46
+ }
47
+ return o;
48
+ });
49
+ }
50
+ exports.arrTableToObjects = arrTableToObjects;
51
+ //# sourceMappingURL=arrTableToObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrTableToObjects.js","sourceRoot":"","sources":["../../../../../packages/array/src/lib/arrTableToObjects.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,iBAAiB,CAAI,IAAW,EAAE,OAAkB,EAAE,UAAwB;IAC5F,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;KAC5B;SAAM;QACL,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QAC/B,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACrB;IACD,MAAM,QAAQ,GAAG,OAAO,CAAA;IACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAsB,EAAE,CAAA;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAQ;YAClD,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;SACnB;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;AACJ,CAAC;AApBD,8CAoBC"}
@@ -8,4 +8,3 @@
8
8
  * @returns A boolean indicating whether the current element passes the test.
9
9
  */
10
10
  export type ArrayPredicate<T> = (value: T, index: number, array: T[]) => boolean;
11
- //# sourceMappingURL=ArrayPredicate.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ArrayPredicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayPredicate.js","sourceRoot":"","sources":["../../../../../../packages/array/src/lib/types/ArrayPredicate.ts"],"names":[],"mappings":""}
@@ -1,2 +1 @@
1
1
  export type ArrayValueCallback<T> = (value: T, index: number, array: T[]) => T;
2
- //# sourceMappingURL=ArrayValueCallback.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ArrayValueCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayValueCallback.js","sourceRoot":"","sources":["../../../../../../packages/array/src/lib/types/ArrayValueCallback.ts"],"names":[],"mappings":""}
@@ -1,2 +1 @@
1
1
  export type ArrayVoidCallback<T> = (value: T, index: number, array: T[]) => void;
2
- //# sourceMappingURL=ArrayVoidCallback.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ArrayVoidCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayVoidCallback.js","sourceRoot":"","sources":["../../../../../../packages/array/src/lib/types/ArrayVoidCallback.ts"],"names":[],"mappings":""}
@@ -1,2 +1 @@
1
1
  export type NestedArray<T> = Array<NestedArray<T> | T>;
2
- //# sourceMappingURL=NestedArray.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=NestedArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NestedArray.js","sourceRoot":"","sources":["../../../../../../packages/array/src/lib/types/NestedArray.ts"],"names":[],"mappings":""}
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 Benjamin Møller Jensen
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.
package/dist/index.cjs.js DELETED
@@ -1,6 +0,0 @@
1
- /*!
2
- * @bemoje/array v0.0.8
3
- * (c) Benjamin Møller Jensen
4
- * Released under the MIT License.
5
- */"use strict";var number=require("@bemoje/number"),sort=require("@bemoje/sort"),validation=require("@bemoje/validation"),string=require("@bemoje/string");function arrSum(array){return array.reduce((acc,cur)=>acc+cur,0)}function arrAverage(array){if(!array.length)throw new Error("Cannot take an average of zero values.");return arrSum(array)/array.length}function arrEachToString(array){return array.map(element=>""+element)}function arrEvery(input,predicate){for(let i=0,len=input.length;i<len;i++)if(!1===predicate(input[i],i,input))return!1;return!0}function arrFindIndicesOf(input,predicate){const result=[];for(let i=0;i<input.length;i++)predicate(input[i])&&result.push(i);return result}function arrFindLast(input,predicate){for(let i=input.length-1;0<=i;i--)if(!0===predicate(input[i]))return input[i]}function arrFindLastIndexOf(input,predicate){for(let i=input.length-1;0<=i;i--)if(predicate(input[i]))return i;return-1}function arrFlatten(input,maxDepth=Number.MAX_SAFE_INTEGER){function recurse(arr,depth){for(let i=0;i<arr.length;i++)Array.isArray(arr[i])&&depth<maxDepth?recurse(arr[i],depth+1):accum.push(arr[i])}const accum=[];return recurse(input,0),accum}function arrIndicesOf(input,element){const result=[];for(let i=0;i<input.length;i++)element===input[i]&&result.push(i);return result}function arrLast(array){if(!array.length)throw new Error("Cannot get last element of empty array.");return array[array.length-1]}function arrMapMutable(input,f){for(let i=0;i<input.length;i++)input[i]=f(input[i],i,input);return input}function arrObjectsUniqueKeys(objects){const keys=new Set;for(const o of objects)for(const key of Object.keys(o))keys.add(key);return Array.from(keys)}function arrObjectsToTable(objects,options={}){var _a;const headers=(null===(_a=null===options||void 0===options?void 0:options.headers)||void 0===_a?void 0:_a.slice())||arrObjectsUniqueKeys(objects),table=[headers];for(const o of objects){const row=headers.map(header=>{const value=o[header];return value===void 0?options.emptyCell:value});table.push(row)}return table}function arrRemoveDuplicates(array){return Array.from(new Set(array))}function arrShallowEquals(input1,input2){return!(input1.length!==input2.length)&&arrEvery(input1,(value,i)=>value===input2[i])}function arrSwap(input,from,to){return from===to?input:([input[from],input[to]]=[input[to],input[from]],input)}function arrShuffle(input){if(1>=input.length)return input;const original=input.slice();for(let equal=!0;equal;){for(let i=0;i<input.length;i++){const newIndex=number.randomIntBetween(0,input.length-1);arrSwap(input,i,newIndex)}equal=arrShallowEquals(input,original)}return input}function arrSome(input,predicate){for(let i=0,len=input.length;i<len;i++)if(!0===predicate(input[i],i,input))return!0;return!1}function arrSortedInsertionIndex(array,value,comparator){let first=0,count=array.length;for(;0<count;){const step=Math.trunc(count/2);let it=first+step;0>=comparator(array[it],value)?(first=++it,count-=step+1):count=step}return first}function arrSortNumeric(input){return input.sort(sort.compareNumeric)}function arrSplit(array,n){validation.assertion(n,validation.isPositiveInteger);const result=[];if(0===array.length)return result;if(1===n)return[array];const chunkSize=Math.ceil(array.length/n);for(let i=0;i<array.length;i+=chunkSize)result.push(array.slice(i,i+chunkSize));return result}function arrTableAssertRowsSameLength(rows,headers){const numHeaders=(headers||rows[0]).length;for(const row of rows)if(row.length!==numHeaders)throw new Error(`Expected ${numHeaders} columns, got ${row.length}`)}function arrTableEachToString(table){return table.map(arrEachToString)}function arrTableToCsv(input,delimiter=";",replaceLinebreakWith="|"){return input.map(row=>row.map(item=>string.strReplaceAll(item+"",delimiter,"").replace(/\r*\n/g,replaceLinebreakWith)).join(delimiter)).join("\n")}function arrTableToObjects(rows,headers,ignoreKeys){if(!headers){if(1>=rows.length)return[];headers=rows[0].map(header=>null===header||void 0===header?"":header+""),rows=rows.slice(1)}else if(!rows.length)return[];const _headers=headers;return rows.map(row=>{const o={};for(let i=0;i<_headers.length;i++){const header=_headers[i];ignoreKeys&&ignoreKeys.has(header)||(o[header]=row[i])}return o})}exports.arrAverage=arrAverage,exports.arrEachToString=arrEachToString,exports.arrEvery=arrEvery,exports.arrFindIndicesOf=arrFindIndicesOf,exports.arrFindLast=arrFindLast,exports.arrFindLastIndexOf=arrFindLastIndexOf,exports.arrFlatten=arrFlatten,exports.arrIndicesOf=arrIndicesOf,exports.arrLast=arrLast,exports.arrMapMutable=arrMapMutable,exports.arrObjectsToTable=arrObjectsToTable,exports.arrObjectsUniqueKeys=arrObjectsUniqueKeys,exports.arrRemoveDuplicates=arrRemoveDuplicates,exports.arrShallowEquals=arrShallowEquals,exports.arrShuffle=arrShuffle,exports.arrSome=arrSome,exports.arrSortNumeric=arrSortNumeric,exports.arrSortedInsertionIndex=arrSortedInsertionIndex,exports.arrSplit=arrSplit,exports.arrSum=arrSum,exports.arrSwap=arrSwap,exports.arrTableAssertRowsSameLength=arrTableAssertRowsSameLength,exports.arrTableEachToString=arrTableEachToString,exports.arrTableToCsv=arrTableToCsv,exports.arrTableToObjects=arrTableToObjects;
6
- //# sourceMappingURL=index.cjs.js.map