semantic-typescript 0.1.4 → 0.2.5

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 CHANGED
@@ -15,34 +15,40 @@ npm install semantic-typescript
15
15
  ## Basic Types
16
16
 
17
17
  | Type | Description |
18
- |------|------|
19
- | `Invalid<T>` | Type extending null or undefined |
20
- | `Valid<T>` | Type excluding null and undefined |
21
- | `MaybeInvalid<T>` | Type that may be null or undefined |
18
+ |------|-------------|
19
+ | `Invalid<T>` | Type that extends `null` or `undefined` |
20
+ | `Valid<T>` | Type that excludes `null` and `undefined` |
21
+ | `MaybeInvalid<T>` | Type that may be `null` or `undefined` |
22
22
  | `Primitive` | Collection of primitive types |
23
23
  | `MaybePrimitive<T>` | Type that may be a primitive type |
24
- | `OptionalSymbol` | Symbol identifier for the Optional class |
25
- | `SemanticSymbol` | Symbol identifier for the Semantic class |
26
- | `CollectorsSymbol` | Symbol identifier for the Collector class |
27
- | `CollectableSymbol` | Symbol identifier for the Collectable class |
28
- | `OrderedCollectableSymbol` | Symbol identifier for the OrderedCollectable class |
29
- | `WindowCollectableSymbol` | Symbol identifier for the WindowCollectable class |
30
- | `StatisticsSymbol` | Symbol identifier for the Statistics class |
31
- | `NumericStatisticsSymbol` | Symbol identifier for the NumericStatistics class |
32
- | `BigIntStatisticsSymbol` | Symbol identifier for the BigIntStatistics class |
33
- | `UnorderedCollectableSymbol` | Symbol identifier for the UnorderedCollectable class |
34
- | `Runnable` | Function with no parameters and no return value |
35
- | `Supplier<R>` | Function with no parameters returning R |
24
+ | `OptionalSymbol` | Symbol identifier of the `Optional` class |
25
+ | `SemanticSymbol` | Symbol identifier of the `Semantic` class |
26
+ | `CollectorsSymbol` | Symbol identifier of the `Collector` class |
27
+ | `CollectableSymbol` | Symbol identifier of the `Collectable` class |
28
+ | `OrderedCollectableSymbol` | Symbol identifier of the `OrderedCollectable` class |
29
+ | `WindowCollectableSymbol` | Symbol identifier of the `WindowCollectable` class |
30
+ | `StatisticsSymbol` | Symbol identifier of the `Statistics` class |
31
+ | `NumericStatisticsSymbol` | Symbol identifier of the `NumericStatistics` class |
32
+ | `BigIntStatisticsSymbol` | Symbol identifier of the `BigIntStatistics` class |
33
+ | `UnorderedCollectableSymbol` | Symbol identifier of the `UnorderedCollectable` class |
34
+
35
+ ## Functional Interfaces
36
+
37
+ | Interface | Description |
38
+ |-----------|-------------|
39
+ | `Runnable` | Function with no parameters and no return value |
40
+ | `Supplier<R>` | Function with no parameters returning `R` |
36
41
  | `Functional<T, R>` | Single-parameter transformation function |
37
- | `Predicate<T>` | Single-parameter predicate function |
38
42
  | `BiFunctional<T, U, R>` | Two-parameter transformation function |
39
- | `BiPredicate<T, U>` | Two-parameter predicate function |
40
- | `Comparator<T>` | Comparison function |
41
43
  | `TriFunctional<T, U, V, R>` | Three-parameter transformation function |
44
+ | `Predicate<T>` | Single-parameter predicate function |
45
+ | `BiPredicate<T, U>` | Two-parameter predicate function |
46
+ | `TriPredicate<T, U, V>` | Three-parameter predicate function |
42
47
  | `Consumer<T>` | Single-parameter consumer function |
43
48
  | `BiConsumer<T, U>` | Two-parameter consumer function |
