type-plus 4.4.2 → 4.5.2

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 (116) hide show
  1. package/README.md +1 -0
  2. package/cjs/ComposableTypes.d.ts +0 -6
  3. package/cjs/JSONTypes.js +0 -1
  4. package/cjs/JSONTypes.js.map +1 -1
  5. package/cjs/UnionKeys.d.ts +0 -4
  6. package/cjs/array/CommonPropKeys.d.ts +0 -7
  7. package/cjs/array/CreateTuple.d.ts +10 -8
  8. package/cjs/array/Filter.d.ts +1 -1
  9. package/cjs/array/FindFirst.d.ts +0 -3
  10. package/cjs/array/IntersectOfProps.d.ts +0 -7
  11. package/cjs/array/Last.d.ts +0 -3
  12. package/cjs/array/Tail.d.ts +0 -3
  13. package/cjs/array/UnionOfProps.d.ts +0 -7
  14. package/cjs/array/UnionOfValues.d.ts +0 -7
  15. package/cjs/assertion/assertType.d.ts +0 -4
  16. package/cjs/assertion/assertType.js +0 -8
  17. package/cjs/assertion/assertType.js.map +1 -1
  18. package/cjs/functional/ChainFn.d.ts +0 -3
  19. package/cjs/functional/compose.d.ts +0 -3
  20. package/cjs/functional/compose.js +0 -3
  21. package/cjs/functional/compose.js.map +1 -1
  22. package/cjs/index.js +0 -2
  23. package/cjs/index.js.map +1 -1
  24. package/cjs/math/Add.d.ts +0 -6
  25. package/cjs/math/Digit.d.ts +0 -3
  26. package/cjs/math/IsPositive.d.ts +0 -5
  27. package/cjs/math/IsWhole.d.ts +0 -5
  28. package/cjs/math/Subtract.d.ts +0 -3
  29. package/cjs/nodejs/isNodeError.d.ts +0 -5
  30. package/cjs/nodejs/isNodeError.js +0 -5
  31. package/cjs/nodejs/isNodeError.js.map +1 -1
  32. package/cjs/nominal-types/Brand.d.ts +0 -10
  33. package/cjs/nominal-types/Brand.js +0 -3
  34. package/cjs/nominal-types/Brand.js.map +1 -1
  35. package/cjs/nominal-types/Flavor.d.ts +0 -12
  36. package/cjs/nominal-types/Flavor.js +0 -3
  37. package/cjs/nominal-types/Flavor.js.map +1 -1
  38. package/cjs/object/ExcludePropType.d.ts +0 -3
  39. package/cjs/object/IsDisjoint.d.ts +0 -4
  40. package/cjs/object/KeyTypes.d.ts +0 -5
  41. package/cjs/object/KeyofOptional.d.ts +0 -3
  42. package/cjs/object/KnownKeys.js +0 -3
  43. package/cjs/object/KnownKeys.js.map +1 -1
  44. package/cjs/object/Partial.d.ts +0 -9
  45. package/cjs/object/RecursiveIntersect.d.ts +0 -11
  46. package/cjs/object/Required.js +0 -1
  47. package/cjs/object/Required.js.map +1 -1
  48. package/cjs/object/facade.d.ts +0 -3
  49. package/cjs/object/facade.js +0 -3
  50. package/cjs/object/facade.js.map +1 -1
  51. package/cjs/object/index.d.ts +1 -0
  52. package/cjs/object/index.js +1 -0
  53. package/cjs/object/index.js.map +1 -1
  54. package/cjs/object/mapProperties.d.ts +0 -8
  55. package/cjs/object/mapProperties.js +0 -8
  56. package/cjs/object/mapProperties.js.map +1 -1
  57. package/cjs/object/omit.d.ts +0 -3
  58. package/cjs/object/pick.d.ts +0 -7
  59. package/cjs/object/record.d.ts +3 -0
  60. package/cjs/object/record.js +9 -0
  61. package/cjs/object/record.js.map +1 -0
  62. package/cjs/object/reduceKey.d.ts +0 -3
  63. package/cjs/object/reduceKey.js +0 -3
  64. package/cjs/object/reduceKey.js.map +1 -1
  65. package/cjs/object/split.d.ts +0 -4
  66. package/cjs/predicates/CanAssign.d.ts +0 -3
  67. package/cjs/predicates/Equal.d.ts +0 -6
  68. package/cjs/predicates/isType.js +0 -6
  69. package/cjs/predicates/isType.js.map +1 -1
  70. package/cjs/promise/PromiseValue.d.ts +0 -3
  71. package/cjs/promise/PromiseValueMerge.d.ts +0 -3
  72. package/cjs/promise/isPromise.js +0 -1
  73. package/cjs/promise/isPromise.js.map +1 -1
  74. package/cjs/utils/Widen.d.ts +0 -4
  75. package/esm/JSONTypes.js +0 -1
  76. package/esm/JSONTypes.js.map +1 -1
  77. package/esm/assertion/assertType.js +0 -8
  78. package/esm/assertion/assertType.js.map +1 -1
  79. package/esm/functional/compose.js +0 -3
  80. package/esm/functional/compose.js.map +1 -1
  81. package/esm/index.js +0 -2
  82. package/esm/index.js.map +1 -1
  83. package/esm/nodejs/isNodeError.js +0 -5
  84. package/esm/nodejs/isNodeError.js.map +1 -1
  85. package/esm/nominal-types/Brand.js +0 -3
  86. package/esm/nominal-types/Brand.js.map +1 -1
  87. package/esm/nominal-types/Flavor.js +0 -3
  88. package/esm/nominal-types/Flavor.js.map +1 -1
  89. package/esm/object/KnownKeys.js +0 -3
  90. package/esm/object/KnownKeys.js.map +1 -1
  91. package/esm/object/Required.js +0 -1
  92. package/esm/object/Required.js.map +1 -1
  93. package/esm/object/facade.js +0 -3
  94. package/esm/object/facade.js.map +1 -1
  95. package/esm/object/index.js +1 -0
  96. package/esm/object/index.js.map +1 -1
  97. package/esm/object/mapProperties.js +0 -8
  98. package/esm/object/mapProperties.js.map +1 -1
  99. package/esm/object/record.js +5 -0
  100. package/esm/object/record.js.map +1 -0
  101. package/esm/object/reduceKey.js +0 -3
  102. package/esm/object/reduceKey.js.map +1 -1
  103. package/esm/predicates/isType.js +0 -6
  104. package/esm/predicates/isType.js.map +1 -1
  105. package/esm/promise/isPromise.js +0 -1
  106. package/esm/promise/isPromise.js.map +1 -1
  107. package/package.json +1 -1
  108. package/ts/array/CreateTuple.spec.ts +32 -21
  109. package/ts/array/CreateTuple.ts +22 -7
  110. package/ts/array/Filter.spec.ts +54 -21
  111. package/ts/array/Filter.ts +17 -12
  112. package/ts/math/Add.spec.ts +82 -82
  113. package/ts/math/Digit.spec.ts +184 -185
  114. package/ts/object/index.ts +1 -0
  115. package/ts/object/record.spec.ts +54 -0
  116. package/ts/object/record.ts +10 -0
