type-plus 5.2.0 → 5.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.
Files changed (95) hide show
  1. package/README.md +4 -4
  2. package/cjs/array/PadLeft.spec.js.map +1 -1
  3. package/cjs/array/UnionOfValues.d.ts +1 -1
  4. package/cjs/array/UnionOfValues.d.ts.map +1 -1
  5. package/cjs/array/UnionOfValues.spec.js +10 -0
  6. package/cjs/array/UnionOfValues.spec.js.map +1 -1
  7. package/cjs/array/index.d.ts +3 -3
  8. package/cjs/array/index.d.ts.map +1 -1
  9. package/cjs/array/index.js.map +1 -1
  10. package/cjs/assertion/assertType.d.ts +3 -3
  11. package/cjs/assertion/assertType.spec.js +226 -131
  12. package/cjs/assertion/assertType.spec.js.map +1 -1
  13. package/cjs/function/ExtractFunction.d.ts +8 -2
  14. package/cjs/function/ExtractFunction.d.ts.map +1 -1
  15. package/cjs/function/ExtractFunction.js +5 -0
  16. package/cjs/function/ExtractFunction.js.map +1 -1
  17. package/cjs/function/ExtractFunction.spec.js +18 -6
  18. package/cjs/function/ExtractFunction.spec.js.map +1 -1
  19. package/cjs/functional/compose.d.ts +5 -1
  20. package/cjs/functional/compose.d.ts.map +1 -1
  21. package/cjs/functional/compose.js +5 -1
  22. package/cjs/functional/compose.js.map +1 -1
  23. package/cjs/predicates/CanAssign.spec.js +4 -3
  24. package/cjs/predicates/CanAssign.spec.js.map +1 -1
  25. package/cjs/predicates/Equal.d.ts +14 -18
  26. package/cjs/predicates/Equal.d.ts.map +1 -1
  27. package/cjs/predicates/Equal.js +0 -8
  28. package/cjs/predicates/Equal.js.map +1 -1
  29. package/cjs/predicates/Equal.spec.js +18 -0
  30. package/cjs/predicates/Equal.spec.js.map +1 -1
  31. package/cjs/predicates/IsAny.d.ts +3 -0
  32. package/cjs/predicates/IsAny.d.ts.map +1 -0
  33. package/cjs/predicates/IsAny.js +3 -0
  34. package/cjs/predicates/IsAny.js.map +1 -0
  35. package/cjs/predicates/index.d.ts +2 -3
  36. package/cjs/predicates/index.d.ts.map +1 -1
  37. package/cjs/predicates/index.js.map +1 -1
  38. package/cjs/predicates/isType.d.ts +1 -1
  39. package/cjs/predicates/isType.js +1 -1
  40. package/cjs/predicates/isType.spec.js +16 -12
  41. package/cjs/predicates/isType.spec.js.map +1 -1
  42. package/cjs/predicates/logical.d.ts +4 -4
  43. package/cjs/predicates/logical.d.ts.map +1 -1
  44. package/esm/array/PadLeft.spec.js.map +1 -1
  45. package/esm/array/UnionOfValues.d.ts +1 -1
  46. package/esm/array/UnionOfValues.d.ts.map +1 -1
  47. package/esm/array/UnionOfValues.spec.js +11 -1
  48. package/esm/array/UnionOfValues.spec.js.map +1 -1
  49. package/esm/array/index.d.ts +3 -3
  50. package/esm/array/index.d.ts.map +1 -1
  51. package/esm/array/index.js.map +1 -1
  52. package/esm/assertion/assertType.d.ts +3 -3
  53. package/esm/assertion/assertType.spec.js +226 -131
  54. package/esm/assertion/assertType.spec.js.map +1 -1
  55. package/esm/function/ExtractFunction.d.ts +8 -2
  56. package/esm/function/ExtractFunction.d.ts.map +1 -1
  57. package/esm/function/ExtractFunction.js +5 -0
  58. package/esm/function/ExtractFunction.js.map +1 -1
  59. package/esm/function/ExtractFunction.spec.js +18 -6
  60. package/esm/function/ExtractFunction.spec.js.map +1 -1
  61. package/esm/functional/compose.d.ts +5 -1
  62. package/esm/functional/compose.d.ts.map +1 -1
  63. package/esm/functional/compose.js +5 -1
  64. package/esm/functional/compose.js.map +1 -1
  65. package/esm/predicates/CanAssign.spec.js +4 -3
  66. package/esm/predicates/CanAssign.spec.js.map +1 -1
  67. package/esm/predicates/Equal.d.ts +14 -18
  68. package/esm/predicates/Equal.d.ts.map +1 -1
  69. package/esm/predicates/Equal.js +0 -8
  70. package/esm/predicates/Equal.js.map +1 -1
  71. package/esm/predicates/Equal.spec.js +18 -0
  72. package/esm/predicates/Equal.spec.js.map +1 -1
  73. package/esm/predicates/IsAny.d.ts +3 -0
  74. package/esm/predicates/IsAny.d.ts.map +1 -0
  75. package/esm/predicates/IsAny.js +2 -0
  76. package/esm/predicates/IsAny.js.map +1 -0
  77. package/esm/predicates/index.d.ts +2 -3
  78. package/esm/predicates/index.d.ts.map +1 -1
  79. package/esm/predicates/index.js.map +1 -1
  80. package/esm/predicates/isType.d.ts +1 -1
  81. package/esm/predicates/isType.js +1 -1
  82. package/esm/predicates/isType.spec.js +16 -12
  83. package/esm/predicates/isType.spec.js.map +1 -1
  84. package/esm/predicates/logical.d.ts +4 -4
  85. package/esm/predicates/logical.d.ts.map +1 -1
  86. package/package.json +2 -2
  87. package/ts/array/UnionOfValues.ts +14 -10
  88. package/ts/array/index.ts +3 -4
  89. package/ts/function/ExtractFunction.ts +8 -2
  90. package/ts/functional/compose.ts +5 -1
  91. package/ts/predicates/Equal.ts +19 -23
  92. package/ts/predicates/IsAny.ts +3 -0
  93. package/ts/predicates/index.ts +2 -5
  94. package/ts/predicates/isType.ts +1 -1
  95. package/ts/predicates/logical.ts +26 -4
