type-plus 4.4.1 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +0 -3
  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/testing/stub.d.ts +4 -2
  75. package/cjs/testing/stub.js.map +1 -1
  76. package/cjs/utils/Widen.d.ts +0 -4
  77. package/esm/JSONTypes.js +0 -1
  78. package/esm/JSONTypes.js.map +1 -1
  79. package/esm/assertion/assertType.js +0 -8
  80. package/esm/assertion/assertType.js.map +1 -1
  81. package/esm/functional/compose.js +0 -3
  82. package/esm/functional/compose.js.map +1 -1
  83. package/esm/index.js +0 -2
  84. package/esm/index.js.map +1 -1
  85. package/esm/nodejs/isNodeError.js +0 -5
  86. package/esm/nodejs/isNodeError.js.map +1 -1
  87. package/esm/nominal-types/Brand.js +0 -3
  88. package/esm/nominal-types/Brand.js.map +1 -1
  89. package/esm/nominal-types/Flavor.js +0 -3
  90. package/esm/nominal-types/Flavor.js.map +1 -1
  91. package/esm/object/KnownKeys.js +0 -3
  92. package/esm/object/KnownKeys.js.map +1 -1
  93. package/esm/object/Required.js +0 -1
  94. package/esm/object/Required.js.map +1 -1
  95. package/esm/object/facade.js +0 -3
  96. package/esm/object/facade.js.map +1 -1
  97. package/esm/object/index.js +1 -0
  98. package/esm/object/index.js.map +1 -1
  99. package/esm/object/mapProperties.js +0 -8
  100. package/esm/object/mapProperties.js.map +1 -1
  101. package/esm/object/record.js +5 -0
  102. package/esm/object/record.js.map +1 -0
  103. package/esm/object/reduceKey.js +0 -3
  104. package/esm/object/reduceKey.js.map +1 -1
  105. package/esm/predicates/isType.js +0 -6
  106. package/esm/predicates/isType.js.map +1 -1
  107. package/esm/promise/isPromise.js +0 -1
  108. package/esm/promise/isPromise.js.map +1 -1
  109. package/esm/testing/stub.js.map +1 -1
  110. package/package.json +1 -1
  111. package/ts/array/Filter.spec.ts +54 -21
  112. package/ts/array/Filter.ts +17 -12
  113. package/ts/object/index.ts +1 -0
  114. package/ts/object/record.spec.ts +54 -0
  115. package/ts/object/record.ts +10 -0
  116. package/ts/testing/stub.ts +4 -2
@@ -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,4 +1,6 @@
1
1
  import { AnyFunction } from '../function';
2
2
  import { RecursivePartial } from '../object';
3
- export declare type Stub<T> = T extends AnyFunction ? T : RecursivePartial<T>;
4
- export declare function stub<T>(stub?: Stub<T>): T;
3
+ export declare namespace stub {
4
+ type Param<T> = T extends AnyFunction ? T : RecursivePartial<T>;
5
+ }
6
+ export declare function stub<T>(stub?: stub.Param<T>): T;
@@ -1 +1 @@
1
- {"version":3,"file":"stub.js","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":";;;AAKA,SAAgB,IAAI,CAAI,IAAc;IACpC,OAAO,IAAS,CAAA;AAClB,CAAC;AAFD,oBAEC"}
1
+ {"version":3,"file":"stub.js","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":";;;AAOA,SAAgB,IAAI,CAAI,IAAoB;IAC1C,OAAO,IAAS,CAAA;AAClB,CAAC;AAFD,oBAEC"}
@@ -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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stub.js","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,IAAI,CAAI,IAAc;IACpC,OAAO,IAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"stub.js","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,IAAI,CAAI,IAAoB;IAC1C,OAAO,IAAS,CAAA;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "4.4.1",
3
+ "version": "4.5.1",
4
4
  "description": "Provides additional types for TypeScript.",
5
5
  "homepage": "https://github.com/unional/type-plus",