44
49
  | `TriConsumer<T, U, V>` | Three-parameter consumer function |
45
- | `Generator<T>` | Generator function |
50
+ | `Comparator<T>` | Two-parameter comparison function |
51
+ | `Generator<T>` | Generator function (core and foundation) |
46
52
 
47
53
  ```typescript
48
54
  // Type usage examples
@@ -125,7 +131,7 @@ const nullableOpt = Optional.ofNullable<string>(null);
125
131
  const nonNullOpt = Optional.ofNonNull("hello");
126
132
 
127
133
  presentOpt.ifPresent(val => console.log(val)); // Outputs 42
128
- console.log(emptyOpt.orElse(100)); // Outputs 100
134
+ console.log(emptyOpt.get(100)); // Outputs 100
129
135
  ```
130
136
 
131
137
  ### Collector Factory Methods
@@ -136,15 +142,34 @@ console.log(emptyOpt.orElse(100)); // Outputs 100
136
142
  | `Collector.shortable(identity, interruptor, accumulator, finisher)` | Create an interruptible collector | O(1) | O(1) |
137
143
 
138
144
  ```typescript
139
- // Collector usage examples
140
- const sumCollector = Collector.full(
141
- () => 0,
142
- (sum, num) => sum + num,
143
- result => result
144
- );
145
+ // Collector conversion examples
146
+ const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
145
147
 
146
- const numbers = from([1, 2, 3, 4, 5]);
147
- const total = numbers.toUnoredered().collect(sumCollector); // 15
148
+ // Performance first: use unordered collector
149
+ const unordered = numbers
150
+ .filter(n => n > 3)
151
+ .toUnoredered();
152
+
153
+ // Sorting needed: use ordered collector
154
+ const ordered = numbers.sorted();
155
+
156
+ // Counts the number of elements
157
+ let count = Collector.full(
158
+ () => 0, // Initial value
159
+ (accumulator, element) => accumulator + element, // Accumulate
160
+ (accumulator) => accumulator // Finish
161
+ );
162
+ count.collect(from([1,2,3,4,5])); // Counts from a stream
163
+ count.collect([1,2,3,4,5]); // Counts from an iterable object
164
+
165
+ let find = Collector.shortable(
166
+ () => Optional.empty(), // Initial value
167
+ (element, index, accumulator) => accumulator.isPresent(), // Interrupt
168
+ (accumulator, element, index) => Optional.of(element), // Accumulate
169
+ (accumulator) => accumulator // Finish
170
+ );
171
+ find.collect(from([1,2,3,4,5])); // Finds the first element
172
+ find.collect([1,2,3,4,5]); // Finds the first element
148
173
  ```
149
174
 
150
175
  ### Semantic Factory Methods
@@ -168,7 +193,7 @@ blob(someBlob, 1024n)
168
193
  .toUnordered()
169
194
  .write(WritableStream)
170
195
  .then(callback) // Write stream successful
171
- .catch(writeFi); // Write stream failed
196
+ .catch(callback); // Write stream failed
172
197
 
173
198
  // Create an empty stream, won't execute until concatenated with other streams
174
199
  empty<string>()
@@ -229,6 +254,7 @@ const result = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
229
254
  .map(n => n * 2) // Multiply by 2
230
255
  .skip(1) // Skip the first
231
256
  .limit(3) // Limit to 3 elements
257
+ .toUnordered() // Convert to unordered collector
232
258
  .toArray(); // Convert to array
233
259
  // Result: [8, 12, 20]
234
260
 
@@ -242,47 +268,65 @@ const complexResult = range(1, 100, 1)
242
268
  .toArray(); // Convert to array
