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.
- 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 +10 -8
- 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/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/package.json +1 -1
- package/ts/array/CreateTuple.spec.ts +32 -21
- package/ts/array/CreateTuple.ts +22 -7
- package/ts/array/Filter.spec.ts +54 -21
- package/ts/array/Filter.ts +17 -12
- package/ts/math/Add.spec.ts +82 -82
- package/ts/math/Digit.spec.ts +184 -185
- package/ts/object/index.ts +1 -0
- package/ts/object/record.spec.ts +54 -0
- package/ts/object/record.ts +10 -0
package/cjs/object/omit.d.ts
CHANGED
|
@@ -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>;
|
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/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":"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;IAExD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,UAAU,CAAC,OAAO,GAAG,UAAU,OAAc;IAC3C,IAAI,OAAO,KAAK,KAAK;QAAE,MAAM,SAAS,CAAC,sBAAsB,CAAC,CAAA;AAChE,CAAC,CAAA;AACD,UAAU,CAAC,OAAO,GAAG,UAAa,OAA0B;IAE1D,IAAI,OAAO,KAAK,KAAK;QAAE,MAAM,SAAS,CAAC,kBAAkB,CAAC,CAAA;AAC5D,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,UAAU,GAAG,UAAU,OAAoB;IACpD,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,MAAM,SAAS,CAAC,yBAAyB,CAAC,CAAA;AAC/E,CAAC,CAAA;AACD,UAAU,CAAC,UAAU,GAAG,UAAa,OAAgC;IACnE,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAA;AAC3E,CAAC,CAAA;AAED,UAAU,CAAC,aAAa,GAAG,UAAU,OAAuB;IAC1D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,MAAM,SAAS,CAAC,8BAA8B,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,UAAU,CAAC,OAAO,GAAG,UAAU,OAAc;IAC3C,IAAI,CAAC,CAAC,OAAO,YAAY,KAAK,CAAC;QAAE,MAAM,SAAS,CAAC,yBAAyB,CAAC,CAAA;AAC7E,CAAC,CAAA;AACD,UAAU,CAAC,OAAO,GAAG,UAAa,OAA0B;IAC1D,IAAI,OAAO,YAAY,KAAK;QAAE,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAA;AACtE,CAAC,CAAA;AAED,UAAU,CAAC,OAAO,GAAG,UAAU,OAAc;AAC7C,CAAC,CAAA;AAQD,UAAU,CAAC,MAAM,GAAG,UAClB,SAA4B;IAE5B,OAAO,UAAU,OAAO;QACtB,IAAI,CAAC,SAAS,CAAC,OAAc,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,4BAA4B,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACrG,OAAM;IACR,CAAC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -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/package.json
CHANGED
|
@@ -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
|
+
})
|
package/ts/array/CreateTuple.ts
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
|
-
import
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|