type-plus 6.2.0 → 6.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/README.md +4 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/predicates/Equal.d.ts +21 -2
- package/cjs/predicates/Equal.d.ts.map +1 -1
- package/cjs/tuple/index.d.ts +2 -0
- package/cjs/tuple/index.d.ts.map +1 -0
- package/cjs/tuple/index.js +3 -0
- package/cjs/tuple/index.js.map +1 -0
- package/cjs/tuple/tuple.d.ts +16 -0
- package/cjs/tuple/tuple.d.ts.map +1 -0
- package/cjs/tuple/tuple.js +3 -0
- package/cjs/tuple/tuple.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/predicates/Equal.d.ts +21 -2
- package/esm/predicates/Equal.d.ts.map +1 -1
- package/esm/tuple/index.d.ts +2 -0
- package/esm/tuple/index.d.ts.map +1 -0
- package/esm/tuple/index.js +2 -0
- package/esm/tuple/index.js.map +1 -0
- package/esm/tuple/tuple.d.ts +16 -0
- package/esm/tuple/tuple.d.ts.map +1 -0
- package/esm/tuple/tuple.js +2 -0
- package/esm/tuple/tuple.js.map +1 -0
- package/package.json +1 -1
- package/ts/index.ts +1 -0
- package/ts/predicates/Equal.ts +23 -4
- package/ts/tuple/index.ts +1 -0
- package/ts/tuple/readme.md +7 -0
- package/ts/tuple/tuple.ts +20 -0
package/README.md
CHANGED
|
@@ -487,6 +487,10 @@ So you may encounter some weird behavior if your logic is complex.
|
|
|
487
487
|
- `Increment<A, Fail=never>`: alias of `Add<A, 1, Fail>`.
|
|
488
488
|
- `Decrement<A, Fail=never>`: alias of `Subtract<A, 1, Fail>`.
|
|
489
489
|
|
|
490
|
+
### Tuple
|
|
491
|
+
|
|
492
|
+
- [`TupleType`](ts/tuple/readme.md#tupletype)
|
|
493
|
+
|
|
490
494
|
### Utility Functions
|
|
491
495
|
|
|
492
496
|
- `amend(subject)...`: amend subject as union or intersect of `T`.
|
package/cjs/index.d.ts
CHANGED
|
@@ -19,5 +19,6 @@ export * from './object/index.js';
|
|
|
19
19
|
export * from './predicates/index.js';
|
|
20
20
|
export * from './promise/index.js';
|
|
21
21
|
export * from './testing/index.js';
|
|
22
|
+
export * from './tuple/index.js';
|
|
22
23
|
export * from './utils/index.js';
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
package/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGlE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AACvD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,mBAAmB,iBAAiB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGlE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AACvD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,mBAAmB,iBAAiB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
|
package/cjs/index.js
CHANGED
|
@@ -47,6 +47,7 @@ __exportStar(require("./object/index.js"), exports);
|
|
|
47
47
|
__exportStar(require("./predicates/index.js"), exports);
|
|
48
48
|
__exportStar(require("./promise/index.js"), exports);
|
|
49
49
|
__exportStar(require("./testing/index.js"), exports);
|
|
50
|
+
__exportStar(require("./tuple/index.js"), exports);
|
|
50
51
|
__exportStar(require("./utils/index.js"), exports);
|
|
51
52
|
// export { types, types as T }
|
|
52
53
|
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA4C;AAC5C,uCAA6D;AAApD,qGAAA,QAAQ,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAO1C,sDAAmC;AACnC,wEAAuD;AACvD,wDAAqC;AACrC,uDAAoC;AACpC,mDAAgC;AAChC,sDAAmC;AACnC,wDAAqC;AAErC,oDAAiC;AACjC,2DAAwC;AACxC,yDAAsC;AACtC,2EAA0D;AAC1D,oDAAiC;AACjC,wDAAqC;AACrC,qDAAkC;AAClC,qDAAkC;AAClC,mDAAgC;AAChC,+BAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA4C;AAC5C,uCAA6D;AAApD,qGAAA,QAAQ,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAO1C,sDAAmC;AACnC,wEAAuD;AACvD,wDAAqC;AACrC,uDAAoC;AACpC,mDAAgC;AAChC,sDAAmC;AACnC,wDAAqC;AAErC,oDAAiC;AACjC,2DAAwC;AACxC,yDAAsC;AACtC,2EAA0D;AAC1D,oDAAiC;AACjC,wDAAqC;AACrC,qDAAkC;AAClC,qDAAkC;AAClC,mDAAgC;AAChC,mDAAgC;AAChC,+BAA+B"}
|
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
import type { IsAny } from '../any_plus/any.js';
|
|
2
|
+
import type { TupleType } from '../tuple/tuple.js';
|
|
2
3
|
import type { And, Or } from './logical.js';
|
|
3
4
|
/**
|
|
4
|
-
* Checks
|
|
5
|
+
* Checks `A` and `B` are equal.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { type Equal } from 'type-plus'
|
|
9
|
+
*
|
|
10
|
+
* type R = Equal<1, 1> // true
|
|
11
|
+
* type R = Equal<any, any> // true
|
|
12
|
+
* type R = Equal<boolean, boolean> // true
|
|
13
|
+
* type R = Equal<true, true> // true
|
|
14
|
+
* type R = Equal<[1], [1]> // true
|
|
15
|
+
*
|
|
16
|
+
* type R = Equal<boolean, true> // false
|
|
17
|
+
* type R = Equal<any, 1> // false
|
|
18
|
+
* type R = Equal<[any], [1]> // false
|
|
19
|
+
* type R = Equal<{ a: 1 }, { a: 1; b: 2 }> // false
|
|
20
|
+
* ```
|
|
5
21
|
*/
|
|
6
|
-
export type Equal<A, B, Then = true, Else = false> =
|
|
22
|
+
export type Equal<A, B, Then = true, Else = false> = And<TupleType<A, true, false>, TupleType<B, true, false>, (<_>() => _ extends A ? 1 : 2) extends <_>() => _ extends B ? 1 : 2 ? Then : Else, [
|
|
23
|
+
A,
|
|
24
|
+
B
|
|
25
|
+
] extends [B, A] ? And<IsAny<A>, IsAny<B>, Then, Or<IsAny<A>, IsAny<B>, Else, Then>> : Else>;
|
|
7
26
|
/**
|
|
8
27
|
* Checks if the two types are equal.
|
|
9
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAE3C
|
|
1
|
+
{"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,GAAG,CACvD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EACzB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EACzB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EACjF;IAAC,CAAC;IAAE,CAAC;CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAChG,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE/E;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/tuple/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/tuple/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IsNever } from '../PrimitiveTypes.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if `T` is a tuple.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import type { TupleType } from 'type-plus'
|
|
7
|
+
*
|
|
8
|
+
* type R = TupleType<[]> // true
|
|
9
|
+
* type R = TupleType<[1]> // true
|
|
10
|
+
*
|
|
11
|
+
* type R = TupleType<number[]> // false
|
|
12
|
+
* type R = TupleType<string> // false
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export type TupleType<T, Then = T, Else = never> = IsNever<T, Else, T extends infer A extends Array<any> ? (number extends A['length'] ? Else : Then) : Else>;
|
|
16
|
+
//# sourceMappingURL=tuple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CACzD,CAAC,EACD,IAAI,EACJ,CAAC,SAAS,MAAM,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CACxF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../ts/tuple/tuple.ts"],"names":[],"mappings":""}
|
package/esm/index.d.ts
CHANGED
|
@@ -19,5 +19,6 @@ export * from './object/index.js';
|
|
|
19
19
|
export * from './predicates/index.js';
|
|
20
20
|
export * from './promise/index.js';
|
|
21
21
|
export * from './testing/index.js';
|
|
22
|
+
export * from './tuple/index.js';
|
|
22
23
|
export * from './utils/index.js';
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGlE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AACvD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,mBAAmB,iBAAiB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGlE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AACvD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,mBAAmB,iBAAiB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
|
package/esm/index.js
CHANGED
|
@@ -15,6 +15,7 @@ export * from './object/index.js';
|
|
|
15
15
|
export * from './predicates/index.js';
|
|
16
16
|
export * from './promise/index.js';
|
|
17
17
|
export * from './testing/index.js';
|
|
18
|
+
export * from './tuple/index.js';
|
|
18
19
|
export * from './utils/index.js';
|
|
19
20
|
// export { types, types as T }
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAO7D,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AACvD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AAErC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,+BAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAO7D,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AACvD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AAErC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,+BAA+B"}
|
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
import type { IsAny } from '../any_plus/any.js';
|
|
2
|
+
import type { TupleType } from '../tuple/tuple.js';
|
|
2
3
|
import type { And, Or } from './logical.js';
|
|
3
4
|
/**
|
|
4
|
-
* Checks
|
|
5
|
+
* Checks `A` and `B` are equal.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { type Equal } from 'type-plus'
|
|
9
|
+
*
|
|
10
|
+
* type R = Equal<1, 1> // true
|
|
11
|
+
* type R = Equal<any, any> // true
|
|
12
|
+
* type R = Equal<boolean, boolean> // true
|
|
13
|
+
* type R = Equal<true, true> // true
|
|
14
|
+
* type R = Equal<[1], [1]> // true
|
|
15
|
+
*
|
|
16
|
+
* type R = Equal<boolean, true> // false
|
|
17
|
+
* type R = Equal<any, 1> // false
|
|
18
|
+
* type R = Equal<[any], [1]> // false
|
|
19
|
+
* type R = Equal<{ a: 1 }, { a: 1; b: 2 }> // false
|
|
20
|
+
* ```
|
|
5
21
|
*/
|
|
6
|
-
export type Equal<A, B, Then = true, Else = false> =
|
|
22
|
+
export type Equal<A, B, Then = true, Else = false> = And<TupleType<A, true, false>, TupleType<B, true, false>, (<_>() => _ extends A ? 1 : 2) extends <_>() => _ extends B ? 1 : 2 ? Then : Else, [
|
|
23
|
+
A,
|
|
24
|
+
B
|
|
25
|
+
] extends [B, A] ? And<IsAny<A>, IsAny<B>, Then, Or<IsAny<A>, IsAny<B>, Else, Then>> : Else>;
|
|
7
26
|
/**
|
|
8
27
|
* Checks if the two types are equal.
|
|
9
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAE3C
|
|
1
|
+
{"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,GAAG,CACvD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EACzB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EACzB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EACjF;IAAC,CAAC;IAAE,CAAC;CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAChG,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE/E;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/tuple/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/tuple/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IsNever } from '../PrimitiveTypes.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if `T` is a tuple.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import type { TupleType } from 'type-plus'
|
|
7
|
+
*
|
|
8
|
+
* type R = TupleType<[]> // true
|
|
9
|
+
* type R = TupleType<[1]> // true
|
|
10
|
+
*
|
|
11
|
+
* type R = TupleType<number[]> // false
|
|
12
|
+
* type R = TupleType<string> // false
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export type TupleType<T, Then = T, Else = never> = IsNever<T, Else, T extends infer A extends Array<any> ? (number extends A['length'] ? Else : Then) : Else>;
|
|
16
|
+
//# sourceMappingURL=tuple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CACzD,CAAC,EACD,IAAI,EACJ,CAAC,SAAS,MAAM,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CACxF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../ts/tuple/tuple.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/ts/index.ts
CHANGED
package/ts/predicates/Equal.ts
CHANGED
|
@@ -1,12 +1,31 @@
|
|
|
1
1
|
import type { IsAny } from '../any_plus/any.js'
|
|
2
|
+
import type { TupleType } from '../tuple/tuple.js'
|
|
2
3
|
import type { And, Or } from './logical.js'
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
|
-
* Checks
|
|
6
|
+
* Checks `A` and `B` are equal.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { type Equal } from 'type-plus'
|
|
10
|
+
*
|
|
11
|
+
* type R = Equal<1, 1> // true
|
|
12
|
+
* type R = Equal<any, any> // true
|
|
13
|
+
* type R = Equal<boolean, boolean> // true
|
|
14
|
+
* type R = Equal<true, true> // true
|
|
15
|
+
* type R = Equal<[1], [1]> // true
|
|
16
|
+
*
|
|
17
|
+
* type R = Equal<boolean, true> // false
|
|
18
|
+
* type R = Equal<any, 1> // false
|
|
19
|
+
* type R = Equal<[any], [1]> // false
|
|
20
|
+
* type R = Equal<{ a: 1 }, { a: 1; b: 2 }> // false
|
|
21
|
+
* ```
|
|
6
22
|
*/
|
|
7
|
-
export type Equal<A, B, Then = true, Else = false> =
|
|
8
|
-
|
|
9
|
-
|
|
23
|
+
export type Equal<A, B, Then = true, Else = false> = And<
|
|
24
|
+
TupleType<A, true, false>,
|
|
25
|
+
TupleType<B, true, false>,
|
|
26
|
+
(<_>() => _ extends A ? 1 : 2) extends <_>() => _ extends B ? 1 : 2 ? Then : Else,
|
|
27
|
+
[A, B] extends [B, A] ? And<IsAny<A>, IsAny<B>, Then, Or<IsAny<A>, IsAny<B>, Else, Then>> : Else
|
|
28
|
+
>
|
|
10
29
|
|
|
11
30
|
/**
|
|
12
31
|
* Checks if the two types are equal.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type * from './tuple.js'
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IsNever } from '../PrimitiveTypes.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Check if `T` is a tuple.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import type { TupleType } from 'type-plus'
|
|
8
|
+
*
|
|
9
|
+
* type R = TupleType<[]> // true
|
|
10
|
+
* type R = TupleType<[1]> // true
|
|
11
|
+
*
|
|
12
|
+
* type R = TupleType<number[]> // false
|
|
13
|
+
* type R = TupleType<string> // false
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export type TupleType<T, Then = T, Else = never> = IsNever<
|
|
17
|
+
T,
|
|
18
|
+
Else,
|
|
19
|
+
T extends infer A extends Array<any> ? (number extends A['length'] ? Else : Then) : Else
|
|
20
|
+
>
|