243
269
  ```
244
270
 
245
- ## Collector Conversion Methods
271
+ ## Semantic Conversion Methods
246
272
 
247
273
  | Method | Description | Time Complexity | Space Complexity |
248
- |------|------|------------|------------|
249
- | `toUnoredered()` | Convert to unordered collector (performance first) | O(1) | O(1) |
274
+ |------------|------------|------------|------------|
275
+ | `sorted()` | Convert to ordered collector | O(n log n) | O(n) |
276
+ | `toUnordered()` | Convert to unordered collector | O(1) | O(1) |
250
277
  | `toOrdered()` | Convert to ordered collector | O(1) | O(1) |
251
- | `sorted()` | Sort and convert to ordered collector | O(n log n) | O(n) |
278
+ | `toNumericStatistics()` | Convert to numeric statistics | O(n) | O(1) |
279
+ | `toBigintStatistics()` | Convert to bigint statistics | O(n) | O(1) |
252
280
  | `toWindow()` | Convert to window collector | O(1) | O(1) |
253
- | `toNumericStatistics()` | Convert to numerical statistics | O(1) | O(1) |
254
- | `toBigintStatistics()` | Convert to big integer statistics | O(1) | O(1) |
281
+ | `toCollectable()` | Convert to `UnorderdCollectable` | O(n) | O(1) |
282
+ | `toCollectable(mapper)` | Convert to customized collectable | O(n) | O(1) |
255
283
 
256
284
  ```typescript
257
- // Collector conversion examples
258
- const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
259
-
260
- // Performance first: use unordered collector
261
- const unordered = numbers
262
- .filter(n => n > 3)
263
- .toUnoredered();
264
-
265
- // Need sorting: use ordered collector
266
- const ordered = numbers
267
- .sorted()
268
- .toOrdered();
269
-
270
- // Statistical analysis: use statistical collector
271
- const stats = numbers
272
- .toNumericStatistics();
273
-
274
- console.log(stats.mean()); // Average value
275
- console.log(stats.median()); // Median value
276
- console.log(stats.standardDeviation()); // Standard deviation
277
-
278
- // Window operations
279
- const windowed = numbers
280
- .toWindow()
281
- .tumble(3n); // Every 3 elements form a window
282
-
283
- windowed.forEach(window => {
284
- console.log(window.toArray()); // Contents of each window
285
- });
285
+ // Convert to an ascending sorted array
286
+ from([6,4,3,5,2]) // Creates a stream
287
+ .sorted() // Sorts the stream in ascending order
288
+ .toArray(); // [2, 3, 4, 5, 6]
289
+
290
+ // Convert to a descending sorted array
291
+ from([6,4,3,5,2]) // Creates a stream
292
+ .soted((a, b) => b - a) // Sorts the stream in descending order
293
+ .toArray(); // [6, 5, 4, 3, 2]
294
+
295
+ // Redirect to a reversed array
296
+ from([6,4,3,5,2])
297
+ .redirect((element, index) => -index) // Redirects to reversed order
298
+ .toOrderd() // Keeps the redirected order
299
+ .toArray(); // [2, 5, 3, 4, 6]
300
+
301
+ // Ignore redirections to reverse array
302
+ from([6,4,3,5,2])
303
+ .redirect((element, index) => -index) // Redirects to reversed order
304
+ .toUnorderd() // Drops the redirected order. This operation will ignore `redirect`, `reverse`, `shuffle` and `translate` operations
305
+ .toArray(); // [2, 5, 3, 4, 6]
306
+
307
+ // Reverse the stream into an array
308
+ from([6, 4, 3, 5, 2])
309
+ .reverse() // Reverses the stream
310
+ .toOrdered() // Guarantees the reversed order
311
+ .toArray(); // [2, 5, 3, 4, 6]
312
+
313
+ // Overwrite the shuffled stream into an array
314
+ from([6, 4, 3, 5, 2])
315
+ .shuffle() // Shuffles the stream
316
+ .sorted() // Overwrites the shuffled order. This operation will overwrite `redirect`, `reverse`, `shuffle` and `translate` operations
317
+ .toArray(); // [2, 5, 3, 4, 6]
318
+
319
+ // Convert to window collector
320
+ from([6, 4, 3, 5, 2]).toWindow();
321
+
322
+ // Convert to numeric statistics
323
+ from([6, 4, 3, 5, 2]).toNumericStatistics();
324
+
325
+ // Convert to bigint statistics
326
+ from([6n, 4n, 3n, 5n, 2n]).toBigintStatistics();
327
+
328
+ // Defines a customized collector to collect data
329
+ let customizedCollector = from([1, 2, 3, 4, 5]).toCollectable((generator: Generator<E>) => new CustomizedCollector(generator));
286
330
  ```
287
331
 
288
332
  ## Collectable Collection Methods
@@ -336,7 +380,7 @@ const grouped = data.groupBy(
336
380
  const sum = data.reduce(0, (acc, n) => acc + n); // 30
337
381
 
338
382
  // Output operations
339
- data.join(", "); // "2, 4, 6, 8, 10"
383
+ data.join(", "); // "[2, 4, 6, 8, 10]"
340
384
  ```
