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.
- package/README.md +1 -0
- package/cjs/ComposableTypes.d.ts +0 -6
- package/cjs/JSONTypes.js +0 -1
- package/cjs/JSONTypes.js.map +1 -1
- package/cjs/UnionKeys.d.ts +0 -4
- package/cjs/array/CommonPropKeys.d.ts +0 -7
- package/cjs/array/CreateTuple.d.ts +0 -3
- package/cjs/array/Filter.d.ts +1 -1
- package/cjs/array/FindFirst.d.ts +0 -3
- package/cjs/array/IntersectOfProps.d.ts +0 -7
- package/cjs/array/Last.d.ts +0 -3
- package/cjs/array/Tail.d.ts +0 -3
- package/cjs/array/UnionOfProps.d.ts +0 -7
- package/cjs/array/UnionOfValues.d.ts +0 -7
- package/cjs/assertion/assertType.d.ts +0 -4
- package/cjs/assertion/assertType.js +0 -8
- package/cjs/assertion/assertType.js.map +1 -1
- package/cjs/functional/ChainFn.d.ts +0 -3
- package/cjs/functional/compose.d.ts +0 -3
- package/cjs/functional/compose.js +0 -3
- package/cjs/functional/compose.js.map +1 -1
- package/cjs/index.js +0 -2
- package/cjs/index.js.map +1 -1
- package/cjs/math/Add.d.ts +0 -6
- package/cjs/math/Digit.d.ts +0 -3
- package/cjs/math/IsPositive.d.ts +0 -5
- package/cjs/math/IsWhole.d.ts +0 -5
- package/cjs/math/Subtract.d.ts +0 -3
- package/cjs/nodejs/isNodeError.d.ts +0 -5
- package/cjs/nodejs/isNodeError.js +0 -5
- package/cjs/nodejs/isNodeError.js.map +1 -1
- package/cjs/nominal-types/Brand.d.ts +0 -10
- package/cjs/nominal-types/Brand.js +0 -3
- package/cjs/nominal-types/Brand.js.map +1 -1
- package/cjs/nominal-types/Flavor.d.ts +0 -12
- package/cjs/nominal-types/Flavor.js +0 -3
- package/cjs/nominal-types/Flavor.js.map +1 -1
- package/cjs/object/ExcludePropType.d.ts +0 -3
- package/cjs/object/IsDisjoint.d.ts +0 -4
- package/cjs/object/KeyTypes.d.ts +0 -5
- package/cjs/object/KeyofOptional.d.ts +0 -3
- package/cjs/object/KnownKeys.js +0 -3
- package/cjs/object/KnownKeys.js.map +1 -1
- package/cjs/object/Partial.d.ts +0 -9
- package/cjs/object/RecursiveIntersect.d.ts +0 -11
- package/cjs/object/Required.js +0 -1
- package/cjs/object/Required.js.map +1 -1
- package/cjs/object/facade.d.ts +0 -3
- package/cjs/object/facade.js +0 -3
- package/cjs/object/facade.js.map +1 -1
- package/cjs/object/index.d.ts +1 -0
- package/cjs/object/index.js +1 -0
- package/cjs/object/index.js.map +1 -1
- package/cjs/object/mapProperties.d.ts +0 -8
- package/cjs/object/mapProperties.js +0 -8
- package/cjs/object/mapProperties.js.map +1 -1
- package/cjs/object/omit.d.ts +0 -3
- package/cjs/object/pick.d.ts +0 -7
- package/cjs/object/record.d.ts +3 -0
- package/cjs/object/record.js +9 -0
- package/cjs/object/record.js.map +1 -0
- package/cjs/object/reduceKey.d.ts +0 -3
- package/cjs/object/reduceKey.js +0 -3
- package/cjs/object/reduceKey.js.map +1 -1
- package/cjs/object/split.d.ts +0 -4
- package/cjs/predicates/CanAssign.d.ts +0 -3
- package/cjs/predicates/Equal.d.ts +0 -6
- package/cjs/predicates/isType.js +0 -6
- package/cjs/predicates/isType.js.map +1 -1
- package/cjs/promise/PromiseValue.d.ts +0 -3
- package/cjs/promise/PromiseValueMerge.d.ts +0 -3
- package/cjs/promise/isPromise.js +0 -1
- package/cjs/promise/isPromise.js.map +1 -1
- package/cjs/testing/stub.d.ts +4 -2
- package/cjs/testing/stub.js.map +1 -1
- package/cjs/utils/Widen.d.ts +0 -4
- package/esm/JSONTypes.js +0 -1
- package/esm/JSONTypes.js.map +1 -1
- package/esm/assertion/assertType.js +0 -8
- package/esm/assertion/assertType.js.map +1 -1
- package/esm/functional/compose.js +0 -3
- package/esm/functional/compose.js.map +1 -1
- package/esm/index.js +0 -2
- package/esm/index.js.map +1 -1
- package/esm/nodejs/isNodeError.js +0 -5
- package/esm/nodejs/isNodeError.js.map +1 -1
- package/esm/nominal-types/Brand.js +0 -3
- package/esm/nominal-types/Brand.js.map +1 -1
- package/esm/nominal-types/Flavor.js +0 -3
- package/esm/nominal-types/Flavor.js.map +1 -1
- package/esm/object/KnownKeys.js +0 -3
- package/esm/object/KnownKeys.js.map +1 -1
- package/esm/object/Required.js +0 -1
- package/esm/object/Required.js.map +1 -1
- package/esm/object/facade.js +0 -3
- package/esm/object/facade.js.map +1 -1
- package/esm/object/index.js +1 -0
- package/esm/object/index.js.map +1 -1
- package/esm/object/mapProperties.js +0 -8
- package/esm/object/mapProperties.js.map +1 -1
- package/esm/object/record.js +5 -0
- package/esm/object/record.js.map +1 -0
- package/esm/object/reduceKey.js +0 -3
- package/esm/object/reduceKey.js.map +1 -1
- package/esm/predicates/isType.js +0 -6
- package/esm/predicates/isType.js.map +1 -1
- package/esm/promise/isPromise.js +0 -1
- package/esm/promise/isPromise.js.map +1 -1
- package/esm/testing/stub.js.map +1 -1
- package/package.json +1 -1
- package/ts/array/Filter.spec.ts +54 -21
- package/ts/array/Filter.ts +17 -12
- package/ts/object/index.ts +1 -0
- package/ts/object/record.spec.ts +54 -0
- package/ts/object/record.ts +10 -0
- package/ts/testing/stub.ts +4 -2
package/cjs/object/pick.d.ts
CHANGED
|
@@ -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,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;
|
package/cjs/object/reduceKey.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/cjs/object/split.d.ts
CHANGED
|
@@ -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;
|
package/cjs/predicates/isType.js
CHANGED
|
@@ -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;
|
|
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,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>>;
|
package/cjs/promise/isPromise.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../ts/promise/isPromise.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAU,OAAgB;
|
|
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"}
|
package/cjs/testing/stub.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { AnyFunction } from '../function';
|
|
2
2
|
import { RecursivePartial } from '../object';
|
|
3
|
-
export declare
|
|
4
|
-
|
|
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;
|
package/cjs/testing/stub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub.js","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":";;;
|
|
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"}
|
package/cjs/utils/Widen.d.ts
CHANGED
package/esm/JSONTypes.js
CHANGED
package/esm/JSONTypes.js.map
CHANGED
|
@@ -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;
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAkB,aAAa,EAAE,MAAM,UAAU,CAAA;AAUxD,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,SAA+B;IAC1E,IAAI,SAAS,EAAE;QACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,YAAY,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACtF,MAAM,IAAI,SAAS,CAAC,4BAA4B,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;KACxE;IACD,OAAM;AACR,CAAC;AAED,UAAU,CAAC,WAAW,GAAG,UAAU,OAAkB;IACnD,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,MAAM,SAAS,CAAC,0BAA0B,CAAC,CAAA;AACjF,CAAC,CAAA;AACD,UAAU,CAAC,WAAW,GAAG,UAAa,OAA8B;IAClE,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,MAAM,SAAS,CAAC,sBAAsB,CAAC,CAAA;AAC7E,CAAC,CAAA;AAED,UAAU,CAAC,MAAM,GAAG,UAAU,OAAa;IACzC,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAA;AAC9D,CAAC,CAAA;AACD,UAAU,CAAC,MAAM,GAAG,UAAa,OAAyB;IACxD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,UAAU,CAAC,QAAQ,GAAG,UAAU,OAAe;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,SAAS,CAAC,uBAAuB,CAAC,CAAA;AAC3E,CAAC,CAAA;AACD,UAAU,CAAC,QAAQ,GAAG,UAAa,OAA2B;IAC5D,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,SAAS,CAAC,mBAAmB,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,UAAU,CAAC,SAAS,GAAG,UAAU,OAAgB;IAC/C,IAAI,OAAO,OAAO,KAAK,SAAS;QAAE,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAA;AAC7E,CAAC,CAAA;AACD,UAAU,CAAC,SAAS,GAAG,UAAa,OAA4B;IAC9D,IAAI,OAAO,OAAO,KAAK,SAAS;QAAE,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,UAAU,CAAC,MAAM,GAAG,UAAU,OAAa;IACzC,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAA;AAC9D,CAAC,CAAA;AACD,UAAU,CAAC,MAAM,GAAG,UAAa,OAAyB;
|
|
1
|
+
{"version":3,"file":"assertType.js","sourceRoot":"","sources":["../../ts/assertion/assertType.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"
|
|
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":"
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isNodeError.js","sourceRoot":"","sources":["../../ts/nodejs/isNodeError.ts"],"names":[],"mappings":"
|
|
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":"
|
|
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":"
|
|
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"}
|
package/esm/object/KnownKeys.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnownKeys.js","sourceRoot":"","sources":["../../ts/object/KnownKeys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KnownKeys.js","sourceRoot":"","sources":["../../ts/object/KnownKeys.ts"],"names":[],"mappings":""}
|
package/esm/object/Required.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Required.js","sourceRoot":"","sources":["../../ts/object/Required.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Required.js","sourceRoot":"","sources":["../../ts/object/Required.ts"],"names":[],"mappings":""}
|
package/esm/object/facade.js
CHANGED
|
@@ -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
|
});
|
package/esm/object/facade.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/esm/object/index.js
CHANGED
package/esm/object/index.js.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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 @@
|
|
|
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"}
|
package/esm/object/reduceKey.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/esm/predicates/isType.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/esm/promise/isPromise.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../ts/promise/isPromise.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAU,OAAgB;
|
|
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/esm/testing/stub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub.js","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":"
|
|
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
package/ts/array/Filter.spec.ts
CHANGED
|
@@ -1,21 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
+
})
|
package/ts/array/Filter.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
export type Filter<A extends Array<any>, Criteria> =
|
|
2
|
-
number extends A['length']
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
?
|
|
6
|
-
: (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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))
|
package/ts/object/index.ts
CHANGED
|
@@ -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'
|