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.
Files changed (34) hide show
  1. package/dist/brand/branded-number.d.mts +1 -5
  2. package/dist/brand/branded-number.d.mts.map +1 -1
  3. package/dist/brand/branded-string.d.mts +1 -5
  4. package/dist/brand/branded-string.d.mts.map +1 -1
  5. package/dist/other-types/refine.d.mts +9 -1
  6. package/dist/other-types/refine.d.mts.map +1 -1
  7. package/dist/other-types/refine.mjs +3 -2
  8. package/dist/other-types/refine.mjs.map +1 -1
  9. package/dist/primitives/bigint.d.mts.map +1 -1
  10. package/dist/primitives/bigint.mjs +40 -18
  11. package/dist/primitives/bigint.mjs.map +1 -1
  12. package/dist/primitives/number.d.mts.map +1 -1
  13. package/dist/primitives/number.mjs +43 -21
  14. package/dist/primitives/number.mjs.map +1 -1
  15. package/dist/primitives/string.d.mts.map +1 -1
  16. package/dist/primitives/string.mjs +25 -13
  17. package/dist/primitives/string.mjs.map +1 -1
  18. package/dist/record/at.mjs +1 -1
  19. package/dist/record/at.mjs.map +1 -1
  20. package/dist/utils/validation-error.d.mts +41 -0
  21. package/dist/utils/validation-error.d.mts.map +1 -1
  22. package/dist/utils/validation-error.mjs +70 -2
  23. package/dist/utils/validation-error.mjs.map +1 -1
  24. package/package.json +29 -19
  25. package/src/other-types/refine.mts +10 -1
  26. package/src/primitives/bigint.mts +49 -22
  27. package/src/primitives/bigint.test.mts +82 -0
  28. package/src/primitives/number.mts +52 -25
  29. package/src/primitives/number.test.mts +101 -0
  30. package/src/primitives/string.mts +33 -17
  31. package/src/primitives/string.test.mts +94 -0
  32. package/src/record/at.mts +1 -1
  33. package/src/utils/validation-error.formatting.test.mts +64 -0
  34. 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: <K extends string>({ defaultValue, is, typeName, }: Readonly<{
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,GAxBF,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,CAgBsB,CAAC"}
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: <K extends string>({ defaultValue, is, typeName, }: Readonly<{
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,GAxBF,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,CAgBsB,CAAC"}
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
- export declare const refine: <Base extends Extract<Primitive, string | boolean | bigint | number>, R extends Base>({ baseType, is, defaultValue, typeName, }: Readonly<{
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;AAOxC,eAAO,MAAM,MAAM,GACjB,IAAI,SAAS,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,EACnE,CAAC,SAAS,IAAI,6CAMb,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;CACnB,CAAC,KAAG,IAAI,CAAC,CAAC,CAwBV,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: void 0
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: undefined,\n }),\n ]),\n ).value;\n\n return createType({\n typeName,\n defaultValue,\n validate,\n });\n};\n"],"names":[],"mappings":";;;;AASO,MAAM,SAAS,CAGpB;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW,CAAA,EAAG,QAAA,CAAS,QAAQ,CAAA,QAAA;AACjC,CAAA,KAKgB;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;AAAA,OACV;AAAA,KACF;AAAA,GACT,CAAE,KAAA;AAEN,EAAA,OAAO,UAAA,CAAW;AAAA,IAChB,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;;"}
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":"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"}
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(defaultValueConstraintsCheck.value);
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(errorMessage(value, "nonZero", true));
59
+ return Result.err({ constraint: "nonZero", value: true });
47
60
  }
48
61
  if (negative === true && !(value < 0n)) {
49
- return Result.err(errorMessage(value, "negative", true));
62
+ return Result.err({ constraint: "negative", value: true });
50
63
  }
51
64
  if (nonNegative === true && !(value >= 0n)) {
52
- return Result.err(errorMessage(value, "nonNegative", true));
65
+ return Result.err({ constraint: "nonNegative", value: true });
53
66
  }
54
67
  if (positive === true && !(value > 0n)) {
55
- return Result.err(errorMessage(value, "positive", true));
68
+ return Result.err({ constraint: "positive", value: true });
56
69
  }
57
70
  if (nonPositive === true && !(value <= 0n)) {
58
- return Result.err(errorMessage(value, "nonPositive", true));
71
+ return Result.err({ constraint: "nonPositive", value: true });
59
72
  }
60
73
  if (gt !== void 0 && !(value > gt)) {
61
- return Result.err(errorMessage(value, "gt", gt));
74
+ return Result.err({ constraint: "gt", value: String(gt) });
62
75
  }
63
76
  if (gte !== void 0 && !(value >= gte)) {
64
- return Result.err(errorMessage(value, "gte", gte));
77
+ return Result.err({ constraint: "gte", value: String(gte) });
65
78
  }
