umt 2.4.0 → 2.5.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.
@@ -0,0 +1,373 @@
1
+ /**
2
+ * Ultra-fast sorting specifically optimized for number arrays
3
+ * @param array Array of numbers to sort
4
+ * @param ascending Sort in ascending order if true, descending if false
5
+ * @returns Sorted array
6
+ */
7
+ export const ultraNumberSort = (array, ascending = true) => {
8
+ const length = array.length;
9
+ if (length <= 1) {
10
+ return array;
11
+ }
12
+ // For tiny arrays, use optimized inline sort
13
+ if (length === 2) {
14
+ if (array[0] > array[1] === ascending) {
15
+ [array[0], array[1]] = [array[1], array[0]];
16
+ }
17
+ return array;
18
+ }
19
+ if (length === 3) {
20
+ inlineSort3(array, ascending);
21
+ return array;
22
+ }
23
+ // Check if all numbers are integers and find range
24
+ let allIntegers = true;
25
+ let min = array[0];
26
+ let max = array[0];
27
+ let hasNaN = false;
28
+ for (let index = 0; index < length; index++) {
29
+ const value = array[index];
30
+ // biome-ignore lint/suspicious/noSelfCompare: <explanation>
31
+ if (value !== value) {
32
+ hasNaN = true;
33
+ break;
34
+ }
35
+ if (value < min) {
36
+ min = value;
37
+ }
38
+ if (value > max) {
39
+ max = value;
40
+ }
41
+ if (allIntegers && value !== Math.floor(value)) {
42
+ allIntegers = false;
43
+ }
44
+ }
45
+ // Handle NaN values
46
+ if (hasNaN) {
47
+ return handleNaNSort(array, ascending);
48
+ }
49
+ // For small integer ranges, use counting sort
50
+ if (allIntegers && max - min < length * 2 && max - min < 1_000_000) {
51
+ return countingSort(array, min, max, ascending);
52
+ }
53
+ // For larger arrays, use radix sort if applicable
54
+ if (allIntegers && length > 100) {
55
+ return radixSort(array, ascending);
56
+ }
57
+ // Fall back to optimized quicksort for floating point
58
+ return numericQuickSort(array, 0, length - 1, ascending);
59
+ };
60
+ /**
61
+ * Inline sort for 3 elements
62
+ */
63
+ const inlineSort3 = (array, ascending) => {
64
+ let a = array[0];
65
+ let b = array[1];
66
+ let c = array[2];
67
+ if (ascending) {
68
+ if (a > b) {
69
+ [a, b] = [b, a];
70
+ }
71
+ if (b > c) {
72
+ [b, c] = [c, b];
73
+ if (a > b) {
74
+ [a, b] = [b, a];
75
+ }
76
+ }
77
+ }
78
+ else {
79
+ if (a < b) {
80
+ [a, b] = [b, a];
81
+ }
82
+ if (b < c) {
83
+ [b, c] = [c, b];
84
+ if (a < b) {
85
+ [a, b] = [b, a];
86
+ }
87
+ }
88
+ }
89
+ array[0] = a;
90
+ array[1] = b;
91
+ array[2] = c;
92
+ };
93
+ /**
94
+ * Handle arrays with NaN values
95
+ */
96
+ const handleNaNSort = (array, ascending) => {
97
+ const valid = [];
98
+ let nanCount = 0;
99
+ for (const element of array) {
100
+ // biome-ignore lint/suspicious/noSelfCompare: <explanation>
101
+ if (element === element) {
102
+ valid.push(element);
103
+ }
104
+ else {
105
+ nanCount++;
106
+ }
107
+ }
108
+ numericQuickSort(valid, 0, valid.length - 1, ascending);
109
+ // NaN values go to the end
110
+ for (let index = 0; index < nanCount; index++) {
111
+ valid.push(Number.NaN);
112
+ }
113
+ // Copy back
114
+ for (let index = 0; index < array.length; index++) {
115
+ array[index] = valid[index];
116
+ }
117
+ return array;
118
+ };
119
+ /**
120
+ * Counting sort for small integer ranges
121
+ */
122
+ const countingSort = (array, min, max, ascending) => {
123
+ const range = max - min + 1;
124
+ const count = new Uint32Array(range);
125
+ // Count occurrences
126
+ for (const element of array) {
127
+ count[element - min]++;
128
+ }
129
+ // Reconstruct array
130
+ let index = 0;
131
+ if (ascending) {
132
+ for (let index_ = 0; index_ < range; index_++) {
133
+ const cnt = count[index_];
134
+ const value = index_ + min;
135
+ for (let index_ = 0; index_ < cnt; index_++) {
136
+ array[index++] = value;
137
+ }
138
+ }
139
+ }
140
+ else {
141
+ for (let index_ = range - 1; index_ >= 0; index_--) {
142
+ const cnt = count[index_];
143
+ const value = index_ + min;
144
+ for (let index_ = 0; index_ < cnt; index_++) {
145
+ array[index++] = value;
146
+ }
147
+ }
148
+ }
149
+ return array;
150
+ };
151
+ /**
152
+ * Radix sort for integers
153
+ */
154
+ const radixSort = (array, ascending) => {
155
+ const length = array.length;
156
+ // Separate positive and negative numbers
157
+ const positive = [];
158
+ const negative = [];
159
+ let zeroCount = 0;
160
+ for (let index_ = 0; index_ < length; index_++) {
161
+ if (array[index_] > 0) {
162
+ positive.push(array[index_]);
163
+ }
164
+ else if (array[index_] < 0) {
165
+ negative.push(-array[index_]);
166
+ }
167
+ else {
168
+ zeroCount++;
169
+ }
170
+ }
171
+ // Sort positive numbers
172
+ if (positive.length > 0) {
173
+ radixSortPositive(positive);
174
+ }
175
+ // Sort negative numbers
176
+ if (negative.length > 0) {
177
+ radixSortPositive(negative);
178
+ }
179
+ // Merge results
180
+ let index = 0;
181
+ if (ascending) {
182
+ // Negative numbers first (in reverse order)
183
+ for (let index_ = negative.length - 1; index_ >= 0; index_--) {
184
+ array[index++] = -negative[index_];
185
+ }
186
+ // Zeros
187
+ for (let index_ = 0; index_ < zeroCount; index_++) {
188
+ array[index++] = 0;
189
+ }
190
+ // Positive numbers
191
+ for (const element of positive) {
192
+ array[index++] = element;
193
+ }
194
+ }
195
+ else {
196
+ // Positive numbers first (in reverse order)
197
+ for (let index_ = positive.length - 1; index_ >= 0; index_--) {
198
+ array[index++] = positive[index_];
199
+ }
200
+ // Zeros
201
+ for (let index_ = 0; index_ < zeroCount; index_++) {
202
+ array[index++] = 0;
203
+ }
204
+ // Negative numbers
205
+ for (const element of negative) {
206
+ array[index++] = -element;
207
+ }
208
+ }
209
+ return array;
210
+ };
211
+ /**
212
+ * Radix sort for positive integers
213
+ */
214
+ const radixSortPositive = (array) => {
215
+ const length = array.length;
216
+ if (length <= 1) {
217
+ return;
218
+ }
219
+ // Find maximum to determine number of digits
220
+ let max = array[0];
221
+ for (let index = 1; index < length; index++) {
222
+ if (array[index] > max) {
223
+ max = array[index];
224
+ }
225
+ }
226
+ // Use typed arrays for better performance
227
+ const output = new Float64Array(length);
228
+ const count = new Uint32Array(256);
229
+ // Process 8 bits at a time
230
+ for (let shift = 0; max >> shift > 0; shift += 8) {
231
+ // Reset count array
232
+ count.fill(0);
233
+ // Count occurrences
234
+ for (let index = 0; index < length; index++) {
235
+ const digit = (array[index] >> shift) & 0xff;
236
+ count[digit]++;
237
+ }
238
+ // Change count[i] to actual position
239
+ for (let index = 1; index < 256; index++) {
240
+ count[index] += count[index - 1];
241
+ }
242
+ // Build output array
243
+ for (let index = length - 1; index >= 0; index--) {
244
+ const digit = (array[index] >> shift) & 0xff;
245
+ output[--count[digit]] = array[index];
246
+ }
247
+ // Copy back
248
+ for (let index = 0; index < length; index++) {
249
+ array[index] = output[index];
250
+ }
251
+ }
252
+ };
253
+ /**
254
+ * Optimized quicksort for numbers
255
+ */
256
+ const numericQuickSort = (array, low, high, ascending) => {
257
+ const stack = [];
258
+ stack.push(low, high);
259
+ while (stack.length > 0) {
260
+ const h = stack.pop();
261
+ const l = stack.pop();
262
+ if (h === undefined || l === undefined || h <= l) {
263
+ continue;
264
+ }
265
+ // For small subarrays, use insertion sort
266
+ if (h - l < 16) {
267
+ numericInsertionSort(array, l, h, ascending);
268
+ continue;
269
+ }
270
+ // Partition
271
+ const pivot = numericPartition(array, l, h, ascending);
272
+ // Push larger partition first to limit stack depth
273
+ if (pivot - l > h - pivot) {
274
+ stack.push(l, pivot - 1, pivot + 1, h);
275
+ }
276
+ else {
277
+ stack.push(pivot + 1, h, l, pivot - 1);
278
+ }
279
+ }
280
+ return array;
281
+ };
282
+ /**
283
+ * Numeric insertion sort
284
+ */
285
+ const numericInsertionSort = (array, low, high, ascending) => {
286
+ if (ascending) {
287
+ for (let index = low + 1; index <= high; index++) {
288
+ const key = array[index];
289
+ let index_ = index - 1;
290
+ while (index_ >= low && array[index_] > key) {
291
+ array[index_ + 1] = array[index_];
292
+ index_--;
293
+ }
294
+ array[index_ + 1] = key;
295
+ }
296
+ }
297
+ else {
298
+ for (let index = low + 1; index <= high; index++) {
299
+ const key = array[index];
300
+ let index_ = index - 1;
301
+ while (index_ >= low && array[index_] < key) {
302
+ array[index_ + 1] = array[index_];
303
+ index_--;
304
+ }
305
+ array[index_ + 1] = key;
306
+ }
307
+ }
308
+ };
309
+ /**
310
+ * Numeric partition with median-of-three pivot
311
+ */
312
+ const numericPartition = (array, low, high, ascending) => {
313
+ // Median-of-three pivot selection
314
+ const mid = low + ((high - low) >> 1);
315
+ if (ascending) {
316
+ if (array[mid] < array[low]) {
317
+ [array[low], array[mid]] = [array[mid], array[low]];
318
+ }
319
+ if (array[high] < array[low]) {
320
+ [array[low], array[high]] = [array[high], array[low]];
321
+ }
322
+ if (array[high] < array[mid]) {
323
+ [array[mid], array[high]] = [array[high], array[mid]];
324
+ }
325
+ }
326
+ else {
327
+ if (array[mid] > array[low]) {
328
+ [array[low], array[mid]] = [array[mid], array[low]];
329
+ }
330
+ if (array[high] > array[low]) {
331
+ [array[low], array[high]] = [array[high], array[low]];
332
+ }
333
+ if (array[high] > array[mid]) {
334
+ [array[mid], array[high]] = [array[high], array[mid]];
335
+ }
336
+ }
337
+ // Move pivot to end-1
338
+ [array[mid], array[high - 1]] = [array[high - 1], array[mid]];
339
+ const pivot = array[high - 1];
340
+ let index = low;
341
+ let index_ = high - 1;
342
+ if (ascending) {
343
+ while (true) {
344
+ while (array[++index] < pivot) {
345
+ // Continue
346
+ }
347
+ while (array[--index_] > pivot) {
348
+ // Continue
349
+ }
350
+ if (index >= index_) {
351
+ break;
352
+ }
353
+ [array[index], array[index_]] = [array[index_], array[index]];
354
+ }
355
+ }
356
+ else {
357
+ while (true) {
358
+ while (array[++index] > pivot) {
359
+ // Continue
360
+ }
361
+ while (array[--index_] < pivot) {
362
+ // Continue
363
+ }
364
+ if (index >= index_) {
365
+ break;
366
+ }
367
+ [array[index], array[index_]] = [array[index_], array[index]];
368
+ }
369
+ }
370
+ [array[index], array[high - 1]] = [array[high - 1], array[index]];
371
+ return index;
372
+ };
373
+ //# sourceMappingURL=ultraNumberSort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ultraNumberSort.js","sourceRoot":"","sources":["../../src/Array/ultraNumberSort.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ export declare class Pipe<T> {
51
51
  * @param predicate Condition function that determines if value should be filtered