341
385
 
342
386
  ## Statistical Analysis Methods
@@ -423,4 +467,7 @@ const bigIntStats = data
423
467
  3. **Memory Usage**: Sorting operations require O(n) additional space
424
468
  4. **Real-time Data**: Semantic streams are suitable for processing real-time data and support asynchronous data sources
425
469
 
426
- This library provides TypeScript developers with powerful and flexible streaming capabilities, combining the benefits of functional programming with type safety guarantees.
470
+
471
+ This library provides TypeScript developers with powerful and flexible streaming capabilities, combining the benefits of functional programming with type safety guarantees.
472
+
473
+
package/readme.ru.md CHANGED
@@ -15,34 +15,40 @@ npm install semantic-typescript
15
15
  ## Базовые типы
16
16
 
17
17
  | Тип | Описание |
18
- |-----|----------|
19
- | `Invalid<T>` | Тип, расширяющий null или undefined |
20
- | `Valid<T>` | Тип, исключающий null и undefined |
21
- | `MaybeInvalid<T>` | Тип, который может быть null или undefined |
22
- | `Primitive` | Коллекция примитивных типов |
23
- | `MaybePrimitive<T>` | Тип, который может быть примитивом |
24
- | `OptionalSymbol` | Символьный идентификатор для класса Optional |
25
- | `SemanticSymbol` | Символьный идентификатор для класса Semantic |
26
- | `CollectorsSymbol` | Символьный идентификатор для класса Collector |
27
- | `CollectableSymbol` | Символьный идентификатор для класса Collectable |
28
- | `OrderedCollectableSymbol` | Символьный идентификатор для класса OrderedCollectable |
29
- | `WindowCollectableSymbol` | Символьный идентификатор для класса WindowCollectable |
30
- | `StatisticsSymbol` | Символьный идентификатор для класса Statistics |
31
- | `NumericStatisticsSymbol` | Символьный идентификатор для класса NumericStatistics |
32
- | `BigIntStatisticsSymbol` | Символьный идентификатор для класса BigIntStatistics |
33
- | `UnorderedCollectableSymbol` | Символьный идентификатор для класса UnorderedCollectable |
34
- | `Runnable` | Функция без параметров и возвращаемого значения |
35
- | `Supplier<R>` | Функция без параметров, возвращающая R |
18
+ |------|-------------|
19
+ | `Invalid<T>` | Тип, расширяющий `null` или `undefined` |
20
+ | `Valid<T>` | Тип, исключающий `null` и `undefined` |
21
+ | `MaybeInvalid<T>` | Тип, который может быть `null` или `undefined` |
22
+ | `Primitive` | Набор примитивных типов |
23
+ | `MaybePrimitive<T>` | Тип, который может быть примитивным |
24
+ | `OptionalSymbol` | Символьный идентификатор класса `Optional` |
25
+ | `SemanticSymbol` | Символьный идентификатор класса `Semantic` |
26
+ | `CollectorsSymbol` | Символьный идентификатор класса `Collector` |
27
+ | `CollectableSymbol` | Символьный идентификатор класса `Collectable` |
28
+ | `OrderedCollectableSymbol` | Символьный идентификатор класса `OrderedCollectable` |
29
+ | `WindowCollectableSymbol` | Символьный идентификатор класса `WindowCollectable` |
30
+ | `StatisticsSymbol` | Символьный идентификатор класса `Statistics` |
31
+ | `NumericStatisticsSymbol` | Символьный идентификатор класса `NumericStatistics` |
32
+ | `BigIntStatisticsSymbol` | Символьный идентификатор класса `BigIntStatistics` |
33
+ | `UnorderedCollectableSymbol` | Символьный идентификатор класса `UnorderedCollectable` |
34
+
35
+ ## Функциональные интерфейсы
36
+
37
+ | Интерфейс | Описание |
38
+ |-----------|-------------|
39
+ | `Runnable` | Функция без параметров и без возвращаемого значения |
40
+ | `Supplier<R>` | Функция без параметров, возвращающая `R` |
36
41
  | `Functional<T, R>` | Функция преобразования с одним параметром |