@@ -2,9 +2,6 @@ import { AnyRecord } from '../object';
2
2
  import { UnionKeys } from '../UnionKeys';
3
3
  import { Pick } from './pick';
4
4
  export declare type Omit<T, K extends UnionKeys<T>> = T extends T ? keyof T extends K ? {} : Pick<T, Exclude<keyof T, K>> : never;
5
- /**
6
- * @deprecated replaced by `Omit`
7
- */
8
5
  export declare type Except<T, K extends keyof T> = Omit<T, K>;
9
6
  export declare function omit<T extends AnyRecord, P1 extends UnionKeys<T>>(subject: T, prop1: P1): Omit<T, P1>;
10
7
  export declare function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2): Omit<T, P1 | P2>;
@@ -12,13 +12,6 @@ export declare function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 ex
12
12
  export declare function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10>;
13
13
  export declare function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>, P11 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11>;
14
14
  export declare function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>, P11 extends UnionKeys<T>, P12 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11, prop12: P12): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12>;
15
- /**
16
- * Pick properties `K` from `T`.
17
- * Works with union.
18
- *
19
- * Original type by Titian Cernicova-Dragomir
20
- * @see <https://github.com/microsoft/TypeScript/issues/28339#issuecomment-463577347>
21
- */
22
15
  export declare type Pick<T, K extends UnionKeys<T>> = T extends unknown ? Pick._<T, keyof T & K> : never;