52
52
  * @returns New Pipe instance with Result containing filtered value or error
53
53
  */
54
- filterResult<U extends T>(predicate: (input: T) => input is U): Pipe<Result<U, Error>>;
54
+ filterResult<U extends T, E extends Error = Error>(predicate: (input: T) => input is U): Pipe<Result<U, E>>;
55
55
  /**
56
56
  * Terminates the pipeline and returns the final value
57
57
  * @returns Final result of the pipeline processing
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/Tool/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,OAAO,IAAI;IAIc;IAH7B;;OAEG;IACH,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAI,SAA0B;QAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAgC,EAChC,SAA0B;QAE1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,SAA6B;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAc,SAAmC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,SAAmC,EACnC,YAAe;QAEf,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,SAAmC;QAEnC,OAAO,IAAI,IAAI,CACb,WAAW,CAAW,GAAG,EAAE;YACzB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAI,YAAe;IACrC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/Tool/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,OAAO,IAAI;IAIc;IAH7B;;OAEG;IACH,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAI,SAA0B;QAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAgC,EAChC,SAA0B;QAE1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,SAA6B;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAc,SAAmC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,SAAmC,EACnC,YAAe;QAEf,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,SAAmC;QAEnC,OAAO,IAAI,IAAI,CACb,WAAW,CAAO,GAAG,EAAE;YACrB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAI,YAAe;IACrC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC"}
@@ -15,12 +15,13 @@ exports.groupBy = void 0;
15
15
  * groupBy(["apple", "banana", "carrot"], (str) => str[0]); // { 'a': ['apple'], 'b': ['banana'], 'c': ['carrot'] }
16
16
  */