@@ -1,15 +1,27 @@
1
1
  import { extractFunction, isType } from '../index.js';
2
- it('gets the function itself if it is not composite', () => {
3
- isType.equal();
4
- });
5
- it('omits other props from the type', () => {
6
- isType.equal();
2
+ describe(`ExtraceFunction<T>`, () => {
3
+ it('gets the function itself if it is not composite', () => {
4
+ isType.equal();
5
+ });
6
+ it('omits other props from the type', () => {
7
+ isType.equal();
8
+ });
9
+ it('works with intersact functions', () => {
10
+ isType.equal();
11
+ });
7
12
  });
8
13
  describe(`${extractFunction.name}()`, () => {
9
- it('adjust type to its function type', () => {
14
+ it('adjusts type to its function type', () => {
10
15
  const fn = Object.assign(() => { }, { a: 1 });
11
16
  const r = extractFunction(fn);
12
17
  isType.equal();
13
18
  });
19
+ it('function overload', () => {
20
+ function foo(v) { return v; }
21
+ const fn = Object.assign(foo, { a: 1 });
22
+ const r = extractFunction(fn);
23
+ // @ts-expect-error
24
+ isType.equal();
25
+ });
14
26
  });
15
27
  //# sourceMappingURL=ExtractFunction.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtractFunction.spec.js","sourceRoot":"","sources":["../../ts/function/ExtractFunction.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,eAAe,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEtE,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAIzD,MAAM,CAAC,KAAK,EAAc,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAIzC,MAAM,CAAC,KAAK,EAAuB,CAAA;AACrC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAE7C,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QAE7B,MAAM,CAAC,KAAK,EAAuB,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ExtractFunction.spec.js","sourceRoot":"","sources":["../../ts/function/ExtractFunction.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,eAAe,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEtE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAIzD,MAAM,CAAC,KAAK,EAAc,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAIzC,MAAM,CAAC,KAAK,EAAuB,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAKxC,MAAM,CAAC,KAAK,EAAc,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAE7C,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QAE7B,MAAM,CAAC,KAAK,EAAuB,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAG3B,SAAS,GAAG,CAAC,CAAU,IAAI,OAAO,CAAC,CAAA,CAAC,CAAC;QAErC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACvC,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QAG7B,mBAAmB;QACnB,MAAM,CAAC,KAAK,EAA8D,CAAA;IAC5E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,7 +1,11 @@
1
1
  import type { Head, Last } from '../array/index.js';
2
2
  import type { AnyFunction } from '../function/AnyFunction.js';
3
3
  /**
4
- * compose functions
4
+ * Compose functions to produce a new function.
5
+ * @params args functions to be composed.
6
+ * Each function will receive the return value of the previous function as its parameters.
7
+ * @return The composed function will expect the parameters of the first function,
8
+ * and return the result of the last function.
5
9
  */
6
10
  export declare function compose<FS extends AnyFunction[]>(...fns: FS): (...args: Parameters<Head<FS>>) => ReturnType<Last<FS>>;
7
11
  //# sourceMappingURL=compose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAGrH"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAGrH"}
@@ -1,5 +1,9 @@
1
1
  /**
2
- * compose functions
2
+ * Compose functions to produce a new function.
3
+ * @params args functions to be composed.
4
+ * Each function will receive the return value of the previous function as its parameters.
5
+ * @return The composed function will expect the parameters of the first function,
6
+ * and return the result of the last function.
3
7
  */
4
8
  export function compose(...fns) {
5
9
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,OAAO,CAA2B,GAAG,GAAO;IAC1D,+DAA+D;IAC/D,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAA2B,GAAG,GAAO;IAC1D,+DAA+D;IAC/D,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC"}
@@ -45,9 +45,10 @@ describe('canAssign()', () => {
45
45
  const t = canAssign(false);
46
46
  assertType.isTrue(t(undefined));
47
47
  assertType.isTrue(t({ a: 1 }));
48
- // these fails
49
- // t({ a: '' })
50
- // t({ a: '', b: '' })
48
+ // @ts-expect-error
49
+ t({ a: '' });
50
+ // @ts-expect-error
51
+ t({ a: '', b: '' });
51
52
  });
52
53
  });
53
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CanAssign.spec.js","sourceRoot":"","sources":["../../ts/predicates/CanAssign.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,SAAS,EAAE,MAAM,aAAa,CAAA;AAE9D,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,UAAU,CAAC,MAAM,CAAC,IAA4B,CAAC,CAAA;QAC/C,UAAU,CAAC,MAAM,CAAC,IAAuB,CAAC,CAAA;QAC1C,UAAU,CAAC,MAAM,CAAC,IAAiC,CAAC,CAAA;QACpD,UAAU,CAAC,MAAM,CAAC,IAA8B,CAAC,CAAA;QACjD,UAAU,CAAC,MAAM,CAAC,IAA2B,CAAC,CAAA;QAC9C,UAAU,CAAC,MAAM,CAAC,IAAiC,CAAC,CAAA;QACpD,UAAU,CAAC,MAAM,CAAC,IAAiC,CAAC,CAAA;QACpD,UAAU,CAAC,MAAM,CAAC,IAAgC,CAAC,CAAA;QACnD,UAAU,CAAC,MAAM,CAAC,IAAmC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,UAAU,CAAC,OAAO,CAAC,KAA6B,CAAC,CAAA;QACjD,UAAU,CAAC,OAAO,CAAC,KAA+B,CAAC,CAAA;QACnD,UAAU,CAAC,OAAO,CAAC,KAA+B,CAAC,CAAA;QACnD,UAAU,CAAC,OAAO,CAAC,KAA+B,CAAC,CAAA;QACnD,UAAU,CAAC,OAAO,CAAC,KAAkC,CAAC,CAAA;QACtD,UAAU,CAAC,OAAO,CAAC,KAAiC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,UAAU,CAAC,MAAM,CAAC,IAA0D,CAAC,CAAA;IAC/E,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,UAAU,CAAC,OAAO,CAAC,KAA2D,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC9D,UAAU,CAAC,MAAM,CAAC,SAAS,EAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YACzD,UAAU,CAAC,MAAM,CAAC,SAAS,EAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YAEjE,wBAAwB;YACxB,uCAAuC;QACzC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,GAAG,EAAE,CAAA;YACZ,UAAU,CAAC,MAAM,CAAC,SAAS,EAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC/B,UAAU,CAAC,MAAM,CAAC,SAAS,EAAsB,CAAC,SAAS,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,GAAG,SAAS,CAAgB,KAAK,CAAC,CAAA;YACzC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;YAC/B,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAE9B,cAAc;YACd,eAAe;YACf,sBAAsB;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"CanAssign.spec.js","sourceRoot":"","sources":["../../ts/predicates/CanAssign.spec.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,19 @@
1
+ import type { IsAny } from './IsAny.js';
2
+ import type { And, Or } from './logical.js';
1
3
  /**
2
- * `<T>() => T extends A ? 1 : 2` idea originate from `typepark`
3
- * But it does not work with union types.
4
- *
5
- * `<T>() => T extends A` is a trick to create an inferred type `T`.
6
- * This is needed for `boolean`, `string`, and `number`,
7
- * as they supports literal types.
4
+ * Checks if the two types are equal.
8
5
  */
9
- import { IsNever } from '../PrimitiveTypes.js';
6
+ export type Equal<A, B, Then = true, Else = false> = [A, B] extends [B, A] ? And<IsAny<A>, IsAny<B>, Then, Or<IsAny<A>, IsAny<B>, Else, Then>> : Else;
10
7
  /**
11
- * Checks if two types are equal.
8
+ * Checks if the two types are equal.
12
9
  */
13
- export type Equal<A, B, Then = true, Else = false> = [
14
- A,
15
- B
16
- ] extends [object, object] ? (IsNever<A> extends true ? (IsNever<B> extends true ? Then : Else) : (A extends B ? B extends A ? Then : Else : Else)) : (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Then : Else;
17
- export type IsEqual<A, B> = Equal<A, B>;
18
- export type NotEqual<A, B, Then = true, Else = false> = [
19
- A,
20
- B
21
- ] extends [object, object] ? (IsNever<A> extends true ? (IsNever<B> extends true ? Else : Then) : (A extends B ? B extends A ? Else : Then : Then)) : (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Else : Then;
22
- export type IsNotEqual<A, B> = NotEqual<A, B>;
10
+ export type IsEqual<A, B, Then = true, Else = false> = Equal<A, B, Then, Else>;
11
+ /**
12
+ * Check if the two types are not equal
13
+ */
14
+ export type NotEqual<A, B, Then = true, Else = false> = Equal<A, B, Else, Then>;
15
+ /**
16
+ * Check if the two types are not equal
17
+ */
18
+ export type IsNotEqual<A, B, Then = true, Else = false> = NotEqual<A, B, Then, Else>;
23
19
  //# sourceMappingURL=Equal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAC/C;IAAC,CAAC;IAAE,CAAC;CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GACvC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GACnD,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACvF,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEvC,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAClD;IAAC,CAAC;IAAE,CAAC;CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GACvC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GACnD,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEvF,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACtE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EACtB,IAAI,EACJ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GACnC,IAAI,CAAA;AAER;;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"}
@@ -1,10 +1,2 @@
1
- /**
2
- * `<T>() => T extends A ? 1 : 2` idea originate from `typepark`
3
- * But it does not work with union types.
4
- *
5
- * `<T>() => T extends A` is a trick to create an inferred type `T`.
6
- * This is needed for `boolean`, `string`, and `number`,
7
- * as they supports literal types.
8
- */
9
1
  export {};
10
2
  //# sourceMappingURL=Equal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Equal.js","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
1
+ {"version":3,"file":"Equal.js","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":""}
@@ -78,6 +78,24 @@ describe('Equal<A, B>', () => {
78
78
  it('works with union types containing symbol', () => {
79
79
  assertType.isFalse(false);
80
80
  });
81
+ it('works with intersect objects', () => {
82
+ assertType.isTrue(true);
83
+ assertType.isFalse(false);
84
+ });
85
+ it('works with union of functions', () => {
86
+ assertType.isTrue(true);
87
+ assertType.isFalse(false);
88
+ assertType.isFalse(false);
89
+ });
90
+ it('works against any', () => {
91
+ assertType.isTrue(true);
92
+ assertType.isFalse(false);
93
+ assertType.isFalse(false);
94
+ });
95
+ it('works against function overload', () => {
96
+ function foo(v) { return v; }
97
+ assertType.isTrue(true);
98
+ });
81
99
  });
82
100
  describe('NotEqual<A, B>', () => {
83
101
  test('boolean', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"Equal.spec.js","sourceRoot":"","sources":["../../ts/predicates/Equal.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Equal.spec.js","sourceRoot":"","sources":["../../ts/predicates/Equal.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { IsExtend } from './Extends.js';
2
+ export type IsAny<T, Then = true, Else = false> = boolean extends IsExtend<T, string> ? Then : Else;
3
+ //# sourceMappingURL=IsAny.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsAny.d.ts","sourceRoot":"","sources":["../../ts/predicates/IsAny.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IsAny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsAny.js","sourceRoot":"","sources":["../../ts/predicates/IsAny.ts"],"names":[],"mappings":""}
@@ -2,11 +2,10 @@ export * from './CanAssign.js';
2
2
  export type { Equal, IsEqual, IsNotEqual, NotEqual } from './Equal.js';
3
3
  export type { Extendable, IsExtend, IsNotExtend, NotExtendable } from './Extends.js';
4
4
  export type { If } from './If.js';
5
+ export type { IsAny } from './IsAny.js';
6
+ export type { IsEmptyObject } from './IsEmptyObject.js';
5
7
  export * from './isType.js';
6
8
  export type { And, Not, Or, Xor } from './logical.js';
7
- export type { IsEmptyObject } from './IsEmptyObject.js';
8
- import type { IsExtend } from './Extends.js';
9
9
  export type IsLiteral<T extends number | string, Then = true, Else = false> = number extends T ? Else : string extends T ? Else : Then;
10
10
  export type IsBoolean<T, Then = true, Else = false> = boolean extends T ? Then : Else;
11
- export type IsAny<T, Then = true, Else = false> = boolean extends IsExtend<T, string> ? Then : Else;
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,GAC5F,IAAI,GACJ,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhC,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAErF,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AACjC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,GAC5F,IAAI,GACJ,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhC,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAI9B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAM9B,cAAc,aAAa,CAAA"}
@@ -10,6 +10,6 @@ export declare function isType<T>(subject: unknown, validator: (s: T) => unknown
10
10
  export declare namespace isType {
11
11
  var t: <T extends true>(subject?: T | undefined) => boolean;
12
12
  var f: <T extends false>(subject?: T | undefined) => boolean;
13
- var equal: <C extends Equal<A, B, true, false>, A, B>() => void;
13
+ var equal: <C extends Equal<A, B>, A, B>() => void;
14
14
  }
15
15
  //# sourceMappingURL=isType.d.ts.map
@@ -9,7 +9,7 @@ isType.f = function (subject) {
9
9
  };
10
10
  /**
11
11
  * Are types A and B equals/not equals.
12
- * Easier to use then `isType.t<>()` and `isType.f<>()`,
12
+ * Easier to use than `isType.t<>()` and `isType.f<>()`,
13
13
  * when doing type level only equality comparison as you don't have to import `Equal<>`.
14
14
  */
15
15
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -54,30 +54,34 @@ describe('isType.t()', () => {
54
54
  test('accept true type but not false or boolean', () => {
55
55
  expect(isType.t()).toBe(true);
56
56
  expect(isType.t()).toBe(true);
57
- // these fails
58
- // isType.t<false>()
59
- // isType.t<boolean>()
57
+ // @ts-expect-error
58
+ isType.t();
59
+ // @ts-expect-error
60
+ isType.t();
60
61
  });
61
62
  test('accept value with type true but not false or boolean', () => {
62
63
  expect(isType.t(true)).toBe(true);
63
- // these fails
64
- // isType.t(false)
65
- // isType.t(1 === 1)
64
+ // @ts-expect-error
65
+ isType.t(false);
66
+ // @ts-expect-error
67
+ isType.t(1 === 1);
66
68
  });
67
69
  });
68
70
  describe('isType.f()', () => {
69
71
  test('accept false type but not true or boolean', () => {
70
72
  expect(isType.f()).toBe(true);
71
73
  expect(isType.f()).toBe(true);
72
- // these fails
73
- // isType.f<true>()
74
- // isType.f<boolean>()
74
+ // @ts-expect-error
75
+ isType.f();
76
+ // @ts-expect-error
77
+ isType.f();
75
78
  });
76
79
  test('accept value with type true but not false or boolean', () => {
77
80
  expect(isType.f(false)).toBe(true);
78
- // these fails
79
- // isType.f(true)
80
- // isType.f(1 !== 1)
81
+ // @ts-expect-error
82
+ isType.f(true);
83
+ // @ts-expect-error
84
+ isType.f(1 !== 1);
81
85
  });
82
86
  });
83
87
  describe('isType.equal()', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"isType.spec.js","sourceRoot":"","sources":["../../ts/predicates/isType.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isType.spec.js","sourceRoot":"","sources":["../../ts/predicates/isType.spec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false;
2
- export type Or<A extends boolean, B extends boolean> = A extends true ? true : B extends true ? true : false;
3
- export type Not<X extends boolean> = X extends true ? false : true;
4
- export type Xor<A extends boolean, B extends boolean> = A extends true ? Not<B> : B extends true ? true : false;
1
+ export type And<A extends boolean, B extends boolean, Then = true, Else = false> = A extends true ? B extends true ? Then : Else : Else;
2
+ export type Or<A extends boolean, B extends boolean, Then = true, Else = false> = A extends true ? Then : B extends true ? Then : Else;
3
+ export type Not<X extends boolean, Then = true, Else = false> = X extends true ? Else : Then;
4
+ export type Xor<A extends boolean, B extends boolean, Then = true, Else = false> = A extends Then ? Not<B> : B extends true ? Then : Else;
5
5
  //# sourceMappingURL=logical.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logical.d.ts","sourceRoot":"","sources":["../../ts/predicates/logical.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAA;AAC9G,MAAM,MAAM,EAAE,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,CAAA;AAC5G,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AAClE,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,CAAA"}
1
+ {"version":3,"file":"logical.d.ts","sourceRoot":"","sources":["../../ts/predicates/logical.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,CACb,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,KAAK,IACV,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAExD,MAAM,MAAM,EAAE,CACZ,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,KAAK,IACV,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAExD,MAAM,MAAM,GAAG,CACb,CAAC,SAAS,OAAO,EACjB,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,KAAK,IACV,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhC,MAAM,MAAM,GAAG,CACb,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,KAAK,IACV,CAAC,SAAS,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "5.2.0",
3
+ "version": "5.3.0",
4
4
  "description": "Provides additional types for TypeScript.",
5
5
  "homepage": "https://github.com/unional/type-plus",
6
6
  "bugs": {
@@ -67,7 +67,7 @@
67
67
  "tslib": "^2.4.0",
68
68
  "typedoc": "^0.23.0",
69
69
  "typedoc-plugin-extras": "^2.2.3",
70
- "typescript": "4.9.4"
70
+ "typescript": "5.0.0-dev.20230116"
71
71
  },
72
72
  "packageManager": "pnpm@7.25.0",
73
73
  "size-limit": [
@@ -1,10 +1,14 @@
1
- /**
2
- * Gets the union of value types in `A`
3
- */
4
- export type UnionOfValues<A extends Array<any>> = A extends Array<infer E> ? E : never
5
-
6
- /**
7
- * Gets the union of value types in `A`
8
- * This will be deprecated in 4.0. Please use UnionOfValues instead.
9
- */
10
- export type ArrayValue<A extends any[]> = UnionOfValues<A>
1
+ /**
2
+ * Gets the union of value types in `A`
3
+ */
4
+ export type UnionOfValues<A extends Array<any>> = A extends Array<infer E> ? E : never
5
+
6
+ // alternative implementation
7
+ // export type UnionOfValues<A extends readonly any[]> = (A)[number]
8
+ // from: https://twitter.com/anveio/status/1615140804816928769?s=20&t=wrudiqV94A11CSl19N6Viw
9
+
10
+ /**
11
+ * Gets the union of value types in `A`
12
+ * @deprecated Please use `UnionOfValues` instead.
13
+ */
14
+ export type ArrayValue<A extends any[]> = UnionOfValues<A>
package/ts/array/index.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export type { CommonKeys, CommonPropKeys } from './CommonPropKeys.js'
2
2
  export type { Concat } from './Concat.js'
3
3
  export type { CreateTuple } from './CreateTuple.js'
4
- export * from './drop.js'
5
4
  export type { Filter, KeepMatch } from './Filter.js'
6
5
  export type { FindFirst, First } from './FindFirst.js'
7
6
  export type { FindLast } from './FindLast.js'
@@ -9,12 +8,12 @@ export type { Head } from './Head.js'
9
8
  export type { IntersectOfProps, MapToProp } from './IntersectOfProps.js'
10
9
  export type { IsArray } from './IsArray.js'
11
10
  export type { Last } from './Last.js'
12
- export * from './literalArray.js'
13
11
  export type { PadLeft } from './PadLeft.js'
14
- export * from './reduceWhile.js'
15
12
  export type { Reverse } from './Reverse.js'
16
13
  export type { Some } from './Some.js'
17
14
  export type { Tail } from './Tail.js'
18
15
  export type { PropUnion, UnionOfProps } from './UnionOfProps.js'
19
16
  export type { ArrayValue, UnionOfValues } from './UnionOfValues.js'
20
-
17
+ export * from './drop.js'
18
+ export * from './literalArray.js'
19
+ export * from './reduceWhile.js'
@@ -1,13 +1,19 @@
1
- import { AnyFunction } from './AnyFunction.js'
1
+ import type { AnyFunction } from './AnyFunction.js'
2
2
 
3
3
  /**
4
- * Extract the function signature from a composit type T.
4
+ * Extract the function signature from a composite type T.
5
5
  *
6
+ * It works with interact of functions, but not on function overloads and union.
6
7
  * @note does not work with function overloads.
7
8
  */
8
9
  export type ExtractFunction<T extends AnyFunction> = T extends AnyFunction<infer P, infer R>
9
10
  ? (...args: P) => R : never
10
11
 
12
+ /**
13
+ * Extract the function signature from a composite function.
14
+ *
15
+ * @note does not work with function overloads.
16
+ */
11
17
  export function extractFunction<T extends AnyFunction>(fn: T) {
12
18
  return fn as any as ExtractFunction<T>
13
19
  }
@@ -2,7 +2,11 @@ import type { Head, Last } from '../array/index.js'
2
2
  import type { AnyFunction } from '../function/AnyFunction.js'
3
3
 
4
4
  /**
5
- * compose functions
5
+ * Compose functions to produce a new function.
6
+ * @params args functions to be composed.
7
+ * Each function will receive the return value of the previous function as its parameters.
8
+ * @return The composed function will expect the parameters of the first function,
9
+ * and return the result of the last function.
6
10
  */
7
11
  export function compose<FS extends AnyFunction[]>(...fns: FS): (...args: Parameters<Head<FS>>) => ReturnType<Last<FS>> {
8
12
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
@@ -1,30 +1,26 @@
1
+ import type { IsAny } from './IsAny.js'
2
+ import type { And, Or } from './logical.js'
3
+
1
4
  /**
2
- * `<T>() => T extends A ? 1 : 2` idea originate from `typepark`
3
- * But it does not work with union types.
4
- *
5
- * `<T>() => T extends A` is a trick to create an inferred type `T`.
6
- * This is needed for `boolean`, `string`, and `number`,
7
- * as they supports literal types.
5
+ * Checks if the two types are equal.
8
6
  */
9
-
10
- import { IsNever } from '../PrimitiveTypes.js'
7
+ export type Equal<A, B, Then = true, Else = false> = [A, B] extends [B, A]
8
+ ? And<IsAny<A>, IsAny<B>,
9
+ Then,
10
+ Or<IsAny<A>, IsAny<B>, Else, Then>>
11
+ : Else
11
12
 
12
13
  /**
13
- * Checks if two types are equal.
14
+ * Checks if the two types are equal.
14
15
  */
15
- export type Equal<A, B, Then = true, Else = false> =
16
- [A, B] extends [object, object]
17
- ? (IsNever<A> extends true
18
- ? (IsNever<B> extends true ? Then : Else)
19
- : (A extends B ? B extends A ? Then : Else : Else))
20
- : (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Then : Else
21
- export type IsEqual<A, B> = Equal<A, B>
16
+ export type IsEqual<A, B, Then = true, Else = false> = Equal<A, B, Then, Else>
22
17
 
23
- export type NotEqual<A, B, Then = true, Else = false> =
24
- [A, B] extends [object, object]
25
- ? (IsNever<A> extends true
26
- ? (IsNever<B> extends true ? Else : Then)
27
- : (A extends B ? B extends A ? Else : Then : Then))
28
- : (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Else : Then
18
+ /**
19
+ * Check if the two types are not equal
20
+ */
21
+ export type NotEqual<A, B, Then = true, Else = false> = Equal<A, B, Else, Then>
29
22
 
30
- export type IsNotEqual<A, B> = NotEqual<A, B>
23
+ /**
24
+ * Check if the two types are not equal
25
+ */
26
+ export type IsNotEqual<A, B, Then = true, Else = false> = NotEqual<A, B, Then, Else>
@@ -0,0 +1,3 @@
1
+ import type { IsExtend } from './Extends.js'
2
+
3
+ export type IsAny<T, Then = true, Else = false> = boolean extends IsExtend<T, string> ? Then : Else
@@ -2,16 +2,13 @@ export * from './CanAssign.js'
2
2
  export type { Equal, IsEqual, IsNotEqual, NotEqual } from './Equal.js'
3
3
  export type { Extendable, IsExtend, IsNotExtend, NotExtendable } from './Extends.js'
4
4
  export type { If } from './If.js'
5
+ export type { IsAny } from './IsAny.js'
6
+ export type { IsEmptyObject } from './IsEmptyObject.js'
5
7
  export * from './isType.js'
6
8
  export type { And, Not, Or, Xor } from './logical.js'
7
- export type { IsEmptyObject } from './IsEmptyObject.js'
8
-
9
- import type { IsExtend } from './Extends.js'
10
9
 
11
10
  export type IsLiteral<T extends number | string, Then = true, Else = false> = number extends T ?
12
11
  Else :
13
12
  string extends T ? Else : Then
14
13
 
15
14
  export type IsBoolean<T, Then = true, Else = false> = boolean extends T ? Then : Else
16
-
17
- export type IsAny<T, Then = true, Else = false> = boolean extends IsExtend<T, string> ? Then : Else
@@ -21,7 +21,7 @@ isType.f = function <T extends false>(subject?: T) {
21
21
 
22
22
  /**
23
23
  * Are types A and B equals/not equals.
24
- * Easier to use then `isType.t<>()` and `isType.f<>()`,
24
+ * Easier to use than `isType.t<>()` and `isType.f<>()`,
25
25
  * when doing type level only equality comparison as you don't have to import `Equal<>`.
26
26
  */
27
27
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1,4 +1,26 @@
1
- export type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false
2
- export type Or<A extends boolean, B extends boolean> = A extends true ? true : B extends true ? true : false
3
- export type Not<X extends boolean> = X extends true ? false : true
4
- export type Xor<A extends boolean, B extends boolean> = A extends true ? Not<B> : B extends true ? true : false
1
+ export type And<
2
+ A extends boolean,
3
+ B extends boolean,
4
+ Then = true,
5
+ Else = false
6
+ > = A extends true ? B extends true ? Then : Else : Else
7
+
8
+ export type Or<
9
+ A extends boolean,
10
+ B extends boolean,
11
+ Then = true,
12
+ Else = false
13
+ > = A extends true ? Then : B extends true ? Then : Else
14
+
15
+ export type Not<
16
+ X extends boolean,
17
+ Then = true,
18
+ Else = false
19
+ > = X extends true ? Else : Then
20
+
21
+ export type Xor<
22
+ A extends boolean,
23
+ B extends boolean,
24
+ Then = true,
25
+ Else = false
26
+ > = A extends Then ? Not<B> : B extends true ? Then : Else