6
6
  "bugs": {
@@ -1,21 +1,54 @@
1
- import { assertType, Equal, Filter } from '..'
2
-
3
- test('array matching criteria gets itself', () => {
4
- type Actual = Filter<string[], string>
5
- assertType.isTrue(true as Equal<string[], Actual>)
6
- })
7
-
8
- test('array not matching criteria gets never[]', () => {
9
- type Actual = Filter<string[], number>
10
- assertType.isTrue(true as Equal<never[], Actual>)
11
- })
12
-
13
- test('tuple filters to those matching criteria', () => {
14
- type Actual = Filter<[1, 2, 3, 4], 2 | 4>
15
- assertType.isTrue(true as Equal<[2, 4], Actual>)
16
- })
17
-
18
- test('tuple not value match criteria gets never[]', () => {
19
- type Actual = Filter<[1, 2, 3, 4], 5>
20
- assertType.isTrue(true as Equal<never[], Actual>)
21
- })
1
+ import { Filter, isType } from '..'
2
+
3
+ describe('Filter<A, C>', () => {
4
+ describe('A is array', () => {
5
+ test('array matching criteria gets itself', () => {
6
+ type Actual = Filter<string[], string>
7
+ isType.equal<true, string[], Actual>()
8
+ })
9
+
10
+ test('array not matching criteria gets never[]', () => {
11
+ type Actual = Filter<string[], number>
12
+ isType.equal<true, never[], Actual>()
13
+ })
14
+
15
+ test('remove unmatched type form array', () => {
16
+ type Actual = Filter<Array<string | number>, string>
17
+
18
+ isType.equal<true, string[], Actual>()
19
+ })
20
+
21
+ test('remove undefined and null', () => {
22
+ type Actual = Filter<Array<string | undefined | null>, string>
23
+ isType.equal<true, string[], Actual>()
24
+ })
25
+
26
+ test('can filter with undefined and null', () => {
27
+ type Actual = Filter<Array<string | undefined | null>, undefined | null>
28
+ // Array<undefined | null> is destructured to undefined[] | null[] by TypeScript
29
+ isType.equal<true, undefined[] | null[], Actual>()
30
+ })
31
+
32
+ test('work with never[]', () => {
33
+ type Actual = Filter<never[], undefined>
34
+ isType.equal<true, never[], Actual>()
35
+ })
36
+ })
37
+
38
+ describe(`A is Tuple`, () => {
39
+ test('matching criteria', () => {
40
+ type Actual = Filter<[1, 2, 3, 4], 2 | 4>
41
+ isType.equal<true, [2, 4], Actual>()
42
+ })
43
+
44
+ test('no match gets never[]', () => {
45
+ type Actual = Filter<[1, 2, 3, 4], 5>
46
+ isType.equal<true, never[], Actual>()
47
+ })
48
+
49
+ test('matching undefined and null', () => {
50
+ type Actual = Filter<[1, undefined, 3, null], undefined | null>
51
+ isType.equal<true, [undefined, null], Actual>()
52
+ })
53
+ })
54
+ })
@@ -1,12 +1,17 @@
1
- export type Filter<A extends Array<any>, Criteria> =
2
- number extends A['length']
3
- ? (A[0] extends Criteria ? A : never[])
4
- : (A['length'] extends 0
5
- ? never
6
- : (A extends [infer Head, ...infer Tail]
7
- ? (Tail['length'] extends 0
8
- ? (Head extends Criteria ? [Head] : never[])
9
- : (Head extends Criteria
10
- ? [Head, ...Filter<Tail, Criteria>]
11
- : Filter<Tail, Criteria>))
12
- : never))
1
+ export type Filter<A extends Array<any>, Criteria> =
2
+ number extends A['length']
3
+ // array
4
+ ? (A[0] extends Criteria
5
+ ? A
6
+ : (Criteria extends A[0] ? Array<Criteria> : never[])
7
+ )
8
+ // tuple
9
+ : (A['length'] extends 0
10
+ ? never
11
+ : (A extends [infer Head, ...infer Tail]
12
+ ? (Tail['length'] extends 0
13
+ ? (Head extends Criteria ? [Head] : never[])
14
+ : (Head extends Criteria
15
+ ? [Head, ...Filter<Tail, Criteria>]
16
+ : Filter<Tail, Criteria>))
17
+ : never))
@@ -21,6 +21,7 @@ export * from './omit'
21
21
  export type { OptionalKeys } from './OptionalKeys'
22
22
  export type { PartialExcept, PartialOmit, PartialPick } from './Partial'
23
23
  export * from './pick'
24
+ export * from './record'
24
25
  export type { RecursiveIntersect } from './RecursiveIntersect'
25
26
  export type { RecursivePartial } from './RecursivePartial'
26
27
  export type { RecursiveRequired } from './RecursiveRequired'