23
16
  export declare namespace Pick {
24
17
  type _<T, K extends keyof T> = {
@@ -0,0 +1,3 @@
1
+ import { KeyTypes } from 'type-plus';
2
+ import { Widen } from '../utils';
3
+ export declare function record<K extends KeyTypes, V>(value?: Record<K, V>): Record<Widen<K>, V>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.record = void 0;
4
+ function record(value) {
5
+ var r = Object.create(null);
6
+ return value ? Object.assign(r, value) : r;
7
+ }
8
+ exports.record = record;
9
+ //# sourceMappingURL=record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":";;;AAMA,SAAgB,MAAM,CAAwB,KAAoB;IAChE,IAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC;AAHD,wBAGC"}
@@ -1,6 +1,3 @@
1
1
  import { KeyTypes } from './KeyTypes';
2
2
  export declare function reduceByKey<S extends Record<KeyTypes, any>, T>(subject: S, callbackfn: (previousValue: T, key: keyof S, currentIndex: number, array: string[]) => T, initialValue: T): T;
3
- /**
4
- * @deprecated renamed to reduceByKey
5
- */
6
3
  export declare const reduceKey: typeof reduceByKey;
@@ -5,8 +5,5 @@ function reduceByKey(subject, callbackfn, initialValue) {
5
5
  return Object.keys(subject).reduce(callbackfn, initialValue);
6
6
  }
7
7
  exports.reduceByKey = reduceByKey;
8
- /**
9
- * @deprecated renamed to reduceByKey
10
- */
11
8
  exports.reduceKey = reduceByKey;
12
9
  //# sourceMappingURL=reduceKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,WAAW,CACzB,OAAU,EACV,UAAwF,EACxF,YAAe;IACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAA;AACrE,CAAC;AALD,kCAKC;AAED;;GAEG;AACU,QAAA,SAAS,GAAG,WAAW,CAAA"}
1
+ {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,WAAW,CACzB,OAAU,EACV,UAAwF,EACxF,YAAe;IACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAA;AACrE,CAAC;AALD,kCAKC;AAKY,QAAA,SAAS,GAAG,WAAW,CAAA"}
@@ -5,10 +5,6 @@ declare type Splitter<T extends AnyRecord> = Partial<{
5
5
  export declare type Split<T extends AnyRecord, S extends AnyRecord> = {
6
6
  [k in keyof S]: NonNullable<T[k]> | S[k];
7
7
  };
8
- /**
9
- * Split an object into multiple objects.
10
- * @returns [...entries, remaining]
11
- */
12
8
  export declare function split<T extends AnyRecord, S1 extends Splitter<T>>(target: T, split1: S1): [
13
9
  Split<T, S1>,
14
10
  Omit<T, keyof S1>
@@ -1,8 +1,5 @@
1
1
  import { NotExtendable } from './Extends';
2
2
  import { IsEmptyObject } from './IsEmptyObject';
3
- /**
4
- * Can `A` assign to `B`
5
- */
6
3
  export declare type CanAssign<A, B, Then = true, Else = false> = IsEmptyObject<A> extends true ? Record<string, unknown> extends B ? Then : Else : boolean extends A ? (boolean extends B ? Then : Else) : A extends B ? Then : Else;
7
4
  export declare type IsAssign<A, B, Then = true, Else = false> = CanAssign<A, B, Then, Else>;
8
5
  export declare function canAssign<T>(canAssign: false): <S>(subject: NotExtendable<S, T>) => true;
@@ -1,9 +1,3 @@
1
- /**
2
- * Checks if two types are equal.
3
- * Borrow from `typepark`.
4
- * The simple `A extends B ? B extends A ? true : false : false`
5
- * does not work with boolean type.
6
- */
7
1
  export declare type Equal<A, B, Then = true, Else = false> = (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Then : Else;
8
2
  export declare type IsEqual<A, B> = Equal<A, B>;
9
3
  export declare type NotEqual<A, B, Then = true, Else = false> = (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Else : Then;
@@ -18,11 +18,5 @@ isType.t = function (subject) {
18
18
  isType.f = function (subject) {
19
19
  return subject === undefined || subject === false;
20
20
  };
21
- /**
22
- * are types A and B equals/not equals.
23
- * Slightly easier to use then `isType.t<>()` and `isType.f<>()`,
24
- * when doing type level only equality comparison as you don't have to import `Equal<>`.
25
- */
26
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
21
  isType.equal = function () { };
28
22
  //# sourceMappingURL=isType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":";;;AAAA,kCAAwD;AAMxD,SAAgB,MAAM,CAAC,OAAgB,EAAE,SAAsD;IAC7F,IAAI,SAAS,EAAE;QACb,IAAI,IAAA,qBAAa,EAAC,SAAS,CAAC;YAC1B,OAAO,OAAO,YAAY,SAAS,CAAA;;YAEnC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;KAC5B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AARD,wBAQC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAED;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
1
+ {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":";;;AAAA,kCAAwD;AAMxD,SAAgB,MAAM,CAAC,OAAgB,EAAE,SAAsD;IAC7F,IAAI,SAAS,EAAE;QACb,IAAI,IAAA,qBAAa,EAAC,SAAS,CAAC;YAC1B,OAAO,OAAO,YAAY,SAAS,CAAA;;YAEnC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;KAC5B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AARD,wBAQC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAQD,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
@@ -1,4 +1 @@
1
- /**
2
- * Gets value type from Promise
3
- */
4
1
  export declare type PromiseValue<P extends Promise<any>> = P extends Promise<infer T> ? T : never;
@@ -1,5 +1,2 @@
1
1
  import { PromiseValue } from './PromiseValue';
2
- /**
3
- * Merging value types from multiple promises.
4
- */
5
2
  export declare type PromiseValueMerge<P1 extends Promise<any>, P2 extends Promise<any>, P3 extends Promise<any> = any, P4 extends Promise<any> = any, P5 extends Promise<any> = any, P6 extends Promise<any> = any, P7 extends Promise<any> = any, P8 extends Promise<any> = any, P9 extends Promise<any> = any> = Promise<PromiseValue<P1> & PromiseValue<P2> & PromiseValue<P3> & PromiseValue<P4> & PromiseValue<P5> & PromiseValue<P6> & PromiseValue<P7> & PromiseValue<P8> & PromiseValue<P9>>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isPromise = void 0;
4
4
  function isPromise(subject) {
5
- // @ts-ignore
6
5
  return !!subject && typeof subject['then'] === 'function';
7
6
  }
8
7
  exports.isPromise = isPromise;
@@ -1 +1 @@
1
- {"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../ts/promise/isPromise.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAU,OAAgB;IACjD,aAAa;IACb,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,CAAA;AAC3D,CAAC;AAHD,8BAGC"}
1
+ {"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../ts/promise/isPromise.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAU,OAAgB;IAEjD,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,CAAA;AAC3D,CAAC;AAHD,8BAGC"}
@@ -1,5 +1 @@
1
- /**
2
- * Widen scalar types from literals to their parent types.
3
- * Borrow from `typical`
4
- */
5
1
  export declare type Widen<T> = T extends boolean ? boolean : T extends number ? number : T extends string ? string : T;
package/esm/JSONTypes.js CHANGED
@@ -5,7 +5,6 @@ function get(obj, ...props) {
5
5
  if (typeof obj !== 'object' || obj === null)
6
6
  return undefined;
7
7
  const p = props.shift();
8
- // @ts-ignore
9
8
  return get(obj[p], ...props);
10
9
  }
11
10
  //# sourceMappingURL=JSONTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JSONTypes.js","sourceRoot":"","sources":["../ts/JSONTypes.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAA;AAEhC,SAAS,GAAG,CAAsB,GAAc,EAAE,GAAG,KAA6B;IAChF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAQ,CAAA;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC7D,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAG,CAAA;IACxB,aAAa;IACb,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAM,CAAA;AACnC,CAAC"}
1
+ {"version":3,"file":"JSONTypes.js","sourceRoot":"","sources":["../ts/JSONTypes.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAA;AAEhC,SAAS,GAAG,CAAsB,GAAc,EAAE,GAAG,KAA6B;IAChF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAQ,CAAA;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC7D,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAG,CAAA;IAExB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAM,CAAA;AACnC,CAAC"}
@@ -44,7 +44,6 @@ assertType.isTrue = function (subject) {
44
44
  throw TypeError(`subject is not true`);
45
45
  };
46
46
  assertType.noTrue = function (subject) {
47
- // @ts-ignore
48
47
  if (subject === true)
49
48
  throw TypeError(`subject is true`);
50
49
  };
@@ -53,7 +52,6 @@ assertType.isFalse = function (subject) {
53
52
  throw TypeError(`subject is not false`);
54
53
  };
55
54
  assertType.noFalse = function (subject) {
56
- // @ts-ignore
57
55
  if (subject === false)
58
56
  throw TypeError(`subject is false`);
59
57
  };
@@ -87,12 +85,6 @@ assertType.noError = function (subject) {
87
85
  };
88
86
  assertType.isNever = function (subject) {
89
87
  };
90
- /**
91
- * creates a custom assertion function with standard TypeError.
92
- * Currently this requires explicity type annotation,
93
- * thus making it hard to use:
94
- * https://github.com/microsoft/TypeScript/issues/41047
95
- */
96
88
  assertType.custom = function (validator) {
97
89
  return function (subject) {
98
90
  if (!validator(subject))
@@ -1 +1 @@
1
- {"version":3,"file":"assertType.js","sourceRoot":"","sources":["../../ts/assertion/assertType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertType.js","sourceRoot":"","sources":["../../ts/assertion/assertType.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
- /**
2
- * compose functions
3
- */
4
1
  export function compose(...fns) {
5
2
  return (...args) => fns.reduce((args, fn) => [fn(...args)], args)[0];
6
3
  }
@@ -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,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,CAAQ,CAAA;AACpF,CAAC"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,OAAO,CAA2B,GAAG,GAAO;IAC1D,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,CAAQ,CAAA;AACpF,CAAC"}
package/esm/index.js CHANGED
@@ -1,4 +1,3 @@
1
- // import * as types from './types'
2
1
  export { required, requiredDeep } from 'unpartial';
3
2
  export * from './array';
4
3
  export * from './assertion';
@@ -14,5 +13,4 @@ export * from './predicates';
14
13
  export * from './promise';
15
14
  export * from './testing';
16
15
  export * from './utils';
17
- // export { types, types as T }
18
16
  //# 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,mCAAmC;AACnC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAClD,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AAEvB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAIzB,cAAc,SAAS,CAAA;AACvB,+BAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAClD,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AAEvB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAIzB,cAAc,SAAS,CAAA"}
@@ -1,8 +1,3 @@
1
- /**
2
- * Type guard NodeJS SystemErrors.
3
- * The list is not complete. Will add as needed.
4
- * Feel free to contribute.
5
- */
6
1
  export function isSystemError(code, err) {
7
2
  return !!err && err.code === code;
8
3
  }
@@ -1 +1 @@
1
- {"version":3,"file":"isNodeError.js","sourceRoot":"","sources":["../../ts/nodejs/isNodeError.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAA6B,IAAO,EAAE,GAAY;IAC7E,OAAO,CAAC,CAAC,GAAG,IAAK,GAAW,CAAC,IAAI,KAAK,IAAI,CAAA;AAC5C,CAAC"}
1
+ {"version":3,"file":"isNodeError.js","sourceRoot":"","sources":["../../ts/nodejs/isNodeError.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,aAAa,CAA6B,IAAO,EAAE,GAAY;IAC7E,OAAO,CAAC,CAAC,GAAG,IAAK,GAAW,CAAC,IAAI,KAAK,IAAI,CAAA;AAC5C,CAAC"}
@@ -1,11 +1,8 @@
1
- // By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
2
- // <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
3
1
  import { typeSym, valueSym } from './types';
4
2
  export function brand(type, subject) {
5
3
  if (subject === undefined)
6
4
  return function (subject) { return brand(type, subject); };
7
5
  if (typeof subject === 'object' && subject !== null) {
8
- // if subject is not an object, the branding will exist only in type-level.
9
6
  subject[typeSym] = type;
10
7
  }
11
8
  return subject;
@@ -1 +1 @@
1
- {"version":3,"file":"Brand.js","sourceRoot":"","sources":["../../ts/nominal-types/Brand.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAGvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAmB3C,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,OAAiB;IACnD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,UAAa,OAAU,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;IAE1F,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;QACnD,2EAA2E;QAC1E,OAAiC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;KACnD;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"Brand.js","sourceRoot":"","sources":["../../ts/nominal-types/Brand.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAmB3C,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,OAAiB;IACnD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,UAAa,OAAU,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;IAE1F,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;QAElD,OAAiC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;KACnD;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,11 +1,8 @@
1
- // By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
2
- // <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
3
1
  import { typeSym } from './types';
4
2
  export function flavor(type, subject) {
5
3
  if (subject === undefined)
6
4
  return function (subject) { return flavor(type, subject); };
7
5
  if (typeof subject === 'object' && subject !== null) {
8
- // if subject is not an object, the branding will exist only in type-level.
9
6
  subject[typeSym] = type;
10
7
  }
11
8
  return subject;
@@ -1 +1 @@
1
- {"version":3,"file":"Flavor.js","sourceRoot":"","sources":["../../ts/nominal-types/Flavor.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAGvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAoBjC,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,OAAiB;IACpD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,UAAa,OAAU,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;IAC3F,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;QACnD,2EAA2E;QAC1E,OAAiC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;KACnD;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"Flavor.js","sourceRoot":"","sources":["../../ts/nominal-types/Flavor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAoBjC,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,OAAiB;IACpD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,UAAa,OAAU,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;IAC3F,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;QAElD,OAAiC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;KACnD;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,5 +1,2 @@
1
- // Original by Klaus Meinhardt @ajafff
2
- // known from Gerrit Birkeland @Gerrit0
3
- // https://github.com/Microsoft/TypeScript/issues/25987#issuecomment-408339599
4
1
  export {};
5
2
  //# sourceMappingURL=KnownKeys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnownKeys.js","sourceRoot":"","sources":["../../ts/object/KnownKeys.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,uCAAuC;AACvC,8EAA8E"}
1
+ {"version":3,"file":"KnownKeys.js","sourceRoot":"","sources":["../../ts/object/KnownKeys.ts"],"names":[],"mappings":""}
@@ -1,3 +1,2 @@
1
- // Thanks [jack-williams](https://github.com/jack-williams) for the [solution](https://github.com/Microsoft/TypeScript/issues/29269#issuecomment-451602962)
2
1
  export {};
3
2
  //# sourceMappingURL=Required.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Required.js","sourceRoot":"","sources":["../../ts/object/Required.ts"],"names":[],"mappings":"AAAA,2JAA2J"}
1
+ {"version":3,"file":"Required.js","sourceRoot":"","sources":["../../ts/object/Required.ts"],"names":[],"mappings":""}
@@ -2,17 +2,14 @@ export function facade(subject, ...props) {
2
2
  return props.reduce((p, k) => {
3
3
  const prop = subject[k];
4
4
  if (typeof prop === 'function') {
5
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
6
5
  p[k] = prop.bind(subject);
7
6
  }
8
7
  else {
9
8
  Object.defineProperty(p, k, {
10
9
  get() {
11
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
12
10
  return subject[k];
13
11
  },
14
12
  set(value) {
15
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment
16
13
  return subject[k] = value;
17
14
  },
18
15
  });
@@ -1 +1 @@
1
- {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../ts/object/facade.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,MAAM,CAAsB,OAAU,EAAE,GAAG,KAAkB;IAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAC9B,sGAAsG;YACtG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1B;aACI;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC1B,GAAG;oBACD,+DAA+D;oBAC/D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;gBACnB,CAAC;gBACD,GAAG,CAAC,KAAU;oBACZ,wGAAwG;oBACxG,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;gBAC3B,CAAC;aACF,CAAC,CAAA;SACH;QACD,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../ts/object/facade.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,MAAM,CAAsB,OAAU,EAAE,GAAG,KAAkB;IAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAE9B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1B;aACI;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC1B,GAAG;oBAED,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;gBACnB,CAAC;gBACD,GAAG,CAAC,KAAU;oBAEZ,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;gBAC3B,CAAC;aACF,CAAC,CAAA;SACH;QACD,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC"}
@@ -10,6 +10,7 @@ export * from './mapKey';
10
10
  export * from './mapProperties';
11
11
  export * from './omit';
12
12
  export * from './pick';
13
+ export * from './record';
13
14
  export * from './reduceKey';
14
15
  export * from './replaceProperty';
15
16
  export * from './someKey';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAA;AAE1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAO7B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AAGtB,cAAc,QAAQ,CAAA;AAItB,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AAGjC,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AAEvB,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAA;AAE1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAO7B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AAGtB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AAIxB,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AAGjC,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AAEvB,cAAc,4BAA4B,CAAA"}
@@ -1,12 +1,4 @@
1
1
  import { reduceByKey } from './reduceKey';
2
- /**
3
- * An Object-specific version of `map`.
4
- * Original source:
5
- * <https://stackoverflow.com/questions/53964071/how-to-dynamically-create-mapped-type-in-typescript>
6
- *
7
- * `ramda` has a similar function (`mapObjIndexed()`) with different parameter order.
8
- * I keep this parameter order because this parameter order provides better type inference.
9
- */
10
2
  export function mapProperties(subject, callbackfn) {
11
3
  return reduceByKey(subject, (p, key) => (p[key] = callbackfn(subject[key], key, subject),
12
4
  p), {});
@@ -1 +1 @@
1
- {"version":3,"file":"mapProperties.js","sourceRoot":"","sources":["../../ts/object/mapProperties.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAGzC;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAI3B,OAAgB,EAChB,UAAqF;IAErF,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CACtC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;QAC/C,CAAC,CAAC,EAAE,EAA0C,CAAC,CAAA;AACnD,CAAC"}
1
+ {"version":3,"file":"mapProperties.js","sourceRoot":"","sources":["../../ts/object/mapProperties.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAWzC,MAAM,UAAU,aAAa,CAI3B,OAAgB,EAChB,UAAqF;IAErF,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CACtC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;QAC/C,CAAC,CAAC,EAAE,EAA0C,CAAC,CAAA;AACnD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export function record(value) {
2
+ const r = Object.create(null);
3
+ return value ? Object.assign(r, value) : r;
4
+ }
5
+ //# sourceMappingURL=record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,MAAM,CAAwB,KAAoB;IAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC"}
@@ -1,8 +1,5 @@
1
1
  export function reduceByKey(subject, callbackfn, initialValue) {
2
2
  return Object.keys(subject).reduce(callbackfn, initialValue);
3
3
  }
4
- /**
5
- * @deprecated renamed to reduceByKey
6
- */
7
4
  export const reduceKey = reduceByKey;
8
5
  //# sourceMappingURL=reduceKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,UAAwF,EACxF,YAAe;IACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAA;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAA"}
1
+ {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,UAAwF,EACxF,YAAe;IACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAA;AACrE,CAAC;AAKD,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAA"}
@@ -14,11 +14,5 @@ isType.t = function (subject) {
14
14
  isType.f = function (subject) {
15
15
  return subject === undefined || subject === false;
16
16
  };
17
- /**
18
- * are types A and B equals/not equals.
19
- * Slightly easier to use then `isType.t<>()` and `isType.f<>()`,
20
- * when doing type level only equality comparison as you don't have to import `Equal<>`.
21
- */
22
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
17
  isType.equal = function () { };
24
18
  //# sourceMappingURL=isType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,UAAU,CAAA;AAMxD,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,SAAsD;IAC7F,IAAI,SAAS,EAAE;QACb,IAAI,aAAa,CAAC,SAAS,CAAC;YAC1B,OAAO,OAAO,YAAY,SAAS,CAAA;;YAEnC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;KAC5B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAED;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
1
+ {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,UAAU,CAAA;AAMxD,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,SAAsD;IAC7F,IAAI,SAAS,EAAE;QACb,IAAI,aAAa,CAAC,SAAS,CAAC;YAC1B,OAAO,OAAO,YAAY,SAAS,CAAA;;YAEnC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;KAC5B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAQD,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
@@ -1,5 +1,4 @@
1
1
  export function isPromise(subject) {
2
- // @ts-ignore
3
2
  return !!subject && typeof subject['then'] === 'function';
4
3
  }
5
4
  //# sourceMappingURL=isPromise.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../ts/promise/isPromise.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAU,OAAgB;IACjD,aAAa;IACb,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,CAAA;AAC3D,CAAC"}
1
+ {"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../ts/promise/isPromise.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAU,OAAgB;IAEjD,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,CAAA;AAC3D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "4.4.2",
3
+ "version": "4.5.2",
4
4
  "description": "Provides additional types for TypeScript.",
5
5
  "homepage": "https://github.com/unional/type-plus",
6
6
  "bugs": {
@@ -1,21 +1,32 @@
1
- import { CreateTuple, isType } from '..'
2
-
3
- test('create empty tuple', () => {
4
- isType.equal<true, [], CreateTuple<0>>()
5
- })
6
-
7
- test('single element', () => {
8
- isType.equal<true, [any], CreateTuple<1>>()
9
- })
10
-
11
- test('multiple elements', () => {
12
- isType.equal<true, [any, any, any], CreateTuple<3>>()
13
- })
14
-
15
- test('override element type', () => {
16
- isType.equal<true, [1, 1, 1, 1, 1], CreateTuple<5, 1>>()
17
- })
18
-
19
- test('negative length gets never', () => {
20
- isType.equal<true, never, CreateTuple<-1>>()
21
- })
1
+ import { CreateTuple, isType } from '..'
2
+
3
+ test('create empty tuple', () => {
4
+ isType.equal<true, [], CreateTuple<0>>()
5
+ })
6
+
7
+ test('single element', () => {
8
+ isType.equal<true, [any], CreateTuple<1>>()
9
+ })
10
+
11
+ test('multiple elements', () => {
12
+ isType.equal<true, [any, any, any], CreateTuple<3>>()
13
+ })
14
+
15
+ test('override element type', () => {
16
+ isType.equal<true, [1, 1, 1, 1, 1], CreateTuple<5, 1>>()
17
+ })
18
+
19
+ test('negative length gets never', () => {
20
+ isType.equal<true, never, CreateTuple<-1>>()
21
+ })
22
+
23
+ test('Can create tuple up to 7000', () => {
24
+ type A = CreateTuple<7000>['length']
25
+
26
+ isType.equal<true, 7000, A>()
27
+ })
28
+
29
+ test('L = number gets array', () => {
30
+ type A = CreateTuple<number, 1>
31
+ isType.equal<true, 1[], A>()
32
+ })
@@ -1,12 +1,27 @@
1
- import type { IsPositive } from '../math'
1
+ import { IsPositive } from '../math'
2
+
3
+ type BuildPowersOf2LengthArrays<N extends number, R extends never[][]> =
4
+ R[0][N] extends never ? R : BuildPowersOf2LengthArrays<N, [[...R[0], ...R[0]], ...R]>
5
+
6
+ type ConcatLargestUntilDone<N extends number, R extends never[][], B extends never[]> =
7
+ B['length'] extends N ? B : [...R[0], ...B][N] extends never
8
+ ? ConcatLargestUntilDone<N, R extends [R[0], ...infer U] ? U extends never[][] ? U : never : never, B>
9
+ : ConcatLargestUntilDone<N, R extends [R[0], ...infer U] ? U extends never[][] ? U : never : never, [...R[0], ...B]>
10
+
11
+ type Replace<R extends any[], T> = { [K in keyof R]: T }
2
12
 
3
13
  /**
4
14
  * Creates `Tuple<T>` with `L` number of elements.
15
+ * @note The original implementation hits recursive limit.
16
+ * Updated implementation based on below by @lazytype
17
+ * @see https://github.com/microsoft/TypeScript/issues/26223#issuecomment-674514787
18
+ * @see https://github.com/microsoft/TypeScript/issues/47874#issuecomment-1039157322
5
19
  */
6
20
  export type CreateTuple<L extends number, T = any> =
7
- IsPositive<L> extends true ? CreateTuple.Device<[], L, T> : never
8
-
9
- export namespace CreateTuple {
10
- export type Device<R extends any[], L extends number, T> =
11
- R['length'] extends L ? R : Device<[T, ...R], L, T>
12
- }
21
+ number extends L ? T[] : IsPositive<L> extends true
22
+ ? {
23
+ [K in L]: BuildPowersOf2LengthArrays<K, [[never]]> extends infer U
24
+ ? (U extends never[][] ? Replace<ConcatLargestUntilDone<K, U, []>, T> : never)
25
+ : never
26
+ }[L]
27
+ : never