ts-fortress 11.0.0 → 11.0.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/dist/brand/branded-number.d.mts +1 -5
- package/dist/brand/branded-number.d.mts.map +1 -1
- package/dist/brand/branded-string.d.mts +1 -5
- package/dist/brand/branded-string.d.mts.map +1 -1
- package/dist/other-types/refine.d.mts +9 -1
- package/dist/other-types/refine.d.mts.map +1 -1
- package/dist/other-types/refine.mjs +3 -2
- package/dist/other-types/refine.mjs.map +1 -1
- package/dist/primitives/bigint.d.mts.map +1 -1
- package/dist/primitives/bigint.mjs +40 -18
- package/dist/primitives/bigint.mjs.map +1 -1
- package/dist/primitives/number.d.mts.map +1 -1
- package/dist/primitives/number.mjs +43 -21
- package/dist/primitives/number.mjs.map +1 -1
- package/dist/primitives/string.d.mts.map +1 -1
- package/dist/primitives/string.mjs +25 -13
- package/dist/primitives/string.mjs.map +1 -1
- package/dist/record/at.mjs +1 -1
- package/dist/record/at.mjs.map +1 -1
- package/dist/utils/validation-error.d.mts +41 -0
- package/dist/utils/validation-error.d.mts.map +1 -1
- package/dist/utils/validation-error.mjs +70 -2
- package/dist/utils/validation-error.mjs.map +1 -1
- package/package.json +29 -19
- package/src/other-types/refine.mts +10 -1
- package/src/primitives/bigint.mts +49 -22
- package/src/primitives/bigint.test.mts +82 -0
- package/src/primitives/number.mts +52 -25
- package/src/primitives/number.test.mts +101 -0
- package/src/primitives/string.mts +33 -17
- package/src/primitives/string.test.mts +94 -0
- package/src/record/at.mts +1 -1
- package/src/utils/validation-error.formatting.test.mts +64 -0
- package/src/utils/validation-error.mts +165 -2
|
@@ -10,9 +10,5 @@ export declare const brandedNumber: <K extends string>({ defaultValue, is, typeN
|
|
|
10
10
|
*
|
|
11
11
|
* @deprecated use `brandedNumber`
|
|
12
12
|
*/
|
|
13
|
-
export declare const simpleBrandedNumber:
|
|
14
|
-
typeName: K;
|
|
15
|
-
defaultValue: number;
|
|
16
|
-
is?: (u: number) => u is Brand<number, K>;
|
|
17
|
-
}>) => Type<Brand<number, K>>;
|
|
13
|
+
export declare const simpleBrandedNumber: typeof brandedNumber;
|
|
18
14
|
//# sourceMappingURL=branded-number.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branded-number.d.mts","sourceRoot":"","sources":["../../src/brand/branded-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAStB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"branded-number.d.mts","sourceRoot":"","sources":["../../src/brand/branded-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAStB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,sBAAgB,CAAC"}
|
|
@@ -10,9 +10,5 @@ export declare const brandedString: <K extends string>({ defaultValue, is, typeN
|
|
|
10
10
|
*
|
|
11
11
|
* @deprecated use `brandedString`
|
|
12
12
|
*/
|
|
13
|
-
export declare const simpleBrandedString:
|
|
14
|
-
typeName: K;
|
|
15
|
-
defaultValue: string;
|
|
16
|
-
is?: (u: string) => u is Brand<string, K>;
|
|
17
|
-
}>) => Type<Brand<string, K>>;
|
|
13
|
+
export declare const simpleBrandedString: typeof brandedString;
|
|
18
14
|
//# sourceMappingURL=branded-string.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branded-string.d.mts","sourceRoot":"","sources":["../../src/brand/branded-string.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAStB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"branded-string.d.mts","sourceRoot":"","sources":["../../src/brand/branded-string.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAStB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,sBAAgB,CAAC"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { type Primitive } from 'ts-type-forge';
|
|
2
2
|
import { type Type } from '../type.mjs';
|
|
3
|
-
|
|
3
|
+
import { type ValidationErrorDetails } from '../utils/index.mjs';
|
|
4
|
+
export declare const refine: <Base extends Extract<Primitive, string | boolean | bigint | number>, R extends Base>({ baseType, is, defaultValue, typeName, getConstraintDetails, }: Readonly<{
|
|
4
5
|
baseType: Type<Base>;
|
|
5
6
|
is: (a: Base) => a is R;
|
|
6
7
|
defaultValue: R;
|
|
7
8
|
typeName?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Optional producer of structured error details for a value that passes the
|
|
11
|
+
* base type but fails `is`. Used by the built-in constrained primitives
|
|
12
|
+
* (`string` / `number` / `bigint`) to explain which constraint was violated;
|
|
13
|
+
* user-defined refinements can omit it and fall back to a generic message.
|
|
14
|
+
*/
|
|
15
|
+
getConstraintDetails?: (a: Base) => ValidationErrorDetails | undefined;
|
|
8
16
|
}>) => Type<R>;
|
|
9
17
|
//# sourceMappingURL=refine.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refine.d.mts","sourceRoot":"","sources":["../../src/other-types/refine.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"refine.d.mts","sourceRoot":"","sources":["../../src/other-types/refine.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,MAAM,GACjB,IAAI,SAAS,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,EACnE,CAAC,SAAS,IAAI,mEAOb,QAAQ,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,sBAAsB,GAAG,SAAS,CAAC;CACxE,CAAC,KAAG,IAAI,CAAC,CAAC,CAwBV,CAAC"}
|
|
@@ -6,7 +6,8 @@ const refine = ({
|
|
|
6
6
|
baseType,
|
|
7
7
|
is,
|
|
8
8
|
defaultValue,
|
|
9
|
-
typeName = `${baseType.typeName} refined
|
|
9
|
+
typeName = `${baseType.typeName} refined`,
|
|
10
|
+
getConstraintDetails
|
|
10
11
|
}) => {
|
|
11
12
|
const validate = (a) => pipe(a).map(baseType.validate).map(
|
|
12
13
|
(res) => Result.isErr(res) ? res : is(res.value) ? Result.ok(res.value) : Result.err([
|
|
@@ -14,7 +15,7 @@ const refine = ({
|
|
|
14
15
|
actualValue: a,
|
|
15
16
|
expectedType: typeName,
|
|
16
17
|
typeName,
|
|
17
|
-
details:
|
|
18
|
+
details: getConstraintDetails?.(res.value)
|
|
18
19
|
})
|
|
19
20
|
])
|
|
20
21
|
).value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refine.mjs","sources":["../../src/other-types/refine.mts"],"sourcesContent":["import { pipe, Result } from 'ts-data-forge';\nimport { type Primitive } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createPrimitiveValidationError,\n createType,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport const refine = <\n Base extends Extract<Primitive, string | boolean | bigint | number>,\n R extends Base,\n>({\n baseType,\n is,\n defaultValue,\n typeName = `${baseType.typeName} refined`,\n}: Readonly<{\n baseType: Type<Base>;\n is: (a: Base) => a is R;\n defaultValue: R;\n typeName?: string;\n}>): Type<R> => {\n const validate: Type<R>['validate'] = (a) =>\n pipe(a)\n .map(baseType.validate)\n .map((res): Result<R, readonly ValidationError[]> =>\n Result.isErr(res)\n ? res\n : is(res.value)\n ? Result.ok(res.value)\n : Result.err([\n createPrimitiveValidationError({\n actualValue: a,\n expectedType: typeName,\n typeName,\n details:
|
|
1
|
+
{"version":3,"file":"refine.mjs","sources":["../../src/other-types/refine.mts"],"sourcesContent":["import { pipe, Result } from 'ts-data-forge';\nimport { type Primitive } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createPrimitiveValidationError,\n createType,\n type ValidationError,\n type ValidationErrorDetails,\n} from '../utils/index.mjs';\n\nexport const refine = <\n Base extends Extract<Primitive, string | boolean | bigint | number>,\n R extends Base,\n>({\n baseType,\n is,\n defaultValue,\n typeName = `${baseType.typeName} refined`,\n getConstraintDetails,\n}: Readonly<{\n baseType: Type<Base>;\n is: (a: Base) => a is R;\n defaultValue: R;\n typeName?: string;\n /**\n * Optional producer of structured error details for a value that passes the\n * base type but fails `is`. Used by the built-in constrained primitives\n * (`string` / `number` / `bigint`) to explain which constraint was violated;\n * user-defined refinements can omit it and fall back to a generic message.\n */\n getConstraintDetails?: (a: Base) => ValidationErrorDetails | undefined;\n}>): Type<R> => {\n const validate: Type<R>['validate'] = (a) =>\n pipe(a)\n .map(baseType.validate)\n .map((res): Result<R, readonly ValidationError[]> =>\n Result.isErr(res)\n ? res\n : is(res.value)\n ? Result.ok(res.value)\n : Result.err([\n createPrimitiveValidationError({\n actualValue: a,\n expectedType: typeName,\n typeName,\n details: getConstraintDetails?.(res.value),\n }),\n ]),\n ).value;\n\n return createType({\n typeName,\n defaultValue,\n validate,\n });\n};\n"],"names":[],"mappings":";;;;AAUO,MAAM,SAAS,CAGpB;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW,CAAA,EAAG,QAAA,CAAS,QAAQ,CAAA,QAAA,CAAA;AAAA,EAC/B;AACF,CAAA,KAYgB;AACd,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KACrC,IAAA,CAAK,CAAC,CAAA,CACH,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,CACrB,GAAA;AAAA,IAAI,CAAC,GAAA,KACJ,MAAA,CAAO,KAAA,CAAM,GAAG,IACZ,GAAA,GACA,EAAA,CAAG,GAAA,CAAI,KAAK,IACV,MAAA,CAAO,EAAA,CAAG,IAAI,KAAK,CAAA,GACnB,OAAO,GAAA,CAAI;AAAA,MACT,8BAAA,CAA+B;AAAA,QAC7B,WAAA,EAAa,CAAA;AAAA,QACb,YAAA,EAAc,QAAA;AAAA,QACd,QAAA;AAAA,QACA,OAAA,EAAS,oBAAA,GAAuB,GAAA,CAAI,KAAK;AAAA,OAC1C;AAAA,KACF;AAAA,GACT,CAAE,KAAA;AAEN,EAAA,OAAO,UAAA,CAAW;AAAA,IAChB,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigint.d.mts","sourceRoot":"","sources":["../../src/primitives/bigint.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bigint.d.mts","sourceRoot":"","sources":["../../src/primitives/bigint.mts"],"names":[],"mappings":"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"}
|
|
@@ -16,13 +16,26 @@ function bigint(defaultValue = 0n, constraints) {
|
|
|
16
16
|
const constraintsPredicate = createConstraintsPredicate(constraints);
|
|
17
17
|
const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);
|
|
18
18
|
if (Result.isErr(defaultValueConstraintsCheck)) {
|
|
19
|
-
throw new Error(
|
|
19
|
+
throw new Error(
|
|
20
|
+
defaultValueErrorMessage(
|
|
21
|
+
defaultValue,
|
|
22
|
+
defaultValueConstraintsCheck.value
|
|
23
|
+
)
|
|
24
|
+
);
|
|
20
25
|
}
|
|
21
26
|
return refine({
|
|
22
27
|
baseType,
|
|
23
28
|
defaultValue,
|
|
24
29
|
is: (value) => Result.isOk(constraintsPredicate(value)),
|
|
25
|
-
typeName: "bigint"
|
|
30
|
+
typeName: "bigint",
|
|
31
|
+
getConstraintDetails: (value) => {
|
|
32
|
+
const result = constraintsPredicate(value);
|
|
33
|
+
return Result.isErr(result) ? {
|
|
34
|
+
kind: "numeric-constraint",
|
|
35
|
+
numericType: "bigint",
|
|
36
|
+
violation: result.value
|
|
37
|
+
} : void 0;
|
|
38
|
+
}
|
|
26
39
|
});
|
|
27
40
|
}
|
|
28
41
|
const createConstraintsPredicate = (constraints) => (value) => {
|
|
@@ -43,59 +56,68 @@ const createConstraintsPredicate = (constraints) => (value) => {
|
|
|
43
56
|
..._rest
|
|
44
57
|
} = constraints;
|
|
45
58
|
if (nonZero === true && !(value !== 0n)) {
|
|
46
|
-
return Result.err(
|
|
59
|
+
return Result.err({ constraint: "nonZero", value: true });
|
|
47
60
|
}
|
|
48
61
|
if (negative === true && !(value < 0n)) {
|
|
49
|
-
return Result.err(
|
|
62
|
+
return Result.err({ constraint: "negative", value: true });
|
|
50
63
|
}
|
|
51
64
|
if (nonNegative === true && !(value >= 0n)) {
|
|
52
|
-
return Result.err(
|
|
65
|
+
return Result.err({ constraint: "nonNegative", value: true });
|
|
53
66
|
}
|
|
54
67
|
if (positive === true && !(value > 0n)) {
|
|
55
|
-
return Result.err(
|
|
68
|
+
return Result.err({ constraint: "positive", value: true });
|
|
56
69
|
}
|
|
57
70
|
if (nonPositive === true && !(value <= 0n)) {
|
|
58
|
-
return Result.err(
|
|
71
|
+
return Result.err({ constraint: "nonPositive", value: true });
|
|
59
72
|
}
|
|
60
73
|
if (gt !== void 0 && !(value > gt)) {
|
|
61
|
-
return Result.err(
|
|
74
|
+
return Result.err({ constraint: "gt", value: String(gt) });
|
|
62
75
|
}
|
|
63
76
|
if (gte !== void 0 && !(value >= gte)) {
|
|
64
|
-
return Result.err(
|
|
77
|
+
return Result.err({ constraint: "gte", value: String(gte) });
|
|
65
78
|
}
|
|
66
79
|
if (min !== void 0 && !(value >= min)) {
|
|
67
|
-
return Result.err(
|
|
80
|
+
return Result.err({ constraint: "min", value: String(min) });
|
|
68
81
|
}
|
|
69
82
|
if (lt !== void 0 && !(value < lt)) {
|
|
70
|
-
return Result.err(
|
|
83
|
+
return Result.err({ constraint: "lt", value: String(lt) });
|
|
71
84
|
}
|
|
72
85
|
if (lte !== void 0 && !(value <= lte)) {
|
|
73
|
-
return Result.err(
|
|
86
|
+
return Result.err({ constraint: "lte", value: String(lte) });
|
|
74
87
|
}
|
|
75
88
|
if (max !== void 0 && !(value <= max)) {
|
|
76
|
-
return Result.err(
|
|
89
|
+
return Result.err({ constraint: "max", value: String(max) });
|
|
77
90
|
}
|
|
78
91
|
if (multipleOf !== void 0) {
|
|
79
92
|
if (multipleOf === 0n) {
|
|
80
93
|
if (value !== 0n) {
|
|
81
|
-
return Result.err(
|
|
94
|
+
return Result.err({
|
|
95
|
+
constraint: "multipleOf",
|
|
96
|
+
value: String(multipleOf)
|
|
97
|
+
});
|
|
82
98
|
}
|
|
83
99
|
} else if (value % multipleOf !== 0n) {
|
|
84
|
-
return Result.err(
|
|
100
|
+
return Result.err({
|
|
101
|
+
constraint: "multipleOf",
|
|
102
|
+
value: String(multipleOf)
|
|
103
|
+
});
|
|
85
104
|
}
|
|
86
105
|
}
|
|
87
106
|
if (step !== void 0) {
|
|
88
107
|
if (step === 0n) {
|
|
89
108
|
if (value !== 0n) {
|
|
90
|
-
return Result.err(
|
|
109
|
+
return Result.err({
|
|
110
|
+
constraint: "step",
|
|
111
|
+
value: String(step)
|
|
112
|
+
});
|
|
91
113
|
}
|
|
92
114
|
} else if (value % step !== 0n) {
|
|
93
|
-
return Result.err(
|
|
115
|
+
return Result.err({ constraint: "step", value: String(step) });
|
|
94
116
|
}
|
|
95
117
|
}
|
|
96
118
|
return Result.ok(true);
|
|
97
119
|
};
|
|
98
|
-
const
|
|
120
|
+
const defaultValueErrorMessage = (value, violation) => `defaultValue [${value}] for bigint does not satisfy the constraint ${violation.constraint} = ${violation.value}`;
|
|
99
121
|
|
|
100
122
|
export { bigint };
|
|
101
123
|
//# sourceMappingURL=bigint.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigint.mjs","sources":["../../src/primitives/bigint.mts"],"sourcesContent":["/* eslint-disable unicorn/no-negated-comparison */\nimport { Arr, expectType, isBigint, Result } from 'ts-data-forge';\nimport { type BoolAnd, type BoolNot } from 'ts-type-forge';\nimport { refine } from '../other-types/index.mjs';\nimport { type Type } from '../type.mjs';\nimport { createPrimitiveType } from '../utils/index.mjs';\n\ntype NumberType = bigint;\n\nexport function bigint(defaultValue?: NumberType): Type<NumberType>;\n\nexport function bigint<N extends NumberType, const C extends Constraints>(\n defaultValue: N & DefaultValueType<N, C>,\n constraints: C,\n): Type<NumberType>;\n\nexport function bigint<C extends Constraints>(\n defaultValue: NumberType = 0n,\n constraints?: C,\n): Type<NumberType> {\n const baseType = createPrimitiveType({\n typeName: 'bigint',\n defaultValue,\n is: isBigint,\n });\n\n if (\n constraints === undefined ||\n Arr.isFixedLengthTuple(Object.keys(constraints), 0)\n ) {\n return baseType;\n }\n\n const constraintsPredicate = createConstraintsPredicate(constraints);\n\n const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);\n\n if (Result.isErr(defaultValueConstraintsCheck)) {\n throw new Error(defaultValueConstraintsCheck.value);\n }\n\n return refine({\n baseType,\n defaultValue,\n is: (value): value is NumberType =>\n Result.isOk(constraintsPredicate(value)),\n typeName: 'bigint',\n });\n}\n\ntype Constraints = Partial<\n Readonly<{\n nonZero: true;\n negative: true;\n nonNegative: true;\n positive: true;\n nonPositive: true;\n\n gt: NumberType;\n gte: NumberType;\n min: NumberType;\n lt: NumberType;\n lte: NumberType;\n max: NumberType;\n multipleOf: NumberType;\n step: NumberType;\n }>\n>;\n\ntype DefaultValueType<\n N extends NumberType,\n C extends Constraints,\n> = DefaultValueWhenNonZeroIsOn<N, C> &\n DefaultValueWhenNegativeIsOn<N, C> &\n DefaultValueWhenNonNegativeIsOn<N, C> &\n DefaultValueWhenPositiveIsOn<N, C> &\n DefaultValueWhenNonPositiveIsOn<N, C>;\n\ntype DefaultValueWhenNonZeroIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ nonZero: true }> ? NonZeroNumber<N> : NumberType;\n\ntype DefaultValueWhenNegativeIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ negative: true }> ? NegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenNonNegativeIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonNegative: true }> ? NonNegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenPositiveIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ positive: true }> ? PositiveNumber<N> : NumberType;\n\ntype DefaultValueWhenNonPositiveIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonPositive: true }> ? NonPositiveNumber<N> : NumberType;\n\ntype NonZeroNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsZero<N> extends true\n ? never\n : N;\n\ntype NegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNegative<N> extends true\n ? N\n : never;\n\ntype NonNegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonNegative<N> extends true\n ? N\n : never;\n\ntype PositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsPositive<N> extends true\n ? N\n : never;\n\ntype NonPositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonPositive<N> extends true\n ? N\n : never;\n\ntype IsZero<N extends NumberType> = `${N}` extends '0' ? true : false;\n\ntype IsNonZero<N extends NumberType> = IsZero<N> extends true ? false : true;\n\ntype IsNegative<N extends NumberType> = `${N}` extends `-${string}`\n ? true\n : false;\n\ntype IsNonNegative<N extends NumberType> =\n IsNegative<N> extends true ? false : true;\n\ntype IsPositive<N extends NumberType> = BoolAnd<IsNonZero<N>, IsNonNegative<N>>;\n\ntype IsNonPositive<N extends NumberType> = BoolNot<IsPositive<N>>;\n\nconst createConstraintsPredicate =\n (constraints: Constraints) =>\n (value: NumberType): Result<true, string> => {\n const {\n nonZero,\n negative,\n nonNegative,\n positive,\n nonPositive,\n gt,\n gte,\n min,\n lt,\n lte,\n max,\n multipleOf,\n step,\n ..._rest\n } = constraints;\n\n expectType<keyof typeof _rest, never>('=');\n\n if (nonZero === true && !(value !== 0n)) {\n return Result.err(errorMessage(value, 'nonZero', true));\n }\n\n if (negative === true && !(value < 0n)) {\n return Result.err(errorMessage(value, 'negative', true));\n }\n\n if (nonNegative === true && !(value >= 0n)) {\n return Result.err(errorMessage(value, 'nonNegative', true));\n }\n\n if (positive === true && !(value > 0n)) {\n return Result.err(errorMessage(value, 'positive', true));\n }\n\n if (nonPositive === true && !(value <= 0n)) {\n return Result.err(errorMessage(value, 'nonPositive', true));\n }\n\n if (gt !== undefined && !(value > gt)) {\n return Result.err(errorMessage(value, 'gt', gt));\n }\n\n if (gte !== undefined && !(value >= gte)) {\n return Result.err(errorMessage(value, 'gte', gte));\n }\n\n if (min !== undefined && !(value >= min)) {\n return Result.err(errorMessage(value, 'min', min));\n }\n\n if (lt !== undefined && !(value < lt)) {\n return Result.err(errorMessage(value, 'lt', lt));\n }\n\n if (lte !== undefined && !(value <= lte)) {\n return Result.err(errorMessage(value, 'lte', lte));\n }\n\n if (max !== undefined && !(value <= max)) {\n return Result.err(errorMessage(value, 'max', max));\n }\n\n // `value % 0n` throws a RangeError, so the zero divisor is handled\n // separately: it only admits zero.\n if (multipleOf !== undefined) {\n if (multipleOf === 0n) {\n if (value !== 0n) {\n return Result.err(errorMessage(value, 'multipleOf', multipleOf));\n }\n } else if (value % multipleOf !== 0n) {\n return Result.err(errorMessage(value, 'multipleOf', multipleOf));\n }\n }\n\n if (step !== undefined) {\n if (step === 0n) {\n if (value !== 0n) {\n return Result.err(errorMessage(value, 'step', step));\n }\n } else if (value % step !== 0n) {\n return Result.err(errorMessage(value, 'step', step));\n }\n }\n\n return Result.ok(true);\n };\n\nconst errorMessage = (\n value: NumberType,\n constraintName: string,\n constraintValue: NumberType | boolean,\n): string =>\n `defaultValue [${value}] for bigint does not satisfy the constraint ${constraintName} = ${constraintValue}` as const;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bigint.mjs","sources":["../../src/primitives/bigint.mts"],"sourcesContent":["/* eslint-disable unicorn/no-negated-comparison */\nimport { Arr, expectType, isBigint, Result } from 'ts-data-forge';\nimport { type BoolAnd, type BoolNot } from 'ts-type-forge';\nimport { refine } from '../other-types/index.mjs';\nimport { type Type } from '../type.mjs';\nimport {\n createPrimitiveType,\n type NumericConstraintViolation,\n} from '../utils/index.mjs';\n\ntype NumberType = bigint;\n\nexport function bigint(defaultValue?: NumberType): Type<NumberType>;\n\nexport function bigint<N extends NumberType, const C extends Constraints>(\n defaultValue: N & DefaultValueType<N, C>,\n constraints: C,\n): Type<NumberType>;\n\nexport function bigint<C extends Constraints>(\n defaultValue: NumberType = 0n,\n constraints?: C,\n): Type<NumberType> {\n const baseType = createPrimitiveType({\n typeName: 'bigint',\n defaultValue,\n is: isBigint,\n });\n\n if (\n constraints === undefined ||\n Arr.isFixedLengthTuple(Object.keys(constraints), 0)\n ) {\n return baseType;\n }\n\n const constraintsPredicate = createConstraintsPredicate(constraints);\n\n const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);\n\n if (Result.isErr(defaultValueConstraintsCheck)) {\n throw new Error(\n defaultValueErrorMessage(\n defaultValue,\n defaultValueConstraintsCheck.value,\n ),\n );\n }\n\n return refine({\n baseType,\n defaultValue,\n is: (value): value is NumberType =>\n Result.isOk(constraintsPredicate(value)),\n typeName: 'bigint',\n getConstraintDetails: (value) => {\n const result = constraintsPredicate(value);\n\n return Result.isErr(result)\n ? {\n kind: 'numeric-constraint',\n numericType: 'bigint',\n violation: result.value,\n }\n : undefined;\n },\n });\n}\n\ntype Constraints = Partial<\n Readonly<{\n nonZero: true;\n negative: true;\n nonNegative: true;\n positive: true;\n nonPositive: true;\n\n gt: NumberType;\n gte: NumberType;\n min: NumberType;\n lt: NumberType;\n lte: NumberType;\n max: NumberType;\n multipleOf: NumberType;\n step: NumberType;\n }>\n>;\n\ntype DefaultValueType<\n N extends NumberType,\n C extends Constraints,\n> = DefaultValueWhenNonZeroIsOn<N, C> &\n DefaultValueWhenNegativeIsOn<N, C> &\n DefaultValueWhenNonNegativeIsOn<N, C> &\n DefaultValueWhenPositiveIsOn<N, C> &\n DefaultValueWhenNonPositiveIsOn<N, C>;\n\ntype DefaultValueWhenNonZeroIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ nonZero: true }> ? NonZeroNumber<N> : NumberType;\n\ntype DefaultValueWhenNegativeIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ negative: true }> ? NegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenNonNegativeIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonNegative: true }> ? NonNegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenPositiveIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ positive: true }> ? PositiveNumber<N> : NumberType;\n\ntype DefaultValueWhenNonPositiveIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonPositive: true }> ? NonPositiveNumber<N> : NumberType;\n\ntype NonZeroNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsZero<N> extends true\n ? never\n : N;\n\ntype NegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNegative<N> extends true\n ? N\n : never;\n\ntype NonNegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonNegative<N> extends true\n ? N\n : never;\n\ntype PositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsPositive<N> extends true\n ? N\n : never;\n\ntype NonPositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonPositive<N> extends true\n ? N\n : never;\n\ntype IsZero<N extends NumberType> = `${N}` extends '0' ? true : false;\n\ntype IsNonZero<N extends NumberType> = IsZero<N> extends true ? false : true;\n\ntype IsNegative<N extends NumberType> = `${N}` extends `-${string}`\n ? true\n : false;\n\ntype IsNonNegative<N extends NumberType> =\n IsNegative<N> extends true ? false : true;\n\ntype IsPositive<N extends NumberType> = BoolAnd<IsNonZero<N>, IsNonNegative<N>>;\n\ntype IsNonPositive<N extends NumberType> = BoolNot<IsPositive<N>>;\n\nconst createConstraintsPredicate =\n (constraints: Constraints) =>\n (value: NumberType): Result<true, NumericConstraintViolation> => {\n const {\n nonZero,\n negative,\n nonNegative,\n positive,\n nonPositive,\n gt,\n gte,\n min,\n lt,\n lte,\n max,\n multipleOf,\n step,\n ..._rest\n } = constraints;\n\n expectType<keyof typeof _rest, never>('=');\n\n if (nonZero === true && !(value !== 0n)) {\n return Result.err({ constraint: 'nonZero', value: true } as const);\n }\n\n if (negative === true && !(value < 0n)) {\n return Result.err({ constraint: 'negative', value: true } as const);\n }\n\n if (nonNegative === true && !(value >= 0n)) {\n return Result.err({ constraint: 'nonNegative', value: true } as const);\n }\n\n if (positive === true && !(value > 0n)) {\n return Result.err({ constraint: 'positive', value: true } as const);\n }\n\n if (nonPositive === true && !(value <= 0n)) {\n return Result.err({ constraint: 'nonPositive', value: true } as const);\n }\n\n if (gt !== undefined && !(value > gt)) {\n return Result.err({ constraint: 'gt', value: String(gt) } as const);\n }\n\n if (gte !== undefined && !(value >= gte)) {\n return Result.err({ constraint: 'gte', value: String(gte) } as const);\n }\n\n if (min !== undefined && !(value >= min)) {\n return Result.err({ constraint: 'min', value: String(min) } as const);\n }\n\n if (lt !== undefined && !(value < lt)) {\n return Result.err({ constraint: 'lt', value: String(lt) } as const);\n }\n\n if (lte !== undefined && !(value <= lte)) {\n return Result.err({ constraint: 'lte', value: String(lte) } as const);\n }\n\n if (max !== undefined && !(value <= max)) {\n return Result.err({ constraint: 'max', value: String(max) } as const);\n }\n\n // `value % 0n` throws a RangeError, so the zero divisor is handled\n // separately: it only admits zero.\n if (multipleOf !== undefined) {\n if (multipleOf === 0n) {\n if (value !== 0n) {\n return Result.err({\n constraint: 'multipleOf',\n value: String(multipleOf),\n } as const);\n }\n } else if (value % multipleOf !== 0n) {\n return Result.err({\n constraint: 'multipleOf',\n value: String(multipleOf),\n } as const);\n }\n }\n\n if (step !== undefined) {\n if (step === 0n) {\n if (value !== 0n) {\n return Result.err({\n constraint: 'step',\n value: String(step),\n } as const);\n }\n } else if (value % step !== 0n) {\n return Result.err({ constraint: 'step', value: String(step) } as const);\n }\n }\n\n return Result.ok(true);\n };\n\nconst defaultValueErrorMessage = (\n value: NumberType,\n violation: NumericConstraintViolation,\n): string =>\n `defaultValue [${value}] for bigint does not satisfy the constraint ${violation.constraint} = ${violation.value}` as const;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.d.mts","sourceRoot":"","sources":["../../src/primitives/number.mts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,OAAO,EASb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"number.d.mts","sourceRoot":"","sources":["../../src/primitives/number.mts"],"names":[],"mappings":"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"}
|
|
@@ -16,13 +16,26 @@ function number(defaultValue = 0, constraints) {
|
|
|
16
16
|
const constraintsPredicate = createConstraintsPredicate(constraints);
|
|
17
17
|
const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);
|
|
18
18
|
if (Result.isErr(defaultValueConstraintsCheck)) {
|
|
19
|
-
throw new Error(
|
|
19
|
+
throw new Error(
|
|
20
|
+
defaultValueErrorMessage(
|
|
21
|
+
defaultValue,
|
|
22
|
+
defaultValueConstraintsCheck.value
|
|
23
|
+
)
|
|
24
|
+
);
|
|
20
25
|
}
|
|
21
26
|
return refine({
|
|
22
27
|
baseType,
|
|
23
28
|
defaultValue,
|
|
24
29
|
is: (value) => Result.isOk(constraintsPredicate(value)),
|
|
25
|
-
typeName: "number"
|
|
30
|
+
typeName: "number",
|
|
31
|
+
getConstraintDetails: (value) => {
|
|
32
|
+
const result = constraintsPredicate(value);
|
|
33
|
+
return Result.isErr(result) ? {
|
|
34
|
+
kind: "numeric-constraint",
|
|
35
|
+
numericType: "number",
|
|
36
|
+
violation: result.value
|
|
37
|
+
} : void 0;
|
|
38
|
+
}
|
|
26
39
|
});
|
|
27
40
|
}
|
|
28
41
|
const createConstraintsPredicate = (constraints) => (value) => {
|
|
@@ -46,68 +59,77 @@ const createConstraintsPredicate = (constraints) => (value) => {
|
|
|
46
59
|
..._rest
|
|
47
60
|
} = constraints;
|
|
48
61
|
if (finite === true && !Number.isFinite(value)) {
|
|
49
|
-
return Result.err(
|
|
62
|
+
return Result.err({ constraint: "finite", value: true });
|
|
50
63
|
}
|
|
51
64
|
if (int === true && !Int.is(value)) {
|
|
52
|
-
return Result.err(
|
|
65
|
+
return Result.err({ constraint: "int", value: true });
|
|
53
66
|
}
|
|
54
67
|
if (safeInteger === true && !Number.isSafeInteger(value)) {
|
|
55
|
-
return Result.err(
|
|
68
|
+
return Result.err({ constraint: "safeInteger", value: true });
|
|
56
69
|
}
|
|
57
70
|
if (nonZero === true && !(value !== 0)) {
|
|
58
|
-
return Result.err(
|
|
71
|
+
return Result.err({ constraint: "nonZero", value: true });
|
|
59
72
|
}
|
|
60
73
|
if (negative === true && !(value < 0)) {
|
|
61
|
-
return Result.err(
|
|
74
|
+
return Result.err({ constraint: "negative", value: true });
|
|
62
75
|
}
|
|
63
76
|
if (nonNegative === true && !(value >= 0)) {
|
|
64
|
-
return Result.err(
|
|
77
|
+
return Result.err({ constraint: "nonNegative", value: true });
|
|
65
78
|
}
|
|
66
79
|
if (positive === true && !(value > 0)) {
|
|
67
|
-
return Result.err(
|
|
80
|
+
return Result.err({ constraint: "positive", value: true });
|
|
68
81
|
}
|
|
69
82
|
if (nonPositive === true && !(value <= 0)) {
|
|
70
|
-
return Result.err(
|
|
83
|
+
return Result.err({ constraint: "nonPositive", value: true });
|
|
71
84
|
}
|
|
72
85
|
if (gt !== void 0 && !(value > gt)) {
|
|
73
|
-
return Result.err(
|
|
86
|
+
return Result.err({ constraint: "gt", value: String(gt) });
|
|
74
87
|
}
|
|
75
88
|
if (gte !== void 0 && !(value >= gte)) {
|
|
76
|
-
return Result.err(
|
|
89
|
+
return Result.err({ constraint: "gte", value: String(gte) });
|
|
77
90
|
}
|
|
78
91
|
if (min !== void 0 && !(value >= min)) {
|
|
79
|
-
return Result.err(
|
|
92
|
+
return Result.err({ constraint: "min", value: String(min) });
|
|
80
93
|
}
|
|
81
94
|
if (lt !== void 0 && !(value < lt)) {
|
|
82
|
-
return Result.err(
|
|
95
|
+
return Result.err({ constraint: "lt", value: String(lt) });
|
|
83
96
|
}
|
|
84
97
|
if (lte !== void 0 && !(value <= lte)) {
|
|
85
|
-
return Result.err(
|
|
98
|
+
return Result.err({ constraint: "lte", value: String(lte) });
|
|
86
99
|
}
|
|
87
100
|
if (max !== void 0 && !(value <= max)) {
|
|
88
|
-
return Result.err(
|
|
101
|
+
return Result.err({ constraint: "max", value: String(max) });
|
|
89
102
|
}
|
|
90
103
|
if (multipleOf !== void 0) {
|
|
91
104
|
if (multipleOf === 0) {
|
|
92
105
|
if (value !== 0) {
|
|
93
|
-
return Result.err(
|
|
106
|
+
return Result.err({
|
|
107
|
+
constraint: "multipleOf",
|
|
108
|
+
value: String(multipleOf)
|
|
109
|
+
});
|
|
94
110
|
}
|
|
95
111
|
} else if (value % multipleOf !== 0) {
|
|
96
|
-
return Result.err(
|
|
112
|
+
return Result.err({
|
|
113
|
+
constraint: "multipleOf",
|
|
114
|
+
value: String(multipleOf)
|
|
115
|
+
});
|
|
97
116
|
}
|
|
98
117
|
}
|
|
99
118
|
if (step !== void 0) {
|
|
100
119
|
if (step === 0) {
|
|
101
120
|
if (value !== 0) {
|
|
102
|
-
return Result.err(
|
|
121
|
+
return Result.err({
|
|
122
|
+
constraint: "step",
|
|
123
|
+
value: String(step)
|
|
124
|
+
});
|
|
103
125
|
}
|
|
104
126
|
} else if (value % step !== 0) {
|
|
105
|
-
return Result.err(
|
|
127
|
+
return Result.err({ constraint: "step", value: String(step) });
|
|
106
128
|
}
|
|
107
129
|
}
|
|
108
130
|
return Result.ok(true);
|
|
109
131
|
};
|
|
110
|
-
const
|
|
132
|
+
const defaultValueErrorMessage = (value, violation) => `defaultValue [${value}] for number does not satisfy the constraint ${violation.constraint} = ${violation.value}`;
|
|
111
133
|
|
|
112
134
|
export { number };
|
|
113
135
|
//# sourceMappingURL=number.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.mjs","sources":["../../src/primitives/number.mts"],"sourcesContent":["/* eslint-disable unicorn/no-negated-comparison */\nimport { Arr, expectType, Int, isNumber, Result } from 'ts-data-forge';\nimport {\n type BoolAnd,\n type BoolNot,\n type Brand,\n type FiniteNumber,\n type IsNever,\n type NegativeInt,\n type NonPositiveInt,\n type NonZeroFiniteNumber,\n type NonZeroInt,\n type PositiveInt,\n type SafeInt,\n type SafeUint,\n type Uint,\n} from 'ts-type-forge';\nimport { refine } from '../other-types/index.mjs';\nimport { type Type } from '../type.mjs';\nimport { createPrimitiveType } from '../utils/index.mjs';\n\ntype NumberType = number;\n\nexport function number(defaultValue?: NumberType): Type<NumberType>;\n\nexport function number<N extends NumberType, const C extends Constraints>(\n defaultValue: N & DefaultValueType<N, C>,\n constraints: C,\n): Type<ConstraintsToResultType<C>>;\n\nexport function number<C extends Constraints>(\n defaultValue: NumberType = 0,\n constraints?: C,\n): Type<NumberType> {\n const baseType = createPrimitiveType({\n typeName: 'number',\n defaultValue,\n is: isNumber,\n });\n\n if (\n constraints === undefined ||\n Arr.isFixedLengthTuple(Object.keys(constraints), 0)\n ) {\n return baseType;\n }\n\n const constraintsPredicate = createConstraintsPredicate(constraints);\n\n const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);\n\n if (Result.isErr(defaultValueConstraintsCheck)) {\n throw new Error(defaultValueConstraintsCheck.value);\n }\n\n return refine({\n baseType,\n defaultValue,\n is: (value): value is NumberType =>\n Result.isOk(constraintsPredicate(value)),\n typeName: 'number',\n });\n}\n\ntype Constraints = Partial<\n Readonly<{\n finite: true;\n int: true;\n safeInteger: true;\n nonZero: true;\n negative: true;\n nonNegative: true;\n positive: true;\n nonPositive: true;\n\n gt: NumberType;\n gte: NumberType;\n min: NumberType;\n lt: NumberType;\n lte: NumberType;\n max: NumberType;\n multipleOf: NumberType;\n step: NumberType;\n }>\n>;\n\n/**\n * The set of constraints accepted by {@link number}.\n */\nexport type NumberTypeConstraints = Constraints;\n\n/**\n * The numeric-range subset of {@link NumberTypeConstraints}. These constraints\n * (`gt`, `gte`, `min`, `lt`, `lte`, `max`, `multipleOf`, `step`) add runtime\n * validation without changing the result brand, so the branded number types\n * under `predefined/brand/number` accept only this subset. To build a different\n * brand from a plain number, use {@link number} with the predicate constraints\n * instead, or the dedicated branded constructor for the target type.\n */\nexport type NumberRangeConstraints = Pick<\n NumberTypeConstraints,\n 'gt' | 'gte' | 'min' | 'lt' | 'lte' | 'max' | 'multipleOf' | 'step'\n>;\n\ntype DefaultValueType<\n N extends NumberType,\n C extends Constraints,\n> = DefaultValueWhenNonZeroIsOn<N, C> &\n DefaultValueWhenNegativeIsOn<N, C> &\n DefaultValueWhenNonNegativeIsOn<N, C> &\n DefaultValueWhenPositiveIsOn<N, C> &\n DefaultValueWhenNonPositiveIsOn<N, C>;\n\ntype ConstraintsToResultType<C extends Constraints> =\n ConstraintsToResultHelperType<ConstraintsToResultBrandKeys<C>>;\n\ntype ConstraintsToResultHelperType<\n R extends Readonly<{ brandKeys: string; brandFalseKeys: string }>,\n> =\n IsNever<R> extends true\n ? NumberType\n : Brand<NumberType, R['brandKeys'], R['brandFalseKeys']>;\n\ntype ConstraintsToResultBrandKeys<C extends Constraints> =\n | (C extends Readonly<{ int: true }>\n ? Readonly<{ brandKeys: 'Int' | 'Finite'; brandFalseKeys: 'NaNValue' }>\n : never)\n | (C extends Readonly<{ safeInteger: true }>\n ? Readonly<{\n brandKeys: 'Finite' | 'Int' | 'SafeInt';\n brandFalseKeys: 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ finite: true }>\n ? Readonly<{ brandKeys: 'Finite'; brandFalseKeys: 'NaNValue' }>\n : never)\n | (C extends Readonly<{ nonZero: true }>\n ? Readonly<{ brandKeys: '!=0'; brandFalseKeys: 'NaNValue' }>\n : never)\n | (C extends Readonly<{ negative: true }>\n ? Readonly<{\n brandKeys: '!=0' | '< 2^15' | '< 2^16' | '< 2^31' | '< 2^32' | '<=0';\n brandFalseKeys: '>=0' | 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ nonNegative: true }>\n ? Readonly<{\n brandKeys: '>=0' | '> -2^16' | '> -2^32' | '>= -2^15' | '>= -2^31';\n brandFalseKeys: 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ positive: true }>\n ? Readonly<{\n brandKeys:\n '>=0' | '!=0' | '> -2^16' | '> -2^32' | '>= -2^15' | '>= -2^31';\n brandFalseKeys: '<=0' | 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ nonPositive: true }>\n ? Readonly<{\n brandKeys: '< 2^15' | '< 2^16' | '< 2^31' | '< 2^32' | '<=0';\n brandFalseKeys: 'NaNValue';\n }>\n : never);\n\n{\n type BrandKeysInt = ConstraintsToResultBrandKeys<Readonly<{ int: true }>>;\n\n expectType<BrandKeysInt['brandKeys'], 'Finite' | 'Int'>('=');\n\n expectType<BrandKeysInt['brandFalseKeys'], 'NaNValue'>('=');\n\n type BrandKeysPositiveInt = ConstraintsToResultBrandKeys<\n Readonly<{ int: true; positive: true }>\n >;\n\n expectType<\n BrandKeysPositiveInt['brandKeys'],\n | 'Int'\n | 'Finite'\n | '!=0'\n | '>=0'\n | '> -2^16'\n | '> -2^32'\n | '>= -2^15'\n | '>= -2^31'\n >('=');\n\n expectType<BrandKeysPositiveInt['brandFalseKeys'], '<=0' | 'NaNValue'>('=');\n\n expectType<ConstraintsToResultType<Readonly<{ finite: true }>>, FiniteNumber>(\n '=',\n );\n\n expectType<\n ConstraintsToResultType<Readonly<{ finite: true; nonZero: true }>>,\n NonZeroFiniteNumber\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; nonZero: true }>>,\n NonZeroInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; positive: true }>>,\n PositiveInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; negative: true }>>,\n NegativeInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; nonPositive: true }>>,\n NonPositiveInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; nonNegative: true }>>,\n Uint\n >('=');\n\n expectType<ConstraintsToResultType<Readonly<{ safeInteger: true }>>, SafeInt>(\n '=',\n );\n\n expectType<\n ConstraintsToResultType<Readonly<{ safeInteger: true; nonNegative: true }>>,\n SafeUint\n >('=');\n}\n\ntype DefaultValueWhenNonZeroIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ nonZero: true }> ? NonZeroNumber<N> : NumberType;\n\ntype DefaultValueWhenNegativeIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ negative: true }> ? NegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenNonNegativeIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonNegative: true }> ? NonNegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenPositiveIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ positive: true }> ? PositiveNumber<N> : NumberType;\n\ntype DefaultValueWhenNonPositiveIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonPositive: true }> ? NonPositiveNumber<N> : NumberType;\n\ntype NonZeroNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsZero<N> extends true\n ? never\n : N;\n\ntype NegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNegative<N> extends true\n ? N\n : never;\n\ntype NonNegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonNegative<N> extends true\n ? N\n : never;\n\ntype PositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsPositive<N> extends true\n ? N\n : never;\n\ntype NonPositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonPositive<N> extends true\n ? N\n : never;\n\ntype IsZero<N extends NumberType> = `${N}` extends '0' ? true : false;\n\ntype IsNonZero<N extends NumberType> = IsZero<N> extends true ? false : true;\n\ntype IsNegative<N extends NumberType> = `${N}` extends `-${string}`\n ? true\n : false;\n\ntype IsNonNegative<N extends NumberType> =\n IsNegative<N> extends true ? false : true;\n\ntype IsPositive<N extends NumberType> = BoolAnd<IsNonZero<N>, IsNonNegative<N>>;\n\ntype IsNonPositive<N extends NumberType> = BoolNot<IsPositive<N>>;\n\nconst createConstraintsPredicate =\n (constraints: Constraints) =>\n (value: NumberType): Result<true, string> => {\n const {\n finite,\n int,\n safeInteger,\n nonZero,\n negative,\n nonNegative,\n positive,\n nonPositive,\n gt,\n gte,\n min,\n lt,\n lte,\n max,\n multipleOf,\n step,\n ..._rest\n } = constraints;\n\n expectType<keyof typeof _rest, never>('=');\n\n if (finite === true && !Number.isFinite(value)) {\n return Result.err(errorMessage(value, 'finite', true));\n }\n\n if (int === true && !Int.is(value)) {\n return Result.err(errorMessage(value, 'int', true));\n }\n\n if (safeInteger === true && !Number.isSafeInteger(value)) {\n return Result.err(errorMessage(value, 'safeInteger', true));\n }\n\n if (nonZero === true && !(value !== 0)) {\n return Result.err(errorMessage(value, 'nonZero', true));\n }\n\n if (negative === true && !(value < 0)) {\n return Result.err(errorMessage(value, 'negative', true));\n }\n\n if (nonNegative === true && !(value >= 0)) {\n return Result.err(errorMessage(value, 'nonNegative', true));\n }\n\n if (positive === true && !(value > 0)) {\n return Result.err(errorMessage(value, 'positive', true));\n }\n\n if (nonPositive === true && !(value <= 0)) {\n return Result.err(errorMessage(value, 'nonPositive', true));\n }\n\n if (gt !== undefined && !(value > gt)) {\n return Result.err(errorMessage(value, 'gt', gt));\n }\n\n if (gte !== undefined && !(value >= gte)) {\n return Result.err(errorMessage(value, 'gte', gte));\n }\n\n if (min !== undefined && !(value >= min)) {\n return Result.err(errorMessage(value, 'min', min));\n }\n\n if (lt !== undefined && !(value < lt)) {\n return Result.err(errorMessage(value, 'lt', lt));\n }\n\n if (lte !== undefined && !(value <= lte)) {\n return Result.err(errorMessage(value, 'lte', lte));\n }\n\n if (max !== undefined && !(value <= max)) {\n return Result.err(errorMessage(value, 'max', max));\n }\n\n // `value % 0` throws a RangeError, so the zero divisor is handled\n // separately: it only admits zero.\n if (multipleOf !== undefined) {\n if (multipleOf === 0) {\n if (value !== 0) {\n return Result.err(errorMessage(value, 'multipleOf', multipleOf));\n }\n } else if (value % multipleOf !== 0) {\n return Result.err(errorMessage(value, 'multipleOf', multipleOf));\n }\n }\n\n if (step !== undefined) {\n if (step === 0) {\n if (value !== 0) {\n return Result.err(errorMessage(value, 'step', step));\n }\n } else if (value % step !== 0) {\n return Result.err(errorMessage(value, 'step', step));\n }\n }\n\n return Result.ok(true);\n };\n\nconst errorMessage = (\n value: NumberType,\n constraintName: string,\n constraintValue: NumberType | boolean,\n): string =>\n `defaultValue [${value}] for number does not satisfy the constraint ${constraintName} = ${constraintValue}` as const;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"number.mjs","sources":["../../src/primitives/number.mts"],"sourcesContent":["/* eslint-disable unicorn/no-negated-comparison */\nimport { Arr, expectType, Int, isNumber, Result } from 'ts-data-forge';\nimport {\n type BoolAnd,\n type BoolNot,\n type Brand,\n type FiniteNumber,\n type IsNever,\n type NegativeInt,\n type NonPositiveInt,\n type NonZeroFiniteNumber,\n type NonZeroInt,\n type PositiveInt,\n type SafeInt,\n type SafeUint,\n type Uint,\n} from 'ts-type-forge';\nimport { refine } from '../other-types/index.mjs';\nimport { type Type } from '../type.mjs';\nimport {\n createPrimitiveType,\n type NumericConstraintViolation,\n} from '../utils/index.mjs';\n\ntype NumberType = number;\n\nexport function number(defaultValue?: NumberType): Type<NumberType>;\n\nexport function number<N extends NumberType, const C extends Constraints>(\n defaultValue: N & DefaultValueType<N, C>,\n constraints: C,\n): Type<ConstraintsToResultType<C>>;\n\nexport function number<C extends Constraints>(\n defaultValue: NumberType = 0,\n constraints?: C,\n): Type<NumberType> {\n const baseType = createPrimitiveType({\n typeName: 'number',\n defaultValue,\n is: isNumber,\n });\n\n if (\n constraints === undefined ||\n Arr.isFixedLengthTuple(Object.keys(constraints), 0)\n ) {\n return baseType;\n }\n\n const constraintsPredicate = createConstraintsPredicate(constraints);\n\n const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);\n\n if (Result.isErr(defaultValueConstraintsCheck)) {\n throw new Error(\n defaultValueErrorMessage(\n defaultValue,\n defaultValueConstraintsCheck.value,\n ),\n );\n }\n\n return refine({\n baseType,\n defaultValue,\n is: (value): value is NumberType =>\n Result.isOk(constraintsPredicate(value)),\n typeName: 'number',\n getConstraintDetails: (value) => {\n const result = constraintsPredicate(value);\n\n return Result.isErr(result)\n ? {\n kind: 'numeric-constraint',\n numericType: 'number',\n violation: result.value,\n }\n : undefined;\n },\n });\n}\n\ntype Constraints = Partial<\n Readonly<{\n finite: true;\n int: true;\n safeInteger: true;\n nonZero: true;\n negative: true;\n nonNegative: true;\n positive: true;\n nonPositive: true;\n\n gt: NumberType;\n gte: NumberType;\n min: NumberType;\n lt: NumberType;\n lte: NumberType;\n max: NumberType;\n multipleOf: NumberType;\n step: NumberType;\n }>\n>;\n\n/**\n * The set of constraints accepted by {@link number}.\n */\nexport type NumberTypeConstraints = Constraints;\n\n/**\n * The numeric-range subset of {@link NumberTypeConstraints}. These constraints\n * (`gt`, `gte`, `min`, `lt`, `lte`, `max`, `multipleOf`, `step`) add runtime\n * validation without changing the result brand, so the branded number types\n * under `predefined/brand/number` accept only this subset. To build a different\n * brand from a plain number, use {@link number} with the predicate constraints\n * instead, or the dedicated branded constructor for the target type.\n */\nexport type NumberRangeConstraints = Pick<\n NumberTypeConstraints,\n 'gt' | 'gte' | 'min' | 'lt' | 'lte' | 'max' | 'multipleOf' | 'step'\n>;\n\ntype DefaultValueType<\n N extends NumberType,\n C extends Constraints,\n> = DefaultValueWhenNonZeroIsOn<N, C> &\n DefaultValueWhenNegativeIsOn<N, C> &\n DefaultValueWhenNonNegativeIsOn<N, C> &\n DefaultValueWhenPositiveIsOn<N, C> &\n DefaultValueWhenNonPositiveIsOn<N, C>;\n\ntype ConstraintsToResultType<C extends Constraints> =\n ConstraintsToResultHelperType<ConstraintsToResultBrandKeys<C>>;\n\ntype ConstraintsToResultHelperType<\n R extends Readonly<{ brandKeys: string; brandFalseKeys: string }>,\n> =\n IsNever<R> extends true\n ? NumberType\n : Brand<NumberType, R['brandKeys'], R['brandFalseKeys']>;\n\ntype ConstraintsToResultBrandKeys<C extends Constraints> =\n | (C extends Readonly<{ int: true }>\n ? Readonly<{ brandKeys: 'Int' | 'Finite'; brandFalseKeys: 'NaNValue' }>\n : never)\n | (C extends Readonly<{ safeInteger: true }>\n ? Readonly<{\n brandKeys: 'Finite' | 'Int' | 'SafeInt';\n brandFalseKeys: 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ finite: true }>\n ? Readonly<{ brandKeys: 'Finite'; brandFalseKeys: 'NaNValue' }>\n : never)\n | (C extends Readonly<{ nonZero: true }>\n ? Readonly<{ brandKeys: '!=0'; brandFalseKeys: 'NaNValue' }>\n : never)\n | (C extends Readonly<{ negative: true }>\n ? Readonly<{\n brandKeys: '!=0' | '< 2^15' | '< 2^16' | '< 2^31' | '< 2^32' | '<=0';\n brandFalseKeys: '>=0' | 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ nonNegative: true }>\n ? Readonly<{\n brandKeys: '>=0' | '> -2^16' | '> -2^32' | '>= -2^15' | '>= -2^31';\n brandFalseKeys: 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ positive: true }>\n ? Readonly<{\n brandKeys:\n '>=0' | '!=0' | '> -2^16' | '> -2^32' | '>= -2^15' | '>= -2^31';\n brandFalseKeys: '<=0' | 'NaNValue';\n }>\n : never)\n | (C extends Readonly<{ nonPositive: true }>\n ? Readonly<{\n brandKeys: '< 2^15' | '< 2^16' | '< 2^31' | '< 2^32' | '<=0';\n brandFalseKeys: 'NaNValue';\n }>\n : never);\n\n{\n type BrandKeysInt = ConstraintsToResultBrandKeys<Readonly<{ int: true }>>;\n\n expectType<BrandKeysInt['brandKeys'], 'Finite' | 'Int'>('=');\n\n expectType<BrandKeysInt['brandFalseKeys'], 'NaNValue'>('=');\n\n type BrandKeysPositiveInt = ConstraintsToResultBrandKeys<\n Readonly<{ int: true; positive: true }>\n >;\n\n expectType<\n BrandKeysPositiveInt['brandKeys'],\n | 'Int'\n | 'Finite'\n | '!=0'\n | '>=0'\n | '> -2^16'\n | '> -2^32'\n | '>= -2^15'\n | '>= -2^31'\n >('=');\n\n expectType<BrandKeysPositiveInt['brandFalseKeys'], '<=0' | 'NaNValue'>('=');\n\n expectType<ConstraintsToResultType<Readonly<{ finite: true }>>, FiniteNumber>(\n '=',\n );\n\n expectType<\n ConstraintsToResultType<Readonly<{ finite: true; nonZero: true }>>,\n NonZeroFiniteNumber\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; nonZero: true }>>,\n NonZeroInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; positive: true }>>,\n PositiveInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; negative: true }>>,\n NegativeInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; nonPositive: true }>>,\n NonPositiveInt\n >('=');\n\n expectType<\n ConstraintsToResultType<Readonly<{ int: true; nonNegative: true }>>,\n Uint\n >('=');\n\n expectType<ConstraintsToResultType<Readonly<{ safeInteger: true }>>, SafeInt>(\n '=',\n );\n\n expectType<\n ConstraintsToResultType<Readonly<{ safeInteger: true; nonNegative: true }>>,\n SafeUint\n >('=');\n}\n\ntype DefaultValueWhenNonZeroIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ nonZero: true }> ? NonZeroNumber<N> : NumberType;\n\ntype DefaultValueWhenNegativeIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ negative: true }> ? NegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenNonNegativeIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonNegative: true }> ? NonNegativeNumber<N> : NumberType;\n\ntype DefaultValueWhenPositiveIsOn<N extends NumberType, C extends Constraints> =\n C extends Readonly<{ positive: true }> ? PositiveNumber<N> : NumberType;\n\ntype DefaultValueWhenNonPositiveIsOn<\n N extends NumberType,\n C extends Constraints,\n> =\n C extends Readonly<{ nonPositive: true }> ? NonPositiveNumber<N> : NumberType;\n\ntype NonZeroNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsZero<N> extends true\n ? never\n : N;\n\ntype NegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNegative<N> extends true\n ? N\n : never;\n\ntype NonNegativeNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonNegative<N> extends true\n ? N\n : never;\n\ntype PositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsPositive<N> extends true\n ? N\n : never;\n\ntype NonPositiveNumber<N extends NumberType> = NumberType extends N\n ? NumberType\n : IsNonPositive<N> extends true\n ? N\n : never;\n\ntype IsZero<N extends NumberType> = `${N}` extends '0' ? true : false;\n\ntype IsNonZero<N extends NumberType> = IsZero<N> extends true ? false : true;\n\ntype IsNegative<N extends NumberType> = `${N}` extends `-${string}`\n ? true\n : false;\n\ntype IsNonNegative<N extends NumberType> =\n IsNegative<N> extends true ? false : true;\n\ntype IsPositive<N extends NumberType> = BoolAnd<IsNonZero<N>, IsNonNegative<N>>;\n\ntype IsNonPositive<N extends NumberType> = BoolNot<IsPositive<N>>;\n\nconst createConstraintsPredicate =\n (constraints: Constraints) =>\n (value: NumberType): Result<true, NumericConstraintViolation> => {\n const {\n finite,\n int,\n safeInteger,\n nonZero,\n negative,\n nonNegative,\n positive,\n nonPositive,\n gt,\n gte,\n min,\n lt,\n lte,\n max,\n multipleOf,\n step,\n ..._rest\n } = constraints;\n\n expectType<keyof typeof _rest, never>('=');\n\n if (finite === true && !Number.isFinite(value)) {\n return Result.err({ constraint: 'finite', value: true } as const);\n }\n\n if (int === true && !Int.is(value)) {\n return Result.err({ constraint: 'int', value: true } as const);\n }\n\n if (safeInteger === true && !Number.isSafeInteger(value)) {\n return Result.err({ constraint: 'safeInteger', value: true } as const);\n }\n\n if (nonZero === true && !(value !== 0)) {\n return Result.err({ constraint: 'nonZero', value: true } as const);\n }\n\n if (negative === true && !(value < 0)) {\n return Result.err({ constraint: 'negative', value: true } as const);\n }\n\n if (nonNegative === true && !(value >= 0)) {\n return Result.err({ constraint: 'nonNegative', value: true } as const);\n }\n\n if (positive === true && !(value > 0)) {\n return Result.err({ constraint: 'positive', value: true } as const);\n }\n\n if (nonPositive === true && !(value <= 0)) {\n return Result.err({ constraint: 'nonPositive', value: true } as const);\n }\n\n if (gt !== undefined && !(value > gt)) {\n return Result.err({ constraint: 'gt', value: String(gt) } as const);\n }\n\n if (gte !== undefined && !(value >= gte)) {\n return Result.err({ constraint: 'gte', value: String(gte) } as const);\n }\n\n if (min !== undefined && !(value >= min)) {\n return Result.err({ constraint: 'min', value: String(min) } as const);\n }\n\n if (lt !== undefined && !(value < lt)) {\n return Result.err({ constraint: 'lt', value: String(lt) } as const);\n }\n\n if (lte !== undefined && !(value <= lte)) {\n return Result.err({ constraint: 'lte', value: String(lte) } as const);\n }\n\n if (max !== undefined && !(value <= max)) {\n return Result.err({ constraint: 'max', value: String(max) } as const);\n }\n\n // `value % 0` throws a RangeError, so the zero divisor is handled\n // separately: it only admits zero.\n if (multipleOf !== undefined) {\n if (multipleOf === 0) {\n if (value !== 0) {\n return Result.err({\n constraint: 'multipleOf',\n value: String(multipleOf),\n } as const);\n }\n } else if (value % multipleOf !== 0) {\n return Result.err({\n constraint: 'multipleOf',\n value: String(multipleOf),\n } as const);\n }\n }\n\n if (step !== undefined) {\n if (step === 0) {\n if (value !== 0) {\n return Result.err({\n constraint: 'step',\n value: String(step),\n } as const);\n }\n } else if (value % step !== 0) {\n return Result.err({ constraint: 'step', value: String(step) } as const);\n }\n }\n\n return Result.ok(true);\n };\n\nconst defaultValueErrorMessage = (\n value: NumberType,\n violation: NumericConstraintViolation,\n): string =>\n `defaultValue [${value}] for number does not satisfy the constraint ${violation.constraint} = ${violation.value}` as const;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.mts","sourceRoot":"","sources":["../../src/primitives/string.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"string.d.mts","sourceRoot":"","sources":["../../src/primitives/string.mts"],"names":[],"mappings":"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"}
|