type-plus 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/nominal/brand.d.ts +7 -5
- package/cjs/nominal/brand.d.ts.map +1 -1
- package/cjs/nominal/brand.js +4 -4
- package/cjs/nominal/brand.js.map +1 -1
- package/cjs/nominal/{types.d.ts → constants.d.ts} +1 -1
- package/cjs/nominal/constants.d.ts.map +1 -0
- package/cjs/nominal/{types.js → constants.js} +1 -1
- package/cjs/nominal/constants.js.map +1 -0
- package/cjs/nominal/flavor.d.ts +14 -3
- package/cjs/nominal/flavor.d.ts.map +1 -1
- package/cjs/nominal/flavor.js +2 -2
- package/cjs/nominal/flavor.js.map +1 -1
- package/cjs/nominal/nominal_match.js +2 -2
- package/cjs/nominal/nominal_match.js.map +1 -1
- package/cjs/type/constants.d.ts +5 -0
- package/cjs/type/constants.d.ts.map +1 -0
- package/cjs/type/constants.js +8 -0
- package/cjs/type/constants.js.map +1 -0
- package/cjs/type/failed.d.ts +33 -0
- package/cjs/type/failed.d.ts.map +1 -0
- package/cjs/type/failed.js +4 -0
- package/cjs/type/failed.js.map +1 -0
- package/cjs/union/union_to_intersection.d.ts.map +1 -0
- package/cjs/union/union_to_intersection.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/nominal/brand.d.ts +7 -5
- package/esm/nominal/brand.d.ts.map +1 -1
- package/esm/nominal/brand.js +4 -4
- package/esm/nominal/brand.js.map +1 -1
- package/esm/nominal/{types.d.ts → constants.d.ts} +1 -1
- package/esm/nominal/constants.d.ts.map +1 -0
- package/esm/nominal/{types.js → constants.js} +1 -1
- package/esm/nominal/constants.js.map +1 -0
- package/esm/nominal/flavor.d.ts +14 -3
- package/esm/nominal/flavor.d.ts.map +1 -1
- package/esm/nominal/flavor.js +1 -1
- package/esm/nominal/flavor.js.map +1 -1
- package/esm/nominal/nominal_match.js +1 -1
- package/esm/nominal/nominal_match.js.map +1 -1
- package/esm/type/constants.d.ts +5 -0
- package/esm/type/constants.d.ts.map +1 -0
- package/esm/type/constants.js +5 -0
- package/esm/type/constants.js.map +1 -0
- package/esm/type/failed.d.ts +33 -0
- package/esm/type/failed.d.ts.map +1 -0
- package/esm/type/failed.js +2 -0
- package/esm/type/failed.js.map +1 -0
- package/esm/union/union_to_intersection.d.ts.map +1 -0
- package/esm/union/union_to_intersection.js.map +1 -0
- package/package.json +5 -5
- package/ts/assertion/readme.md +1 -2
- package/ts/index.ts +2 -0
- package/ts/nominal/brand.ts +15 -7
- package/ts/nominal/flavor.ts +17 -2
- package/ts/nominal/nominal_match.ts +1 -1
- package/ts/type/constants.ts +4 -0
- package/ts/type/failed.ts +34 -0
- package/cjs/nominal/types.d.ts.map +0 -1
- package/cjs/nominal/types.js.map +0 -1
- package/cjs/union_to_intersection.d.ts.map +0 -1
- package/cjs/union_to_intersection.js.map +0 -1
- package/esm/nominal/types.d.ts.map +0 -1
- package/esm/nominal/types.js.map +0 -1
- package/esm/union_to_intersection.d.ts.map +0 -1
- package/esm/union_to_intersection.js.map +0 -1
- /package/cjs/{union_to_intersection.d.ts → union/union_to_intersection.d.ts} +0 -0
- /package/cjs/{union_to_intersection.js → union/union_to_intersection.js} +0 -0
- /package/esm/{union_to_intersection.d.ts → union/union_to_intersection.d.ts} +0 -0
- /package/esm/{union_to_intersection.js → union/union_to_intersection.js} +0 -0
- /package/ts/nominal/{types.ts → constants.ts} +0 -0
- /package/ts/{union_to_intersection.ts → union/union_to_intersection.ts} +0 -0
package/cjs/index.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export type { IsNotSymbol, IsSymbol, NotSymbolType, SymbolType } from './symbol/
|
|
|
44
44
|
export * from './testing/stub.js';
|
|
45
45
|
export * from './testing/test_type.js';
|
|
46
46
|
export type { IsNotTuple, IsTuple, NotTupleType, TupleType } from './tuple/tuple_type.js';
|
|
47
|
+
export type { Failed, FailedT } from './type/failed.js';
|
|
47
48
|
export type { IsNotUndefined, IsUndefined, NotUndefinedType, UndefinedType } from './undefined/undefined_type.js';
|
|
48
49
|
export type { UnionKeys } from './union_keys.js';
|
|
49
50
|
export type { IsNotUnknown, IsUnknown, NotUnknownType, UnknownType } from './unknown/unknown_type.js';
|
package/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA6D;AAApD,qGAAA,QAAQ,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAI1C,mEAAkD;AAElD,mDAAgC;AAChC,6DAA0C;AAiB1C,mDAAgC;AAIhC,iEAA8C;AAQ9C,wDAAqC;AAcrC,oDAAiC;AACjC,qDAAkC;AAIlC,sEAAqD;AAiBrD,oDAAiC;AAEjC,wDAAqC;AAErC,qDAAkC;AASlC,oDAAiC;AACjC,yDAAsC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA6D;AAApD,qGAAA,QAAQ,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAI1C,mEAAkD;AAElD,mDAAgC;AAChC,6DAA0C;AAiB1C,mDAAgC;AAIhC,iEAA8C;AAQ9C,wDAAqC;AAcrC,oDAAiC;AACjC,qDAAkC;AAIlC,sEAAqD;AAiBrD,oDAAiC;AAEjC,wDAAqC;AAErC,qDAAkC;AASlC,oDAAiC;AACjC,yDAAsC;AAWtC,mDAAgC"}
|
package/cjs/nominal/brand.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { Widen } from '../utils/index.js';
|
|
2
|
-
import { typeSym, valueSym } from './
|
|
2
|
+
import { typeSym, valueSym } from './constants.js';
|
|
3
3
|
/**
|
|
4
4
|
* Create a "branded" version of a type.
|
|
5
5
|
* TypeScript won't allow implicit conversion to this type
|
|
6
6
|
*/
|
|
7
|
-
export type Brand<B extends string, T> = T extends
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export type Brand<B extends string, T = never> = [T] extends [null] | [undefined] | [symbol] | [void] ? Branded<B, T> : Branded<B, T> & T;
|
|
8
|
+
/**
|
|
9
|
+
* A branded type of `B` with value of `T`.
|
|
10
|
+
*/
|
|
11
|
+
export interface Branded<B extends string, T> {
|
|
10
12
|
[typeSym]: B;
|
|
11
13
|
[valueSym]: T;
|
|
12
|
-
}
|
|
14
|
+
}
|
|
13
15
|
/**
|
|
14
16
|
* Creates a brand creator with the specified type.
|
|
15
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAClG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GACb,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;AAEpB;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAC3C,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACZ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CACb;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACvF;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/cjs/nominal/brand.js
CHANGED
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.brand = void 0;
|
|
6
6
|
const isType_js_1 = require("../predicates/isType.js");
|
|
7
|
-
const
|
|
8
|
-
function brand(
|
|
7
|
+
const constants_js_1 = require("./constants.js");
|
|
8
|
+
function brand(typeInput, subject) {
|
|
9
9
|
if (subject === undefined)
|
|
10
10
|
return function (subject) {
|
|
11
|
-
return brand(
|
|
11
|
+
return brand(typeInput, subject);
|
|
12
12
|
};
|
|
13
13
|
if ((0, isType_js_1.isType)(subject, s => typeof s === 'object' && s !== null)) {
|
|
14
14
|
// if subject is not an object, the branding will exist only in type-level.
|
|
15
|
-
subject[
|
|
15
|
+
subject[constants_js_1.typeSym] = typeInput;
|
|
16
16
|
}
|
|
17
17
|
return subject;
|
|
18
18
|
}
|
package/cjs/nominal/brand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":";AAAA,kHAAkH;AAClH,uEAAuE;;;AAEvE,uDAAgD;AAEhD,
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":";AAAA,kHAAkH;AAClH,uEAAuE;;;AAEvE,uDAAgD;AAEhD,iDAAkD;AA0BlD,SAAgB,KAAK,CAAC,SAAiB,EAAE,OAAiB;IACzD,IAAI,OAAO,KAAK,SAAS;QACxB,OAAO,UAAa,OAAU;YAC7B,OAAO,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC,CAAA;IAEF,IAAI,IAAA,kBAAM,EAAwB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;QACrF,2EAA2E;QAC3E,OAAO,CAAC,sBAAO,CAAC,GAAG,SAAS,CAAA;KAC5B;IACD,OAAO,OAAO,CAAA;AACf,CAAC;AAXD,sBAWC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../ts/nominal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,eAAiB,CAAA;AACrC,eAAO,MAAM,QAAQ,eAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../ts/nominal/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,QAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA"}
|
package/cjs/nominal/flavor.d.ts
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import type { Widen } from '../utils/index.js';
|
|
2
|
-
import { typeSym } from './
|
|
2
|
+
import { typeSym, valueSym } from './constants.js';
|
|
3
3
|
/**
|
|
4
4
|
* Create a "flavored" version of a type.
|
|
5
5
|
* TypeScript will disallow mixing flavors,
|
|
6
6
|
* but will allow unflavored values of that type to be passed in where a flavored version is expected.
|
|
7
7
|
* This is a less restrictive form of branding.
|
|
8
8
|
*/
|
|
9
|
-
export type Flavor<F extends string, T> = T &
|
|
9
|
+
export type Flavor<F extends string, T> = [T] extends [null] | [undefined] | [symbol] | [void] ? FlavoredUnit<F, T> : Flavored<F> & T;
|
|
10
|
+
/**
|
|
11
|
+
* A flavored type of `F`
|
|
12
|
+
*/
|
|
13
|
+
export interface Flavored<F extends string> {
|
|
14
|
+
[typeSym]?: F;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A special flavored type for special types.
|
|
18
|
+
*/
|
|
19
|
+
export interface FlavoredUnit<F extends string, T> {
|
|
10
20
|
[typeSym]?: F;
|
|
11
|
-
|
|
21
|
+
[valueSym]: T;
|
|
22
|
+
}
|
|
12
23
|
/**
|
|
13
24
|
* Creates a brand creator with the specified type.
|
|
14
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flavor.d.ts","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"flavor.d.ts","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAC3F,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAElB;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,MAAM;IACzC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAChD,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IACb,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CACb;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/cjs/nominal/flavor.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.flavor = void 0;
|
|
6
6
|
const isType_js_1 = require("../predicates/isType.js");
|
|
7
|
-
const
|
|
7
|
+
const constants_js_1 = require("./constants.js");
|
|
8
8
|
function flavor(type, subject) {
|
|
9
9
|
if (subject === undefined)
|
|
10
10
|
return function (subject) {
|
|
@@ -12,7 +12,7 @@ function flavor(type, subject) {
|
|
|
12
12
|
};
|
|
13
13
|
if ((0, isType_js_1.isType)(subject, s => typeof s === 'object' && s !== null)) {
|
|
14
14
|
// if subject is not an object, the branding will exist only in type-level.
|
|
15
|
-
subject[
|
|
15
|
+
subject[constants_js_1.typeSym] = type;
|
|
16
16
|
}
|
|
17
17
|
return subject;
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flavor.js","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":";AAAA,kHAAkH;AAClH,uEAAuE;;;AAEvE,uDAAgD;AAEhD,
|
|
1
|
+
{"version":3,"file":"flavor.js","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":";AAAA,kHAAkH;AAClH,uEAAuE;;;AAEvE,uDAAgD;AAEhD,iDAAkD;AAmClD,SAAgB,MAAM,CAAC,IAAY,EAAE,OAAiB;IACrD,IAAI,OAAO,KAAK,SAAS;QACxB,OAAO,UAAa,OAAU;YAC7B,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC7B,CAAC,CAAA;IAEF,IAAI,IAAA,kBAAM,EAAwB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;QACrF,2EAA2E;QAC3E,OAAO,CAAC,sBAAO,CAAC,GAAG,IAAI,CAAA;KACvB;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAZD,wBAYC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.nominalMatch = void 0;
|
|
4
|
-
const
|
|
4
|
+
const constants_js_1 = require("./constants.js");
|
|
5
5
|
function nominalMatch(a, b) {
|
|
6
6
|
if (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null)
|
|
7
|
-
return a[
|
|
7
|
+
return a[constants_js_1.typeSym] === b[constants_js_1.typeSym];
|
|
8
8
|
else {
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nominal_match.js","sourceRoot":"","sources":["../../ts/nominal/nominal_match.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"nominal_match.js","sourceRoot":"","sources":["../../ts/nominal/nominal_match.ts"],"names":[],"mappings":";;;AAEA,iDAAwC;AAUxC,SAAgB,YAAY,CAC3B,CAAyC,EACzC,CAAyC;IAEzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAC7E,OAAO,CAAC,CAAC,sBAAO,CAAC,KAAK,CAAC,CAAC,sBAAO,CAAC,CAAA;SAC5B;QACJ,OAAO,IAAI,CAAA;KACX;AACF,CAAC;AATD,oCASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../ts/type/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM,eAAsB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../ts/type/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { uniSym } from './constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* A failed type with message.
|
|
4
|
+
*
|
|
5
|
+
* This is analogous to the `Error` class in JavaScript.
|
|
6
|
+
*
|
|
7
|
+
* It can be used in type-level programming to failed an error message.
|
|
8
|
+
*
|
|
9
|
+
* If you want to add additional type information,
|
|
10
|
+
* use `FailedT` or create your own failed type instead.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { Failed } from 'type-plus'
|
|
14
|
+
*
|
|
15
|
+
* type T = Failed<'error message'>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export interface Failed<Msg extends string> {
|
|
19
|
+
[uniSym]: Msg;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A failed type with message and one additional type.
|
|
23
|
+
*
|
|
24
|
+
* Use this to add a generic type to the failed type.
|
|
25
|
+
*
|
|
26
|
+
* e.g. `FailedT<'missing', number | string>`
|
|
27
|
+
*
|
|
28
|
+
* It's recommended to create custom failed types instead of using this to provide better message.
|
|
29
|
+
*/
|
|
30
|
+
export interface FailedT<Msg extends string, T> {
|
|
31
|
+
[uniSym]: Msg;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=failed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failed.d.ts","sourceRoot":"","sources":["../../ts/type/failed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,MAAM,CAAC,GAAG,SAAS,MAAM;IACzC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IAC7C,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failed.js","sourceRoot":"","sources":["../../ts/type/failed.ts"],"names":[],"mappings":";;AAAA,iDAAuC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union_to_intersection.d.ts","sourceRoot":"","sources":["../../ts/union/union_to_intersection.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACvG,CAAC,GACD,KAAK,CAAA;AAER,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAElE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union_to_intersection.js","sourceRoot":"","sources":["../../ts/union/union_to_intersection.ts"],"names":[],"mappings":";;;AAMA,SAAgB,cAAc,CAAI,KAAQ;IACzC,OAAO,KAAsC,CAAA;AAC9C,CAAC;AAFD,wCAEC"}
|
package/esm/index.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export type { IsNotSymbol, IsSymbol, NotSymbolType, SymbolType } from './symbol/
|
|
|
44
44
|
export * from './testing/stub.js';
|
|
45
45
|
export * from './testing/test_type.js';
|
|
46
46
|
export type { IsNotTuple, IsTuple, NotTupleType, TupleType } from './tuple/tuple_type.js';
|
|
47
|
+
export type { Failed, FailedT } from './type/failed.js';
|
|
47
48
|
export type { IsNotUndefined, IsUndefined, NotUndefinedType, UndefinedType } from './undefined/undefined_type.js';
|
|
48
49
|
export type { UnionKeys } from './union_keys.js';
|
|
49
50
|
export type { IsNotUnknown, IsUnknown, NotUnknownType, UnknownType } from './unknown/unknown_type.js';
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAI7D,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAElD,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAiB1C,cAAc,kBAAkB,CAAA;AAIhC,cAAc,gCAAgC,CAAA;AAQ9C,cAAc,uBAAuB,CAAA;AAcrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAIlC,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAiBrD,cAAc,mBAAmB,CAAA;AAEjC,cAAc,uBAAuB,CAAA;AAErC,cAAc,oBAAoB,CAAA;AASlC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAI7D,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAElD,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAiB1C,cAAc,kBAAkB,CAAA;AAIhC,cAAc,gCAAgC,CAAA;AAQ9C,cAAc,uBAAuB,CAAA;AAcrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAIlC,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAiBrD,cAAc,mBAAmB,CAAA;AAEjC,cAAc,uBAAuB,CAAA;AAErC,cAAc,oBAAoB,CAAA;AASlC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AAWtC,cAAc,kBAAkB,CAAA"}
|
package/esm/nominal/brand.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { Widen } from '../utils/index.js';
|
|
2
|
-
import { typeSym, valueSym } from './
|
|
2
|
+
import { typeSym, valueSym } from './constants.js';
|
|
3
3
|
/**
|
|
4
4
|
* Create a "branded" version of a type.
|
|
5
5
|
* TypeScript won't allow implicit conversion to this type
|
|
6
6
|
*/
|
|
7
|
-
export type Brand<B extends string, T> = T extends
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export type Brand<B extends string, T = never> = [T] extends [null] | [undefined] | [symbol] | [void] ? Branded<B, T> : Branded<B, T> & T;
|
|
8
|
+
/**
|
|
9
|
+
* A branded type of `B` with value of `T`.
|
|
10
|
+
*/
|
|
11
|
+
export interface Branded<B extends string, T> {
|
|
10
12
|
[typeSym]: B;
|
|
11
13
|
[valueSym]: T;
|
|
12
|
-
}
|
|
14
|
+
}
|
|
13
15
|
/**
|
|
14
16
|
* Creates a brand creator with the specified type.
|
|
15
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAClG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GACb,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;AAEpB;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAC3C,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACZ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CACb;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACvF;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/esm/nominal/brand.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
|
|
2
2
|
// <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
|
|
3
3
|
import { isType } from '../predicates/isType.js';
|
|
4
|
-
import { typeSym, valueSym } from './
|
|
5
|
-
export function brand(
|
|
4
|
+
import { typeSym, valueSym } from './constants.js';
|
|
5
|
+
export function brand(typeInput, subject) {
|
|
6
6
|
if (subject === undefined)
|
|
7
7
|
return function (subject) {
|
|
8
|
-
return brand(
|
|
8
|
+
return brand(typeInput, subject);
|
|
9
9
|
};
|
|
10
10
|
if (isType(subject, s => typeof s === 'object' && s !== null)) {
|
|
11
11
|
// if subject is not an object, the branding will exist only in type-level.
|
|
12
|
-
subject[typeSym] =
|
|
12
|
+
subject[typeSym] = typeInput;
|
|
13
13
|
}
|
|
14
14
|
return subject;
|
|
15
15
|
}
|
package/esm/nominal/brand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAEvE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../ts/nominal/brand.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAEvE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AA0BlD,MAAM,UAAU,KAAK,CAAC,SAAiB,EAAE,OAAiB;IACzD,IAAI,OAAO,KAAK,SAAS;QACxB,OAAO,UAAa,OAAU;YAC7B,OAAO,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC,CAAA;IAEF,IAAI,MAAM,CAAwB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;QACrF,2EAA2E;QAC3E,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;KAC5B;IACD,OAAO,OAAO,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../ts/nominal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,eAAiB,CAAA;AACrC,eAAO,MAAM,QAAQ,eAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../ts/nominal/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA"}
|
package/esm/nominal/flavor.d.ts
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import type { Widen } from '../utils/index.js';
|
|
2
|
-
import { typeSym } from './
|
|
2
|
+
import { typeSym, valueSym } from './constants.js';
|
|
3
3
|
/**
|
|
4
4
|
* Create a "flavored" version of a type.
|
|
5
5
|
* TypeScript will disallow mixing flavors,
|
|
6
6
|
* but will allow unflavored values of that type to be passed in where a flavored version is expected.
|
|
7
7
|
* This is a less restrictive form of branding.
|
|
8
8
|
*/
|
|
9
|
-
export type Flavor<F extends string, T> = T &
|
|
9
|
+
export type Flavor<F extends string, T> = [T] extends [null] | [undefined] | [symbol] | [void] ? FlavoredUnit<F, T> : Flavored<F> & T;
|
|
10
|
+
/**
|
|
11
|
+
* A flavored type of `F`
|
|
12
|
+
*/
|
|
13
|
+
export interface Flavored<F extends string> {
|
|
14
|
+
[typeSym]?: F;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A special flavored type for special types.
|
|
18
|
+
*/
|
|
19
|
+
export interface FlavoredUnit<F extends string, T> {
|
|
10
20
|
[typeSym]?: F;
|
|
11
|
-
|
|
21
|
+
[valueSym]: T;
|
|
22
|
+
}
|
|
12
23
|
/**
|
|
13
24
|
* Creates a brand creator with the specified type.
|
|
14
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flavor.d.ts","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"flavor.d.ts","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAC3F,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAElB;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,MAAM;IACzC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAChD,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IACb,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CACb;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/esm/nominal/flavor.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
|
|
2
2
|
// <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
|
|
3
3
|
import { isType } from '../predicates/isType.js';
|
|
4
|
-
import { typeSym } from './
|
|
4
|
+
import { typeSym, valueSym } from './constants.js';
|
|
5
5
|
export function flavor(type, subject) {
|
|
6
6
|
if (subject === undefined)
|
|
7
7
|
return function (subject) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flavor.js","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAEvE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"flavor.js","sourceRoot":"","sources":["../../ts/nominal/flavor.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAEvE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAmClD,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,OAAiB;IACrD,IAAI,OAAO,KAAK,SAAS;QACxB,OAAO,UAAa,OAAU;YAC7B,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC7B,CAAC,CAAA;IAEF,IAAI,MAAM,CAAwB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;QACrF,2EAA2E;QAC3E,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;KACvB;IAED,OAAO,OAAO,CAAA;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nominal_match.js","sourceRoot":"","sources":["../../ts/nominal/nominal_match.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"nominal_match.js","sourceRoot":"","sources":["../../ts/nominal/nominal_match.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAUxC,MAAM,UAAU,YAAY,CAC3B,CAAyC,EACzC,CAAyC;IAEzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAC7E,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;SAC5B;QACJ,OAAO,IAAI,CAAA;KACX;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../ts/type/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM,eAAsB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../ts/type/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { uniSym } from './constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* A failed type with message.
|
|
4
|
+
*
|
|
5
|
+
* This is analogous to the `Error` class in JavaScript.
|
|
6
|
+
*
|
|
7
|
+
* It can be used in type-level programming to failed an error message.
|
|
8
|
+
*
|
|
9
|
+
* If you want to add additional type information,
|
|
10
|
+
* use `FailedT` or create your own failed type instead.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { Failed } from 'type-plus'
|
|
14
|
+
*
|
|
15
|
+
* type T = Failed<'error message'>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export interface Failed<Msg extends string> {
|
|
19
|
+
[uniSym]: Msg;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A failed type with message and one additional type.
|
|
23
|
+
*
|
|
24
|
+
* Use this to add a generic type to the failed type.
|
|
25
|
+
*
|
|
26
|
+
* e.g. `FailedT<'missing', number | string>`
|
|
27
|
+
*
|
|
28
|
+
* It's recommended to create custom failed types instead of using this to provide better message.
|
|
29
|
+
*/
|
|
30
|
+
export interface FailedT<Msg extends string, T> {
|
|
31
|
+
[uniSym]: Msg;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=failed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failed.d.ts","sourceRoot":"","sources":["../../ts/type/failed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,MAAM,CAAC,GAAG,SAAS,MAAM;IACzC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IAC7C,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failed.js","sourceRoot":"","sources":["../../ts/type/failed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union_to_intersection.d.ts","sourceRoot":"","sources":["../../ts/union/union_to_intersection.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACvG,CAAC,GACD,KAAK,CAAA;AAER,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAElE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union_to_intersection.js","sourceRoot":"","sources":["../../ts/union/union_to_intersection.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,cAAc,CAAI,KAAQ;IACzC,OAAO,KAAsC,CAAA;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "type-plus",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.5.0",
|
|
4
4
|
"description": "Provides additional types for TypeScript.",
|
|
5
5
|
"homepage": "https://github.com/unional/type-plus",
|
|
6
6
|
"bugs": {
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
"size-limit": "^8.2.4",
|
|
68
68
|
"ts-jest": "^29.1.0",
|
|
69
69
|
"tslib": "^2.4.0",
|
|
70
|
-
"typedoc": "^0.
|
|
71
|
-
"typedoc-plugin-extras": "^2.2
|
|
70
|
+
"typedoc": "^0.24.1",
|
|
71
|
+
"typedoc-plugin-extras": "^2.3.2",
|
|
72
72
|
"typescript": "^5.0.2"
|
|
73
73
|
},
|
|
74
|
-
"packageManager": "pnpm@8.
|
|
74
|
+
"packageManager": "pnpm@8.2.0",
|
|
75
75
|
"scripts": {
|
|
76
76
|
"build": "run-p build:cjs build:esm build:tslib",
|
|
77
77
|
"build:cjs": "tsc -p tsconfig.cjs.json && ncp package.cjs.json cjs/package.json",
|
|
78
78
|
"build:esm": "tsc -p tsconfig.esm.json",
|
|
79
79
|
"build:tslib": "tsc -p tsconfig.tslib.json && ncp package.cjs.json tslib/package.json",
|
|
80
|
-
"build:doc": "typedoc",
|
|
80
|
+
"build:doc": "typedoc --plugin typedoc-plugin-extras",
|
|
81
81
|
"clean": "rimraf cjs coverage esm lib libm tslib",
|
|
82
82
|
"coverage": "cross-env NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest --coverage",
|
|
83
83
|
"cs": "changeset",
|
package/ts/assertion/readme.md
CHANGED
|
@@ -11,5 +11,4 @@ so that that type of the value can be narrowed down.
|
|
|
11
11
|
|
|
12
12
|
- [Handbook][assertion_functions]
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
[assertion_functions]: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions
|
|
14
|
+
[assertion_functions]: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions
|
package/ts/index.ts
CHANGED
|
@@ -86,6 +86,7 @@ export type { IsNotSymbol, IsSymbol, NotSymbolType, SymbolType } from './symbol/
|
|
|
86
86
|
export * from './testing/stub.js'
|
|
87
87
|
export * from './testing/test_type.js'
|
|
88
88
|
export type { IsNotTuple, IsTuple, NotTupleType, TupleType } from './tuple/tuple_type.js'
|
|
89
|
+
export type { Failed, FailedT } from './type/failed.js'
|
|
89
90
|
export type {
|
|
90
91
|
IsNotUndefined,
|
|
91
92
|
IsUndefined,
|
|
@@ -96,3 +97,4 @@ export type { UnionKeys } from './union_keys.js'
|
|
|
96
97
|
export type { IsNotUnknown, IsUnknown, NotUnknownType, UnknownType } from './unknown/unknown_type.js'
|
|
97
98
|
export * from './utils/index.js'
|
|
98
99
|
export type { IsNotVoid, IsVoid, NotVoidType, VoidType } from './void/void_type.js'
|
|
100
|
+
|
package/ts/nominal/brand.ts
CHANGED
|
@@ -3,15 +3,23 @@
|
|
|
3
3
|
|
|
4
4
|
import { isType } from '../predicates/isType.js'
|
|
5
5
|
import type { Widen } from '../utils/index.js'
|
|
6
|
-
import { typeSym, valueSym } from './
|
|
6
|
+
import { typeSym, valueSym } from './constants.js'
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Create a "branded" version of a type.
|
|
10
10
|
* TypeScript won't allow implicit conversion to this type
|
|
11
11
|
*/
|
|
12
|
-
export type Brand<B extends string, T> = T extends
|
|
13
|
-
?
|
|
14
|
-
:
|
|
12
|
+
export type Brand<B extends string, T = never> = [T] extends [null] | [undefined] | [symbol] | [void]
|
|
13
|
+
? Branded<B, T>
|
|
14
|
+
: Branded<B, T> & T
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A branded type of `B` with value of `T`.
|
|
18
|
+
*/
|
|
19
|
+
export interface Branded<B extends string, T> {
|
|
20
|
+
[typeSym]: B
|
|
21
|
+
[valueSym]: T
|
|
22
|
+
}
|
|
15
23
|
|
|
16
24
|
/**
|
|
17
25
|
* Creates a brand creator with the specified type.
|
|
@@ -21,15 +29,15 @@ export function brand<B extends string>(type: B): <T>(subject: T) => Brand<B, Wi
|
|
|
21
29
|
* Creates a branded value of specified type.
|
|
22
30
|
*/
|
|
23
31
|
export function brand<B extends string, T>(type: B, subject: T): Brand<B, Widen<T>>
|
|
24
|
-
export function brand(
|
|
32
|
+
export function brand(typeInput: string, subject?: unknown) {
|
|
25
33
|
if (subject === undefined)
|
|
26
34
|
return function <T>(subject: T) {
|
|
27
|
-
return brand(
|
|
35
|
+
return brand(typeInput, subject)
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
if (isType<{ [typeSym]: string }>(subject, s => typeof s === 'object' && s !== null)) {
|
|
31
39
|
// if subject is not an object, the branding will exist only in type-level.
|
|
32
|
-
subject[typeSym] =
|
|
40
|
+
subject[typeSym] = typeInput
|
|
33
41
|
}
|
|
34
42
|
return subject
|
|
35
43
|
}
|
package/ts/nominal/flavor.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import { isType } from '../predicates/isType.js'
|
|
5
5
|
import type { Widen } from '../utils/index.js'
|
|
6
|
-
import { typeSym } from './
|
|
6
|
+
import { typeSym, valueSym } from './constants.js'
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Create a "flavored" version of a type.
|
|
@@ -11,8 +11,23 @@ import { typeSym } from './types.js'
|
|
|
11
11
|
* but will allow unflavored values of that type to be passed in where a flavored version is expected.
|
|
12
12
|
* This is a less restrictive form of branding.
|
|
13
13
|
*/
|
|
14
|
-
export type Flavor<F extends string, T> = T
|
|
14
|
+
export type Flavor<F extends string, T> = [T] extends [null] | [undefined] | [symbol] | [void]
|
|
15
|
+
? FlavoredUnit<F, T>
|
|
16
|
+
: Flavored<F> & T
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A flavored type of `F`
|
|
20
|
+
*/
|
|
21
|
+
export interface Flavored<F extends string> {
|
|
22
|
+
[typeSym]?: F
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A special flavored type for special types.
|
|
27
|
+
*/
|
|
28
|
+
export interface FlavoredUnit<F extends string, T> {
|
|
15
29
|
[typeSym]?: F
|
|
30
|
+
[valueSym]: T
|
|
16
31
|
}
|
|
17
32
|
|
|
18
33
|
/**
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { uniSym } from './constants.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A failed type with message.
|
|
5
|
+
*
|
|
6
|
+
* This is analogous to the `Error` class in JavaScript.
|
|
7
|
+
*
|
|
8
|
+
* It can be used in type-level programming to failed an error message.
|
|
9
|
+
*
|
|
10
|
+
* If you want to add additional type information,
|
|
11
|
+
* use `FailedT` or create your own failed type instead.
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { Failed } from 'type-plus'
|
|
15
|
+
*
|
|
16
|
+
* type T = Failed<'error message'>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export interface Failed<Msg extends string> {
|
|
20
|
+
[uniSym]: Msg
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A failed type with message and one additional type.
|
|
25
|
+
*
|
|
26
|
+
* Use this to add a generic type to the failed type.
|
|
27
|
+
*
|
|
28
|
+
* e.g. `FailedT<'missing', number | string>`
|
|
29
|
+
*
|
|
30
|
+
* It's recommended to create custom failed types instead of using this to provide better message.
|
|
31
|
+
*/
|
|
32
|
+
export interface FailedT<Msg extends string, T> {
|
|
33
|
+
[uniSym]: Msg
|
|
34
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ts/nominal/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,eAAiB,CAAA;AACrC,eAAO,MAAM,QAAQ,eAAkB,CAAA"}
|
package/cjs/nominal/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../ts/nominal/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,QAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"union_to_intersection.d.ts","sourceRoot":"","sources":["../ts/union_to_intersection.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACvG,CAAC,GACD,KAAK,CAAA;AAER,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAElE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"union_to_intersection.js","sourceRoot":"","sources":["../ts/union_to_intersection.ts"],"names":[],"mappings":";;;AAMA,SAAgB,cAAc,CAAI,KAAQ;IACzC,OAAO,KAAsC,CAAA;AAC9C,CAAC;AAFD,wCAEC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ts/nominal/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,eAAiB,CAAA;AACrC,eAAO,MAAM,QAAQ,eAAkB,CAAA"}
|
package/esm/nominal/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../ts/nominal/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"union_to_intersection.d.ts","sourceRoot":"","sources":["../ts/union_to_intersection.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACvG,CAAC,GACD,KAAK,CAAA;AAER,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAElE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"union_to_intersection.js","sourceRoot":"","sources":["../ts/union_to_intersection.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,cAAc,CAAI,KAAQ;IACzC,OAAO,KAAsC,CAAA;AAC9C,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|