@avstantso/concepts 1.2.5 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +120 -0
- package/dist/_global/able-types.d.ts +35 -0
- package/dist/_global/converter.d.ts +18 -0
- package/dist/_global/index.d.ts +2 -0
- package/dist/export.d.ts +4 -1
- package/dist/index.js +39 -27
- package/dist/index.js.map +1 -1
- package/package.json +10 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## [1.3.0] - 2026-07-05
|
|
5
|
+
|
|
6
|
+
### Added
|
|
7
|
+
|
|
8
|
+
- `Thenable` - abstract type/check for values supporting `then`
|
|
9
|
+
- `Closable` - abstract type for values supporting `close`
|
|
10
|
+
- `Converter` - abstract `from`/`to` data converter type (with `Converter.Async` variant)
|
|
11
|
+
|
|
12
|
+
|
|
4
13
|
## [1.2.5] - 2026-06-19
|
|
5
14
|
|
|
6
15
|
### Changed
|
package/README.md
CHANGED
|
@@ -21,6 +21,9 @@ AVStantso framework concepts providing reusable design patterns and abstractions
|
|
|
21
21
|
- **Async Tasks** - Asynchronous task management utilities
|
|
22
22
|
- **Classic Enum** - Enhanced enum implementation with type safety
|
|
23
23
|
- **AbortSignal.Safe** - Extension for safe function execution with abort signals
|
|
24
|
+
- **Thenable** - Abstract type and runtime check for values supporting `then`
|
|
25
|
+
- **Closable** - Abstract type for values supporting `close`
|
|
26
|
+
- **Converter** - Abstract `from`/`to` data converter type
|
|
24
27
|
|
|
25
28
|
## Installation
|
|
26
29
|
|
|
@@ -86,6 +89,9 @@ import type { Provider, Compare, Switch } from '@avstantso/concepts';
|
|
|
86
89
|
- [Async Tasks](#async-tasks)
|
|
87
90
|
- [Classic Enum](#classic-enum)
|
|
88
91
|
- [AbortSignal.Safe](#abortsignalsafe)
|
|
92
|
+
- [Thenable](#thenable)
|
|
93
|
+
- [Closable](#closable)
|
|
94
|
+
- [Converter](#converter)
|
|
89
95
|
|
|
90
96
|
---
|
|
91
97
|
|
|
@@ -1739,6 +1745,120 @@ async function loadWithCancel(signal: AbortSignal) {
|
|
|
1739
1745
|
|
|
1740
1746
|
---
|
|
1741
1747
|
|
|
1748
|
+
## Thenable
|
|
1749
|
+
|
|
1750
|
+
Abstract type describing values that support `then`, plus a runtime type guard.
|
|
1751
|
+
|
|
1752
|
+
**Type Definition:**
|
|
1753
|
+
|
|
1754
|
+
```typescript
|
|
1755
|
+
interface Thenable {
|
|
1756
|
+
then<TOnFulfilled extends TS.Func>(
|
|
1757
|
+
onFulfilled: TOnFulfilled
|
|
1758
|
+
): Promise<Awaited<ReturnType<TOnFulfilled>>>;
|
|
1759
|
+
}
|
|
1760
|
+
```
|
|
1761
|
+
|
|
1762
|
+
**Example:**
|
|
1763
|
+
|
|
1764
|
+
```typescript
|
|
1765
|
+
import { Thenable } from '@avstantso/concepts';
|
|
1766
|
+
|
|
1767
|
+
Thenable.is(Promise.resolve(42)); // true
|
|
1768
|
+
Thenable.is({ then: () => {} }); // true
|
|
1769
|
+
|
|
1770
|
+
Thenable.is({}); // false
|
|
1771
|
+
Thenable.is(null); // false
|
|
1772
|
+
Thenable.is(42); // false
|
|
1773
|
+
```
|
|
1774
|
+
|
|
1775
|
+
**Behavior:**
|
|
1776
|
+
|
|
1777
|
+
- `Thenable.is(candidate)` checks that `candidate` is an object with a `then` property
|
|
1778
|
+
- Useful for duck-typing promise-like values without requiring `instanceof Promise`
|
|
1779
|
+
|
|
1780
|
+
---
|
|
1781
|
+
|
|
1782
|
+
## Closable
|
|
1783
|
+
|
|
1784
|
+
Abstract type for values that expose a `close` method, e.g. connections, streams, or resources.
|
|
1785
|
+
|
|
1786
|
+
**Type Definition:**
|
|
1787
|
+
|
|
1788
|
+
```typescript
|
|
1789
|
+
interface Closable<TResult = void, TParams extends TS.Arr = []> {
|
|
1790
|
+
close(...params: TParams): TResult;
|
|
1791
|
+
}
|
|
1792
|
+
```
|
|
1793
|
+
|
|
1794
|
+
**Example:**
|
|
1795
|
+
|
|
1796
|
+
```typescript
|
|
1797
|
+
import { Closable } from '@avstantso/concepts';
|
|
1798
|
+
|
|
1799
|
+
class Connection implements Closable {
|
|
1800
|
+
close(): void {
|
|
1801
|
+
// release resources
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
// Custom result and params
|
|
1806
|
+
class Session implements Closable<Promise<void>, [reason: string]> {
|
|
1807
|
+
async close(reason: string): Promise<void> {
|
|
1808
|
+
// ...
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
```
|
|
1812
|
+
|
|
1813
|
+
---
|
|
1814
|
+
|
|
1815
|
+
## Converter
|
|
1816
|
+
|
|
1817
|
+
Abstract type for a `from`/`to` data converter between an internal and an external representation.
|
|
1818
|
+
|
|
1819
|
+
**Type Definition:**
|
|
1820
|
+
|
|
1821
|
+
```typescript
|
|
1822
|
+
type Converter<TInternal, TExternal = TInternal> = {
|
|
1823
|
+
from(external: TExternal): TInternal;
|
|
1824
|
+
to(internal: TInternal): TExternal;
|
|
1825
|
+
};
|
|
1826
|
+
|
|
1827
|
+
namespace Converter {
|
|
1828
|
+
// Async variant
|
|
1829
|
+
type Async<TInternal, TExternal = TInternal> = {
|
|
1830
|
+
from(external: TExternal): Promise<Awaited<TInternal>>;
|
|
1831
|
+
to(internal: TInternal): Promise<Awaited<TExternal>>;
|
|
1832
|
+
};
|
|
1833
|
+
}
|
|
1834
|
+
```
|
|
1835
|
+
|
|
1836
|
+
**Example:**
|
|
1837
|
+
|
|
1838
|
+
```typescript
|
|
1839
|
+
import { Converter } from '@avstantso/concepts';
|
|
1840
|
+
|
|
1841
|
+
// Sync converter between a Date and its ISO string representation
|
|
1842
|
+
const dateConverter: Converter<Date, string> = {
|
|
1843
|
+
from: (iso) => new Date(iso),
|
|
1844
|
+
to: (date) => date.toISOString()
|
|
1845
|
+
};
|
|
1846
|
+
|
|
1847
|
+
const date = dateConverter.from('2026-01-01T00:00:00.000Z');
|
|
1848
|
+
const iso = dateConverter.to(date);
|
|
1849
|
+
|
|
1850
|
+
// Async converter, e.g. fetching/serializing a record by id
|
|
1851
|
+
const userConverter: Converter.Async<User, string> = {
|
|
1852
|
+
from: async (id) => fetchUser(id),
|
|
1853
|
+
to: async (user) => user.id
|
|
1854
|
+
};
|
|
1855
|
+
|
|
1856
|
+
const user = await userConverter.from('user-1');
|
|
1857
|
+
const id = await userConverter.to(user);
|
|
1858
|
+
```
|
|
1859
|
+
|
|
1860
|
+
---
|
|
1861
|
+
|
|
1742
1862
|
## Requirements
|
|
1743
1863
|
|
|
1744
1864
|
- TypeScript >= 5.0
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
declare namespace AVStantso {
|
|
2
|
+
/**
|
|
3
|
+
* Abstract type who supports `then`
|
|
4
|
+
*/
|
|
5
|
+
interface Thenable {
|
|
6
|
+
then<TOnFulfilled extends TS.Func>(onFulfilled: TOnFulfilled): Promise<Awaited<ReturnType<TOnFulfilled>>>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Abstract type who supports `close`
|
|
10
|
+
*/
|
|
11
|
+
interface Closable<TResult = void, TParams extends TS.Arr = []> {
|
|
12
|
+
/**
|
|
13
|
+
* Close action
|
|
14
|
+
*/
|
|
15
|
+
close(...params: TParams): TResult;
|
|
16
|
+
}
|
|
17
|
+
namespace Code {
|
|
18
|
+
/**
|
|
19
|
+
* @summary Features for `Thenable`
|
|
20
|
+
*/
|
|
21
|
+
interface Thenable {
|
|
22
|
+
/**
|
|
23
|
+
* Check type is `Thenable`
|
|
24
|
+
*/
|
|
25
|
+
is<T extends AVStantso.Thenable>(candidate: unknown): candidate is T;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
interface Code {
|
|
29
|
+
/**
|
|
30
|
+
* @summary Features for `Thenable`
|
|
31
|
+
*/
|
|
32
|
+
Thenable: Code.Thenable;
|
|
33
|
+
}
|
|
34
|
+
const Thenable: Code.Thenable;
|
|
35
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare namespace AVStantso {
|
|
2
|
+
/**
|
|
3
|
+
* Abstract data converter `from`/`to` external type
|
|
4
|
+
*/
|
|
5
|
+
type Converter<TInternal, TExternal = TInternal> = {
|
|
6
|
+
from(external: TExternal): TInternal;
|
|
7
|
+
to(internal: TInternal): TExternal;
|
|
8
|
+
};
|
|
9
|
+
namespace Converter {
|
|
10
|
+
/**
|
|
11
|
+
* Abstract `async` data converter `from`/`to` external type
|
|
12
|
+
*/
|
|
13
|
+
type Async<TInternal, TExternal = TInternal> = {
|
|
14
|
+
from(external: TExternal): Promise<Awaited<TInternal>>;
|
|
15
|
+
to(internal: TInternal): Promise<Awaited<TExternal>>;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
package/dist/_global/index.d.ts
CHANGED
package/dist/export.d.ts
CHANGED
|
@@ -12,5 +12,8 @@ import Override = AVStantso.Override;
|
|
|
12
12
|
import Transition = AVStantso.Transition;
|
|
13
13
|
import AsyncTasksManager = AVStantso.AsyncTasksManager;
|
|
14
14
|
import ClassicEnum = AVStantso.ClassicEnum;
|
|
15
|
+
import Thenable = AVStantso.Thenable;
|
|
16
|
+
import Closable = AVStantso.Closable;
|
|
17
|
+
import Converter = AVStantso.Converter;
|
|
15
18
|
import ValueWrap = AVStantso_ValueWrap;
|
|
16
|
-
export { Perform, Provider, Compare, Equality, Extend, Switch, Stub, Mock, Mapping, Conveyor, Override, Transition, AsyncTasksManager, ClassicEnum, ValueWrap };
|
|
19
|
+
export { Perform, Provider, Compare, Equality, Extend, Switch, Stub, Mock, Mapping, Conveyor, Override, Transition, AsyncTasksManager, ClassicEnum, Thenable, Closable, Converter, ValueWrap };
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require('@avstantso/errors');
|
|
4
4
|
require('@avstantso/js');
|
|
5
5
|
|
|
6
|
-
var AVStantso$
|
|
6
|
+
var AVStantso$f;
|
|
7
7
|
(function (AVStantso) {
|
|
8
8
|
AVStantso.Perform = avstantso._reg.Perform(({ JS }) => {
|
|
9
9
|
function isOptions(candidate) {
|
|
@@ -68,9 +68,9 @@ var AVStantso$e;
|
|
|
68
68
|
});
|
|
69
69
|
return Perform;
|
|
70
70
|
});
|
|
71
|
-
})(AVStantso$
|
|
71
|
+
})(AVStantso$f || (AVStantso$f = {}));
|
|
72
72
|
|
|
73
|
-
var AVStantso$
|
|
73
|
+
var AVStantso$e;
|
|
74
74
|
(function (AVStantso) {
|
|
75
75
|
AVStantso.Compare = avstantso._reg.Compare(({ Perform }) => {
|
|
76
76
|
function Extend(compareFunc) {
|
|
@@ -101,7 +101,7 @@ var AVStantso$d;
|
|
|
101
101
|
}
|
|
102
102
|
return { Extend, ToNulls, Select };
|
|
103
103
|
});
|
|
104
|
-
})(AVStantso$
|
|
104
|
+
})(AVStantso$e || (AVStantso$e = {}));
|
|
105
105
|
|
|
106
106
|
(function (AVStantso) {
|
|
107
107
|
avstantso._reg.Compare.Combine(({ JS, Compare: { Extend } }) => {
|
|
@@ -198,10 +198,10 @@ var AVStantso$d;
|
|
|
198
198
|
});
|
|
199
199
|
})();
|
|
200
200
|
|
|
201
|
-
var AVStantso$
|
|
201
|
+
var AVStantso$d;
|
|
202
202
|
(function (AVStantso) {
|
|
203
203
|
AVStantso.Provider = avstantso._reg.Provider({});
|
|
204
|
-
})(AVStantso$
|
|
204
|
+
})(AVStantso$d || (AVStantso$d = {}));
|
|
205
205
|
|
|
206
206
|
(function (AVStantso) {
|
|
207
207
|
avstantso._reg.Provider.Is(({ TS, JS }) => {
|
|
@@ -274,7 +274,7 @@ var AVStantso$c;
|
|
|
274
274
|
}));
|
|
275
275
|
})();
|
|
276
276
|
|
|
277
|
-
var AVStantso$
|
|
277
|
+
var AVStantso$c;
|
|
278
278
|
(function (AVStantso) {
|
|
279
279
|
AVStantso.Equality = avstantso._reg.Equality(() => {
|
|
280
280
|
const PredicateFactory = (equality) => (a, notEquals) => (b) => {
|
|
@@ -291,9 +291,9 @@ var AVStantso$b;
|
|
|
291
291
|
};
|
|
292
292
|
return { Predicate: { Factory: PredicateFactory }, From };
|
|
293
293
|
});
|
|
294
|
-
})(AVStantso$
|
|
294
|
+
})(AVStantso$c || (AVStantso$c = {}));
|
|
295
295
|
|
|
296
|
-
var AVStantso$
|
|
296
|
+
var AVStantso$b;
|
|
297
297
|
(function (AVStantso) {
|
|
298
298
|
/* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */
|
|
299
299
|
/**
|
|
@@ -342,9 +342,9 @@ var AVStantso$a;
|
|
|
342
342
|
Arbitrary: extendArbitrary
|
|
343
343
|
};
|
|
344
344
|
});
|
|
345
|
-
})(AVStantso$
|
|
345
|
+
})(AVStantso$b || (AVStantso$b = {}));
|
|
346
346
|
|
|
347
|
-
var AVStantso$
|
|
347
|
+
var AVStantso$a;
|
|
348
348
|
(function (AVStantso) {
|
|
349
349
|
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
350
350
|
AVStantso.Switch = avstantso._reg.Switch(() => {
|
|
@@ -371,9 +371,9 @@ var AVStantso$9;
|
|
|
371
371
|
});
|
|
372
372
|
};
|
|
373
373
|
});
|
|
374
|
-
})(AVStantso$
|
|
374
|
+
})(AVStantso$a || (AVStantso$a = {}));
|
|
375
375
|
|
|
376
|
-
var AVStantso$
|
|
376
|
+
var AVStantso$9;
|
|
377
377
|
(function (AVStantso) {
|
|
378
378
|
/* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */
|
|
379
379
|
AVStantso.Stub = avstantso._reg.Stub(({ X }) => {
|
|
@@ -384,9 +384,9 @@ var AVStantso$8;
|
|
|
384
384
|
Custom: customStub
|
|
385
385
|
});
|
|
386
386
|
});
|
|
387
|
-
})(AVStantso$
|
|
387
|
+
})(AVStantso$9 || (AVStantso$9 = {}));
|
|
388
388
|
|
|
389
|
-
var AVStantso$
|
|
389
|
+
var AVStantso$8;
|
|
390
390
|
(function (AVStantso) {
|
|
391
391
|
AVStantso.Mock = avstantso._reg.Mock(({ JS, X }) => {
|
|
392
392
|
function Mock(source, doNotUseMocking) {
|
|
@@ -403,9 +403,9 @@ var AVStantso$7;
|
|
|
403
403
|
}
|
|
404
404
|
return Mock;
|
|
405
405
|
});
|
|
406
|
-
})(AVStantso$
|
|
406
|
+
})(AVStantso$8 || (AVStantso$8 = {}));
|
|
407
407
|
|
|
408
|
-
var AVStantso$
|
|
408
|
+
var AVStantso$7;
|
|
409
409
|
(function (AVStantso) {
|
|
410
410
|
AVStantso.Mapping = avstantso._reg.Mapping(({ TS, JS }) => ((...params) => {
|
|
411
411
|
const subSwitch = (i) => ({
|
|
@@ -427,9 +427,9 @@ var AVStantso$6;
|
|
|
427
427
|
const kfv = keyFromValue || TS.Structure.keyByValue.bind(null, field, map);
|
|
428
428
|
return (template) => (value) => template[kfv(value)];
|
|
429
429
|
}));
|
|
430
|
-
})(AVStantso$
|
|
430
|
+
})(AVStantso$7 || (AVStantso$7 = {}));
|
|
431
431
|
|
|
432
|
-
var AVStantso$
|
|
432
|
+
var AVStantso$6;
|
|
433
433
|
(function (AVStantso) {
|
|
434
434
|
AVStantso.Conveyor = avstantso._reg.Conveyor(({ JS }) => function Conveyor(original, ...transformers) {
|
|
435
435
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -441,9 +441,9 @@ var AVStantso$5;
|
|
|
441
441
|
r = t.call(r, r);
|
|
442
442
|
return r;
|
|
443
443
|
});
|
|
444
|
-
})(AVStantso$
|
|
444
|
+
})(AVStantso$6 || (AVStantso$6 = {}));
|
|
445
445
|
|
|
446
|
-
var AVStantso$
|
|
446
|
+
var AVStantso$5;
|
|
447
447
|
(function (AVStantso) {
|
|
448
448
|
/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-explicit-any */
|
|
449
449
|
AVStantso.Override = avstantso._reg.Override(({ JS, Perform }) => {
|
|
@@ -462,9 +462,9 @@ var AVStantso$4;
|
|
|
462
462
|
Calculator
|
|
463
463
|
};
|
|
464
464
|
});
|
|
465
|
-
})(AVStantso$
|
|
465
|
+
})(AVStantso$5 || (AVStantso$5 = {}));
|
|
466
466
|
|
|
467
|
-
var AVStantso$
|
|
467
|
+
var AVStantso$4;
|
|
468
468
|
(function (AVStantso) {
|
|
469
469
|
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-function-type */
|
|
470
470
|
AVStantso.Transition = avstantso._reg.Transition(({ JS, Perform }) => {
|
|
@@ -492,7 +492,7 @@ var AVStantso$3;
|
|
|
492
492
|
}
|
|
493
493
|
return Transition.bind(null, null);
|
|
494
494
|
});
|
|
495
|
-
})(AVStantso$
|
|
495
|
+
})(AVStantso$4 || (AVStantso$4 = {}));
|
|
496
496
|
|
|
497
497
|
/**
|
|
498
498
|
* @summary Object wrap around value
|
|
@@ -529,7 +529,7 @@ avstantso.AtomicObjects.register(AVStantso_ValueWrap$1, {
|
|
|
529
529
|
clone: (instance) => instance.constructor.Clone(instance)
|
|
530
530
|
});
|
|
531
531
|
|
|
532
|
-
var AVStantso$
|
|
532
|
+
var AVStantso$3;
|
|
533
533
|
(function (AVStantso) {
|
|
534
534
|
AVStantso.AsyncTasksManager = avstantso._reg.AsyncTasksManager(({ symbolFreeze, JS }) => {
|
|
535
535
|
const symbolATM = Symbol('AsyncTasksManager');
|
|
@@ -637,9 +637,9 @@ var AVStantso$2;
|
|
|
637
637
|
});
|
|
638
638
|
return AsyncTasksManagerFactory(globalATM);
|
|
639
639
|
});
|
|
640
|
-
})(AVStantso$
|
|
640
|
+
})(AVStantso$3 || (AVStantso$3 = {}));
|
|
641
641
|
|
|
642
|
-
var AVStantso$
|
|
642
|
+
var AVStantso$2;
|
|
643
643
|
(function (AVStantso) {
|
|
644
644
|
AVStantso.ClassicEnum = avstantso._reg.ClassicEnum(({ JS }) => {
|
|
645
645
|
function entries(enumType) {
|
|
@@ -653,6 +653,16 @@ var AVStantso$1;
|
|
|
653
653
|
}
|
|
654
654
|
return { entries };
|
|
655
655
|
});
|
|
656
|
+
})(AVStantso$2 || (AVStantso$2 = {}));
|
|
657
|
+
|
|
658
|
+
var AVStantso$1;
|
|
659
|
+
(function (AVStantso) {
|
|
660
|
+
AVStantso.Thenable = avstantso._reg.Thenable(({ JS }) => {
|
|
661
|
+
function isThenable(candidate) {
|
|
662
|
+
return JS.is.object(candidate) && 'then' in candidate;
|
|
663
|
+
}
|
|
664
|
+
return { is: isThenable };
|
|
665
|
+
});
|
|
656
666
|
})(AVStantso$1 || (AVStantso$1 = {}));
|
|
657
667
|
|
|
658
668
|
Object.definePropertiesOnce(AbortSignal.prototype, {
|
|
@@ -679,6 +689,7 @@ var Override = AVStantso.Override;
|
|
|
679
689
|
var Transition = AVStantso.Transition;
|
|
680
690
|
var AsyncTasksManager = AVStantso.AsyncTasksManager;
|
|
681
691
|
var ClassicEnum = AVStantso.ClassicEnum;
|
|
692
|
+
var Thenable = AVStantso.Thenable;
|
|
682
693
|
var ValueWrap = AVStantso_ValueWrap;
|
|
683
694
|
|
|
684
695
|
exports.AsyncTasksManager = AsyncTasksManager;
|
|
@@ -694,6 +705,7 @@ exports.Perform = Perform;
|
|
|
694
705
|
exports.Provider = Provider;
|
|
695
706
|
exports.Stub = Stub;
|
|
696
707
|
exports.Switch = Switch;
|
|
708
|
+
exports.Thenable = Thenable;
|
|
697
709
|
exports.Transition = Transition;
|
|
698
710
|
exports.ValueWrap = ValueWrap;
|
|
699
711
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/_global/perform/_register.ts","../src/_global/compare/_register.ts","../src/_global/compare/combination.ts","../src/_global/compare/structures.ts","../src/_global/provider/_register.ts","../src/_global/provider/is.ts","../src/_global/provider/extract.ts","../src/_global/provider/compare.ts","../src/_global/provider/force.ts","../src/_global/equality/_register.ts","../src/_global/extend/_register.ts","../src/_global/switch/_register.ts","../src/_global/stub.ts","../src/_global/mock.ts","../src/_global/mapping/_register.ts","../src/_global/conveyor.ts","../src/_global/override.ts","../src/_global/transition.ts","../src/_global/value-wrap.ts","../src/_global/async-tasks.ts","../src/_global/classic-enum.ts","../src/_std-ext/abort-controller.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n type SysPromise<T> = Promise<T>;\n\n /* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */\n\n /**\n * @summary Value or get value function\n * @template T Value type\n * @EXAMPLE(@Perform)\n */\n export type Perform<T, TParams extends TS.Arr = never> = TS.Func<T, TParams>\n | (T extends Function ? never : T);\n\n export namespace Perform {\n export namespace Options {\n export type Is = <T, TParams extends TS.Arr = never>(\n candidate: unknown\n ) => candidate is Perform.Options<T, TParams>;\n }\n\n export interface Options<T, TParams extends TS.Arr = never> {\n afterCallback?: (r?: T) => unknown;\n params?: TParams;\n }\n\n /**\n * @summary Result of perform\n * @template P Perform type\n */\n export type Result<P extends Perform<any, any>> = P extends TS.Func<infer R>\n ? R\n : Exclude<P, TS.Func>;\n\n export namespace Promise {\n /**\n * @summary Value or get value function. Value may be a `Promise<T>`\n */\n export type Sync<T, TParams extends TS.Arr = never> = Perform<\n T | SysPromise<T>,\n TParams\n >;\n\n export namespace Sync {\n /**\n * @summary Result of sync perform promise\n * @template P Perform type\n */\n export type Result<P extends Sync<any, any>> = Awaited<Perform.Result<P>>;\n }\n\n /**\n * @summary Result of sync perform promise\n * @template P Perform type\n */\n export type Result<\n P extends Perform.Promise<any, any>\n > = Perform.Result<Awaited<Sync.Result<P>>>;\n }\n\n /**\n * @summary Value or get value function or promise of value or promise of get value function\n */\n export type Promise<T, TParams extends TS.Arr = never> =\n | Promise.Sync<T, TParams>\n | SysPromise<Perform<T, TParams>>;\n }\n\n export namespace Code {\n export namespace Perform {\n export interface Simple {\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform<T, TParams>,\n ...params: TParams\n ): T;\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform<T, TParams>,\n options?: AVStantso.Perform.Options<T, TParams>\n ): T;\n }\n\n export interface List {\n <T, TParams extends AVStantso.TS.Arr = never>(\n options: AVStantso.Perform.Options<T, TParams>,\n ...p: AVStantso.Perform<T | T[], TParams>[]\n ): T[];\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n ...p: AVStantso.Perform<T | T[], TParams>[]\n ): T[];\n }\n\n export namespace Promise {\n export interface Simple {\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform.Promise<T, TParams>,\n ...params: TParams\n ): SysPromise<T>;\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform.Promise<T, TParams>,\n options?: AVStantso.Perform.Options<T, TParams>\n ): SysPromise<T>;\n }\n\n export interface List {\n <T, TParams extends AVStantso.TS.Arr = never>(\n options: AVStantso.Perform.Options<T, TParams>,\n ...p: AVStantso.Perform.Promise<T | T[], TParams>[]\n ): SysPromise<T[]>;\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n ...p: AVStantso.Perform.Promise<T | T[], TParams>[]\n ): SysPromise<T[]>;\n }\n }\n\n /**\n * @summary `AVStantso.Perform.Promise` utility\n */\n export interface Promise extends Promise.Simple {\n List: Promise.List;\n }\n }\n\n /**\n * @summary `AVStantso.Perform` utility\n */\n export interface Perform extends Perform.Simple {\n Options: { is: AVStantso.Perform.Options.Is };\n\n List: Perform.List;\n\n /**\n * @summary `AVStantso.Perform.Promise` utility\n */\n Promise: Perform.Promise;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Perform` utility\n */\n Perform: Code.Perform;\n }\n\n export const Perform = avstantso._reg.Perform(({ JS }) => {\n function isOptions<\n T,\n TParams extends TS.Arr = never\n >(\n candidate: unknown\n ): candidate is Perform.Options<T, TParams> {\n return null !== candidate\n && JS.is.object(candidate)\n && ('afterCallback' in candidate || 'params' in candidate);\n }\n\n function parseSimpleOptions<T, TParams extends TS.Arr>(\n inParams: TS.Arr\n ): Perform.Options<T, TParams> {\n return (\n isOptions<T, TParams>(inParams[0])\n ? { params: [], ...inParams[0] }\n : { params: inParams }\n ) as Perform.Options<T, TParams>;\n }\n\n function perform<\n T,\n TParams extends TS.Arr = never\n >(\n p: Perform<T, TParams>,\n ...inParams: TS.Arr\n ): T {\n const { afterCallback, params } = parseSimpleOptions<T, TParams>(\n inParams\n );\n\n const r: T = JS.is.function(p) ? p(...params) : p;\n\n if (afterCallback) afterCallback(r);\n\n return r;\n };\n\n async function performPromise<\n T,\n TParams extends TS.Arr = never\n >(\n p: Perform.Promise<T, TParams>,\n ...inParams: TS.Arr\n ): Promise<T> {\n const pR = await Promise.resolve(p);\n\n const pP = perform<any>(pR, ...inParams);\n\n return Promise.resolve(pP);\n };\n\n function parseListOptions<T, TParams extends TS.Arr, TPerform>(\n inParams: TS.Arr\n ): [Perform.Options<T | T[], TParams>, ...TPerform[]] {\n const options: Perform.Options<T | T[], TParams> = isOptions<\n T | T[],\n TParams\n >(inParams[0])\n ? inParams.shift()\n : undefined;\n\n const params: TPerform[] = Array.isArray(inParams[0])\n ? inParams[0]\n : inParams;\n\n return [options, ...params];\n }\n\n function performList<\n T,\n TParams extends TS.Arr = never\n >(\n ...inParams: TS.Arr\n ): T[] {\n const [options, ...items] = parseListOptions<\n T,\n TParams,\n Perform<T | T[], TParams>\n >(inParams);\n\n const r: T[] = [];\n for (let i = 0; i < items.length; i++) {\n const item = perform(items[i], options);\n if (Array.isArray(item))\n r.push(...item);\n else\n r.push(item);\n }\n\n return r;\n };\n\n async function performPromiseList<\n T,\n TParams extends TS.Arr = never\n >(\n ...inParams: TS.Arr\n ): Promise<T[]> {\n const [options, ...items] = parseListOptions<\n T,\n TParams,\n Perform.Promise<T | T[], TParams>\n >(inParams);\n\n const r: T[] = [];\n for (let i = 0; i < items.length; i++) {\n const item = await performPromise(items[i], options);\n if (Array.isArray(item))\n r.push(...item);\n else\n r.push(item);\n }\n\n return r;\n };\n\n const Perform = Object.assign(\n perform,\n {\n Options: { is: isOptions },\n List: performList,\n Promise: Object.assign(\n performPromise,\n { List: performPromiseList }\n )\n }\n ) as Code.Perform;\n\n return Perform;\n });\n}\n","namespace AVStantso {\n export namespace Code {\n /**\n * @summary Compare helpers utility\n */\n export interface Compare {\n /**\n * @summary Low-lewel extend compare function. Add `Compare.Extended<TBase>`\n * @param compareFunc Function to extend\n */\n Extend<TBase>(\n compareFunc: AVStantso.Compare.Func<TBase>\n ): AVStantso.Compare<TBase>;\n\n /**\n * @summary Create low-lewel sort-part function for `undefined`, `null`, 'NaN'\n * @param allowNaN Allow check 'NaN'\n * @param nullsFirst If `true` — `undefined`, `null`, 'NaN' has higher priority\n */\n ToNulls(allowNaN?: boolean, nullsFirst?: boolean): (x: unknown) => number;\n\n /**\n * @summary Select first non-zero comparison\n * @returns First non-zero comparison or `0` if its`s not found\n */\n Select(...comparisons: AVStantso.Perform<number>[]): number;\n }\n }\n\n export interface Code {\n /**\n * @summary Compare helpers utility\n */\n Compare: Code.Compare;\n }\n\n export const Compare = avstantso._reg.Compare(({ Perform }) => {\n function Extend<TBase>(\n compareFunc: AVStantso.Compare.Func<TBase>\n ): AVStantso.Compare<TBase> {\n return Object.defineProperties(compareFunc as AVStantso.Compare<TBase>, {\n as: { value: () => compareFunc },\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n desc: { value: (a: any, b: any) => compareFunc(b, a) }\n });\n }\n\n function ToNulls(allowNaN?: boolean, nullsFirst?: boolean) {\n return (x: unknown) =>\n undefined === x\n ? -3\n : null === x\n ? -2\n : allowNaN && isNaN(x as number)\n ? -1\n : nullsFirst\n ? 0\n : -4;\n }\n\n function Select(...comparisons: AVStantso.Perform<number>[]): number {\n for (const c of comparisons) {\n const r = Perform(c);\n if (r !== 0) return r;\n }\n\n return 0;\n }\n\n return { Extend, ToNulls, Select } as Code.Compare;\n });\n}\n","namespace AVStantso {\n export namespace Compare {\n type _Combination<\n TCompares extends readonly Union[],\n R = unknown\n > = TCompares extends readonly [infer C extends Union, ...infer Rest extends readonly Union[]]\n ? _Combination<Rest, R & Extract<Value<C>[__BASE_TYPE__], object>>\n : Compare<{ [K in keyof R]: R[K] }>;\n\n /**\n * @summary Create combined structural `Compare` by array of structural compares\n * @template TCompares Array of structural compares\n * @returns Combined structural `Compare`\n * @EXAMPLE(@Compare.Combination)\n */\n export type Combination<TCompares extends Union[]> =\n _Combination<TCompares>;\n\n namespace Combination {\n //#region @Compare.Combination — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type cmpId = AVStantso.Provider.Compare.Make<'id', string>;\n type cmpName = AVStantso.Provider.Compare.Make<'name', string>;\n type cmpVersion = AVStantso.Provider.Compare.Make<'version', number>;\n\n type c = Combination<[cmpId, cmpName, cmpVersion]>;\n\n type t = CheckType<c, Compare<{ id: string; name: string; version: number; }>>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n }\n\n export namespace Code {\n export interface Compare {\n /**\n * @summary Create combined structural `Compare` by array of structural compares\n * @template R Result\n * @template TCompares Array of structural compares\n * @returns Combined structural `Compare` as `R`\n * @EXAMPLE(@Code.Compare.Combine)\n */\n Combine<\n R extends AVStantso.Compare.Combination<TCompares>,\n TCompares extends AVStantso.Compare.Union[] = AVStantso.Compare.Union[]\n >(\n ...compares: TCompares\n ): R;\n }\n }\n\n avstantso._reg.Compare.Combine(({ JS, Compare: { Extend } }) => {\n function Combine(...compares: Compare.Union[]): unknown {\n function combined(a: unknown, b: unknown) {\n for (const cRaw of compares) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const c: Compare<any> = JS.is.function(cRaw) ? cRaw : cRaw.Compare;\n\n const r = c(a, b);\n\n if (0 !== r) return r;\n }\n\n return 0;\n }\n\n return Extend(combined);\n }\n\n return Combine as unknown as Code.Compare['Combine'];\n });\n\n // eslint-disable-next-line no-constant-condition\n if (false) {\n //#region @Code.Compare.Combine — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n const cmpId = Provider.Compare('id', 'string');\n const cmpName = Provider.Compare('name', 'string');\n const cmpVersion = Provider.Compare('version', 'number');\n\n const c = Compare.Combine(cmpId, cmpName, cmpVersion);\n\n type t = CheckType<typeof c, Compare<{ id: string; name: string; version: number; }>>;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n}\n","namespace AVStantso {\n export namespace Code {\n export interface Compare {\n /**\n * @summary Structures objects compare\n */\n Structures: AVStantso.Compare<object>;\n }\n }\n\n avstantso._reg.Compare.Structures(\n ({ AtomicObjects: SimpleObjects, JS, Compare: { ToNulls, Extend } }) => {\n const fo: string[] = [JS.function, JS.object];\n const st: string[] = [JS.string, JS.symbol];\n const nm: string[] = [JS.number, JS.bigint];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function compareStructures(a: any, b: any): number {\n const t = { a: typeof a, b: typeof b };\n\n let r: number =\n ToNulls(nm.includes(t.a))(a) - ToNulls(nm.includes(t.b))(b);\n if (r !== 0) return r;\n\n function cmbBools({ a, b }: { a: boolean; b: boolean }) {\n return (a ? 1 : 0) - (b ? 1 : 0);\n }\n\n const io = {\n a: fo.includes(t.a),\n b: fo.includes(t.b)\n };\n if (io.a !== io.b) return cmbBools(io);\n\n // Object/Function\n if (io.a) {\n const ia = { a: Array.isArray(a), b: Array.isArray(a) };\n if (ia.a !== ia.b) return cmbBools(ia);\n\n // Array\n if (ia.a) {\n for (\n let la = a.length, lb = b.length, l = Math.max(la, lb), i = 0;\n i < l;\n i++\n ) {\n if (i >= la) return -1;\n if (i >= lb) return 1;\n\n r = compareStructures(a[i], b[i]);\n if (r !== 0) return r;\n }\n }\n\n // not Array\n else {\n const isSmp = { a: SimpleObjects.is(a), b: SimpleObjects.is(b) };\n if (isSmp.a !== isSmp.b) return cmbBools(isSmp);\n\n if (isSmp.a) return +a - +b;\n\n for (\n let aa = Object.entries(a),\n ab = Object.entries(b),\n la = aa.length,\n lb = ab.length,\n l = Math.max(la, lb),\n i = 0;\n i < l;\n i++\n ) {\n if (i >= la) return -1;\n if (i >= lb) return 1;\n\n const [ka, va] = aa[i];\n const [kb, vb] = ab[i];\n\n r = compareStructures(ka, kb);\n if (r !== 0) return r;\n\n r = compareStructures(va, vb);\n if (r !== 0) return r;\n }\n }\n\n return 0;\n }\n\n // Simple type\n else {\n if (st.includes(t.a) && st.includes(t.b))\n return String(a).localeCompare(String(b));\n\n if (nm.includes(t.a) && nm.includes(t.b)) return +a - +b;\n\n if (t.a !== t.b) return t.a.localeCompare(t.b);\n\n return +a - +b;\n }\n }\n\n return Extend(compareStructures);\n }\n );\n}\n","namespace AVStantso {\n export namespace Code {\n /**\n * @summary `AVStantso.Provider` utility\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface Provider {}\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Provider` utility\n */\n Provider: Code.Provider;\n }\n\n export const Provider: Code.Provider = avstantso._reg.Provider({});\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary A function signature of: `candidate` is `Provider` object\n * @template P `Provider`\n * @template K `Provider` infer key\n * @template B `Provider` infer base type of `T`\n * @see Provider type\n */\n export type Is<\n P extends Constraint,\n K extends globalThis.Extract<P[__KEY__], keyof P> = globalThis.Extract<P[__KEY__], keyof P>,\n B extends Pick<P, K> = Pick<P, K>\n > = <T extends B = B>(\n candidate: unknown\n ) => candidate is T;\n\n export namespace Is {\n /**\n * @summary Make a function signature of: `candidate` is `Provider` object\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Is<Provider<F, S>>;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n /**\n * @summary `AVStantso.Provider.Is` utility\n */\n export interface Is {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L\n ): AVStantso.Provider.Is.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr\n ): AVStantso.Provider.Is.Make<Arr>;\n }\n }\n\n export interface Provider {\n /**\n * @summary `AVStantso.Provider.Is` utility\n */\n Is: Provider.Is;\n }\n }\n\n avstantso._reg.Provider.Is(({ TS, JS }) => {\n function ProviderIs(...params: TS.Arr){\n const [key, type] = TS.Type.KLD.Parse(params);\n\n function is<P extends object>(candidate: unknown): candidate is P {\n if (null === candidate || !JS.is.object(candidate) || !(key in candidate))\n return false;\n\n const value: unknown = candidate[key as keyof typeof candidate];\n return !type || TS.Literal.IsValue(type, value);\n }\n\n return is;\n }\n\n return ProviderIs as unknown as Code.Provider.Is;\n });\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary Extract `Provider.Value` from `Provider.Union` function\n * @template P `Provider`\n * @see Provider type\n */\n export type Extract<P extends Provider.Constraint> = <\n T extends Value<Union<P>, P>\n >(\n union: Union<P>\n ) => T;\n\n export namespace Extract {\n /**\n * @summary Make extract `Provider.Value` from `Provider.Union` function\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Extract<\n Provider<F, S>\n >;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n /**\n * @summary `AVStantso.Provider.Extract` utility\n */\n export interface Extract {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L\n ): AVStantso.Provider.Extract.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr\n ): AVStantso.Provider.Extract.Make<Arr>;\n }\n }\n\n export interface Provider {\n /**\n * @summary `AVStantso.Provider.Extract` utility\n */\n Extract: Provider.Extract;\n }\n }\n\n avstantso._reg.Provider.Extract(({ TS, JS }) => {\n function ProviderExtract(...params: TS.Arr) {\n const [key, type] = TS.Type.KLD.Parse(params);\n\n function extract(union: unknown) {\n return undefined === union || null === union || TS.Literal.IsValue(type, union)\n ? union\n : JS.is.object(union)\n ? union[key as keyof typeof union]\n : undefined;\n }\n\n return extract;\n }\n\n return ProviderExtract as unknown as Code.Provider.Extract;\n });\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary Compare two `Provider.Value` from `Provider.Union` function\n * @template P `Provider`\n * @see Provider type\n */\n export type Compare<P extends Provider.Constraint> = AVStantso.Compare<\n Union<P>\n >;\n\n export namespace Compare {\n /**\n * @summary Make compare two `Provider.Value` from `Provider.Union` function\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Compare<\n Provider<F, S>\n >;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n export namespace Compare {\n /**\n * @summary `AVStantso.Provider.Compare` utility options\n */\n export type Options<\n A extends AVStantso.TS.Type.KLD = AVStantso.TS.Type.KLD\n > = {\n /**\n * @summary Extract value method\n */\n extract?: AVStantso.Provider.Extract.Make<A>;\n };\n }\n\n /**\n * @summary `AVStantso.Provider.Compare` utility\n */\n export interface Compare {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L,\n options?: Compare.Options<AVStantso.TS.Type.KLD<K, L>>\n ): AVStantso.Provider.Compare.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr,\n options?: Compare.Options<Arr>\n ): AVStantso.Provider.Compare.Make<Arr>;\n }\n }\n\n export interface Provider {\n /**\n * @summary `AVStantso.Provider.Compare` utility\n */\n Compare: Provider.Compare;\n }\n }\n\n avstantso._reg.Provider.Compare(\n ({ TS, Compare: { Extend, ToNulls }, Provider: { Extract } }) => {\n function Compare(...params: TS.Arr) {\n const L = TS.Literal;\n\n const [key, type] = TS.Type.KLD.Parse(params);\n\n const { extract } = (params[Array.isArray(params[0]) ? 1 : 2] || {\n extract: Extract(key, type)\n }) as Code.Provider.Compare.Options;\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n function compare(a: any, b: any) {\n const ea: any = extract(a);\n const eb: any = extract(b);\n\n const toNulls = ToNulls(type === L.number);\n {\n const nr = toNulls(ea) - toNulls(eb);\n if (nr) return nr;\n }\n\n if (L.Buffer === type && a instanceof Buffer && b instanceof Buffer)\n return a.toString('hex').localeCompare(b.toString('hex'));\n\n if (L.string !== type && L.symbol !== type) return +ea - +eb;\n\n const sa = String(ea || '');\n const sb = String(eb || '');\n\n return sa.localeCompare(sb);\n }\n\n return Extend(compare);\n }\n\n return Compare as unknown as Code.Provider.Compare;\n }\n );\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary Force cast to provider\n */\n export type Force<P extends Provider.Constraint> = <T extends object>(\n obj: T\n ) => Partial<Provider.Dry<P>>;\n\n export namespace Force {\n /**\n * @summary Make Force cast to provider\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Force<\n Provider<F, S>\n >;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n /**\n * @summary Force caster to provider\n */\n export interface Force {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L\n ): AVStantso.Provider.Force.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr\n ): AVStantso.Provider.Force.Make<Arr>;\n\n <P extends AVStantso.Provider.Constraint>(\n ): AVStantso.Provider.Force<P>;\n }\n }\n\n export interface Provider {\n /**\n * @summary Force caster to provider\n */\n Force: Provider.Force;\n }\n }\n\n avstantso._reg.Provider.Force(({ Generic }) => (\n function Force() {\n return Generic.Cast;\n }\n ) as unknown as Code.Provider.Force);\n}\n","namespace AVStantso {\n export namespace Code {\n export namespace Equality {\n /**\n * @summary `AVStantso.Equality.Predicate` utility\n */\n export interface Predicate {\n /**\n * @summary Factory function for `AVStantso.Equality.Predicate`\n */\n Factory<T = unknown>(\n equality: AVStantso.Equality<T>\n ): AVStantso.Equality.Predicate.Factory<T>;\n }\n }\n\n /**\n * @summary `AVStantso.Equality` utility\n */\n export interface Equality {\n /**\n * @summary `AVStantso.Equality.Predicate` utility\n */\n Predicate: Equality.Predicate;\n\n /**\n * @summary Create equality from compare\n */\n From<T = unknown>(compare: AVStantso.Compare<T>): AVStantso.Equality<T>;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Equality` utility\n */\n Equality: Code.Equality;\n }\n\n export const Equality = avstantso._reg.Equality(() => {\n const PredicateFactory: Code.Equality.Predicate['Factory'] =\n <T = unknown>(equality: Equality<T>): Equality.Predicate.Factory<T> =>\n (a, notEquals?) =>\n (b) => {\n const r = equality(a, b);\n return notEquals ? !r : !!r;\n };\n\n const From: Code.Equality['From'] = (compare) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function equality(a: any, b: any) {\n return !compare(a, b);\n }\n\n equality.as = () => equality;\n\n return equality;\n };\n\n return { Predicate: { Factory: PredicateFactory }, From } as Code.Equality;\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */\n\n export namespace Extend {\n export namespace ByRecord {\n export type Original = object | Function;\n\n export type Extender<\n TOriginal extends Original,\n TExtensionKey extends TS.Key,\n TExtensionItem,\n TExtensionValue = TExtensionKey\n > = (\n value: TExtensionValue,\n original?: TOriginal,\n key?: TExtensionKey\n ) => TExtensionItem;\n\n export type Func<\n TExtensionKey extends TS.Key,\n TExtensionValue,\n TCustomKey extends TS.Key = TExtensionKey\n > = <\n TOriginal extends Extend.ByRecord.Original,\n TExtensionItem,\n TExtension extends Record<TCustomKey, TExtensionItem>\n >(\n original: TOriginal,\n extender: Extend.ByRecord.Extender<\n TOriginal,\n TExtensionKey,\n TExtensionItem,\n TExtensionValue\n >\n ) => TOriginal & TExtension;\n\n export type Methods<\n TExtensionKey extends TS.Key,\n TExtensionValue,\n TCustomKey extends TS.Key = TExtensionKey\n > = Func<TExtensionKey, TExtensionValue, TCustomKey> & {\n static: Func<TExtensionKey, TExtensionValue, TCustomKey>;\n };\n }\n\n /**\n * @summary Add fields by record\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns Extended entity\n */\n export type ByRecord<\n TExtensionKey extends TS.Key,\n TExtensionValue\n > = Extend.ByRecord.Methods<TExtensionKey, TExtensionValue> & {\n /**\n * @summary Add fields by record with capitalized keys\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns Extended entity\n */\n Capitalized: Extend.ByRecord.Methods<\n TExtensionKey,\n TExtensionValue,\n Capitalize<Extract<TExtensionKey, string>>\n >;\n\n /**\n * @summary Add fields by record with uncapitalized keys\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns Extended entity\n */\n Uncapitalized: Extend.ByRecord.Methods<\n TExtensionKey,\n TExtensionValue,\n Uncapitalize<Extract<TExtensionKey, string>>\n >;\n };\n\n /**\n * @summary Add arbitrary properties\n * @param original Entity for extend\n * @param extention properties\n * @returns Extended entity\n */\n export type Arbitrary = <TOriginal, TExtension extends object>(\n original: TOriginal,\n extention: TExtension | (() => TExtension)\n ) => TOriginal & TExtension;\n }\n\n export namespace Code {\n /**\n * @summary `AVStantso.Extend` utility\n */\n export interface Extend {\n /**\n * @summary Add fields by record\n * @param keys Keys for add\n * @param getValue Value by key. If empty, \"value\"=\"key\"\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns (original, extender) => <Extended_Entity>\n */\n ByRecord<\n TExtensionKey extends AVStantso.TS.Key,\n TExtensionValue = TExtensionKey\n >(\n keys: TExtensionKey[] | (() => TExtensionKey[]),\n getValue?: (key: TExtensionKey) => TExtensionValue\n ): Extend.ByRecord<TExtensionKey, TExtensionValue>;\n\n /**\n * @summary Add arbitrary properties\n * @param original Entity for extend\n * @param extention properties\n * @returns Extended entity\n */\n Arbitrary: Extend.Arbitrary;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Extend` utility\n */\n Extend: Code.Extend;\n }\n\n /**\n * @summary Cast object or function for add extended fields\n * @param from as TFrom\n * @returns from as TTo\n */\n export const Extend: Code.Extend = avstantso._reg.Extend(({ JS }) => {\n function extendByRecord<\n TExtensionKey extends TS.Key,\n TExtensionValue = TExtensionKey\n >(\n keys: TExtensionKey[] | (() => TExtensionKey[]),\n getValue?: (key: TExtensionKey) => TExtensionValue\n ): Extend.ByRecord<TExtensionKey, TExtensionValue> {\n function MKM<TCustomKey extends TS.Key = TExtensionKey>(\n transformKey?: (key: TExtensionKey) => TS.Key\n ): Extend.ByRecord.Methods<TExtensionKey, TExtensionValue, TCustomKey> {\n function MK(\n isStatic?: boolean\n ): Extend.ByRecord.Func<TExtensionKey, TExtensionValue, TCustomKey> {\n const f0: any = <\n TOriginal extends Extend.ByRecord.Original,\n TExtensionItem,\n TExtension extends Record<TCustomKey, TExtensionItem>\n >(\n original: TOriginal,\n extender: Extend.ByRecord.Extender<\n TOriginal,\n TExtensionKey,\n TExtensionItem,\n TExtensionValue\n >\n ): TOriginal & TExtension => {\n (JS.is.function(keys) ? keys() : keys).forEach((key) => {\n if (transformKey && !JS.is.string(key))\n throw new AVStantso_SystemError(\n `Extend.ByRecord.Capitalized/Uncapitalized not support \"${typeof key\n }\" keys (\"${String( key )}\")`\n );\n\n const customKey = (\n transformKey ? transformKey(key) : key\n ) as TCustomKey;\n\n function _extender(this: unknown) {\n return extender.call(\n this,\n getValue ? getValue(key) : key as unknown as TExtensionValue,\n original,\n key\n );\n }\n\n if (isStatic) Object.assign(original, { [customKey]: _extender() });\n else\n Object.defineProperty(original, customKey, {\n get: _extender\n });\n });\n\n return original as TOriginal & TExtension;\n };\n\n return f0;\n }\n\n const f1: any = MK();\n f1.static = MK(true);\n return f1;\n }\n\n const f2: any = MKM();\n\n f2.Capitalized = MKM<Capitalize<Extract<TExtensionKey, string>>>((key) =>\n String(key).toCapitalized()\n );\n\n f2.Uncapitalized = MKM<Uncapitalize<Extract<TExtensionKey, string>>>(\n (key) => String(key).toUncapitalized()\n );\n\n return f2;\n }\n\n function extendArbitrary<TOriginal, TExtension extends object>(\n original: TOriginal,\n extention: TExtension | (() => TExtension)\n ): TOriginal & TExtension {\n const e = JS.is.function(extention) ? extention() : extention;\n return Object.assign(original, e) as TOriginal & TExtension;\n }\n\n return {\n ByRecord: extendByRecord,\n Arbitrary: extendArbitrary\n };\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-empty-object-type */\n\n export namespace Code {\n /**\n * @summary Switch helpers utility\n */\n export namespace Switch {\n /**\n * @summary Switch factory overload\n */\n export interface Overload<\n TKey extends AVStantso.TS.Key,\n TOptions extends AVStantso.Switch.Options & { Value?: unknown } = {}\n > {\n /**\n * @summary Switch method. `value` first\n */\n <TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n value: TOptions['Value'],\n cases: AVStantso.Switch.Cases<\n TKey,\n TOptions & { Case: TCase; KnownCases: TKnownCases }\n >\n ): TCase;\n\n /**\n * @summary Switch method. `cases` first\n */\n reversed<TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n cases: AVStantso.Switch.Cases<\n TKey,\n TOptions & { Case: TCase; KnownCases: TKnownCases }\n >,\n value: TOptions['Value']\n ): TCase;\n }\n }\n\n /**\n * @summary Switch helpers utility\n */\n export interface Switch {\n <\n TKey extends AVStantso.TS.Key,\n TOptions extends AVStantso.Switch.Options & { Value?: unknown } = {}\n >(\n getKey: (value: TOptions['Value']) => TKey | string\n ): Switch.Overload<TKey, TOptions>;\n }\n }\n\n export interface Code {\n /**\n * @summary Switch helpers utility\n */\n Switch: Code.Switch;\n }\n\n export const Switch: Code.Switch = avstantso._reg.Switch(() => {\n return <\n TKey extends TS.Key,\n TOptions extends Switch.Options & { Value?: unknown } = {}\n >(\n getKey: (value: TOptions['Value']) => TKey | string\n ) => {\n type Cases<TCase, TKnownCases extends {}> = Switch.Cases<\n TKey,\n TOptions & { Case: TCase; KnownCases: TKnownCases }\n >;\n\n function _switch<TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n value: TOptions['Value'],\n cases: Cases<TCase, TKnownCases>\n ): TCase {\n /* eslint-disable no-fallthrough */\n switch (value) {\n case undefined:\n if ('undefined' in cases) return cases.undefined;\n\n case null:\n if ('null' in cases) return cases.null;\n\n default: {\n const key = String(getKey(value));\n return key in cases ? cases[key as keyof typeof cases] as TCase : cases.default;\n }\n }\n }\n\n return Object.assign(\n _switch,\n {\n reversed<TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n cases: Cases<TCase, TKnownCases>,\n value: TOptions['Value']\n ): TCase {\n return _switch(value, cases);\n }\n }\n );\n };\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */\n\n /**\n * @summary Stub functions to prevent call undefined\n */\n export namespace Stub {\n /**\n * @summary Stub function to prevent call undefined\n * @param func Original function for call\n * @returns func or stub\n */\n export type One = <TFunc extends Function>(func: TFunc) => TFunc;\n\n /**\n * @summary Stub functions to prevent call undefined\n * @param funcs Original functions for call\n * @returns (func or stub)[]\n */\n export type Multiple = <TFuncs extends Function[]>(...funcs: TFuncs) => TFuncs;\n }\n\n export namespace Code {\n export namespace Stub {\n export type Overload = AVStantso.Stub.One & AVStantso.Stub.Multiple;\n }\n\n /**\n * @summary Stub functions to prevent call undefined\n */\n export interface Stub extends Stub.Overload {\n /**\n * @summary Stub by custom function\n */\n Custom(stub: AVStantso.Stub.One): Stub.Overload;\n }\n }\n\n export interface Code {\n /**\n * @summary Stub functions to prevent call undefined\n */\n Stub: Code.Stub;\n }\n\n export const Stub: Code.Stub = avstantso._reg.Stub(({ X }) => {\n function customStub<T extends Code.Stub.Overload>(stub: Stub.One): T {\n return (\n (...params: any[]): any => 1 === params.length ? stub(params[0]) : params.map(stub)\n ) as T;\n }\n\n return Object.assign(\n customStub((func) => func || X as any),\n {\n Custom: customStub\n }\n );\n });\n}\n","namespace AVStantso {\n export interface Code {\n /**\n * @summary Mock any props of `source`\\\n * as empty function or `undefied` non function\\\n * if not `doNotUseMocking`\n */\n Mock<T extends NodeJS.Dict<unknown>>(source?: T, doNotUseMocking?: boolean): T;\n }\n\n export const Mock: Code['Mock'] = avstantso._reg.Mock(({ JS, X }) => {\n function Mock<T extends NodeJS.Dict<unknown>>(source?: T, doNotUseMocking?: boolean): T {\n return new Proxy(source, {\n get: (target, p) => {\n const src = Reflect.get(target, p);\n return doNotUseMocking\n ? src\n : JS.is.function(src)\n ? X\n : undefined;\n }\n });\n }\n\n return Mock;\n });\n}\n","namespace AVStantso {\n\n export namespace Code {\n export namespace Mapping {\n /**\n * @summary Mapping factoru function\n */\n export interface Factory<\n TMap extends object,\n TProviderFiled extends AVStantso.Mapping.ProviderKey<TMap> = undefined\n > {\n <\n TTemplate extends AVStantso.Mapping.Template<TMap>,\n TValueBase extends AVStantso.Mapping.ValueBase<TMap, TProviderFiled> =\n AVStantso.Mapping.ValueBase<TMap, TProviderFiled>,\n TValueUnionBase extends AVStantso.Mapping.ValueUnionBase<\n TMap,\n TProviderFiled,\n TValueBase\n > = AVStantso.Mapping.ValueUnionBase<\n TMap,\n TProviderFiled,\n TValueBase\n >\n >(\n template: TTemplate\n ): AVStantso.Mapping<\n TMap,\n TTemplate,\n TProviderFiled,\n TValueBase,\n TValueUnionBase\n >;\n }\n }\n\n /**\n * @summary Mapping helpers utility\n */\n export interface Mapping {\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap] | TMap[keyof TMap][TProviderFiled]` (with `TProviderFiled`) *\n * @template TMap Type of map for create `Mapping.Factory` function\n * @template TProviderFiled Type of provider field\n * @param field Provider field. If `undefined` — provider values not supports\n * @param keyFromValue Get key from value function\n * @param map Source of `TMap` type parameter. Not used in runtime\n */\n <\n TMap extends object,\n TProviderFiled extends AVStantso.Mapping.ProviderKey<TMap> = undefined\n >(\n field: TProviderFiled,\n keyFromValue: AVStantso.Mapping.KeyFromValue<TMap>,\n map?: TMap\n ): Mapping.Factory<TMap, TProviderFiled>;\n\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap]` (without `TProviderFiled`)\n * @template TMap Type of map for create `Mapping.Factory` function\n * @param keyFromValue Get key from value function\n * @param map Source of `TMap` type parameter. Not used in runtime\n */\n <\n TMap extends object\n >(\n keyFromValue: AVStantso.Mapping.KeyFromValue<TMap>,\n map?: TMap\n ): Mapping.Factory<TMap>;\n\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap] | TMap[keyof TMap][TProviderFiled]` (with `TProviderFiled`) *\n * @template TMap Type of map for create `Mapping.Factory` function\n * @template TProviderFiled Type of provider field\n * @param field Provider field. If `undefined` — provider values not supports\n * @param map Source of `TMap` type parameter\n */\n <\n TMap extends object,\n TProviderFiled extends AVStantso.Mapping.ProviderKey<TMap>\n >(\n field: TProviderFiled,\n map: TMap\n ): Mapping.Factory<TMap, TProviderFiled>;\n\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap]` (without `TProviderFiled`)\n * @template TMap Type of map for create `Mapping.Factory` function\n * @param keyFromValue Get key from value function\n * @param map Source of `TMap` type parameter\n */\n <\n TMap extends object\n >(\n map: TMap\n ): Mapping.Factory<TMap>;\n }\n }\n\n export interface Code {\n /**\n * @summary Mapping helpers utility\n */\n Mapping: Code.Mapping;\n }\n\n export const Mapping: Code.Mapping = avstantso._reg.Mapping(({ TS, JS }) => (\n (...params: AVStantso.TS.Arr) => {\n const subSwitch = (i: number) => ({\n object: () => ({ map: params[i] }),\n function: () => ({ keyFromValue: params[i], map: params[i + 1] }),\n default: () => {\n throw new AVStantso_InvalidArgumentTypeError(\n 'AVStantso',\n 'Mapping',\n [!i && JS.string, JS.object, JS.function].pack().join('|'),\n { [`param${i}`]: params[i] }\n );\n }\n });\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n const { field, keyFromValue, map } = JS.switch<any>(params[0], {\n ...subSwitch(0),\n string: () => ({\n field: params[0],\n ...JS.switch<any>(params[1], subSwitch(1))\n }),\n undefined: () => JS.switch<any>(params[1], subSwitch(1))\n });\n\n const kfv = keyFromValue || TS.Structure.keyByValue.bind(null, field, map);\n\n return (template: any) => (value: any) => template[kfv(value)];\n }\n ) as Code.Mapping);\n}\n","namespace AVStantso {\n /**\n * @summary Conveyor of handling\n */\n export namespace Conveyor {\n /**\n * @summary Conveyor transformer\n */\n export type Transformer<T> = (from: T) => T;\n }\n\n export interface Code {\n /**\n * @summary Conveyor of handling. Ignore empty stages\n */\n Conveyor<T>(\n original: T,\n ...transformers: Conveyor.Transformer<T>[]\n ): T;\n }\n\n export const Conveyor: Code['Conveyor'] = avstantso._reg.Conveyor(({ JS }) =>\n function Conveyor<T>(\n original: T,\n ...transformers: Conveyor.Transformer<T>[]\n ): T {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let r: any = original;\n if (r && JS.is.object(r))\n r = Array.isArray(r) ? [...r] : { ...r };\n\n for (const t of transformers)\n if (t) r = t.call(r, r);\n\n return r;\n });\n}\n","namespace AVStantso {\n /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-explicit-any */\n\n /**\n * @summary Override value structure.\n * In `Calculator` if `override === undefined` will be used `original`\n */\n export namespace Override {\n export namespace TypeMap {\n export type OrT = TypeMap | TS.Type.Not.Function;\n\n export type Parse<T extends OrT> = T extends TypeMap\n ? T\n : { T: T; Ext?: undefined };\n\n export type IsSimple<\n T extends OrT,\n IfTrue = true,\n IfFalse = false\n > = TypeMap.Parse<T>['Ext'] extends undefined ? IfTrue : IfFalse;\n }\n\n export type TypeMap = {\n T: TS.Type.Not.Function;\n Ext?: {};\n };\n\n export type Context<TTypeMapOrT extends TypeMap.OrT> = {\n original: TypeMap.Parse<TTypeMapOrT>['T'];\n } & TypeMap.IsSimple<TTypeMapOrT, {}, TypeMap.Parse<TTypeMapOrT>['Ext']>;\n\n export type Union<TTypeMapOrT extends TypeMap.OrT> =\n | TypeMap.Parse<TTypeMapOrT>['T']\n | Override<TTypeMapOrT>;\n\n export namespace Calculator {\n export type Calulate<TTypeMapOrT extends TypeMap.OrT> = (\n override?: Union<TTypeMapOrT>\n ) => TypeMap.Parse<TTypeMapOrT>['T'];\n }\n\n export type Calculator<TTypeMapOrT extends TypeMap.OrT> = TypeMap.IsSimple<\n TTypeMapOrT,\n (\n context?: Context<TTypeMapOrT> | TypeMap.Parse<TTypeMapOrT>['T']\n ) => Calculator.Calulate<TTypeMapOrT>,\n (context?: Context<TTypeMapOrT>) => Calculator.Calulate<TTypeMapOrT>\n >;\n }\n\n export type Override<TTypeMapOrT extends Override.TypeMap.OrT> = (\n context?: Override.Context<TTypeMapOrT>\n ) => Override.TypeMap.Parse<TTypeMapOrT>['T'];\n\n export namespace Code {\n /**\n * @summary Override utils\n */\n export interface Override {\n isContext<TTypeMapOrT extends Override.TypeMap.OrT = Override.TypeMap>(\n candidate: unknown\n ): candidate is Override.Context<TTypeMapOrT>\n\n /**\n * @summary Calculator of override value structure\n */\n Calculator<\n TTypeMapOrT extends Override.TypeMap.OrT,\n TContextOrOriginal extends\n | Override.Context<TTypeMapOrT>\n | Override.TypeMap.Parse<TTypeMapOrT>['T']\n >(\n context?: TContextOrOriginal\n ): (\n override: Override.Union<TTypeMapOrT>\n ) => TContextOrOriginal extends { original: infer R }\n ? R\n : TContextOrOriginal;\n }\n }\n\n export interface Code {\n /**\n * @summary Override utils\n */\n Override: Code.Override;\n }\n\n export const Override: Code.Override = avstantso._reg.Override(({ JS, Perform }) => {\n function isContext(\n candidate: unknown\n ): boolean {\n return (\n null !== candidate && JS.is.object(candidate) && 'original' in candidate\n );\n }\n\n function Calculator(context?: any) {\n const c = isContext(context) ? context : { original: context };\n\n return function override(override: any): any {\n const r: any = undefined === override ? c.original : Perform(override, c);\n\n return r;\n };\n }\n\n return {\n isContext,\n Calculator\n } as Code.Override;\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-function-type */\n\n /**\n * @summary Set `state` to `begin` -> await `action` -> `state` to `end`\n */\n export namespace Transition {\n /**\n * @summary Transition action defalt template\n */\n export type Action = Perform.Promise.Sync<TS.Type.Not.Function>;\n\n /**\n * @summary Set state function. ~Like `React`\n */\n export type SetState<TState> = (newState: TState) => unknown;\n\n /**\n * @summary Transition props\n */\n export type Props<TState> = {\n state: Transition.SetState<TState>;\n begin?: TState;\n end: TState;\n };\n\n /**\n * @summary Create transition overload\n */\n export type Overload<TMetaDefaultAction extends Action = Action> = {\n /**\n * @summary Create transition\n * @returns Transition object\n */\n <TState, TDefaultAction extends TMetaDefaultAction = TMetaDefaultAction>(\n state: SetState<TState>,\n end: TState\n ): Transition<TDefaultAction>;\n\n /**\n * @summary Create transition\n * @returns Transition object\n */\n <TState, TDefaultAction extends TMetaDefaultAction = TMetaDefaultAction>(\n state: SetState<TState>,\n begin: TState,\n end: TState\n ): Transition<TDefaultAction>;\n\n /**\n * @summary Create transition\n * @returns Transition object\n */\n <TState, TDefaultAction extends TMetaDefaultAction = TMetaDefaultAction>(\n props: Props<TState>\n ): Transition<TDefaultAction>;\n };\n\n /**\n * @summary Internal definition of transition\n */\n export type Execute<TDefaultAction extends Action = Action> = {\n <\n TAction extends Action = TDefaultAction\n >(\n action: TAction\n ): Promise<Perform.Promise.Sync.Result<TAction>>;\n\n /**\n * @summary Nested transition factory\n */\n Nest: Overload<TDefaultAction>;\n };\n }\n\n export type Transition<TDefaultAction extends Transition.Action = Transition.Action> =\n Transition.Execute<TDefaultAction>;\n\n export interface Code {\n /**\n * @summary Transition factory.\\\n * Set `state` to `begin` -> await `action` -> `state` to `end`\n */\n Transition: AVStantso.Transition.Overload;\n }\n\n export const Transition: Code['Transition'] = avstantso._reg.Transition(({ JS, Perform }) => {\n function Transition(parent: Function, ...params: any[]) {\n const isProps = JS.is.object(params[0]);\n const state = isProps ? params[0].state : params[0];\n const begin = isProps ? params[0].begin : params[params.length <= 2 ? undefined : 1];\n const end = isProps ? params[0].end : params[params.length <= 2 ? 1 : 2];\n\n const hasBegin = isProps ? 'begin' in params[0] : params.length > 2;\n\n function transition(action: Transition.Action) {\n return Promise.resolve()\n .then(() => hasBegin && state(begin))\n .then(() => Perform.Promise(action))\n .finally(() => state(end));\n }\n\n const curTransition = parent\n ? function transitionNested(action: Transition.Action) {\n return parent(() => transition(action));\n }\n : transition;\n\n\n function Nest(...params: any[]) {\n return Transition(curTransition, ...params);\n }\n\n return Object.assign(\n curTransition,\n { Nest }\n );\n }\n\n return Transition.bind(null, null);\n });\n}\n","/**\n * @summary Object wrap around value\n */\nclass AVStantso_ValueWrap<TValue = unknown> {\n #value: TValue;\n\n constructor(value: TValue) {\n this.#value = value;\n }\n\n protected static Clone<\n TThis extends typeof AVStantso_ValueWrap\n >(\n this: TThis, source: InstanceType<TThis>\n ): InstanceType<TThis> {\n return Object.assign(new this(source.value), source);\n }\n\n protected toString() {\n return this.#value.toString();\n }\n\n protected valueOf() {\n return this.#value;\n }\n\n public get value() {\n return this.#value;\n }\n}\n\nif (!('AVStantso_ValueWrap' in globalThis))\n Object.defineProperties(globalThis, {\n AVStantso_ValueWrap: {\n value: AVStantso_ValueWrap,\n writable: false,\n configurable: false\n }\n });\n\nnamespace AVStantso_ValueWrap {}\n\navstantso.AtomicObjects.register(AVStantso_ValueWrap, {\n empty: () => new AVStantso_ValueWrap(null),\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n clone: (instance) => (instance.constructor as any).Clone(instance)\n});\n","namespace AVStantso {\n /**\n * @summary Async tasks manager with gracefully finalization: for async tasks, intervals & timers\n */\n export namespace AsyncTasksManager {\n /**\n * @summary Finalization options\n */\n export type FinalOptions = {\n /**\n * @summary If not `quiet` send all errors to `console.error`\n */\n quiet?: boolean;\n };\n\n /**\n * @summary Timeouts types\n */\n export namespace Timeout {\n /**\n * @summary Timeout options\n */\n export type Options = {\n /**\n * @summary Call interval/timeout callback on finalize\n */\n callOnFinal?: boolean;\n };\n\n /**\n * @summary Timeout callback\n */\n export type CallBack = (final?: boolean) => unknown;\n\n /**\n * @summary Timeout delay\n */\n export type Delay = Parameters<typeof setInterval>[1];\n\n /**\n * @summary Timeout internal map value\n */\n export type Value = [CallBack, Options];\n\n /**\n * @summary Timeout internal map\n */\n export type Map = globalThis.Map<NodeJS.Timeout, Value>;\n }\n\n /**\n * @summary AsyncTasksManager option for external usage\n */\n export type Option = {\n /**\n * @summary Async manager for register tasks.\\\n * - if falsy — not used\n * - if `AsyncTasksManager` instance — use it\n * - if truthy — use global `AsyncTasksManager`\n */\n manager?: AsyncTasksManager | boolean;\n };\n }\n\n export interface AsyncTasksManager {\n /**\n * @summary Gracefully finalization for async tasks, intervals & timers\n * @param options Finalization options\n */\n final(options?: AsyncTasksManager.FinalOptions): Promise<void>;\n\n /**\n * @summary All errors that was thrown inside `final`.\\\n * Accessible only after final is called\n */\n readonly errors?: unknown[];\n\n /**\n * @summary Wrap of standard `setInterval`\n * @param callback Callback for interval\n * @param delay Interval delay\n * @param options Interval finalization options\n * @returns Interval id\n */\n setInterval(\n callback: AsyncTasksManager.Timeout.CallBack,\n delay: AsyncTasksManager.Timeout.Delay,\n options: AsyncTasksManager.Timeout.Options\n ): ReturnType<typeof setInterval>;\n\n /**\n * @summary Wrap of standard `clearInterval`\n * @param timeout Timeout id\n */\n clearInterval: typeof clearInterval;\n\n /**\n * @summary Wrap of standard `setTimeout`\n * @param callback Callback for timeout\n * @param delay Timeout delay\n * @param options Timeout finalization options\n * @returns Timeout id\n */\n setTimeout(\n callback: AsyncTasksManager.Timeout.CallBack,\n delay: AsyncTasksManager.Timeout.Delay,\n options: AsyncTasksManager.Timeout.Options\n ): ReturnType<typeof setTimeout>;\n\n /**\n * @summary Wrap of standard `clearTimeout`\n * @param timeout Timeout id\n */\n clearTimeout: typeof clearTimeout;\n\n /**\n * @summary Register async task\n * @template T Task result type\n * @param task Async task\n * @returns Async task (registered in manager)\n */\n regTask<T>(task: Promise<T>): Promise<T>;\n }\n\n export namespace Code {\n /**\n * @summary Global Async tasks manager and utilities\n */\n export namespace AsyncTasksManager {\n export type ExtenderCallback = (instance: AVStantso.AsyncTasksManager) => void;\n\n export type Utilities = {\n /**\n * @summary Register on create extender.\\\n * Unavailable after call `AVStantso.freeze` method\n */\n _RegOnCreate?(extenderCallback: AsyncTasksManager.ExtenderCallback): void;\n\n /**\n * @summary Create new instance of `AsyncTasksManager`\n */\n Factory(): AVStantso.AsyncTasksManager;\n\n /**\n * @summary Check `candidate` is `AsyncTasksManager`\n */\n is(candidate: unknown): candidate is AVStantso.AsyncTasksManager;\n };\n }\n\n export type AsyncTasksManager = AVStantso.AsyncTasksManager & AsyncTasksManager.Utilities;\n }\n\n export interface Code {\n /**\n * @summary Global Async tasks manager and utilities\n */\n AsyncTasksManager: Code.AsyncTasksManager;\n }\n\n export const AsyncTasksManager: Code.AsyncTasksManager = avstantso._reg.AsyncTasksManager(\n ({ symbolFreeze, JS }) => {\n const symbolATM = Symbol('AsyncTasksManager');\n\n function isAsyncTasksManager(\n candidate: unknown\n ): candidate is AVStantso.AsyncTasksManager {\n return candidate && JS.is.structure(candidate) && (symbolATM in candidate);\n }\n\n const onCreateExtenders: Code.AsyncTasksManager.ExtenderCallback[] = [];\n\n function AsyncTasksManagerCreate() {\n const intervals: AsyncTasksManager.Timeout.Map = new Map();\n const timeouts: AsyncTasksManager.Timeout.Map = new Map();\n const tasks = new Set<Promise<unknown>>();\n\n const MAPS = [\n { intervals, clearInterval, setInterval },\n { timeouts, clearTimeout, setTimeout }\n ] as const;\n\n const errors: unknown[] = [];\n let isFinalizig = false;\n\n function throwIfFinal() {\n if (isFinalizig)\n throw new AVStantso_InvalidStateError(\n 'AsyncTasksManager',\n 'finalizig',\n \"Can't interact with %C on %S\"\n );\n }\n\n async function final(options: AsyncTasksManager.FinalOptions) {\n const { quiet } = options || {};\n\n isFinalizig = true;\n\n const promises = [...tasks];\n\n for (const mapInfo of MAPS) {\n const [map, clear] = Object.values(mapInfo) as [\n AsyncTasksManager.Timeout.Map,\n typeof clearInterval\n ];\n for (const [t, [c, { callOnFinal } = {}]] of map) {\n if (callOnFinal) promises.push(\n Promise.resolve(0)\n .then(() => c(true))\n .catch((e) => errors.push(e))\n );\n\n clear(t);\n }\n }\n\n await Promise.all(promises);\n\n if (!quiet)\n for (const e of errors)\n console.error(e);\n };\n\n function regTask(task: Promise<unknown>) {\n throwIfFinal();\n\n const p = task\n .catch((e) => {\n if (isFinalizig)\n errors.push(e);\n else\n throw e;\n })\n .finally(() => tasks.delete(p));\n\n tasks.add(p);\n return p;\n };\n\n const instance = {\n final,\n regTask,\n get errors() {\n return isFinalizig ? errors : undefined;\n }\n } as AsyncTasksManager;\n\n for (const MAP of MAPS) {\n const [[, map], [kClear, vClear], [kSet, vSet]] = Object.entries(MAP) as [\n [string, AsyncTasksManager.Timeout.Map],\n [string, typeof clearInterval],\n [string, typeof setInterval]\n ];\n\n Object.assign(\n instance,\n {\n [kSet](\n callback: AsyncTasksManager.Timeout.CallBack,\n delay: AsyncTasksManager.Timeout.Delay,\n options: AsyncTasksManager.Timeout.Options\n ){\n throwIfFinal();\n\n const t = vSet(callback, delay);\n map.set(t, [callback, options]);\n return t;\n },\n\n [kClear](timeout: NodeJS.Timeout) {\n vClear(timeout);\n map.delete(timeout);\n }\n }\n );\n }\n\n for (const cb of onCreateExtenders)\n cb(instance);\n\n return instance;\n }\n\n function AsyncTasksManagerFactory<T extends object>(target: object): AsyncTasksManager & T {\n let instance: AsyncTasksManager;\n\n return new Proxy(target as AsyncTasksManager & T, {\n has(target, p) {\n return symbolATM === p ? true : Reflect.has(target, p);\n },\n get(target, p) {\n const r = Reflect.get(target, p);\n if (undefined !== r) return r;\n\n if (!instance)\n instance = AsyncTasksManagerCreate();\n\n return Reflect.get(instance, p);\n }\n });\n }\n\n const globalATM = ({\n _RegOnCreate(extenderCallback: Code.AsyncTasksManager.ExtenderCallback) {\n onCreateExtenders.push(extenderCallback);\n },\n Factory: AsyncTasksManagerFactory.bind(null, {}),\n is: isAsyncTasksManager,\n [symbolFreeze]() {\n delete this._RegOnCreate;\n }\n });\n\n return AsyncTasksManagerFactory(globalATM);\n }\n );\n}\n","namespace AVStantso {\n /**\n * @summary Classic TypeScript `enum` helpers\n */\n export namespace ClassicEnum {\n /**\n * @summary `enum` `[key, value]` pairs\n */\n export type Entry<\n T,\n K extends keyof T = Extract<keyof T, string>\n > = T extends object ? [K, T[K]] : never;\n }\n\n export namespace Code {\n /**\n * @summary ClassicEnum utilities\n */\n export interface ClassicEnum {\n /**\n * @summary Get enum entries without `[value, key]` pairs\n */\n entries<T>(enumType: T): AVStantso.ClassicEnum.Entry<T>[];\n }\n }\n\n export interface Code {\n /**\n * @summary ClassicEnum utilities\n */\n ClassicEnum: Code.ClassicEnum;\n }\n\n export const ClassicEnum = avstantso._reg.ClassicEnum(({ JS }) => {\n function entries<T>(enumType: T): ClassicEnum.Entry<T>[] {\n if (!enumType || !JS.is.object(enumType)) return [];\n\n const entries: TS.Arr = [];\n for (const [k, v] of Object.entries(enumType))\n if (!/^\\d+$/.test(k)) entries.push([k, v]);\n\n return entries;\n }\n\n return { entries };\n });\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface AbortSignal {\n /**\n * @summary Stub for func/funcs if `aborted`\n * @returns Stub for func/funcs. This stub prevent func call if `aborted`\n */\n Safe: AVStantso.Stub.One & AVStantso.Stub.Multiple;\n}\n\nObject.definePropertiesOnce(AbortSignal.prototype, {\n Safe: {\n get() {\n return avstantso.Stub.Custom((func) => (\n (...params: AVStantso.TS.Arr) =>\n this.aborted || !func ? undefined : func(...params)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) as any);\n }\n }\n});\n","import Perform = AVStantso.Perform;\nimport Provider = AVStantso.Provider;\nimport Compare = AVStantso.Compare;\nimport Equality = AVStantso.Equality;\nimport Extend = AVStantso.Extend;\nimport Switch = AVStantso.Switch;\nimport Stub = AVStantso.Stub;\nimport Mock = AVStantso.Mock;\nimport Mapping = AVStantso.Mapping;\nimport Conveyor = AVStantso.Conveyor;\nimport Override = AVStantso.Override;\nimport Transition = AVStantso.Transition;\nimport AsyncTasksManager = AVStantso.AsyncTasksManager;\nimport ClassicEnum = AVStantso.ClassicEnum;\n\nimport ValueWrap = AVStantso_ValueWrap;\n// 👈 This magic line need, Override tests don't fails 🤦♂️\n// Line may be simple \\n or lines may be more one\n\nexport {\n Perform,\n Provider,\n Compare,\n Equality,\n Extend,\n Switch,\n Stub,\n Mock,\n Mapping,\n Conveyor,\n Override,\n Transition,\n AsyncTasksManager,\n ClassicEnum,\n ValueWrap\n};\n"],"names":["AVStantso","AVStantso_ValueWrap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/_global/perform/_register.ts","../src/_global/compare/_register.ts","../src/_global/compare/combination.ts","../src/_global/compare/structures.ts","../src/_global/provider/_register.ts","../src/_global/provider/is.ts","../src/_global/provider/extract.ts","../src/_global/provider/compare.ts","../src/_global/provider/force.ts","../src/_global/equality/_register.ts","../src/_global/extend/_register.ts","../src/_global/switch/_register.ts","../src/_global/stub.ts","../src/_global/mock.ts","../src/_global/mapping/_register.ts","../src/_global/conveyor.ts","../src/_global/override.ts","../src/_global/transition.ts","../src/_global/value-wrap.ts","../src/_global/async-tasks.ts","../src/_global/classic-enum.ts","../src/_global/able-types.ts","../src/_std-ext/abort-controller.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n type SysPromise<T> = Promise<T>;\n\n /* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */\n\n /**\n * @summary Value or get value function\n * @template T Value type\n * @EXAMPLE(@Perform)\n */\n export type Perform<T, TParams extends TS.Arr = never> = TS.Func<T, TParams>\n | (T extends Function ? never : T);\n\n export namespace Perform {\n export namespace Options {\n export type Is = <T, TParams extends TS.Arr = never>(\n candidate: unknown\n ) => candidate is Perform.Options<T, TParams>;\n }\n\n export interface Options<T, TParams extends TS.Arr = never> {\n afterCallback?: (r?: T) => unknown;\n params?: TParams;\n }\n\n /**\n * @summary Result of perform\n * @template P Perform type\n */\n export type Result<P extends Perform<any, any>> = P extends TS.Func<infer R>\n ? R\n : Exclude<P, TS.Func>;\n\n export namespace Promise {\n /**\n * @summary Value or get value function. Value may be a `Promise<T>`\n */\n export type Sync<T, TParams extends TS.Arr = never> = Perform<\n T | SysPromise<T>,\n TParams\n >;\n\n export namespace Sync {\n /**\n * @summary Result of sync perform promise\n * @template P Perform type\n */\n export type Result<P extends Sync<any, any>> = Awaited<Perform.Result<P>>;\n }\n\n /**\n * @summary Result of sync perform promise\n * @template P Perform type\n */\n export type Result<\n P extends Perform.Promise<any, any>\n > = Perform.Result<Awaited<Sync.Result<P>>>;\n }\n\n /**\n * @summary Value or get value function or promise of value or promise of get value function\n */\n export type Promise<T, TParams extends TS.Arr = never> =\n | Promise.Sync<T, TParams>\n | SysPromise<Perform<T, TParams>>;\n }\n\n export namespace Code {\n export namespace Perform {\n export interface Simple {\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform<T, TParams>,\n ...params: TParams\n ): T;\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform<T, TParams>,\n options?: AVStantso.Perform.Options<T, TParams>\n ): T;\n }\n\n export interface List {\n <T, TParams extends AVStantso.TS.Arr = never>(\n options: AVStantso.Perform.Options<T, TParams>,\n ...p: AVStantso.Perform<T | T[], TParams>[]\n ): T[];\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n ...p: AVStantso.Perform<T | T[], TParams>[]\n ): T[];\n }\n\n export namespace Promise {\n export interface Simple {\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform.Promise<T, TParams>,\n ...params: TParams\n ): SysPromise<T>;\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n p: AVStantso.Perform.Promise<T, TParams>,\n options?: AVStantso.Perform.Options<T, TParams>\n ): SysPromise<T>;\n }\n\n export interface List {\n <T, TParams extends AVStantso.TS.Arr = never>(\n options: AVStantso.Perform.Options<T, TParams>,\n ...p: AVStantso.Perform.Promise<T | T[], TParams>[]\n ): SysPromise<T[]>;\n\n <T, TParams extends AVStantso.TS.Arr = never>(\n ...p: AVStantso.Perform.Promise<T | T[], TParams>[]\n ): SysPromise<T[]>;\n }\n }\n\n /**\n * @summary `AVStantso.Perform.Promise` utility\n */\n export interface Promise extends Promise.Simple {\n List: Promise.List;\n }\n }\n\n /**\n * @summary `AVStantso.Perform` utility\n */\n export interface Perform extends Perform.Simple {\n Options: { is: AVStantso.Perform.Options.Is };\n\n List: Perform.List;\n\n /**\n * @summary `AVStantso.Perform.Promise` utility\n */\n Promise: Perform.Promise;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Perform` utility\n */\n Perform: Code.Perform;\n }\n\n export const Perform = avstantso._reg.Perform(({ JS }) => {\n function isOptions<\n T,\n TParams extends TS.Arr = never\n >(\n candidate: unknown\n ): candidate is Perform.Options<T, TParams> {\n return null !== candidate\n && JS.is.object(candidate)\n && ('afterCallback' in candidate || 'params' in candidate);\n }\n\n function parseSimpleOptions<T, TParams extends TS.Arr>(\n inParams: TS.Arr\n ): Perform.Options<T, TParams> {\n return (\n isOptions<T, TParams>(inParams[0])\n ? { params: [], ...inParams[0] }\n : { params: inParams }\n ) as Perform.Options<T, TParams>;\n }\n\n function perform<\n T,\n TParams extends TS.Arr = never\n >(\n p: Perform<T, TParams>,\n ...inParams: TS.Arr\n ): T {\n const { afterCallback, params } = parseSimpleOptions<T, TParams>(\n inParams\n );\n\n const r: T = JS.is.function(p) ? p(...params) : p;\n\n if (afterCallback) afterCallback(r);\n\n return r;\n };\n\n async function performPromise<\n T,\n TParams extends TS.Arr = never\n >(\n p: Perform.Promise<T, TParams>,\n ...inParams: TS.Arr\n ): Promise<T> {\n const pR = await Promise.resolve(p);\n\n const pP = perform<any>(pR, ...inParams);\n\n return Promise.resolve(pP);\n };\n\n function parseListOptions<T, TParams extends TS.Arr, TPerform>(\n inParams: TS.Arr\n ): [Perform.Options<T | T[], TParams>, ...TPerform[]] {\n const options: Perform.Options<T | T[], TParams> = isOptions<\n T | T[],\n TParams\n >(inParams[0])\n ? inParams.shift()\n : undefined;\n\n const params: TPerform[] = Array.isArray(inParams[0])\n ? inParams[0]\n : inParams;\n\n return [options, ...params];\n }\n\n function performList<\n T,\n TParams extends TS.Arr = never\n >(\n ...inParams: TS.Arr\n ): T[] {\n const [options, ...items] = parseListOptions<\n T,\n TParams,\n Perform<T | T[], TParams>\n >(inParams);\n\n const r: T[] = [];\n for (let i = 0; i < items.length; i++) {\n const item = perform(items[i], options);\n if (Array.isArray(item))\n r.push(...item);\n else\n r.push(item);\n }\n\n return r;\n };\n\n async function performPromiseList<\n T,\n TParams extends TS.Arr = never\n >(\n ...inParams: TS.Arr\n ): Promise<T[]> {\n const [options, ...items] = parseListOptions<\n T,\n TParams,\n Perform.Promise<T | T[], TParams>\n >(inParams);\n\n const r: T[] = [];\n for (let i = 0; i < items.length; i++) {\n const item = await performPromise(items[i], options);\n if (Array.isArray(item))\n r.push(...item);\n else\n r.push(item);\n }\n\n return r;\n };\n\n const Perform = Object.assign(\n perform,\n {\n Options: { is: isOptions },\n List: performList,\n Promise: Object.assign(\n performPromise,\n { List: performPromiseList }\n )\n }\n ) as Code.Perform;\n\n return Perform;\n });\n}\n","namespace AVStantso {\n export namespace Code {\n /**\n * @summary Compare helpers utility\n */\n export interface Compare {\n /**\n * @summary Low-lewel extend compare function. Add `Compare.Extended<TBase>`\n * @param compareFunc Function to extend\n */\n Extend<TBase>(\n compareFunc: AVStantso.Compare.Func<TBase>\n ): AVStantso.Compare<TBase>;\n\n /**\n * @summary Create low-lewel sort-part function for `undefined`, `null`, 'NaN'\n * @param allowNaN Allow check 'NaN'\n * @param nullsFirst If `true` — `undefined`, `null`, 'NaN' has higher priority\n */\n ToNulls(allowNaN?: boolean, nullsFirst?: boolean): (x: unknown) => number;\n\n /**\n * @summary Select first non-zero comparison\n * @returns First non-zero comparison or `0` if its`s not found\n */\n Select(...comparisons: AVStantso.Perform<number>[]): number;\n }\n }\n\n export interface Code {\n /**\n * @summary Compare helpers utility\n */\n Compare: Code.Compare;\n }\n\n export const Compare = avstantso._reg.Compare(({ Perform }) => {\n function Extend<TBase>(\n compareFunc: AVStantso.Compare.Func<TBase>\n ): AVStantso.Compare<TBase> {\n return Object.defineProperties(compareFunc as AVStantso.Compare<TBase>, {\n as: { value: () => compareFunc },\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n desc: { value: (a: any, b: any) => compareFunc(b, a) }\n });\n }\n\n function ToNulls(allowNaN?: boolean, nullsFirst?: boolean) {\n return (x: unknown) =>\n undefined === x\n ? -3\n : null === x\n ? -2\n : allowNaN && isNaN(x as number)\n ? -1\n : nullsFirst\n ? 0\n : -4;\n }\n\n function Select(...comparisons: AVStantso.Perform<number>[]): number {\n for (const c of comparisons) {\n const r = Perform(c);\n if (r !== 0) return r;\n }\n\n return 0;\n }\n\n return { Extend, ToNulls, Select } as Code.Compare;\n });\n}\n","namespace AVStantso {\n export namespace Compare {\n type _Combination<\n TCompares extends readonly Union[],\n R = unknown\n > = TCompares extends readonly [infer C extends Union, ...infer Rest extends readonly Union[]]\n ? _Combination<Rest, R & Extract<Value<C>[__BASE_TYPE__], object>>\n : Compare<{ [K in keyof R]: R[K] }>;\n\n /**\n * @summary Create combined structural `Compare` by array of structural compares\n * @template TCompares Array of structural compares\n * @returns Combined structural `Compare`\n * @EXAMPLE(@Compare.Combination)\n */\n export type Combination<TCompares extends Union[]> =\n _Combination<TCompares>;\n\n namespace Combination {\n //#region @Compare.Combination — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type cmpId = AVStantso.Provider.Compare.Make<'id', string>;\n type cmpName = AVStantso.Provider.Compare.Make<'name', string>;\n type cmpVersion = AVStantso.Provider.Compare.Make<'version', number>;\n\n type c = Combination<[cmpId, cmpName, cmpVersion]>;\n\n type t = CheckType<c, Compare<{ id: string; name: string; version: number; }>>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n }\n\n export namespace Code {\n export interface Compare {\n /**\n * @summary Create combined structural `Compare` by array of structural compares\n * @template R Result\n * @template TCompares Array of structural compares\n * @returns Combined structural `Compare` as `R`\n * @EXAMPLE(@Code.Compare.Combine)\n */\n Combine<\n R extends AVStantso.Compare.Combination<TCompares>,\n TCompares extends AVStantso.Compare.Union[] = AVStantso.Compare.Union[]\n >(\n ...compares: TCompares\n ): R;\n }\n }\n\n avstantso._reg.Compare.Combine(({ JS, Compare: { Extend } }) => {\n function Combine(...compares: Compare.Union[]): unknown {\n function combined(a: unknown, b: unknown) {\n for (const cRaw of compares) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const c: Compare<any> = JS.is.function(cRaw) ? cRaw : cRaw.Compare;\n\n const r = c(a, b);\n\n if (0 !== r) return r;\n }\n\n return 0;\n }\n\n return Extend(combined);\n }\n\n return Combine as unknown as Code.Compare['Combine'];\n });\n\n // eslint-disable-next-line no-constant-condition\n if (false) {\n //#region @Code.Compare.Combine — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n const cmpId = Provider.Compare('id', 'string');\n const cmpName = Provider.Compare('name', 'string');\n const cmpVersion = Provider.Compare('version', 'number');\n\n const c = Compare.Combine(cmpId, cmpName, cmpVersion);\n\n type t = CheckType<typeof c, Compare<{ id: string; name: string; version: number; }>>;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n}\n","namespace AVStantso {\n export namespace Code {\n export interface Compare {\n /**\n * @summary Structures objects compare\n */\n Structures: AVStantso.Compare<object>;\n }\n }\n\n avstantso._reg.Compare.Structures(\n ({ AtomicObjects: SimpleObjects, JS, Compare: { ToNulls, Extend } }) => {\n const fo: string[] = [JS.function, JS.object];\n const st: string[] = [JS.string, JS.symbol];\n const nm: string[] = [JS.number, JS.bigint];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function compareStructures(a: any, b: any): number {\n const t = { a: typeof a, b: typeof b };\n\n let r: number =\n ToNulls(nm.includes(t.a))(a) - ToNulls(nm.includes(t.b))(b);\n if (r !== 0) return r;\n\n function cmbBools({ a, b }: { a: boolean; b: boolean }) {\n return (a ? 1 : 0) - (b ? 1 : 0);\n }\n\n const io = {\n a: fo.includes(t.a),\n b: fo.includes(t.b)\n };\n if (io.a !== io.b) return cmbBools(io);\n\n // Object/Function\n if (io.a) {\n const ia = { a: Array.isArray(a), b: Array.isArray(a) };\n if (ia.a !== ia.b) return cmbBools(ia);\n\n // Array\n if (ia.a) {\n for (\n let la = a.length, lb = b.length, l = Math.max(la, lb), i = 0;\n i < l;\n i++\n ) {\n if (i >= la) return -1;\n if (i >= lb) return 1;\n\n r = compareStructures(a[i], b[i]);\n if (r !== 0) return r;\n }\n }\n\n // not Array\n else {\n const isSmp = { a: SimpleObjects.is(a), b: SimpleObjects.is(b) };\n if (isSmp.a !== isSmp.b) return cmbBools(isSmp);\n\n if (isSmp.a) return +a - +b;\n\n for (\n let aa = Object.entries(a),\n ab = Object.entries(b),\n la = aa.length,\n lb = ab.length,\n l = Math.max(la, lb),\n i = 0;\n i < l;\n i++\n ) {\n if (i >= la) return -1;\n if (i >= lb) return 1;\n\n const [ka, va] = aa[i];\n const [kb, vb] = ab[i];\n\n r = compareStructures(ka, kb);\n if (r !== 0) return r;\n\n r = compareStructures(va, vb);\n if (r !== 0) return r;\n }\n }\n\n return 0;\n }\n\n // Simple type\n else {\n if (st.includes(t.a) && st.includes(t.b))\n return String(a).localeCompare(String(b));\n\n if (nm.includes(t.a) && nm.includes(t.b)) return +a - +b;\n\n if (t.a !== t.b) return t.a.localeCompare(t.b);\n\n return +a - +b;\n }\n }\n\n return Extend(compareStructures);\n }\n );\n}\n","namespace AVStantso {\n export namespace Code {\n /**\n * @summary `AVStantso.Provider` utility\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface Provider {}\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Provider` utility\n */\n Provider: Code.Provider;\n }\n\n export const Provider: Code.Provider = avstantso._reg.Provider({});\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary A function signature of: `candidate` is `Provider` object\n * @template P `Provider`\n * @template K `Provider` infer key\n * @template B `Provider` infer base type of `T`\n * @see Provider type\n */\n export type Is<\n P extends Constraint,\n K extends globalThis.Extract<P[__KEY__], keyof P> = globalThis.Extract<P[__KEY__], keyof P>,\n B extends Pick<P, K> = Pick<P, K>\n > = <T extends B = B>(\n candidate: unknown\n ) => candidate is T;\n\n export namespace Is {\n /**\n * @summary Make a function signature of: `candidate` is `Provider` object\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Is<Provider<F, S>>;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n /**\n * @summary `AVStantso.Provider.Is` utility\n */\n export interface Is {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L\n ): AVStantso.Provider.Is.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr\n ): AVStantso.Provider.Is.Make<Arr>;\n }\n }\n\n export interface Provider {\n /**\n * @summary `AVStantso.Provider.Is` utility\n */\n Is: Provider.Is;\n }\n }\n\n avstantso._reg.Provider.Is(({ TS, JS }) => {\n function ProviderIs(...params: TS.Arr){\n const [key, type] = TS.Type.KLD.Parse(params);\n\n function is<P extends object>(candidate: unknown): candidate is P {\n if (null === candidate || !JS.is.object(candidate) || !(key in candidate))\n return false;\n\n const value: unknown = candidate[key as keyof typeof candidate];\n return !type || TS.Literal.IsValue(type, value);\n }\n\n return is;\n }\n\n return ProviderIs as unknown as Code.Provider.Is;\n });\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary Extract `Provider.Value` from `Provider.Union` function\n * @template P `Provider`\n * @see Provider type\n */\n export type Extract<P extends Provider.Constraint> = <\n T extends Value<Union<P>, P>\n >(\n union: Union<P>\n ) => T;\n\n export namespace Extract {\n /**\n * @summary Make extract `Provider.Value` from `Provider.Union` function\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Extract<\n Provider<F, S>\n >;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n /**\n * @summary `AVStantso.Provider.Extract` utility\n */\n export interface Extract {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L\n ): AVStantso.Provider.Extract.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr\n ): AVStantso.Provider.Extract.Make<Arr>;\n }\n }\n\n export interface Provider {\n /**\n * @summary `AVStantso.Provider.Extract` utility\n */\n Extract: Provider.Extract;\n }\n }\n\n avstantso._reg.Provider.Extract(({ TS, JS }) => {\n function ProviderExtract(...params: TS.Arr) {\n const [key, type] = TS.Type.KLD.Parse(params);\n\n function extract(union: unknown) {\n return undefined === union || null === union || TS.Literal.IsValue(type, union)\n ? union\n : JS.is.object(union)\n ? union[key as keyof typeof union]\n : undefined;\n }\n\n return extract;\n }\n\n return ProviderExtract as unknown as Code.Provider.Extract;\n });\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary Compare two `Provider.Value` from `Provider.Union` function\n * @template P `Provider`\n * @see Provider type\n */\n export type Compare<P extends Provider.Constraint> = AVStantso.Compare<\n Union<P>\n >;\n\n export namespace Compare {\n /**\n * @summary Make compare two `Provider.Value` from `Provider.Union` function\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Compare<\n Provider<F, S>\n >;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n export namespace Compare {\n /**\n * @summary `AVStantso.Provider.Compare` utility options\n */\n export type Options<\n A extends AVStantso.TS.Type.KLD = AVStantso.TS.Type.KLD\n > = {\n /**\n * @summary Extract value method\n */\n extract?: AVStantso.Provider.Extract.Make<A>;\n };\n }\n\n /**\n * @summary `AVStantso.Provider.Compare` utility\n */\n export interface Compare {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L,\n options?: Compare.Options<AVStantso.TS.Type.KLD<K, L>>\n ): AVStantso.Provider.Compare.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr,\n options?: Compare.Options<Arr>\n ): AVStantso.Provider.Compare.Make<Arr>;\n }\n }\n\n export interface Provider {\n /**\n * @summary `AVStantso.Provider.Compare` utility\n */\n Compare: Provider.Compare;\n }\n }\n\n avstantso._reg.Provider.Compare(\n ({ TS, Compare: { Extend, ToNulls }, Provider: { Extract } }) => {\n function Compare(...params: TS.Arr) {\n const L = TS.Literal;\n\n const [key, type] = TS.Type.KLD.Parse(params);\n\n const { extract } = (params[Array.isArray(params[0]) ? 1 : 2] || {\n extract: Extract(key, type)\n }) as Code.Provider.Compare.Options;\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n function compare(a: any, b: any) {\n const ea: any = extract(a);\n const eb: any = extract(b);\n\n const toNulls = ToNulls(type === L.number);\n {\n const nr = toNulls(ea) - toNulls(eb);\n if (nr) return nr;\n }\n\n if (L.Buffer === type && a instanceof Buffer && b instanceof Buffer)\n return a.toString('hex').localeCompare(b.toString('hex'));\n\n if (L.string !== type && L.symbol !== type) return +ea - +eb;\n\n const sa = String(ea || '');\n const sb = String(eb || '');\n\n return sa.localeCompare(sb);\n }\n\n return Extend(compare);\n }\n\n return Compare as unknown as Code.Provider.Compare;\n }\n );\n}\n","namespace AVStantso {\n export namespace Provider {\n /**\n * @summary Force cast to provider\n */\n export type Force<P extends Provider.Constraint> = <T extends object>(\n obj: T\n ) => Partial<Provider.Dry<P>>;\n\n export namespace Force {\n /**\n * @summary Make Force cast to provider\n * @template F First `Provider` param\n * @template S Second `Provider` param\n * @see Provider type\n */\n export type Make<F extends First, S = undefined> = Force<\n Provider<F, S>\n >;\n }\n }\n\n export namespace Code {\n export namespace Provider {\n /**\n * @summary Force caster to provider\n */\n export interface Force {\n <K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type?: L\n ): AVStantso.Provider.Force.Make<K, L>;\n\n <Arr extends AVStantso.TS.Type.KLD>(\n def: Arr\n ): AVStantso.Provider.Force.Make<Arr>;\n\n <P extends AVStantso.Provider.Constraint>(\n ): AVStantso.Provider.Force<P>;\n }\n }\n\n export interface Provider {\n /**\n * @summary Force caster to provider\n */\n Force: Provider.Force;\n }\n }\n\n avstantso._reg.Provider.Force(({ Generic }) => (\n function Force() {\n return Generic.Cast;\n }\n ) as unknown as Code.Provider.Force);\n}\n","namespace AVStantso {\n export namespace Code {\n export namespace Equality {\n /**\n * @summary `AVStantso.Equality.Predicate` utility\n */\n export interface Predicate {\n /**\n * @summary Factory function for `AVStantso.Equality.Predicate`\n */\n Factory<T = unknown>(\n equality: AVStantso.Equality<T>\n ): AVStantso.Equality.Predicate.Factory<T>;\n }\n }\n\n /**\n * @summary `AVStantso.Equality` utility\n */\n export interface Equality {\n /**\n * @summary `AVStantso.Equality.Predicate` utility\n */\n Predicate: Equality.Predicate;\n\n /**\n * @summary Create equality from compare\n */\n From<T = unknown>(compare: AVStantso.Compare<T>): AVStantso.Equality<T>;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Equality` utility\n */\n Equality: Code.Equality;\n }\n\n export const Equality = avstantso._reg.Equality(() => {\n const PredicateFactory: Code.Equality.Predicate['Factory'] =\n <T = unknown>(equality: Equality<T>): Equality.Predicate.Factory<T> =>\n (a, notEquals?) =>\n (b) => {\n const r = equality(a, b);\n return notEquals ? !r : !!r;\n };\n\n const From: Code.Equality['From'] = (compare) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function equality(a: any, b: any) {\n return !compare(a, b);\n }\n\n equality.as = () => equality;\n\n return equality;\n };\n\n return { Predicate: { Factory: PredicateFactory }, From } as Code.Equality;\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */\n\n export namespace Extend {\n export namespace ByRecord {\n export type Original = object | Function;\n\n export type Extender<\n TOriginal extends Original,\n TExtensionKey extends TS.Key,\n TExtensionItem,\n TExtensionValue = TExtensionKey\n > = (\n value: TExtensionValue,\n original?: TOriginal,\n key?: TExtensionKey\n ) => TExtensionItem;\n\n export type Func<\n TExtensionKey extends TS.Key,\n TExtensionValue,\n TCustomKey extends TS.Key = TExtensionKey\n > = <\n TOriginal extends Extend.ByRecord.Original,\n TExtensionItem,\n TExtension extends Record<TCustomKey, TExtensionItem>\n >(\n original: TOriginal,\n extender: Extend.ByRecord.Extender<\n TOriginal,\n TExtensionKey,\n TExtensionItem,\n TExtensionValue\n >\n ) => TOriginal & TExtension;\n\n export type Methods<\n TExtensionKey extends TS.Key,\n TExtensionValue,\n TCustomKey extends TS.Key = TExtensionKey\n > = Func<TExtensionKey, TExtensionValue, TCustomKey> & {\n static: Func<TExtensionKey, TExtensionValue, TCustomKey>;\n };\n }\n\n /**\n * @summary Add fields by record\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns Extended entity\n */\n export type ByRecord<\n TExtensionKey extends TS.Key,\n TExtensionValue\n > = Extend.ByRecord.Methods<TExtensionKey, TExtensionValue> & {\n /**\n * @summary Add fields by record with capitalized keys\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns Extended entity\n */\n Capitalized: Extend.ByRecord.Methods<\n TExtensionKey,\n TExtensionValue,\n Capitalize<Extract<TExtensionKey, string>>\n >;\n\n /**\n * @summary Add fields by record with uncapitalized keys\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns Extended entity\n */\n Uncapitalized: Extend.ByRecord.Methods<\n TExtensionKey,\n TExtensionValue,\n Uncapitalize<Extract<TExtensionKey, string>>\n >;\n };\n\n /**\n * @summary Add arbitrary properties\n * @param original Entity for extend\n * @param extention properties\n * @returns Extended entity\n */\n export type Arbitrary = <TOriginal, TExtension extends object>(\n original: TOriginal,\n extention: TExtension | (() => TExtension)\n ) => TOriginal & TExtension;\n }\n\n export namespace Code {\n /**\n * @summary `AVStantso.Extend` utility\n */\n export interface Extend {\n /**\n * @summary Add fields by record\n * @param keys Keys for add\n * @param getValue Value by key. If empty, \"value\"=\"key\"\n * @param original Entity for extend\n * @param extender Addition item by key\n * @returns (original, extender) => <Extended_Entity>\n */\n ByRecord<\n TExtensionKey extends AVStantso.TS.Key,\n TExtensionValue = TExtensionKey\n >(\n keys: TExtensionKey[] | (() => TExtensionKey[]),\n getValue?: (key: TExtensionKey) => TExtensionValue\n ): Extend.ByRecord<TExtensionKey, TExtensionValue>;\n\n /**\n * @summary Add arbitrary properties\n * @param original Entity for extend\n * @param extention properties\n * @returns Extended entity\n */\n Arbitrary: Extend.Arbitrary;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.Extend` utility\n */\n Extend: Code.Extend;\n }\n\n /**\n * @summary Cast object or function for add extended fields\n * @param from as TFrom\n * @returns from as TTo\n */\n export const Extend: Code.Extend = avstantso._reg.Extend(({ JS }) => {\n function extendByRecord<\n TExtensionKey extends TS.Key,\n TExtensionValue = TExtensionKey\n >(\n keys: TExtensionKey[] | (() => TExtensionKey[]),\n getValue?: (key: TExtensionKey) => TExtensionValue\n ): Extend.ByRecord<TExtensionKey, TExtensionValue> {\n function MKM<TCustomKey extends TS.Key = TExtensionKey>(\n transformKey?: (key: TExtensionKey) => TS.Key\n ): Extend.ByRecord.Methods<TExtensionKey, TExtensionValue, TCustomKey> {\n function MK(\n isStatic?: boolean\n ): Extend.ByRecord.Func<TExtensionKey, TExtensionValue, TCustomKey> {\n const f0: any = <\n TOriginal extends Extend.ByRecord.Original,\n TExtensionItem,\n TExtension extends Record<TCustomKey, TExtensionItem>\n >(\n original: TOriginal,\n extender: Extend.ByRecord.Extender<\n TOriginal,\n TExtensionKey,\n TExtensionItem,\n TExtensionValue\n >\n ): TOriginal & TExtension => {\n (JS.is.function(keys) ? keys() : keys).forEach((key) => {\n if (transformKey && !JS.is.string(key))\n throw new AVStantso_SystemError(\n `Extend.ByRecord.Capitalized/Uncapitalized not support \"${typeof key\n }\" keys (\"${String( key )}\")`\n );\n\n const customKey = (\n transformKey ? transformKey(key) : key\n ) as TCustomKey;\n\n function _extender(this: unknown) {\n return extender.call(\n this,\n getValue ? getValue(key) : key as unknown as TExtensionValue,\n original,\n key\n );\n }\n\n if (isStatic) Object.assign(original, { [customKey]: _extender() });\n else\n Object.defineProperty(original, customKey, {\n get: _extender\n });\n });\n\n return original as TOriginal & TExtension;\n };\n\n return f0;\n }\n\n const f1: any = MK();\n f1.static = MK(true);\n return f1;\n }\n\n const f2: any = MKM();\n\n f2.Capitalized = MKM<Capitalize<Extract<TExtensionKey, string>>>((key) =>\n String(key).toCapitalized()\n );\n\n f2.Uncapitalized = MKM<Uncapitalize<Extract<TExtensionKey, string>>>(\n (key) => String(key).toUncapitalized()\n );\n\n return f2;\n }\n\n function extendArbitrary<TOriginal, TExtension extends object>(\n original: TOriginal,\n extention: TExtension | (() => TExtension)\n ): TOriginal & TExtension {\n const e = JS.is.function(extention) ? extention() : extention;\n return Object.assign(original, e) as TOriginal & TExtension;\n }\n\n return {\n ByRecord: extendByRecord,\n Arbitrary: extendArbitrary\n };\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-empty-object-type */\n\n export namespace Code {\n /**\n * @summary Switch helpers utility\n */\n export namespace Switch {\n /**\n * @summary Switch factory overload\n */\n export interface Overload<\n TKey extends AVStantso.TS.Key,\n TOptions extends AVStantso.Switch.Options & { Value?: unknown } = {}\n > {\n /**\n * @summary Switch method. `value` first\n */\n <TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n value: TOptions['Value'],\n cases: AVStantso.Switch.Cases<\n TKey,\n TOptions & { Case: TCase; KnownCases: TKnownCases }\n >\n ): TCase;\n\n /**\n * @summary Switch method. `cases` first\n */\n reversed<TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n cases: AVStantso.Switch.Cases<\n TKey,\n TOptions & { Case: TCase; KnownCases: TKnownCases }\n >,\n value: TOptions['Value']\n ): TCase;\n }\n }\n\n /**\n * @summary Switch helpers utility\n */\n export interface Switch {\n <\n TKey extends AVStantso.TS.Key,\n TOptions extends AVStantso.Switch.Options & { Value?: unknown } = {}\n >(\n getKey: (value: TOptions['Value']) => TKey | string\n ): Switch.Overload<TKey, TOptions>;\n }\n }\n\n export interface Code {\n /**\n * @summary Switch helpers utility\n */\n Switch: Code.Switch;\n }\n\n export const Switch: Code.Switch = avstantso._reg.Switch(() => {\n return <\n TKey extends TS.Key,\n TOptions extends Switch.Options & { Value?: unknown } = {}\n >(\n getKey: (value: TOptions['Value']) => TKey | string\n ) => {\n type Cases<TCase, TKnownCases extends {}> = Switch.Cases<\n TKey,\n TOptions & { Case: TCase; KnownCases: TKnownCases }\n >;\n\n function _switch<TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n value: TOptions['Value'],\n cases: Cases<TCase, TKnownCases>\n ): TCase {\n /* eslint-disable no-fallthrough */\n switch (value) {\n case undefined:\n if ('undefined' in cases) return cases.undefined;\n\n case null:\n if ('null' in cases) return cases.null;\n\n default: {\n const key = String(getKey(value));\n return key in cases ? cases[key as keyof typeof cases] as TCase : cases.default;\n }\n }\n }\n\n return Object.assign(\n _switch,\n {\n reversed<TCase, TKnownCases extends {} = Record<TKey, TCase>>(\n cases: Cases<TCase, TKnownCases>,\n value: TOptions['Value']\n ): TCase {\n return _switch(value, cases);\n }\n }\n );\n };\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any */\n\n /**\n * @summary Stub functions to prevent call undefined\n */\n export namespace Stub {\n /**\n * @summary Stub function to prevent call undefined\n * @param func Original function for call\n * @returns func or stub\n */\n export type One = <TFunc extends Function>(func: TFunc) => TFunc;\n\n /**\n * @summary Stub functions to prevent call undefined\n * @param funcs Original functions for call\n * @returns (func or stub)[]\n */\n export type Multiple = <TFuncs extends Function[]>(...funcs: TFuncs) => TFuncs;\n }\n\n export namespace Code {\n export namespace Stub {\n export type Overload = AVStantso.Stub.One & AVStantso.Stub.Multiple;\n }\n\n /**\n * @summary Stub functions to prevent call undefined\n */\n export interface Stub extends Stub.Overload {\n /**\n * @summary Stub by custom function\n */\n Custom(stub: AVStantso.Stub.One): Stub.Overload;\n }\n }\n\n export interface Code {\n /**\n * @summary Stub functions to prevent call undefined\n */\n Stub: Code.Stub;\n }\n\n export const Stub: Code.Stub = avstantso._reg.Stub(({ X }) => {\n function customStub<T extends Code.Stub.Overload>(stub: Stub.One): T {\n return (\n (...params: any[]): any => 1 === params.length ? stub(params[0]) : params.map(stub)\n ) as T;\n }\n\n return Object.assign(\n customStub((func) => func || X as any),\n {\n Custom: customStub\n }\n );\n });\n}\n","namespace AVStantso {\n export interface Code {\n /**\n * @summary Mock any props of `source`\\\n * as empty function or `undefied` non function\\\n * if not `doNotUseMocking`\n */\n Mock<T extends NodeJS.Dict<unknown>>(source?: T, doNotUseMocking?: boolean): T;\n }\n\n export const Mock: Code['Mock'] = avstantso._reg.Mock(({ JS, X }) => {\n function Mock<T extends NodeJS.Dict<unknown>>(source?: T, doNotUseMocking?: boolean): T {\n return new Proxy(source, {\n get: (target, p) => {\n const src = Reflect.get(target, p);\n return doNotUseMocking\n ? src\n : JS.is.function(src)\n ? X\n : undefined;\n }\n });\n }\n\n return Mock;\n });\n}\n","namespace AVStantso {\n\n export namespace Code {\n export namespace Mapping {\n /**\n * @summary Mapping factoru function\n */\n export interface Factory<\n TMap extends object,\n TProviderFiled extends AVStantso.Mapping.ProviderKey<TMap> = undefined\n > {\n <\n TTemplate extends AVStantso.Mapping.Template<TMap>,\n TValueBase extends AVStantso.Mapping.ValueBase<TMap, TProviderFiled> =\n AVStantso.Mapping.ValueBase<TMap, TProviderFiled>,\n TValueUnionBase extends AVStantso.Mapping.ValueUnionBase<\n TMap,\n TProviderFiled,\n TValueBase\n > = AVStantso.Mapping.ValueUnionBase<\n TMap,\n TProviderFiled,\n TValueBase\n >\n >(\n template: TTemplate\n ): AVStantso.Mapping<\n TMap,\n TTemplate,\n TProviderFiled,\n TValueBase,\n TValueUnionBase\n >;\n }\n }\n\n /**\n * @summary Mapping helpers utility\n */\n export interface Mapping {\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap] | TMap[keyof TMap][TProviderFiled]` (with `TProviderFiled`) *\n * @template TMap Type of map for create `Mapping.Factory` function\n * @template TProviderFiled Type of provider field\n * @param field Provider field. If `undefined` — provider values not supports\n * @param keyFromValue Get key from value function\n * @param map Source of `TMap` type parameter. Not used in runtime\n */\n <\n TMap extends object,\n TProviderFiled extends AVStantso.Mapping.ProviderKey<TMap> = undefined\n >(\n field: TProviderFiled,\n keyFromValue: AVStantso.Mapping.KeyFromValue<TMap>,\n map?: TMap\n ): Mapping.Factory<TMap, TProviderFiled>;\n\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap]` (without `TProviderFiled`)\n * @template TMap Type of map for create `Mapping.Factory` function\n * @param keyFromValue Get key from value function\n * @param map Source of `TMap` type parameter. Not used in runtime\n */\n <\n TMap extends object\n >(\n keyFromValue: AVStantso.Mapping.KeyFromValue<TMap>,\n map?: TMap\n ): Mapping.Factory<TMap>;\n\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap] | TMap[keyof TMap][TProviderFiled]` (with `TProviderFiled`) *\n * @template TMap Type of map for create `Mapping.Factory` function\n * @template TProviderFiled Type of provider field\n * @param field Provider field. If `undefined` — provider values not supports\n * @param map Source of `TMap` type parameter\n */\n <\n TMap extends object,\n TProviderFiled extends AVStantso.Mapping.ProviderKey<TMap>\n >(\n field: TProviderFiled,\n map: TMap\n ): Mapping.Factory<TMap, TProviderFiled>;\n\n /**\n * @summary Find in `TTemplate` of the specified type a property with a name corresponding to `TMap` type\n * - by value of `TMap[keyof TMap]` (without `TProviderFiled`)\n * @template TMap Type of map for create `Mapping.Factory` function\n * @param keyFromValue Get key from value function\n * @param map Source of `TMap` type parameter\n */\n <\n TMap extends object\n >(\n map: TMap\n ): Mapping.Factory<TMap>;\n }\n }\n\n export interface Code {\n /**\n * @summary Mapping helpers utility\n */\n Mapping: Code.Mapping;\n }\n\n export const Mapping: Code.Mapping = avstantso._reg.Mapping(({ TS, JS }) => (\n (...params: AVStantso.TS.Arr) => {\n const subSwitch = (i: number) => ({\n object: () => ({ map: params[i] }),\n function: () => ({ keyFromValue: params[i], map: params[i + 1] }),\n default: () => {\n throw new AVStantso_InvalidArgumentTypeError(\n 'AVStantso',\n 'Mapping',\n [!i && JS.string, JS.object, JS.function].pack().join('|'),\n { [`param${i}`]: params[i] }\n );\n }\n });\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n const { field, keyFromValue, map } = JS.switch<any>(params[0], {\n ...subSwitch(0),\n string: () => ({\n field: params[0],\n ...JS.switch<any>(params[1], subSwitch(1))\n }),\n undefined: () => JS.switch<any>(params[1], subSwitch(1))\n });\n\n const kfv = keyFromValue || TS.Structure.keyByValue.bind(null, field, map);\n\n return (template: any) => (value: any) => template[kfv(value)];\n }\n ) as Code.Mapping);\n}\n","namespace AVStantso {\n /**\n * @summary Conveyor of handling\n */\n export namespace Conveyor {\n /**\n * @summary Conveyor transformer\n */\n export type Transformer<T> = (from: T) => T;\n }\n\n export interface Code {\n /**\n * @summary Conveyor of handling. Ignore empty stages\n */\n Conveyor<T>(\n original: T,\n ...transformers: Conveyor.Transformer<T>[]\n ): T;\n }\n\n export const Conveyor: Code['Conveyor'] = avstantso._reg.Conveyor(({ JS }) =>\n function Conveyor<T>(\n original: T,\n ...transformers: Conveyor.Transformer<T>[]\n ): T {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let r: any = original;\n if (r && JS.is.object(r))\n r = Array.isArray(r) ? [...r] : { ...r };\n\n for (const t of transformers)\n if (t) r = t.call(r, r);\n\n return r;\n });\n}\n","namespace AVStantso {\n /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-explicit-any */\n\n /**\n * @summary Override value structure.\n * In `Calculator` if `override === undefined` will be used `original`\n */\n export namespace Override {\n export namespace TypeMap {\n export type OrT = TypeMap | TS.Type.Not.Function;\n\n export type Parse<T extends OrT> = T extends TypeMap\n ? T\n : { T: T; Ext?: undefined };\n\n export type IsSimple<\n T extends OrT,\n IfTrue = true,\n IfFalse = false\n > = TypeMap.Parse<T>['Ext'] extends undefined ? IfTrue : IfFalse;\n }\n\n export type TypeMap = {\n T: TS.Type.Not.Function;\n Ext?: {};\n };\n\n export type Context<TTypeMapOrT extends TypeMap.OrT> = {\n original: TypeMap.Parse<TTypeMapOrT>['T'];\n } & TypeMap.IsSimple<TTypeMapOrT, {}, TypeMap.Parse<TTypeMapOrT>['Ext']>;\n\n export type Union<TTypeMapOrT extends TypeMap.OrT> =\n | TypeMap.Parse<TTypeMapOrT>['T']\n | Override<TTypeMapOrT>;\n\n export namespace Calculator {\n export type Calulate<TTypeMapOrT extends TypeMap.OrT> = (\n override?: Union<TTypeMapOrT>\n ) => TypeMap.Parse<TTypeMapOrT>['T'];\n }\n\n export type Calculator<TTypeMapOrT extends TypeMap.OrT> = TypeMap.IsSimple<\n TTypeMapOrT,\n (\n context?: Context<TTypeMapOrT> | TypeMap.Parse<TTypeMapOrT>['T']\n ) => Calculator.Calulate<TTypeMapOrT>,\n (context?: Context<TTypeMapOrT>) => Calculator.Calulate<TTypeMapOrT>\n >;\n }\n\n export type Override<TTypeMapOrT extends Override.TypeMap.OrT> = (\n context?: Override.Context<TTypeMapOrT>\n ) => Override.TypeMap.Parse<TTypeMapOrT>['T'];\n\n export namespace Code {\n /**\n * @summary Override utils\n */\n export interface Override {\n isContext<TTypeMapOrT extends Override.TypeMap.OrT = Override.TypeMap>(\n candidate: unknown\n ): candidate is Override.Context<TTypeMapOrT>\n\n /**\n * @summary Calculator of override value structure\n */\n Calculator<\n TTypeMapOrT extends Override.TypeMap.OrT,\n TContextOrOriginal extends\n | Override.Context<TTypeMapOrT>\n | Override.TypeMap.Parse<TTypeMapOrT>['T']\n >(\n context?: TContextOrOriginal\n ): (\n override: Override.Union<TTypeMapOrT>\n ) => TContextOrOriginal extends { original: infer R }\n ? R\n : TContextOrOriginal;\n }\n }\n\n export interface Code {\n /**\n * @summary Override utils\n */\n Override: Code.Override;\n }\n\n export const Override: Code.Override = avstantso._reg.Override(({ JS, Perform }) => {\n function isContext(\n candidate: unknown\n ): boolean {\n return (\n null !== candidate && JS.is.object(candidate) && 'original' in candidate\n );\n }\n\n function Calculator(context?: any) {\n const c = isContext(context) ? context : { original: context };\n\n return function override(override: any): any {\n const r: any = undefined === override ? c.original : Perform(override, c);\n\n return r;\n };\n }\n\n return {\n isContext,\n Calculator\n } as Code.Override;\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-function-type */\n\n /**\n * @summary Set `state` to `begin` -> await `action` -> `state` to `end`\n */\n export namespace Transition {\n /**\n * @summary Transition action defalt template\n */\n export type Action = Perform.Promise.Sync<TS.Type.Not.Function>;\n\n /**\n * @summary Set state function. ~Like `React`\n */\n export type SetState<TState> = (newState: TState) => unknown;\n\n /**\n * @summary Transition props\n */\n export type Props<TState> = {\n state: Transition.SetState<TState>;\n begin?: TState;\n end: TState;\n };\n\n /**\n * @summary Create transition overload\n */\n export type Overload<TMetaDefaultAction extends Action = Action> = {\n /**\n * @summary Create transition\n * @returns Transition object\n */\n <TState, TDefaultAction extends TMetaDefaultAction = TMetaDefaultAction>(\n state: SetState<TState>,\n end: TState\n ): Transition<TDefaultAction>;\n\n /**\n * @summary Create transition\n * @returns Transition object\n */\n <TState, TDefaultAction extends TMetaDefaultAction = TMetaDefaultAction>(\n state: SetState<TState>,\n begin: TState,\n end: TState\n ): Transition<TDefaultAction>;\n\n /**\n * @summary Create transition\n * @returns Transition object\n */\n <TState, TDefaultAction extends TMetaDefaultAction = TMetaDefaultAction>(\n props: Props<TState>\n ): Transition<TDefaultAction>;\n };\n\n /**\n * @summary Internal definition of transition\n */\n export type Execute<TDefaultAction extends Action = Action> = {\n <\n TAction extends Action = TDefaultAction\n >(\n action: TAction\n ): Promise<Perform.Promise.Sync.Result<TAction>>;\n\n /**\n * @summary Nested transition factory\n */\n Nest: Overload<TDefaultAction>;\n };\n }\n\n export type Transition<TDefaultAction extends Transition.Action = Transition.Action> =\n Transition.Execute<TDefaultAction>;\n\n export interface Code {\n /**\n * @summary Transition factory.\\\n * Set `state` to `begin` -> await `action` -> `state` to `end`\n */\n Transition: AVStantso.Transition.Overload;\n }\n\n export const Transition: Code['Transition'] = avstantso._reg.Transition(({ JS, Perform }) => {\n function Transition(parent: Function, ...params: any[]) {\n const isProps = JS.is.object(params[0]);\n const state = isProps ? params[0].state : params[0];\n const begin = isProps ? params[0].begin : params[params.length <= 2 ? undefined : 1];\n const end = isProps ? params[0].end : params[params.length <= 2 ? 1 : 2];\n\n const hasBegin = isProps ? 'begin' in params[0] : params.length > 2;\n\n function transition(action: Transition.Action) {\n return Promise.resolve()\n .then(() => hasBegin && state(begin))\n .then(() => Perform.Promise(action))\n .finally(() => state(end));\n }\n\n const curTransition = parent\n ? function transitionNested(action: Transition.Action) {\n return parent(() => transition(action));\n }\n : transition;\n\n\n function Nest(...params: any[]) {\n return Transition(curTransition, ...params);\n }\n\n return Object.assign(\n curTransition,\n { Nest }\n );\n }\n\n return Transition.bind(null, null);\n });\n}\n","/**\n * @summary Object wrap around value\n */\nclass AVStantso_ValueWrap<TValue = unknown> {\n #value: TValue;\n\n constructor(value: TValue) {\n this.#value = value;\n }\n\n protected static Clone<\n TThis extends typeof AVStantso_ValueWrap\n >(\n this: TThis, source: InstanceType<TThis>\n ): InstanceType<TThis> {\n return Object.assign(new this(source.value), source);\n }\n\n protected toString() {\n return this.#value.toString();\n }\n\n protected valueOf() {\n return this.#value;\n }\n\n public get value() {\n return this.#value;\n }\n}\n\nif (!('AVStantso_ValueWrap' in globalThis))\n Object.defineProperties(globalThis, {\n AVStantso_ValueWrap: {\n value: AVStantso_ValueWrap,\n writable: false,\n configurable: false\n }\n });\n\nnamespace AVStantso_ValueWrap {}\n\navstantso.AtomicObjects.register(AVStantso_ValueWrap, {\n empty: () => new AVStantso_ValueWrap(null),\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n clone: (instance) => (instance.constructor as any).Clone(instance)\n});\n","namespace AVStantso {\n /**\n * @summary Async tasks manager with gracefully finalization: for async tasks, intervals & timers\n */\n export namespace AsyncTasksManager {\n /**\n * @summary Finalization options\n */\n export type FinalOptions = {\n /**\n * @summary If not `quiet` send all errors to `console.error`\n */\n quiet?: boolean;\n };\n\n /**\n * @summary Timeouts types\n */\n export namespace Timeout {\n /**\n * @summary Timeout options\n */\n export type Options = {\n /**\n * @summary Call interval/timeout callback on finalize\n */\n callOnFinal?: boolean;\n };\n\n /**\n * @summary Timeout callback\n */\n export type CallBack = (final?: boolean) => unknown;\n\n /**\n * @summary Timeout delay\n */\n export type Delay = Parameters<typeof setInterval>[1];\n\n /**\n * @summary Timeout internal map value\n */\n export type Value = [CallBack, Options];\n\n /**\n * @summary Timeout internal map\n */\n export type Map = globalThis.Map<NodeJS.Timeout, Value>;\n }\n\n /**\n * @summary AsyncTasksManager option for external usage\n */\n export type Option = {\n /**\n * @summary Async manager for register tasks.\\\n * - if falsy — not used\n * - if `AsyncTasksManager` instance — use it\n * - if truthy — use global `AsyncTasksManager`\n */\n manager?: AsyncTasksManager | boolean;\n };\n }\n\n export interface AsyncTasksManager {\n /**\n * @summary Gracefully finalization for async tasks, intervals & timers\n * @param options Finalization options\n */\n final(options?: AsyncTasksManager.FinalOptions): Promise<void>;\n\n /**\n * @summary All errors that was thrown inside `final`.\\\n * Accessible only after final is called\n */\n readonly errors?: unknown[];\n\n /**\n * @summary Wrap of standard `setInterval`\n * @param callback Callback for interval\n * @param delay Interval delay\n * @param options Interval finalization options\n * @returns Interval id\n */\n setInterval(\n callback: AsyncTasksManager.Timeout.CallBack,\n delay: AsyncTasksManager.Timeout.Delay,\n options: AsyncTasksManager.Timeout.Options\n ): ReturnType<typeof setInterval>;\n\n /**\n * @summary Wrap of standard `clearInterval`\n * @param timeout Timeout id\n */\n clearInterval: typeof clearInterval;\n\n /**\n * @summary Wrap of standard `setTimeout`\n * @param callback Callback for timeout\n * @param delay Timeout delay\n * @param options Timeout finalization options\n * @returns Timeout id\n */\n setTimeout(\n callback: AsyncTasksManager.Timeout.CallBack,\n delay: AsyncTasksManager.Timeout.Delay,\n options: AsyncTasksManager.Timeout.Options\n ): ReturnType<typeof setTimeout>;\n\n /**\n * @summary Wrap of standard `clearTimeout`\n * @param timeout Timeout id\n */\n clearTimeout: typeof clearTimeout;\n\n /**\n * @summary Register async task\n * @template T Task result type\n * @param task Async task\n * @returns Async task (registered in manager)\n */\n regTask<T>(task: Promise<T>): Promise<T>;\n }\n\n export namespace Code {\n /**\n * @summary Global Async tasks manager and utilities\n */\n export namespace AsyncTasksManager {\n export type ExtenderCallback = (instance: AVStantso.AsyncTasksManager) => void;\n\n export type Utilities = {\n /**\n * @summary Register on create extender.\\\n * Unavailable after call `AVStantso.freeze` method\n */\n _RegOnCreate?(extenderCallback: AsyncTasksManager.ExtenderCallback): void;\n\n /**\n * @summary Create new instance of `AsyncTasksManager`\n */\n Factory(): AVStantso.AsyncTasksManager;\n\n /**\n * @summary Check `candidate` is `AsyncTasksManager`\n */\n is(candidate: unknown): candidate is AVStantso.AsyncTasksManager;\n };\n }\n\n export type AsyncTasksManager = AVStantso.AsyncTasksManager & AsyncTasksManager.Utilities;\n }\n\n export interface Code {\n /**\n * @summary Global Async tasks manager and utilities\n */\n AsyncTasksManager: Code.AsyncTasksManager;\n }\n\n export const AsyncTasksManager: Code.AsyncTasksManager = avstantso._reg.AsyncTasksManager(\n ({ symbolFreeze, JS }) => {\n const symbolATM = Symbol('AsyncTasksManager');\n\n function isAsyncTasksManager(\n candidate: unknown\n ): candidate is AVStantso.AsyncTasksManager {\n return candidate && JS.is.structure(candidate) && (symbolATM in candidate);\n }\n\n const onCreateExtenders: Code.AsyncTasksManager.ExtenderCallback[] = [];\n\n function AsyncTasksManagerCreate() {\n const intervals: AsyncTasksManager.Timeout.Map = new Map();\n const timeouts: AsyncTasksManager.Timeout.Map = new Map();\n const tasks = new Set<Promise<unknown>>();\n\n const MAPS = [\n { intervals, clearInterval, setInterval },\n { timeouts, clearTimeout, setTimeout }\n ] as const;\n\n const errors: unknown[] = [];\n let isFinalizig = false;\n\n function throwIfFinal() {\n if (isFinalizig)\n throw new AVStantso_InvalidStateError(\n 'AsyncTasksManager',\n 'finalizig',\n \"Can't interact with %C on %S\"\n );\n }\n\n async function final(options: AsyncTasksManager.FinalOptions) {\n const { quiet } = options || {};\n\n isFinalizig = true;\n\n const promises = [...tasks];\n\n for (const mapInfo of MAPS) {\n const [map, clear] = Object.values(mapInfo) as [\n AsyncTasksManager.Timeout.Map,\n typeof clearInterval\n ];\n for (const [t, [c, { callOnFinal } = {}]] of map) {\n if (callOnFinal) promises.push(\n Promise.resolve(0)\n .then(() => c(true))\n .catch((e) => errors.push(e))\n );\n\n clear(t);\n }\n }\n\n await Promise.all(promises);\n\n if (!quiet)\n for (const e of errors)\n console.error(e);\n };\n\n function regTask(task: Promise<unknown>) {\n throwIfFinal();\n\n const p = task\n .catch((e) => {\n if (isFinalizig)\n errors.push(e);\n else\n throw e;\n })\n .finally(() => tasks.delete(p));\n\n tasks.add(p);\n return p;\n };\n\n const instance = {\n final,\n regTask,\n get errors() {\n return isFinalizig ? errors : undefined;\n }\n } as AsyncTasksManager;\n\n for (const MAP of MAPS) {\n const [[, map], [kClear, vClear], [kSet, vSet]] = Object.entries(MAP) as [\n [string, AsyncTasksManager.Timeout.Map],\n [string, typeof clearInterval],\n [string, typeof setInterval]\n ];\n\n Object.assign(\n instance,\n {\n [kSet](\n callback: AsyncTasksManager.Timeout.CallBack,\n delay: AsyncTasksManager.Timeout.Delay,\n options: AsyncTasksManager.Timeout.Options\n ){\n throwIfFinal();\n\n const t = vSet(callback, delay);\n map.set(t, [callback, options]);\n return t;\n },\n\n [kClear](timeout: NodeJS.Timeout) {\n vClear(timeout);\n map.delete(timeout);\n }\n }\n );\n }\n\n for (const cb of onCreateExtenders)\n cb(instance);\n\n return instance;\n }\n\n function AsyncTasksManagerFactory<T extends object>(target: object): AsyncTasksManager & T {\n let instance: AsyncTasksManager;\n\n return new Proxy(target as AsyncTasksManager & T, {\n has(target, p) {\n return symbolATM === p ? true : Reflect.has(target, p);\n },\n get(target, p) {\n const r = Reflect.get(target, p);\n if (undefined !== r) return r;\n\n if (!instance)\n instance = AsyncTasksManagerCreate();\n\n return Reflect.get(instance, p);\n }\n });\n }\n\n const globalATM = ({\n _RegOnCreate(extenderCallback: Code.AsyncTasksManager.ExtenderCallback) {\n onCreateExtenders.push(extenderCallback);\n },\n Factory: AsyncTasksManagerFactory.bind(null, {}),\n is: isAsyncTasksManager,\n [symbolFreeze]() {\n delete this._RegOnCreate;\n }\n });\n\n return AsyncTasksManagerFactory(globalATM);\n }\n );\n}\n","namespace AVStantso {\n /**\n * @summary Classic TypeScript `enum` helpers\n */\n export namespace ClassicEnum {\n /**\n * @summary `enum` `[key, value]` pairs\n */\n export type Entry<\n T,\n K extends keyof T = Extract<keyof T, string>\n > = T extends object ? [K, T[K]] : never;\n }\n\n export namespace Code {\n /**\n * @summary ClassicEnum utilities\n */\n export interface ClassicEnum {\n /**\n * @summary Get enum entries without `[value, key]` pairs\n */\n entries<T>(enumType: T): AVStantso.ClassicEnum.Entry<T>[];\n }\n }\n\n export interface Code {\n /**\n * @summary ClassicEnum utilities\n */\n ClassicEnum: Code.ClassicEnum;\n }\n\n export const ClassicEnum = avstantso._reg.ClassicEnum(({ JS }) => {\n function entries<T>(enumType: T): ClassicEnum.Entry<T>[] {\n if (!enumType || !JS.is.object(enumType)) return [];\n\n const entries: TS.Arr = [];\n for (const [k, v] of Object.entries(enumType))\n if (!/^\\d+$/.test(k)) entries.push([k, v]);\n\n return entries;\n }\n\n return { entries };\n });\n}\n","namespace AVStantso {\n /**\n * Abstract type who supports `then`\n */\n export interface Thenable {\n then<TOnFulfilled extends TS.Func>(\n onFulfilled: TOnFulfilled\n ): Promise<Awaited<ReturnType<TOnFulfilled>>>;\n }\n\n /**\n * Abstract type who supports `close`\n */\n export interface Closable<TResult = void, TParams extends TS.Arr = []> {\n /**\n * Close action\n */\n close(...params: TParams): TResult;\n }\n\n export namespace Code {\n /**\n * @summary Features for `Thenable`\n */\n export interface Thenable {\n /**\n * Check type is `Thenable`\n */\n is<T extends AVStantso.Thenable>(candidate: unknown): candidate is T;\n }\n }\n\n export interface Code {\n /**\n * @summary Features for `Thenable`\n */\n Thenable: Code.Thenable;\n }\n\n export const Thenable = avstantso._reg.Thenable(({ JS }) => {\n function isThenable(candidate: unknown) {\n return JS.is.object(candidate) && 'then' in candidate;\n }\n\n return { is: isThenable } as Code.Thenable;\n });\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface AbortSignal {\n /**\n * @summary Stub for func/funcs if `aborted`\n * @returns Stub for func/funcs. This stub prevent func call if `aborted`\n */\n Safe: AVStantso.Stub.One & AVStantso.Stub.Multiple;\n}\n\nObject.definePropertiesOnce(AbortSignal.prototype, {\n Safe: {\n get() {\n return avstantso.Stub.Custom((func) => (\n (...params: AVStantso.TS.Arr) =>\n this.aborted || !func ? undefined : func(...params)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) as any);\n }\n }\n});\n","import Perform = AVStantso.Perform;\nimport Provider = AVStantso.Provider;\nimport Compare = AVStantso.Compare;\nimport Equality = AVStantso.Equality;\nimport Extend = AVStantso.Extend;\nimport Switch = AVStantso.Switch;\nimport Stub = AVStantso.Stub;\nimport Mock = AVStantso.Mock;\nimport Mapping = AVStantso.Mapping;\nimport Conveyor = AVStantso.Conveyor;\nimport Override = AVStantso.Override;\nimport Transition = AVStantso.Transition;\nimport AsyncTasksManager = AVStantso.AsyncTasksManager;\nimport ClassicEnum = AVStantso.ClassicEnum;\nimport Thenable = AVStantso.Thenable;\nimport Closable = AVStantso.Closable;\nimport Converter = AVStantso.Converter;\n\nimport ValueWrap = AVStantso_ValueWrap;\n// 👈 This magic line need, Override tests don't fails 🤦♂️\n// Line may be simple \\n or lines may be more one\n\nexport {\n Perform,\n Provider,\n Compare,\n Equality,\n Extend,\n Switch,\n Stub,\n Mock,\n Mapping,\n Conveyor,\n Override,\n Transition,\n AsyncTasksManager,\n ClassicEnum,\n Thenable,\n Closable,\n Converter,\n ValueWrap\n};\n"],"names":["AVStantso","AVStantso_ValueWrap"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@avstantso/concepts",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"author": "avstantso",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.3.0",
|
|
6
6
|
"description": "AVStantso framework concepts",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"Perform",
|
|
@@ -16,7 +16,10 @@
|
|
|
16
16
|
"Conveyor",
|
|
17
17
|
"Override",
|
|
18
18
|
"Transition",
|
|
19
|
-
"ValueWrap"
|
|
19
|
+
"ValueWrap",
|
|
20
|
+
"Thenable",
|
|
21
|
+
"Closable",
|
|
22
|
+
"Converter"
|
|
20
23
|
],
|
|
21
24
|
"main": "dist/index.js",
|
|
22
25
|
"types": "dist/index.d.ts",
|
|
@@ -34,10 +37,10 @@
|
|
|
34
37
|
"test": "NODE_ENV=test jest --coverage"
|
|
35
38
|
},
|
|
36
39
|
"dependencies": {
|
|
37
|
-
"@avstantso/core": "1.
|
|
38
|
-
"@avstantso/errors": "1.2.
|
|
39
|
-
"@avstantso/js": "1.2.
|
|
40
|
-
"@avstantso/std-ext": "1.2.
|
|
41
|
-
"@avstantso/ts": "1.3.
|
|
40
|
+
"@avstantso/core": "1.3.0",
|
|
41
|
+
"@avstantso/errors": "1.2.4",
|
|
42
|
+
"@avstantso/js": "1.2.6",
|
|
43
|
+
"@avstantso/std-ext": "1.2.3",
|
|
44
|
+
"@avstantso/ts": "1.3.5"
|
|
42
45
|
}
|
|
43
46
|
}
|