37
- | `Predicate<T>` | Предикатная функция с одним параметром |
38
42
  | `BiFunctional<T, U, R>` | Функция преобразования с двумя параметрами |
39
- | `BiPredicate<T, U>` | Предикатная функция с двумя параметрами |
40
- | `Comparator<T>` | Функция сравнения |
41
43
  | `TriFunctional<T, U, V, R>` | Функция преобразования с тремя параметрами |
42
- | `Consumer<T>` | Потребительская функция с одним параметром |
43
- | `BiConsumer<T, U>` | Потребительская функция с двумя параметрами |
44
- | `TriConsumer<T, U, V>` | Потребительская функция с тремя параметрами |
45
- | `Generator<T>` | Функция-генератор |
44
+ | `Predicate<T>` | Предикатная функция с одним параметром |
45
+ | `BiPredicate<T, U>` | Предикатная функция с двумя параметрами |
46
+ | `TriPredicate<T, U, V>` | Предикатная функция с тремя параметрами |
47
+ | `Consumer<T>` | Функция-потребитель с одним параметром |
48
+ | `BiConsumer<T, U>` | Функция-потребитель с двумя параметрами |
49
+ | `TriConsumer<T, U, V>` | Функция-потребитель с тремя параметрами |
50
+ | `Comparator<T>` | Функция сравнения с двумя параметрами |
51
+ | `Generator<T>` | Генераторная функция (ядро и основа) |
46
52
 
47
53
  ```typescript
48
54
  // Примеры использования типов
@@ -136,15 +142,34 @@ console.log(emptyOpt.orElse(100)); // Выводит 100
136
142
  | `Collector.shortable(identity, interruptor, accumulator, finisher)` | Создает прерываемый сборщик | O(1) | O(1) |
137
143
 
138
144
  ```typescript
139
- // Примеры использования Collector
140
- const sumCollector = Collector.full(
141
- () => 0,
142
- (sum, num) => sum + num,
143
- result => result
144
- );
145
+ // Примеры преобразования коллекторов
146
+ const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
147
+
148
+ // Производительность в приоритете: используем неупорядоченный коллектор
149
+ const unordered = numbers
150
+ .filter(n => n > 3)
151
+ .toUnoredered();
152
+
153
+ // Нужна сортировка: используем упорядоченный коллектор
154
+ const ordered = numbers.sorted();
145
155
 