17
17
  var groupBy = exports.groupBy = function groupBy(array, iteratee) {
18
- return array.reduce(function (accumulator, value, index, array) {
18
+ var result = Object.create(null);
19
+ var length = array.length;
20
+ for (var index = 0; index < length; index++) {
21
+ var value = array[index];
19
22
  var key = iteratee(value, index, array);
20
- if (!accumulator[key]) {
21
- accumulator[key] = [];
22
- }
23
- accumulator[key].push(value);
24
- return accumulator;
25
- }, {});
23
+ // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>
24
+ (result[key] || (result[key] = [])).push(value);
25
+ }
26
+ return result;
26
27
  };
@@ -20,5 +20,6 @@ export * from "./shuffle";
20
20
  export * from "./shuffle2DArray";
21
21
  export * from "./sum";
22
22
  export * from "./timSort";
23
+ export * from "./ultraNumberSort";
23
24
  export * from "./zip";
24
25
  export * from "./zipLongest";
@@ -245,6 +245,17 @@ Object.keys(_timSort).forEach(function (key) {
245
245
  }
246
246
  });
247
247
  });
248
+ var _ultraNumberSort = require("./ultraNumberSort");
249
+ Object.keys(_ultraNumberSort).forEach(function (key) {
250
+ if (key === "default" || key === "__esModule") return;
251
+ if (key in exports && exports[key] === _ultraNumberSort[key]) return;
252
+ Object.defineProperty(exports, key, {
253
+ enumerable: true,
254
+ get: function get() {
255
+ return _ultraNumberSort[key];
256
+ }
257
+ });
258
+ });
248
259
  var _zip = require("./zip");
