@augment-vir/core 32.1.0 → 32.2.1
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/dist/augments/error/ensure-error.d.ts +1 -1
- package/dist/augments/json/json-compatible.d.ts +2 -1
- package/dist/augments/json/json-value.d.ts +46 -0
- package/dist/augments/json/json-value.js +1 -0
- package/dist/augments/json/jsonify.d.ts +41 -0
- package/dist/augments/json/jsonify.js +1 -0
- package/dist/augments/number/infinity.d.ts +22 -0
- package/dist/augments/number/infinity.js +1 -0
- package/dist/augments/object/object-keys.d.ts +1 -1
- package/dist/augments/object/required-keys.d.ts +5 -5
- package/dist/augments/type/apply-default-options.d.ts +24 -0
- package/dist/augments/type/apply-default-options.js +1 -0
- package/dist/augments/type/built-in-type.d.ts +28 -0
- package/dist/augments/type/built-in-type.js +1 -0
- package/dist/augments/type/conditional-type.d.ts +25 -0
- package/dist/augments/type/conditional-type.js +1 -0
- package/dist/augments/type/constructor-type.d.ts +51 -0
- package/dist/augments/type/constructor-type.js +1 -0
- package/dist/augments/type/distributed-omit.d.ts +13 -0
- package/dist/augments/type/distributed-omit.js +1 -0
- package/dist/augments/type/empty-object.d.ts +27 -0
- package/dist/augments/type/empty-object.js +1 -0
- package/dist/augments/type/exact.d.ts +23 -0
- package/dist/augments/type/exact.js +1 -0
- package/dist/augments/type/except.d.ts +40 -0
- package/dist/augments/type/except.js +1 -0
- package/dist/augments/type/exclude-exactly.d.ts +27 -0
- package/dist/augments/type/exclude-exactly.js +1 -0
- package/dist/augments/type/is-unknown.d.ts +22 -0
- package/dist/augments/type/is-unknown.js +1 -0
- package/dist/augments/type/keys-of-union.d.ts +14 -0
- package/dist/augments/type/keys-of-union.js +1 -0
- package/dist/augments/type/literal-union.d.ts +13 -0
- package/dist/augments/type/literal-union.js +1 -0
- package/dist/augments/type/merge.d.ts +20 -0
- package/dist/augments/type/merge.js +1 -0
- package/dist/augments/type/non-empty-string.d.ts +9 -0
- package/dist/augments/type/non-empty-string.js +1 -0
- package/dist/augments/type/omit-deep.d.ts +373 -0
- package/dist/augments/type/omit-deep.js +1 -0
- package/dist/augments/type/omit-index-signature.d.ts +28 -0
- package/dist/augments/type/omit-index-signature.js +2 -0
- package/dist/augments/type/optional-keys-of.d.ts +25 -0
- package/dist/augments/type/optional-keys-of.js +1 -0
- package/dist/augments/type/package-json.d.ts +177 -0
- package/dist/augments/type/package-json.js +1 -0
- package/dist/augments/type/partial-deep.d.ts +52 -0
- package/dist/augments/type/partial-deep.js +1 -0
- package/dist/augments/type/primitive-type.d.ts +11 -0
- package/dist/augments/type/primitive-type.js +1 -0
- package/dist/augments/type/promisable.d.ts +11 -0
- package/dist/augments/type/promisable.js +1 -0
- package/dist/augments/type/readonly-deep.d.ts +30 -0
- package/dist/augments/type/readonly-deep.js +1 -0
- package/dist/augments/type/readonly-keys-of.d.ts +20 -0
- package/dist/augments/type/readonly-keys-of.js +1 -0
- package/dist/augments/type/require-keys.d.ts +47 -0
- package/dist/augments/type/require-keys.js +1 -0
- package/dist/augments/type/require-one-or-none.d.ts +18 -0
- package/dist/augments/type/require-one-or-none.js +1 -0
- package/dist/augments/type/set-optional.d.ts +19 -0
- package/dist/augments/type/set-optional.js +1 -0
- package/dist/augments/type/set-required.d.ts +47 -0
- package/dist/augments/type/set-required.js +1 -0
- package/dist/augments/type/simplify.d.ts +14 -0
- package/dist/augments/type/simplify.js +1 -0
- package/dist/augments/type/subtract.d.ts +177 -0
- package/dist/augments/type/subtract.js +1 -0
- package/dist/augments/type/tagged.d.ts +30 -0
- package/dist/augments/type/tagged.js +1 -0
- package/dist/augments/type/type-checks.d.ts +33 -0
- package/dist/augments/type/type-checks.js +8 -0
- package/dist/augments/type/typed-array.d.ts +13 -0
- package/dist/augments/type/typed-array.js +1 -0
- package/dist/augments/type/undefined-to-optional.d.ts +27 -0
- package/dist/augments/type/undefined-to-optional.js +1 -0
- package/dist/augments/type/union-member.d.ts +14 -0
- package/dist/augments/type/union-member.js +1 -0
- package/dist/augments/type/union-to-intersection.d.ts +11 -0
- package/dist/augments/type/union-to-intersection.js +1 -0
- package/dist/augments/type/union-to-tuple.d.ts +21 -0
- package/dist/augments/type/union-to-tuple.js +1 -0
- package/dist/augments/type/unknown-array.d.ts +11 -0
- package/dist/augments/type/unknown-array.js +1 -0
- package/dist/augments/type/writable-deep.d.ts +32 -0
- package/dist/augments/type/writable-deep.js +1 -0
- package/dist/augments/type/writable-keys-of.d.ts +12 -0
- package/dist/augments/type/writable-keys-of.js +1 -0
- package/dist/augments/type/writable.d.ts +29 -0
- package/dist/augments/type/writable.js +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +43 -0
- package/package.json +2 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
|
|
3
|
+
*
|
|
4
|
+
* Copied from the `Primitive` type in the `type-fest` package so that this package's public types
|
|
5
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
6
|
+
*
|
|
7
|
+
* @category Type
|
|
8
|
+
* @category Package : @augment-vir/common
|
|
9
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
10
|
+
*/
|
|
11
|
+
export type Primitive = null | undefined | string | number | boolean | symbol | bigint;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a type that represents either the value or the value wrapped in `PromiseLike`.
|
|
3
|
+
*
|
|
4
|
+
* Copied from the `Promisable` type in the `type-fest` package so that this package's public types
|
|
5
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
6
|
+
*
|
|
7
|
+
* @category Async
|
|
8
|
+
* @category Package : @augment-vir/common
|
|
9
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
10
|
+
*/
|
|
11
|
+
export type Promisable<T> = T | PromiseLike<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type BuiltIns, type HasMultipleCallSignatures } from './built-in-type.js';
|
|
2
|
+
type ReadonlyMapDeep<KeyType, ValueType> = {} & Readonly<ReadonlyMap<ReadonlyDeep<KeyType>, ReadonlyDeep<ValueType>>>;
|
|
3
|
+
type ReadonlySetDeep<ItemType> = {} & Readonly<ReadonlySet<ReadonlyDeep<ItemType>>>;
|
|
4
|
+
type ReadonlyObjectDeep<ObjectType extends object> = {
|
|
5
|
+
readonly [KeyType in keyof ObjectType]: ReadonlyDeep<ObjectType[KeyType]>;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Create a deeply immutable version of another type.
|
|
9
|
+
*
|
|
10
|
+
* Copied from the `ReadonlyDeep` type in the `type-fest` package so that this package's public
|
|
11
|
+
* types do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
12
|
+
*
|
|
13
|
+
* @category Object
|
|
14
|
+
* @category Package : @augment-vir/common
|
|
15
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
16
|
+
*/
|
|
17
|
+
export type ReadonlyDeep<T> = T extends BuiltIns ? T : T extends new (...arguments_: any[]) => unknown ? T : T extends (...arguments_: any[]) => unknown ? {} extends ReadonlyObjectDeep<T> ? T : HasMultipleCallSignatures<T> extends true ? T : ((...arguments_: Parameters<T>) => ReturnType<T>) & ReadonlyObjectDeep<T> : T extends Readonly<ReadonlyMap<infer KeyType, infer ValueType>> ? ReadonlyMapDeep<KeyType, ValueType> : T extends Readonly<ReadonlySet<infer ItemType>> ? ReadonlySetDeep<ItemType> : T extends readonly [] | readonly [...never[]] ? readonly [] : T extends readonly [
|
|
18
|
+
infer U,
|
|
19
|
+
...infer V
|
|
20
|
+
] ? readonly [
|
|
21
|
+
ReadonlyDeep<U>,
|
|
22
|
+
...ReadonlyDeep<V>
|
|
23
|
+
] : T extends readonly [
|
|
24
|
+
...infer U,
|
|
25
|
+
infer V
|
|
26
|
+
] ? readonly [
|
|
27
|
+
...ReadonlyDeep<U>,
|
|
28
|
+
ReadonlyDeep<V>
|
|
29
|
+
] : T extends ReadonlyArray<infer ItemType> ? ReadonlyArray<ReadonlyDeep<ItemType>> : T extends object ? ReadonlyObjectDeep<T> : unknown;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type IsAny, type IsEqual } from './type-checks.js';
|
|
2
|
+
type IsReadonlyKeyOf<Type extends object, Key extends keyof Type> = IsAny<Type | Key> extends true ? never : Key extends unknown ? Type extends unknown ? IsEqual<{
|
|
3
|
+
[K in Key]: Type[Key];
|
|
4
|
+
}, {
|
|
5
|
+
readonly [K in Key]: Type[Key];
|
|
6
|
+
}> : never : never;
|
|
7
|
+
/**
|
|
8
|
+
* Extract all readonly keys from the given type.
|
|
9
|
+
*
|
|
10
|
+
* Copied from the `ReadonlyKeysOf` type in the `type-fest` package so that this package's public
|
|
11
|
+
* types do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
12
|
+
*
|
|
13
|
+
* @category Object
|
|
14
|
+
* @category Package : @augment-vir/common
|
|
15
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
16
|
+
*/
|
|
17
|
+
export type ReadonlyKeysOf<Type extends object> = Type extends unknown ? keyof {
|
|
18
|
+
[Key in keyof Type as IsReadonlyKeyOf<Type, Key> extends false ? never : Key]: never;
|
|
19
|
+
} & keyof Type : never;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type RequiredKeysOf } from '../object/required-keys.js';
|
|
2
|
+
import { type If, type IfNotAnyOrNever } from './conditional-type.js';
|
|
3
|
+
import { type Except } from './except.js';
|
|
4
|
+
import { type IsAny, type IsNever } from './type-checks.js';
|
|
5
|
+
/**
|
|
6
|
+
* Returns `true` if the given object type has at least one required key, otherwise `false`.
|
|
7
|
+
*
|
|
8
|
+
* Copied from the `HasRequiredKeys` type in `type-fest` v5.6 (built on {@link RequiredKeysOf}) so
|
|
9
|
+
* that this package's public types do not depend on `type-fest` (see the note in
|
|
10
|
+
* `type-checks.ts`).
|
|
11
|
+
*
|
|
12
|
+
* @category Object
|
|
13
|
+
* @category Package : @augment-vir/common
|
|
14
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
15
|
+
*/
|
|
16
|
+
export type HasRequiredKeys<BaseType extends object> = RequiredKeysOf<BaseType> extends never ? false : true;
|
|
17
|
+
type RequireExactlyOneHelper<ObjectType, KeysType extends keyof ObjectType> = {
|
|
18
|
+
[Key in KeysType]: Required<Pick<ObjectType, Key>> & Partial<Record<Exclude<KeysType, Key>, never>>;
|
|
19
|
+
}[KeysType] & Omit<ObjectType, KeysType>;
|
|
20
|
+
/**
|
|
21
|
+
* Create a type that requires exactly one of the given keys and disallows the rest, while keeping
|
|
22
|
+
* the remaining (non-listed) keys as is.
|
|
23
|
+
*
|
|
24
|
+
* Copied from the `RequireExactlyOne` type in `type-fest` v5.6 so that this package's public types
|
|
25
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
26
|
+
*
|
|
27
|
+
* @category Object
|
|
28
|
+
* @category Package : @augment-vir/common
|
|
29
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
30
|
+
*/
|
|
31
|
+
export type RequireExactlyOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> = IfNotAnyOrNever<ObjectType, If<IsNever<KeysType>, never, RequireExactlyOneHelper<ObjectType, If<IsAny<KeysType>, keyof ObjectType, KeysType>>>>;
|
|
32
|
+
type RequireAtLeastOneHelper<ObjectType, KeysType extends keyof ObjectType> = {
|
|
33
|
+
[Key in KeysType]-?: Required<Pick<ObjectType, Key>> & Partial<Pick<ObjectType, Exclude<KeysType, Key>>>;
|
|
34
|
+
}[KeysType] & Except<ObjectType, KeysType>;
|
|
35
|
+
/**
|
|
36
|
+
* Create a type that requires at least one of the given keys, while keeping the remaining
|
|
37
|
+
* (non-listed) keys as is.
|
|
38
|
+
*
|
|
39
|
+
* Copied from the `RequireAtLeastOne` type in `type-fest` v5.6 so that this package's public types
|
|
40
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
41
|
+
*
|
|
42
|
+
* @category Object
|
|
43
|
+
* @category Package : @augment-vir/common
|
|
44
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
45
|
+
*/
|
|
46
|
+
export type RequireAtLeastOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> = IfNotAnyOrNever<ObjectType, If<IsNever<KeysType>, never, RequireAtLeastOneHelper<ObjectType, If<IsAny<KeysType>, keyof ObjectType, KeysType>>>>;
|
|
47
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type If, type IfNotAnyOrNever } from './conditional-type.js';
|
|
2
|
+
import { type RequireExactlyOne } from './require-keys.js';
|
|
3
|
+
import { type IsAny, type IsNever } from './type-checks.js';
|
|
4
|
+
type RequireNone<KeysType extends PropertyKey> = Partial<Record<KeysType, never>>;
|
|
5
|
+
type RequireOneOrNoneHelper<ObjectType, KeysType extends keyof ObjectType> = (RequireExactlyOne<ObjectType, KeysType> | RequireNone<KeysType>) & Omit<ObjectType, KeysType>;
|
|
6
|
+
/**
|
|
7
|
+
* Create a type that requires exactly one of the given keys or none of the given keys, while
|
|
8
|
+
* keeping the remaining keys as is.
|
|
9
|
+
*
|
|
10
|
+
* Copied from the `RequireOneOrNone` type in `type-fest` v5.6 so that this package's public types
|
|
11
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
12
|
+
*
|
|
13
|
+
* @category Object
|
|
14
|
+
* @category Package : @augment-vir/common
|
|
15
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
16
|
+
*/
|
|
17
|
+
export type RequireOneOrNone<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> = IfNotAnyOrNever<ObjectType, If<IsNever<KeysType>, ObjectType, RequireOneOrNoneHelper<ObjectType, If<IsAny<KeysType>, keyof ObjectType, KeysType>>>>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Except } from './except.js';
|
|
2
|
+
import { type KeysOfUnion } from './keys-of-union.js';
|
|
3
|
+
import { type Simplify } from './simplify.js';
|
|
4
|
+
type HomomorphicPick<T, Keys extends KeysOfUnion<T>> = {
|
|
5
|
+
[P in keyof T as Extract<P, Keys>]: T[P];
|
|
6
|
+
};
|
|
7
|
+
type _SetOptional<BaseType, Keys extends keyof BaseType> = BaseType extends unknown ? Simplify<Except<BaseType, Keys> & Partial<HomomorphicPick<BaseType, Keys>>> : never;
|
|
8
|
+
/**
|
|
9
|
+
* Create a type that makes the given keys optional, while keeping the remaining keys as is.
|
|
10
|
+
*
|
|
11
|
+
* Copied from the `SetOptional` type in the `type-fest` package so that this package's public types
|
|
12
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
13
|
+
*
|
|
14
|
+
* @category Object
|
|
15
|
+
* @category Package : @augment-vir/common
|
|
16
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
17
|
+
*/
|
|
18
|
+
export type SetOptional<BaseType, Keys extends keyof BaseType> = (BaseType extends (...arguments_: never) => any ? (...arguments_: Parameters<BaseType>) => ReturnType<BaseType> : unknown) & _SetOptional<BaseType, Keys>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type If } from './conditional-type.js';
|
|
2
|
+
import { type Except } from './except.js';
|
|
3
|
+
import { type KeysOfUnion } from './keys-of-union.js';
|
|
4
|
+
import { type OptionalKeysOf } from './optional-keys-of.js';
|
|
5
|
+
import { type Simplify } from './simplify.js';
|
|
6
|
+
import { type IsNever } from './type-checks.js';
|
|
7
|
+
import { type UnknownArray } from './unknown-array.js';
|
|
8
|
+
type HomomorphicPick<T, Keys extends KeysOfUnion<T>> = {
|
|
9
|
+
[P in keyof T as Extract<P, Keys>]: T[P];
|
|
10
|
+
};
|
|
11
|
+
type IsArrayReadonly<T extends UnknownArray> = If<IsNever<T>, false, T extends unknown[] ? false : true>;
|
|
12
|
+
/** Remove the optional modifier from the specified keys in an array. */
|
|
13
|
+
type SetArrayRequired<TArray extends UnknownArray, Keys, Counter extends any[] = [], Accumulator extends UnknownArray = []> = TArray extends unknown ? keyof TArray & `${number}` extends never ? [
|
|
14
|
+
...Accumulator,
|
|
15
|
+
...TArray
|
|
16
|
+
] : TArray extends readonly [
|
|
17
|
+
(infer First)?,
|
|
18
|
+
...infer Rest
|
|
19
|
+
] ? '0' extends OptionalKeysOf<TArray> ? `${Counter['length']}` extends `${Keys & (string | number)}` ? SetArrayRequired<Rest, Keys, [
|
|
20
|
+
...Counter,
|
|
21
|
+
any
|
|
22
|
+
], [
|
|
23
|
+
...Accumulator,
|
|
24
|
+
First
|
|
25
|
+
]> : [
|
|
26
|
+
...Accumulator,
|
|
27
|
+
...TArray
|
|
28
|
+
] : SetArrayRequired<Rest, Keys, [
|
|
29
|
+
...Counter,
|
|
30
|
+
any
|
|
31
|
+
], [
|
|
32
|
+
...Accumulator,
|
|
33
|
+
TArray[0]
|
|
34
|
+
]> : never : never;
|
|
35
|
+
type _SetRequired<BaseType, Keys extends keyof BaseType> = BaseType extends UnknownArray ? SetArrayRequired<BaseType, Keys> extends infer ResultantArray ? If<IsArrayReadonly<BaseType>, Readonly<ResultantArray>, ResultantArray> : never : Simplify<Except<BaseType, Keys> & Required<HomomorphicPick<BaseType, Keys>>>;
|
|
36
|
+
/**
|
|
37
|
+
* Create a type that makes the given keys required, while keeping the remaining keys as is.
|
|
38
|
+
*
|
|
39
|
+
* Copied from the `SetRequired` type in the `type-fest` package so that this package's public types
|
|
40
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
41
|
+
*
|
|
42
|
+
* @category Object
|
|
43
|
+
* @category Package : @augment-vir/common
|
|
44
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
45
|
+
*/
|
|
46
|
+
export type SetRequired<BaseType, Keys extends keyof BaseType> = (BaseType extends (...arguments_: never) => any ? (...arguments_: Parameters<BaseType>) => ReturnType<BaseType> : unknown) & _SetRequired<BaseType, Keys>;
|
|
47
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flattens the type output to improve type hints shown in editors. Also transforms an interface
|
|
3
|
+
* into a type to aid with assignability.
|
|
4
|
+
*
|
|
5
|
+
* Copied from the `Simplify` type in the `type-fest` package so that this package's public types do
|
|
6
|
+
* not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
7
|
+
*
|
|
8
|
+
* @category Object
|
|
9
|
+
* @category Package : @augment-vir/common
|
|
10
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
11
|
+
*/
|
|
12
|
+
export type Simplify<T> = {
|
|
13
|
+
[KeyType in keyof T]: T[KeyType];
|
|
14
|
+
} & {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { type NegativeInfinity, type PositiveInfinity } from '../number/infinity.js';
|
|
2
|
+
import { type If } from './conditional-type.js';
|
|
3
|
+
import { type IsAny, type IsEqual, type IsNever } from './type-checks.js';
|
|
4
|
+
import { type UnknownArray } from './unknown-array.js';
|
|
5
|
+
type Numeric = number | bigint;
|
|
6
|
+
type Zero = 0 | 0n;
|
|
7
|
+
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never;
|
|
8
|
+
type IsNegative<T extends Numeric> = T extends Negative<T> ? true : false;
|
|
9
|
+
type ReverseSign<N extends number> = N extends 0 ? 0 : N extends PositiveInfinity ? NegativeInfinity : N extends NegativeInfinity ? PositiveInfinity : `${N}` extends `-${infer P extends number}` ? P : `-${N}` extends `${infer R extends number}` ? R : never;
|
|
10
|
+
type StringToNumber<S extends string> = S extends `${infer N extends number}` ? N : S extends 'Infinity' ? PositiveInfinity : S extends '-Infinity' ? NegativeInfinity : never;
|
|
11
|
+
type Absolute<N extends number | bigint> = N extends bigint ? `${N}` extends `-${infer Magnitude extends bigint}` ? Magnitude : N : `${N}` extends `-${infer Magnitude}` ? StringToNumber<Magnitude> : N;
|
|
12
|
+
type IfNotAnyOrNever<T, IfNotAny, IfAny = any, IfNever = never> = If<IsAny<T>, IfAny, If<IsNever<T>, IfNever, IfNotAny>>;
|
|
13
|
+
type DigitCharacter = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
|
14
|
+
type DigitTupleOf<Digit extends DigitCharacter, Fill> = [
|
|
15
|
+
[
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
Fill
|
|
19
|
+
],
|
|
20
|
+
[
|
|
21
|
+
Fill,
|
|
22
|
+
Fill
|
|
23
|
+
],
|
|
24
|
+
[
|
|
25
|
+
Fill,
|
|
26
|
+
Fill,
|
|
27
|
+
Fill
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
Fill,
|
|
31
|
+
Fill,
|
|
32
|
+
Fill,
|
|
33
|
+
Fill
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
Fill,
|
|
37
|
+
Fill,
|
|
38
|
+
Fill,
|
|
39
|
+
Fill,
|
|
40
|
+
Fill
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
Fill,
|
|
44
|
+
Fill,
|
|
45
|
+
Fill,
|
|
46
|
+
Fill,
|
|
47
|
+
Fill,
|
|
48
|
+
Fill
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
Fill,
|
|
52
|
+
Fill,
|
|
53
|
+
Fill,
|
|
54
|
+
Fill,
|
|
55
|
+
Fill,
|
|
56
|
+
Fill,
|
|
57
|
+
Fill
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
Fill,
|
|
61
|
+
Fill,
|
|
62
|
+
Fill,
|
|
63
|
+
Fill,
|
|
64
|
+
Fill,
|
|
65
|
+
Fill,
|
|
66
|
+
Fill,
|
|
67
|
+
Fill
|
|
68
|
+
],
|
|
69
|
+
[
|
|
70
|
+
Fill,
|
|
71
|
+
Fill,
|
|
72
|
+
Fill,
|
|
73
|
+
Fill,
|
|
74
|
+
Fill,
|
|
75
|
+
Fill,
|
|
76
|
+
Fill,
|
|
77
|
+
Fill,
|
|
78
|
+
Fill
|
|
79
|
+
]
|
|
80
|
+
][Digit];
|
|
81
|
+
type RepeatTupleTenTimes<Tuple extends UnknownArray> = [
|
|
82
|
+
...Tuple,
|
|
83
|
+
...Tuple,
|
|
84
|
+
...Tuple,
|
|
85
|
+
...Tuple,
|
|
86
|
+
...Tuple,
|
|
87
|
+
...Tuple,
|
|
88
|
+
...Tuple,
|
|
89
|
+
...Tuple,
|
|
90
|
+
...Tuple,
|
|
91
|
+
...Tuple
|
|
92
|
+
];
|
|
93
|
+
type BuildTupleDigitByDigit<Length extends string, Fill, Accumulator extends UnknownArray = []> = Length extends `${infer First extends DigitCharacter}${infer Rest}` ? BuildTupleDigitByDigit<Rest, Fill, [
|
|
94
|
+
...RepeatTupleTenTimes<Accumulator>,
|
|
95
|
+
...DigitTupleOf<First, Fill>
|
|
96
|
+
]> : Accumulator;
|
|
97
|
+
type BuildTuple<Length extends number, Fill> = number extends Length ? Fill[] : BuildTupleDigitByDigit<`${Length}`, Fill>;
|
|
98
|
+
type TupleOf<Length extends number, Fill = unknown> = IfNotAnyOrNever<Length, BuildTuple<If<IsNegative<Length>, 0, Length>, Fill>, Fill[], [
|
|
99
|
+
]>;
|
|
100
|
+
type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false;
|
|
101
|
+
type Or<A extends boolean, B extends boolean> = A extends true ? true : B extends true ? true : false;
|
|
102
|
+
type StringToArray<S extends string, Result extends string[] = []> = string extends S ? never : S extends `${infer F}${infer R}` ? StringToArray<R, [
|
|
103
|
+
...Result,
|
|
104
|
+
F
|
|
105
|
+
]> : Result;
|
|
106
|
+
type StringLength<S extends string> = string extends S ? never : StringToArray<S>['length'];
|
|
107
|
+
type NumericString = '0123456789';
|
|
108
|
+
type PositiveNumericCharacterGt<A extends string, B extends string> = NumericString extends `${infer HeadA}${A}${infer TailA}` ? NumericString extends `${infer HeadB}${B}${infer TailB}` ? HeadA extends `${HeadB}${infer _}${infer __}` ? true : false : never : never;
|
|
109
|
+
type SameLengthPositiveNumericStringGt<A extends string, B extends string> = A extends `${infer FirstA}${infer RestA}` ? B extends `${infer FirstB}${infer RestB}` ? FirstA extends FirstB ? SameLengthPositiveNumericStringGt<RestA, RestB> : PositiveNumericCharacterGt<FirstA, FirstB> : never : false;
|
|
110
|
+
type PositiveNumericStringGt<A extends string, B extends string> = A extends B ? false : [
|
|
111
|
+
TupleOf<StringLength<A>, 0>,
|
|
112
|
+
TupleOf<StringLength<B>, 0>
|
|
113
|
+
] extends infer R extends [
|
|
114
|
+
readonly unknown[],
|
|
115
|
+
readonly unknown[]
|
|
116
|
+
] ? R[0] extends [
|
|
117
|
+
...R[1],
|
|
118
|
+
...infer Remain extends readonly unknown[]
|
|
119
|
+
] ? 0 extends Remain['length'] ? SameLengthPositiveNumericStringGt<A, B> : true : false : never;
|
|
120
|
+
type GreaterThan<A extends number, B extends number> = A extends number ? B extends number ? number extends A | B ? boolean : [
|
|
121
|
+
IsEqual<A, PositiveInfinity>,
|
|
122
|
+
IsEqual<A, NegativeInfinity>,
|
|
123
|
+
IsEqual<B, PositiveInfinity>,
|
|
124
|
+
IsEqual<B, NegativeInfinity>
|
|
125
|
+
] extends infer R extends [
|
|
126
|
+
boolean,
|
|
127
|
+
boolean,
|
|
128
|
+
boolean,
|
|
129
|
+
boolean
|
|
130
|
+
] ? Or<And<IsEqual<R[0], true>, IsEqual<R[2], false>>, And<IsEqual<R[3], true>, IsEqual<R[1], false>>> extends true ? true : Or<And<IsEqual<R[1], true>, IsEqual<R[3], false>>, And<IsEqual<R[2], true>, IsEqual<R[0], false>>> extends true ? false : true extends R[number] ? false : [
|
|
131
|
+
IsNegative<A>,
|
|
132
|
+
IsNegative<B>
|
|
133
|
+
] extends infer R extends [
|
|
134
|
+
boolean,
|
|
135
|
+
boolean
|
|
136
|
+
] ? [
|
|
137
|
+
true,
|
|
138
|
+
false
|
|
139
|
+
] extends R ? false : [
|
|
140
|
+
false,
|
|
141
|
+
true
|
|
142
|
+
] extends R ? true : [
|
|
143
|
+
false,
|
|
144
|
+
false
|
|
145
|
+
] extends R ? PositiveNumericStringGt<`${A}`, `${B}`> : PositiveNumericStringGt<`${Absolute<B>}`, `${Absolute<A>}`> : never : never : never : never;
|
|
146
|
+
type GreaterThanOrEqual<A extends number, B extends number> = number extends A | B ? boolean : A extends number ? B extends number ? A extends B ? true : GreaterThan<A, B> : never : never;
|
|
147
|
+
type LessThan<A extends number, B extends number> = GreaterThanOrEqual<A, B> extends infer Result ? (Result extends true ? false : true) : never;
|
|
148
|
+
type SubtractIfAGreaterThanB<A extends number, B extends number> = TupleOf<A> extends [
|
|
149
|
+
...TupleOf<B>,
|
|
150
|
+
...infer R
|
|
151
|
+
] ? R['length'] : never;
|
|
152
|
+
type SubtractPositives<A extends number, B extends number> = LessThan<A, B> extends true ? ReverseSign<SubtractIfAGreaterThanB<B, A>> : SubtractIfAGreaterThanB<A, B>;
|
|
153
|
+
type SubtractPostChecks<A extends number, B extends number, AreNegative = [
|
|
154
|
+
IsNegative<A>,
|
|
155
|
+
IsNegative<B>
|
|
156
|
+
]> = AreNegative extends [
|
|
157
|
+
false,
|
|
158
|
+
false
|
|
159
|
+
] ? SubtractPositives<A, B> : AreNegative extends [
|
|
160
|
+
true,
|
|
161
|
+
true
|
|
162
|
+
] ? ReverseSign<SubtractPositives<Absolute<A>, Absolute<B>>> : [
|
|
163
|
+
...TupleOf<Absolute<A>>,
|
|
164
|
+
...TupleOf<Absolute<B>>
|
|
165
|
+
] extends infer R extends unknown[] ? LessThan<A, B> extends true ? ReverseSign<R['length']> : R['length'] : never;
|
|
166
|
+
/**
|
|
167
|
+
* Returns the difference between two numbers. `A` or `B` can only support `-999` ~ `999`.
|
|
168
|
+
*
|
|
169
|
+
* Copied from the `Subtract` type in the `type-fest` package so that this package's public types do
|
|
170
|
+
* not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
171
|
+
*
|
|
172
|
+
* @category Number
|
|
173
|
+
* @category Package : @augment-vir/common
|
|
174
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
175
|
+
*/
|
|
176
|
+
export type Subtract<A extends number, B extends number> = number extends A | B ? number : A extends B & (PositiveInfinity | NegativeInfinity) ? number : A extends NegativeInfinity ? NegativeInfinity : B extends PositiveInfinity ? NegativeInfinity : A extends PositiveInfinity ? PositiveInfinity : B extends NegativeInfinity ? PositiveInfinity : A extends B ? 0 : A extends 0 ? ReverseSign<B> : B extends 0 ? A : SubtractPostChecks<A, B>;
|
|
177
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
declare const tag: unique symbol;
|
|
2
|
+
/**
|
|
3
|
+
* The container object that holds a {@link Tagged} type's tags.
|
|
4
|
+
*
|
|
5
|
+
* Copied from the `TagContainer` type in the `type-fest` package so that this package's public
|
|
6
|
+
* types do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
7
|
+
*
|
|
8
|
+
* @category Type
|
|
9
|
+
* @category Package : @augment-vir/common
|
|
10
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
11
|
+
*/
|
|
12
|
+
export type TagContainer<Token> = {
|
|
13
|
+
readonly [tag]: Token;
|
|
14
|
+
};
|
|
15
|
+
type Tag<Token extends PropertyKey, TagMetadata> = TagContainer<{
|
|
16
|
+
[K in Token]: TagMetadata;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Create a tagged type that can support multiple tags and per-tag metadata. Useful for creating
|
|
20
|
+
* distinct types that are not assignable to one another even though they share an underlying type.
|
|
21
|
+
*
|
|
22
|
+
* Copied from the `Tagged` type in the `type-fest` package so that this package's public types do
|
|
23
|
+
* not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
24
|
+
*
|
|
25
|
+
* @category Type
|
|
26
|
+
* @category Package : @augment-vir/common
|
|
27
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
28
|
+
*/
|
|
29
|
+
export type Tagged<Type, TagName extends PropertyKey, TagMetadata = never> = Type & Tag<TagName, TagMetadata>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These type predicates are copied from `type-fest` v5.6 rather than imported from it. Owning them
|
|
3
|
+
* here keeps `@augment-vir` (and its consumers) decoupled from `type-fest`'s evolving internals:
|
|
4
|
+
* these utilities leak through the public `.d.ts` of downstream packages, so a `type-fest` upgrade
|
|
5
|
+
* could otherwise silently break consumers. These local copies use only built-in types so they
|
|
6
|
+
* never reference `type-fest`.
|
|
7
|
+
*/
|
|
8
|
+
type IsEqualHelper<A, B> = (<G>() => G extends (A & G) | G ? 1 : 2) extends <G>() => G extends (B & G) | G ? 1 : 2 ? true : false;
|
|
9
|
+
/**
|
|
10
|
+
* Returns `true` if the two given types are exactly equal, otherwise `false`.
|
|
11
|
+
*
|
|
12
|
+
* @category Type
|
|
13
|
+
* @category Package : @augment-vir/common
|
|
14
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
15
|
+
*/
|
|
16
|
+
export type IsEqual<A, B> = [A] extends [B] ? [B] extends [A] ? IsEqualHelper<A, B> : false : false;
|
|
17
|
+
/**
|
|
18
|
+
* Returns `true` if the given type is `never`, otherwise `false`.
|
|
19
|
+
*
|
|
20
|
+
* @category Type
|
|
21
|
+
* @category Package : @augment-vir/common
|
|
22
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
23
|
+
*/
|
|
24
|
+
export type IsNever<T> = [T] extends [never] ? true : false;
|
|
25
|
+
/**
|
|
26
|
+
* Returns `true` if the given type is `any`, otherwise `false`.
|
|
27
|
+
*
|
|
28
|
+
* @category Type
|
|
29
|
+
* @category Package : @augment-vir/common
|
|
30
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
31
|
+
*/
|
|
32
|
+
export type IsAny<T> = 0 extends 1 & NoInfer<T> ? true : false;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These type predicates are copied from `type-fest` v5.6 rather than imported from it. Owning them
|
|
3
|
+
* here keeps `@augment-vir` (and its consumers) decoupled from `type-fest`'s evolving internals:
|
|
4
|
+
* these utilities leak through the public `.d.ts` of downstream packages, so a `type-fest` upgrade
|
|
5
|
+
* could otherwise silently break consumers. These local copies use only built-in types so they
|
|
6
|
+
* never reference `type-fest`.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matches any [typed
|
|
3
|
+
* array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray),
|
|
4
|
+
* like `Uint8Array` or `Float64Array`.
|
|
5
|
+
*
|
|
6
|
+
* Copied from the `TypedArray` type in the `type-fest` package so that this package's public types
|
|
7
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
8
|
+
*
|
|
9
|
+
* @category Array
|
|
10
|
+
* @category Package : @augment-vir/common
|
|
11
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
12
|
+
*/
|
|
13
|
+
export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type IsUnknown } from './is-unknown.js';
|
|
2
|
+
import { type Simplify } from './simplify.js';
|
|
3
|
+
import { type IsAny } from './type-checks.js';
|
|
4
|
+
type BaseKeyFilter<Type, Key extends keyof Type> = Key extends symbol ? never : Type[Key] extends symbol ? never : Type[Key] extends Record<string, unknown> ? Key : [(...arguments_: any[]) => any] extends [Type[Key]] ? never : Key;
|
|
5
|
+
type FilterDefinedKeys<T extends object> = Exclude<{
|
|
6
|
+
[Key in keyof T]: IsAny<T[Key]> extends true ? Key : IsUnknown<T[Key]> extends true ? Key : undefined extends T[Key] ? never : T[Key] extends undefined ? never : BaseKeyFilter<T, Key>;
|
|
7
|
+
}[keyof T], undefined>;
|
|
8
|
+
type FilterOptionalKeys<T extends object> = Exclude<{
|
|
9
|
+
[Key in keyof T]: IsAny<T[Key]> extends true ? never : undefined extends T[Key] ? T[Key] extends undefined ? never : BaseKeyFilter<T, Key> : never;
|
|
10
|
+
}[keyof T], undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* For an object `T`, if it has any properties that are a union with `undefined`, make those into
|
|
13
|
+
* optional properties instead.
|
|
14
|
+
*
|
|
15
|
+
* Copied from the internal `UndefinedToOptional` type in the `type-fest` package so that this
|
|
16
|
+
* package's public types do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
17
|
+
*
|
|
18
|
+
* @category Object
|
|
19
|
+
* @category Package : @augment-vir/common
|
|
20
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
21
|
+
*/
|
|
22
|
+
export type UndefinedToOptional<T extends object> = Simplify<{
|
|
23
|
+
[Key in keyof Pick<T, FilterDefinedKeys<T>>]: T[Key];
|
|
24
|
+
} & {
|
|
25
|
+
[Key in keyof Pick<T, FilterOptionalKeys<T>>]?: Exclude<T[Key], undefined>;
|
|
26
|
+
}>;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type IsNever } from './type-checks.js';
|
|
2
|
+
import { type UnionToIntersection } from './union-to-intersection.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns a single member of the given union. Which member is returned is not guaranteed, but it is
|
|
5
|
+
* deterministic for a given union.
|
|
6
|
+
*
|
|
7
|
+
* Copied from the `UnionMember` type in the `type-fest` package so that this package's public types
|
|
8
|
+
* do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
9
|
+
*
|
|
10
|
+
* @category Type
|
|
11
|
+
* @category Package : @augment-vir/common
|
|
12
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
13
|
+
*/
|
|
14
|
+
export type UnionMember<T> = IsNever<T> extends true ? never : UnionToIntersection<T extends any ? () => T : never> extends () => infer R ? R : never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a union type to an intersection type.
|
|
3
|
+
*
|
|
4
|
+
* Copied from the `UnionToIntersection` type in the `type-fest` package so that this package's
|
|
5
|
+
* public types do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
6
|
+
*
|
|
7
|
+
* @category Type
|
|
8
|
+
* @category Package : @augment-vir/common
|
|
9
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
10
|
+
*/
|
|
11
|
+
export type UnionToIntersection<Union> = (Union extends unknown ? (distributedUnion: Union) => void : never) extends (mergedIntersection: infer Intersection) => void ? Intersection & Union : never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ExcludeExactly } from './exclude-exactly.js';
|
|
2
|
+
import { type IsNever } from './type-checks.js';
|
|
3
|
+
import { type UnionMember } from './union-member.js';
|
|
4
|
+
import { type UnknownArray } from './unknown-array.js';
|
|
5
|
+
type UnionToTupleHelper<Union, Accumulator extends UnknownArray = [], Member = UnionMember<Union>> = IsNever<Union> extends true ? Accumulator : UnionToTupleHelper<ExcludeExactly<Union, Member>, [
|
|
6
|
+
Member,
|
|
7
|
+
...Accumulator
|
|
8
|
+
]>;
|
|
9
|
+
/**
|
|
10
|
+
* Convert a union type into an unordered tuple type of its elements. The order of the resulting
|
|
11
|
+
* tuple is not guaranteed.
|
|
12
|
+
*
|
|
13
|
+
* Copied from the `UnionToTuple` type in `type-fest` v5.6 so that this package's public types do
|
|
14
|
+
* not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
15
|
+
*
|
|
16
|
+
* @category Array
|
|
17
|
+
* @category Package : @augment-vir/common
|
|
18
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
19
|
+
*/
|
|
20
|
+
export type UnionToTuple<Union> = UnionToTupleHelper<Union> extends infer Result extends UnknownArray ? Result : never;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents an array with `unknown` values. Any array can be assigned to this type.
|
|
3
|
+
*
|
|
4
|
+
* Copied from the `UnknownArray` type in the `type-fest` package so that this package's public
|
|
5
|
+
* types do not depend on `type-fest` (see the note in `type-checks.ts`).
|
|
6
|
+
*
|
|
7
|
+
* @category Array
|
|
8
|
+
* @category Package : @augment-vir/common
|
|
9
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
10
|
+
*/
|
|
11
|
+
export type UnknownArray = readonly unknown[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|