146
- const numbers = from([1, 2, 3, 4, 5]);
147
- const total = numbers.toUnoredered().collect(sumCollector); // 15
156
+ // Подсчитывает количество элементов
157
+ let count = Collector.full(
158
+ () => 0, // Начальное значение
159
+ (accumulator, element) => accumulator + element, // Аккумулировать
160
+ (accumulator) => accumulator // Завершить
161
+ );
162
+ count.collect(from([1,2,3,4,5])); // Считает из потока
163
+ count.collect([1,2,3,4,5]); // Считает из итерируемого объекта
164
+
165
+ let find = Collector.shortable(
166
+ () => Optional.empty(), // Начальное значение
167
+ (element, index, accumulator) => accumulator.isPresent(), // Прервать
168
+ (accumulator, element, index) => Optional.of(element), // Аккумулировать
169
+ (accumulator) => accumulator // Завершить
170
+ );
171
+ find.collect(from([1,2,3,4,5])); // Находит первый элемент
172
+ find.collect([1,2,3,4,5]); // Находит первый элемент
148
173
  ```
149
174
 
150
175
  ### Фабричные методы Semantic
@@ -155,6 +180,7 @@ const total = numbers.toUnoredered().collect(sumCollector); // 15
155
180
  | `empty<E>()` | Создает пустой поток | O(1) | O(1) |
156
181
  | `fill<E>(element, count)` | Создает заполненный поток | O(n) | O(1) |
157
182
  | `from<E>(iterable)` | Создает поток из итерируемого объекта | O(1) | O(1) |
183
+ | `generate<E>(element, interrupt)` | Создает поток из генератора | O(1) | O(1) |
158
184
  | `interval(period, delay?)` | Создает регулярный интервальный поток | O(1)* | O(1) |
159
185
  | `iterate<E>(generator)` | Создает поток из генератора | O(1) | O(1) |
160
186
  | `range(start, end, step)` | Создает числовой диапазонный поток | O(n) | O(1) |
@@ -231,6 +257,7 @@ const result = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
231
257
  .map(n => n * 2) // Умножает на 2
232
258
  .skip(1) // Пропускает первый
233
259
  .limit(3) // Ограничивает 3 элементами
260
+ .toUnordered() // Преобразует в неупорядоченный сборщик
234
261
  .toArray(); // Преобразует в массив
235
262
  // Результат: [8, 12, 20]
236
263
 
@@ -244,47 +271,65 @@ const complexResult = range(1, 100, 1)
244
271
  .toArray(); // Преобразует в массив
245
272
  ```
246
273
 
247
- ## Методы преобразования сборщиков
274
+ ## Семантические методы преобразования
248
275
 
249
276
  | Метод | Описание | Временная сложность | Пространственная сложность |
250
- |-------|----------|-------------------|--------------------------|
251
- | `toUnoredered()` | Преобразует в неупорядоченный сборщик (приоритет производительности) | O(1) | O(1) |
252
- | `toOrdered()` | Преобразует в упорядоченный сборщик | O(1) | O(1) |
253
- | `sorted()` | Сортирует и преобразует в упорядоченный сборщик | O(n log n) | O(n) |
254
- | `toWindow()` | Преобразует в оконный сборщик | O(1) | O(1) |
255
- | `toNumericStatistics()` | Преобразует в числовую статистику | O(1) | O(1) |
256
- | `toBigintStatistics()` | Преобразует в BigInt статистику | O(1) | O(1) |
277
+ |------------|------------|------------|------------|
278
+ | `sorted()` | Преобразовать в упорядоченный коллектор | O(n log n) | O(n) |
279
+ | `toUnordered()` | Преобразовать в неупорядоченный коллектор | O(1) | O(1) |
280
+ | `toOrdered()` | Преобразовать в упорядоченный коллектор | O(1) | O(1) |
281
+ | `toNumericStatistics()` | Преобразовать в числовую статистику | O(n) | O(1) |
282
+ | `toBigintStatistics()` | Преобразовать в статистику BigInt | O(n) | O(1) |
283
+ | `toWindow()` | Преобразовать в коллектор окон | O(1) | O(1) |
284
+ | `toCollectable()` | Преобразовать в `UnorderdCollectable` | O(n) | O(1) |
285
+ | `toCollectable(mapper)` | Преобразовать в пользовательский коллектор | O(n) | O(1) |
257
286
 