66
79
  if (min !== void 0 && !(value >= min)) {
67
- return Result.err(errorMessage(value, "min", min));
80
+ return Result.err({ constraint: "min", value: String(min) });
68
81
  }
69
82
  if (lt !== void 0 && !(value < lt)) {
70
- return Result.err(errorMessage(value, "lt", lt));
83
+ return Result.err({ constraint: "lt", value: String(lt) });
71
84
  }
72
85
  if (lte !== void 0 && !(value <= lte)) {
73
- return Result.err(errorMessage(value, "lte", lte));
86
+ return Result.err({ constraint: "lte", value: String(lte) });
74
87
  }
75
88
  if (max !== void 0 && !(value <= max)) {
76
- return Result.err(errorMessage(value, "max", max));
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(errorMessage(value, "multipleOf", multipleOf));
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(errorMessage(value, "multipleOf", multipleOf));
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(errorMessage(value, "step", step));
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(errorMessage(value, "step", step));
115
+ return Result.err({ constraint: "step", value: String(step) });
94
116
  }
95
117
  }
96
118
  return Result.ok(true);
97
119
  };
98
- const errorMessage = (value, constraintName, constraintValue) => `defaultValue [${value}] for bigint does not satisfy the constraint ${constraintName} = ${constraintValue}`;
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":"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"}
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(defaultValueConstraintsCheck.value);
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(errorMessage(value, "finite", true));
62
+ return Result.err({ constraint: "finite", value: true });
50
63
  }
51
64
  if (int === true && !Int.is(value)) {
52
- return Result.err(errorMessage(value, "int", true));
65
+ return Result.err({ constraint: "int", value: true });
53
66
  }
54
67
  if (safeInteger === true && !Number.isSafeInteger(value)) {
55
- return Result.err(errorMessage(value, "safeInteger", true));
68
+ return Result.err({ constraint: "safeInteger", value: true });
56
69
  }
57
70
  if (nonZero === true && !(value !== 0)) {
58
- return Result.err(errorMessage(value, "nonZero", true));
71
+ return Result.err({ constraint: "nonZero", value: true });
59
72
  }
60
73
  if (negative === true && !(value < 0)) {
61
- return Result.err(errorMessage(value, "negative", true));
74
+ return Result.err({ constraint: "negative", value: true });
62
75
  }
63
76
  if (nonNegative === true && !(value >= 0)) {
64
- return Result.err(errorMessage(value, "nonNegative", true));
77
+ return Result.err({ constraint: "nonNegative", value: true });
65
78
  }
66
79
  if (positive === true && !(value > 0)) {
67
- return Result.err(errorMessage(value, "positive", true));
80
+ return Result.err({ constraint: "positive", value: true });
68
81
  }
69
82
  if (nonPositive === true && !(value <= 0)) {
70
- return Result.err(errorMessage(value, "nonPositive", true));
83
+ return Result.err({ constraint: "nonPositive", value: true });
71
84
  }
72
85
  if (gt !== void 0 && !(value > gt)) {
73
- return Result.err(errorMessage(value, "gt", gt));
86
+ return Result.err({ constraint: "gt", value: String(gt) });
74
87
  }
75
88
  if (gte !== void 0 && !(value >= gte)) {
76
- return Result.err(errorMessage(value, "gte", gte));
89
+ return Result.err({ constraint: "gte", value: String(gte) });
77
90
  }
78
91
  if (min !== void 0 && !(value >= min)) {
79
- return Result.err(errorMessage(value, "min", min));
92
+ return Result.err({ constraint: "min", value: String(min) });
80
93
  }
81
94
  if (lt !== void 0 && !(value < lt)) {
82
- return Result.err(errorMessage(value, "lt", lt));
95
+ return Result.err({ constraint: "lt", value: String(lt) });
83
96
  }
84
97
  if (lte !== void 0 && !(value <= lte)) {
85
- return Result.err(errorMessage(value, "lte", lte));
98
+ return Result.err({ constraint: "lte", value: String(lte) });
86
99
  }
87
100
  if (max !== void 0 && !(value <= max)) {
88
- return Result.err(errorMessage(value, "max", max));
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(errorMessage(value, "multipleOf", multipleOf));
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(errorMessage(value, "multipleOf", multipleOf));
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(errorMessage(value, "step", step));
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(errorMessage(value, "step", step));
127
+ return Result.err({ constraint: "step", value: String(step) });
106
128
  }
107
129
  }
108
130
  return Result.ok(true);
109
131
  };
110
- const errorMessage = (value, constraintName, constraintValue) => `defaultValue [${value}] for number does not satisfy the constraint ${constraintName} = ${constraintValue}`;
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":"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"}
1
+ {"version":3,"file":"string.d.mts","sourceRoot":"","sources":["../../src/primitives/string.mts"],"names":[],"mappings":"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"}