249
260
  Object.keys(_zip).forEach(function (key) {
250
261
  if (key === "default" || key === "__esModule") return;
@@ -5,27 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.timSort = void 0;
7
7
  var _compareFunctionDefault = require("./compareFunctionDefault");
8
+ var _insertionSort = require("@/Array/insertionSort");
8
9
  var MIN_RUN = 32;
9
10
 
10
- /**
11
- * Sorts a portion of the array using insertion sort algorithm
12
- * @param array Array to sort
13
- * @param start Starting index of the range to sort
14
- * @param end Ending index of the range to sort
15
- * @param compareFunction Function to compare elements
16
- */
17
- var insertionSort = function insertionSort(array, start, end, compareFunction) {
18
- for (var index = start + 1; index <= end; index++) {
19
- var temporary = array[index];
20
- var currentIndex = index - 1;
21
- while (currentIndex >= start && compareFunction(array[currentIndex], temporary) > 0) {
22
- array[currentIndex + 1] = array[currentIndex];
23
- currentIndex--;
24
- }
25
- array[currentIndex + 1] = temporary;
26
- }
27
- };
28
-
29
11
  /**
30
12
  * Merges two sorted portions of the array
31
13
  * @param array Array containing the portions to merge
@@ -100,7 +82,7 @@ var timSort = exports.timSort = function timSort(array) {
100
82
  var n = end - start + 1;
101
83
  var minRun = getMinRunLength(n);
102
84
  for (var index = start; index <= end; index += minRun) {
103
- insertionSort(array, index, Math.min(index + MIN_RUN - 1, end), compareFunction);
85
+ (0, _insertionSort.insertionSort)(array, compareFunction, index, Math.min(index + MIN_RUN - 1, end));
104
86
  }
105
87
  for (var size = minRun; size < n; size *= 2) {
106
88
  for (var left = start; left <= end; left += 2 * size) {
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Ultra-fast sorting specifically optimized for number arrays
3
+ * @param array Array of numbers to sort
4
+ * @param ascending Sort in ascending order if true, descending if false
5
+ * @returns Sorted array
6
+ */
7
+ export declare const ultraNumberSort: (array: number[], ascending?: boolean) => number[];