258
287
  ```typescript
259
- // Примеры преобразования сборщиков
260
- const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
261
-
262
- // Приоритет производительности: Использовать неупорядоченный сборщик
263
- const unordered = numbers
264
- .filter(n => n > 3)
265
- .toUnoredered();
266
-
267
- // Нужна сортировка: Использовать упорядоченный сборщик
268
- const ordered = numbers
269
- .sorted()
270
- .toOrdered();
271
-
272
- // Статистический анализ: Использовать статистический сборщик
273
- const stats = numbers
274
- .toNumericStatistics();
275
-
276
- console.log(stats.mean()); // Среднее значение
277
- console.log(stats.median()); // Медиана
278
- console.log(stats.standardDeviation()); // Стандартное отклонение
279
-
280
- // Оконные операции
281
- const windowed = numbers
282
- .toWindow()
283
- .tumble(3n); // Окно из 3 элементов
284
-
285
- windowed.forEach(window => {
286
- console.log(window.toArray()); // Содержимое каждого окна
287
- });
288
+ // Преобразовать в массив, отсортированный по возрастанию
289
+ from([6,4,3,5,2]) // Создаёт поток
290
+ .sorted() // Сортирует поток по возрастанию
291
+ .toArray(); // [2, 3, 4, 5, 6]
292
+
293
+ // Преобразовать в массив, отсортированный по убыванию
294
+ from([6,4,3,5,2]) // Создаёт поток
295
+ .soted((a, b) => b - a) // Сортирует поток по убыванию
296
+ .toArray(); // [6, 5, 4, 3, 2]
297
+
298
+ // Перенаправить в обратный массив
299
+ from([6,4,3,5,2])
300
+ .redirect((element, index) => -index) // Перенаправляет в обратном порядке
301
+ .toOrderd() // Сохраняет перенаправленный порядок
302
+ .toArray(); // [2, 5, 3, 4, 6]
303
+
304
+ // Игнорировать перенаправления для обращения массива
305
+ from([6,4,3,5,2])
306
+ .redirect((element, index) => -index) // Перенаправляет в обратном порядке
307
+ .toUnorderd() // Удаляет перенаправленный порядок. Эта операция игнорирует `redirect`, `reverse`, `shuffle` и `translate`
308
+ .toArray(); // [2, 5, 3, 4, 6]
309
+
310
+ // Обратить поток в массив
311
+ from([6, 4, 3, 5, 2])
312
+ .reverse() // Обращает поток
313
+ .toOrdered() // Гарантирует обращённый порядок
314
+ .toArray(); // [2, 5, 3, 4, 6]
315
+
316
+ // Перезаписать перетасованный поток в массив
317
+ from([6, 4, 3, 5, 2])
318
+ .shuffle() // Перемешивает поток
319
+ .sorted() // Перезаписывает перетасованный порядок. Эта операция перезаписывает `redirect`, `reverse`, `shuffle` и `translate`
320
+ .toArray(); // [2, 5, 3, 4, 6]
321
+
322
+ // Преобразовать в коллектор окон
323
+ from([6, 4, 3, 5, 2]).toWindow();
324
+
325
+ // Преобразовать в числовую статистику
326
+ from([6, 4, 3, 5, 2]).toNumericStatistics();
327
+
328
+ // Преобразовать в статистику BigInt
329
+ from([6n, 4n, 3n, 5n, 2n]).toBigintStatistics();
330
+
331
+ // Определить пользовательский коллектор для сбора данных
332
+ let customizedCollector = from([1, 2, 3, 4, 5]).toCollectable((generator: Generator<E>) => new CustomizedCollector(generator));
288
333
  ```
289
334
 
290
335
  ## Методы сбора Collectable