ts-fortress 11.1.0 → 11.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -8
- package/dist/entry-point.mjs +2 -0
- package/dist/entry-point.mjs.map +1 -1
- package/dist/enum/index.d.mts +2 -0
- package/dist/enum/index.d.mts.map +1 -1
- package/dist/enum/index.mjs +2 -0
- package/dist/enum/index.mjs.map +1 -1
- package/dist/enum/int-range-inclusive.d.mts +13 -0
- package/dist/enum/int-range-inclusive.d.mts.map +1 -0
- package/dist/enum/int-range-inclusive.mjs +61 -0
- package/dist/enum/int-range-inclusive.mjs.map +1 -0
- package/dist/enum/int-range.d.mts +7 -8
- package/dist/enum/int-range.d.mts.map +1 -1
- package/dist/enum/int-range.mjs +16 -7
- package/dist/enum/int-range.mjs.map +1 -1
- package/dist/enum/uint-range-inclusive.d.mts +13 -0
- package/dist/enum/uint-range-inclusive.d.mts.map +1 -0
- package/dist/enum/uint-range-inclusive.mjs +61 -0
- package/dist/enum/uint-range-inclusive.mjs.map +1 -0
- package/dist/enum/uint-range.d.mts +6 -3
- package/dist/enum/uint-range.d.mts.map +1 -1
- package/dist/enum/uint-range.mjs +16 -7
- package/dist/enum/uint-range.mjs.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/predefined/int8.d.mts.map +1 -1
- package/dist/predefined/int8.mjs +1 -5
- package/dist/predefined/int8.mjs.map +1 -1
- package/dist/predefined/uint8.d.mts.map +1 -1
- package/dist/predefined/uint8.mjs +1 -5
- package/dist/predefined/uint8.mjs.map +1 -1
- package/dist/utils/validation-error.d.mts +4 -0
- package/dist/utils/validation-error.d.mts.map +1 -1
- package/dist/utils/validation-error.mjs +2 -0
- package/dist/utils/validation-error.mjs.map +1 -1
- package/package.json +2 -2
- package/src/compose/intersection.test.mts +2 -2
- package/src/enum/index.mts +2 -0
- package/src/enum/int-range-inclusive.mts +106 -0
- package/src/enum/int-range-inclusive.test.mts +112 -0
- package/src/enum/int-range.mts +48 -71
- package/src/enum/int-range.test.mts +1 -3
- package/src/enum/uint-range-inclusive.mts +106 -0
- package/src/enum/uint-range-inclusive.test.mts +159 -0
- package/src/enum/uint-range.mts +50 -15
- package/src/enum/uint-range.test.mts +1 -3
- package/src/predefined/int8.mts +1 -5
- package/src/predefined/uint8.mts +1 -5
- package/src/utils/validation-error.formatting.test.mts +10 -0
- package/src/utils/validation-error.mts +8 -0
package/README.md
CHANGED
|
@@ -909,14 +909,15 @@ const ColorEnum = t.enumType(['red', 'green', 'blue']);
|
|
|
909
909
|
|
|
910
910
|
type Color = t.TypeOf<typeof ColorEnum>; // 'red' | 'green' | 'blue'
|
|
911
911
|
|
|
912
|
-
// Numeric ranges
|
|
913
|
-
const DiceRoll = t.uintRange({
|
|
914
|
-
start: 1,
|
|
915
|
-
end: 7,
|
|
916
|
-
defaultValue: 1,
|
|
917
|
-
}); // integers from 1 to 6
|
|
912
|
+
// Numeric ranges (end is exclusive)
|
|
913
|
+
const DiceRoll = t.uintRange(1, 7, { defaultValue: 1 }); // integers from 1 to 6
|
|
918
914
|
|
|
919
915
|
type DiceRoll = t.TypeOf<typeof DiceRoll>; // 1 | 2 | 3 | 4 | 5 | 6
|
|
916
|
+
|
|
917
|
+
// Numeric ranges (end is inclusive)
|
|
918
|
+
const DiceRoll2 = t.uintRangeInclusive(1, 6, { defaultValue: 1 }); // integers from 1 to 6
|
|
919
|
+
|
|
920
|
+
type DiceRoll2 = t.TypeOf<typeof DiceRoll2>; // 1 | 2 | 3 | 4 | 5 | 6
|
|
920
921
|
```
|
|
921
922
|
|
|
922
923
|
Tips: It is often better to use `uintRange` instead of `enumType` when possible, because `enumType` stores a Set of the sizes of its members as data, while `uintRange` only stores the range, resulting in smaller memory usage.
|
|
@@ -1077,8 +1078,10 @@ type ValidationError = Readonly<{
|
|
|
1077
1078
|
|
|
1078
1079
|
- `t.TypeOf<T>` - Extract TypeScript type from validator
|
|
1079
1080
|
- `t.enumType(values)` - Enum validation
|
|
1080
|
-
- `t.uintRange(
|
|
1081
|
-
- `t.intRange(
|
|
1081
|
+
- `t.uintRange(start, end, { defaultValue? })` - Non-negative integer range validation (`end` is exclusive)
|
|
1082
|
+
- `t.intRange(start, end, { defaultValue? })` - Integer range validation (`end` is exclusive)
|
|
1083
|
+
- `t.uintRangeInclusive(start, end, { defaultValue? })` - Non-negative integer range validation (`end` is inclusive)
|
|
1084
|
+
- `t.intRangeInclusive(start, end, { defaultValue? })` - Integer range validation (`end` is inclusive)
|
|
1082
1085
|
- `t.unknown` - Unknown Type
|
|
1083
1086
|
- `t.recursion(typeName, definition)` - Define recursive type
|
|
1084
1087
|
|
package/dist/entry-point.mjs
CHANGED
|
@@ -16,7 +16,9 @@ export { brandedString, simpleBrandedString } from './brand/branded-string.mjs';
|
|
|
16
16
|
export { intersection } from './compose/intersection.mjs';
|
|
17
17
|
export { union } from './compose/union.mjs';
|
|
18
18
|
export { enumType } from './enum/enum.mjs';
|
|
19
|
+
export { intRangeInclusive } from './enum/int-range-inclusive.mjs';
|
|
19
20
|
export { intRange } from './enum/int-range.mjs';
|
|
21
|
+
export { uintRangeInclusive } from './enum/uint-range-inclusive.mjs';
|
|
20
22
|
export { uintRange } from './enum/uint-range.mjs';
|
|
21
23
|
export { literal } from './other-types/literal.mjs';
|
|
22
24
|
export { MapType } from './other-types/map.mjs';
|
package/dist/entry-point.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-point.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entry-point.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/enum/index.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/enum/index.mts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/enum/index.mts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
|
package/dist/enum/index.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { enumType } from './enum.mjs';
|
|
2
|
+
export { intRangeInclusive } from './int-range-inclusive.mjs';
|
|
2
3
|
export { intRange } from './int-range.mjs';
|
|
4
|
+
export { uintRangeInclusive } from './uint-range-inclusive.mjs';
|
|
3
5
|
export { uintRange } from './uint-range.mjs';
|
|
4
6
|
//# sourceMappingURL=index.mjs.map
|
package/dist/enum/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Int11, type IntRangeInclusive } from 'ts-type-forge';
|
|
2
|
+
import { type Type } from '../type.mjs';
|
|
3
|
+
export type { IntRangeInclusive } from 'ts-type-forge';
|
|
4
|
+
export declare const intRangeInclusive: <Start extends Int11, End extends Int11>(...args: readonly [start: Start, end: End, options?: Readonly<{
|
|
5
|
+
typeName?: string;
|
|
6
|
+
defaultValue?: IntRangeInclusive<Start, End>;
|
|
7
|
+
}>] | readonly [options: Readonly<{
|
|
8
|
+
start: Start;
|
|
9
|
+
end: End;
|
|
10
|
+
typeName?: string;
|
|
11
|
+
defaultValue?: IntRangeInclusive<Start, End>;
|
|
12
|
+
}>]) => Type<IntRangeInclusive<Start, End>>;
|
|
13
|
+
//# sourceMappingURL=int-range-inclusive.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"int-range-inclusive.d.mts","sourceRoot":"","sources":["../../src/enum/int-range-inclusive.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,iBAAiB,GAAI,KAAK,SAAS,KAAK,EAAE,GAAG,SAAS,KAAK,WAElE,SAAS,CACP,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAC9C,CAAC,CACH,GACD,SAAS,CACP,OAAO,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAC9C,CAAC,CACH,KACJ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAcpC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { memoizeFunction, isNumber, Num, Result } from 'ts-data-forge';
|
|
2
|
+
import { createAssertFn } from '../utils/create-assert-fn.mjs';
|
|
3
|
+
import { createCastFn } from '../utils/create-cast-fn.mjs';
|
|
4
|
+
import { createIsFn } from '../utils/create-is-fn.mjs';
|
|
5
|
+
import '@sindresorhus/is';
|
|
6
|
+
|
|
7
|
+
const intRangeInclusive = (...args) => {
|
|
8
|
+
switch (args.length) {
|
|
9
|
+
case 1:
|
|
10
|
+
return intRangeInclusiveImpl(args[0].start, args[0].end, {
|
|
11
|
+
defaultValue: args[0].defaultValue,
|
|
12
|
+
typeName: args[0].typeName
|
|
13
|
+
});
|
|
14
|
+
case 2:
|
|
15
|
+
return intRangeInclusiveImpl(args[0], args[1]);
|
|
16
|
+
case 3:
|
|
17
|
+
return intRangeInclusiveImpl(args[0], args[1], args[2]);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const intRangeInclusiveImpl = (start, end, options) => {
|
|
21
|
+
const typeNameFilled = options?.typeName ?? `intRangeInclusive(${start}, ${end})`;
|
|
22
|
+
const getDefaultValue = memoizeFunction(
|
|
23
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
24
|
+
() => options?.defaultValue ?? start
|
|
25
|
+
);
|
|
26
|
+
const validate = (a) => {
|
|
27
|
+
if (!(isNumber(a) && Number.isSafeInteger(a) && Num.isInRangeInclusive(start, end)(a))) {
|
|
28
|
+
return Result.err([
|
|
29
|
+
{
|
|
30
|
+
path: [],
|
|
31
|
+
actualValue: a,
|
|
32
|
+
expectedType: typeNameFilled,
|
|
33
|
+
typeName: typeNameFilled,
|
|
34
|
+
details: {
|
|
35
|
+
kind: "integer-range-inclusive",
|
|
36
|
+
start,
|
|
37
|
+
endInclusive: end
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
return Result.ok(a);
|
|
43
|
+
};
|
|
44
|
+
const is = createIsFn(validate);
|
|
45
|
+
const fill = (a) => is(a) ? a : getDefaultValue();
|
|
46
|
+
return {
|
|
47
|
+
typeName: typeNameFilled,
|
|
48
|
+
get defaultValue() {
|
|
49
|
+
return getDefaultValue();
|
|
50
|
+
},
|
|
51
|
+
fill,
|
|
52
|
+
prune: (a) => a,
|
|
53
|
+
validate,
|
|
54
|
+
is,
|
|
55
|
+
assertIs: createAssertFn(validate),
|
|
56
|
+
cast: createCastFn(validate)
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { intRangeInclusive };
|
|
61
|
+
//# sourceMappingURL=int-range-inclusive.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"int-range-inclusive.mjs","sources":["../../src/enum/int-range-inclusive.mts"],"sourcesContent":["import { isNumber, memoizeFunction, Num, Result } from 'ts-data-forge';\nimport { type Int11, type IntRangeInclusive } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createAssertFn,\n createCastFn,\n createIsFn,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport type { IntRangeInclusive } from 'ts-type-forge';\n\nexport const intRangeInclusive = <Start extends Int11, End extends Int11>(\n ...args:\n | readonly [\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: IntRangeInclusive<Start, End>;\n }>,\n ]\n | readonly [\n options: Readonly<{\n start: Start;\n end: End;\n typeName?: string;\n defaultValue?: IntRangeInclusive<Start, End>;\n }>,\n ]\n): Type<IntRangeInclusive<Start, End>> => {\n switch (args.length) {\n case 1:\n return intRangeInclusiveImpl(args[0].start, args[0].end, {\n defaultValue: args[0].defaultValue,\n typeName: args[0].typeName,\n });\n\n case 2:\n return intRangeInclusiveImpl(args[0], args[1]);\n\n case 3:\n return intRangeInclusiveImpl(args[0], args[1], args[2]);\n }\n};\n\nconst intRangeInclusiveImpl = <Start extends Int11, End extends Int11>(\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: IntRangeInclusive<Start, End>;\n }>,\n): Type<IntRangeInclusive<Start, End>> => {\n type T = IntRangeInclusive<Start, End>;\n\n const typeNameFilled =\n options?.typeName ?? `intRangeInclusive(${start}, ${end})`;\n\n const getDefaultValue = memoizeFunction(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (): T => options?.defaultValue ?? (start as T),\n );\n\n const validate: Type<T>['validate'] = (a) => {\n if (!(\n isNumber(a) &&\n Number.isSafeInteger(a) &&\n Num.isInRangeInclusive(start, end)(a)\n )) {\n return Result.err([\n {\n path: [],\n actualValue: a,\n expectedType: typeNameFilled,\n typeName: typeNameFilled,\n details: {\n kind: 'integer-range-inclusive',\n start,\n endInclusive: end,\n },\n } satisfies ValidationError,\n ]);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Result.ok(a as T);\n };\n\n const is = createIsFn<T>(validate);\n\n const fill: Type<T>['fill'] = (a) => (is(a) ? a : getDefaultValue());\n\n return {\n typeName: typeNameFilled,\n get defaultValue() {\n return getDefaultValue();\n },\n fill,\n prune: (a) => a,\n validate,\n is,\n assertIs: createAssertFn(validate),\n cast: createCastFn(validate),\n };\n};\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,iBAAA,GAAoB,IAC5B,IAAA,KAiBqC;AACxC,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,qBAAA,CAAsB,KAAK,CAAC,CAAA,CAAE,OAAO,IAAA,CAAK,CAAC,EAAE,GAAA,EAAK;AAAA,QACvD,YAAA,EAAc,IAAA,CAAK,CAAC,CAAA,CAAE,YAAA;AAAA,QACtB,QAAA,EAAU,IAAA,CAAK,CAAC,CAAA,CAAE;AAAA,OACnB,CAAA;AAAA,IAEH,KAAK,CAAA;AACH,MAAA,OAAO,sBAAsB,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,IAE/C,KAAK,CAAA;AACH,MAAA,OAAO,qBAAA,CAAsB,KAAK,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA;AAE5D;AAEA,MAAM,qBAAA,GAAwB,CAC5B,KAAA,EACA,GAAA,EACA,OAAA,KAIwC;AAGxC,EAAA,MAAM,iBACJ,OAAA,EAAS,QAAA,IAAY,CAAA,kBAAA,EAAqB,KAAK,KAAK,GAAG,CAAA,CAAA,CAAA;AAEzD,EAAA,MAAM,eAAA,GAAkB,eAAA;AAAA;AAAA,IAEtB,MAAS,SAAS,YAAA,IAAiB;AAAA,GACrC;AAEA,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KAAM;AAC3C,IAAA,IAAI,EACF,QAAA,CAAS,CAAC,CAAA,IACV,OAAO,aAAA,CAAc,CAAC,CAAA,IACtB,GAAA,CAAI,kBAAA,CAAmB,KAAA,EAAO,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA,EACnC;AACD,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB;AAAA,UACE,MAAM,EAAC;AAAA,UACP,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,cAAA;AAAA,UACd,QAAA,EAAU,cAAA;AAAA,UACV,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,yBAAA;AAAA,YACN,KAAA;AAAA,YACA,YAAA,EAAc;AAAA;AAChB;AACF,OACD,CAAA;AAAA,IACH;AAGA,IAAA,OAAO,MAAA,CAAO,GAAG,CAAM,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,EAAA,GAAK,WAAc,QAAQ,CAAA;AAEjC,EAAA,MAAM,OAAwB,CAAC,CAAA,KAAO,GAAG,CAAC,CAAA,GAAI,IAAI,eAAA,EAAgB;AAElE,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAI,YAAA,GAAe;AACjB,MAAA,OAAO,eAAA,EAAgB;AAAA,IACzB,CAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA;AAAA,IACd,QAAA;AAAA,IACA,EAAA;AAAA,IACA,QAAA,EAAU,eAAe,QAAQ,CAAA;AAAA,IACjC,IAAA,EAAM,aAAa,QAAQ;AAAA,GAC7B;AACF,CAAA;;;;"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Int11, type IntRange } from 'ts-type-forge';
|
|
2
2
|
import { type Type } from '../type.mjs';
|
|
3
|
-
export
|
|
3
|
+
export type { IntRange } from 'ts-type-forge';
|
|
4
|
+
export declare const intRange: <Start extends Int11, End extends Int11 | 1024>(...args: readonly [start: Start, end: End, options?: Readonly<{
|
|
5
|
+
typeName?: string;
|
|
6
|
+
defaultValue?: IntRange<Start, End>;
|
|
7
|
+
}>] | readonly [options: Readonly<{
|
|
4
8
|
start: Start;
|
|
5
9
|
end: End;
|
|
6
10
|
typeName?: string;
|
|
7
11
|
defaultValue?: IntRange<Start, End>;
|
|
8
|
-
}>) => Type<IntRange<Start, End>>;
|
|
9
|
-
type NegativeRange = NegativeIndex<128>;
|
|
10
|
-
type PositiveRange = IndexInclusive<128>;
|
|
11
|
-
export type IntRange<Start extends Int8, End extends Int8 | 128> = BoolAnd<TypeExtends<Start, PositiveRange>, TypeExtends<End, PositiveRange>> extends true ? UintRange<Start, End> : BoolAnd<TypeExtends<Start, NegativeRange>, TypeExtends<End, PositiveRange>> extends true ? NegativeIndex<NegativeToPositive<Start>> | Index<End> : BoolAnd<TypeExtends<Start, PositiveRange>, TypeExtends<End, NegativeRange>> extends true ? never : BoolAnd<TypeExtends<Start, NegativeRange>, TypeExtends<End, NegativeRange>> extends true ? Exclude<NegativeIndex<NegativeToPositive<Start>>, NegativeIndex<NegativeToPositive<End>>> : never;
|
|
12
|
-
type NegativeToPositive<N extends number> = `${N}` extends `-${infer D extends number}` ? D : never;
|
|
13
|
-
export {};
|
|
12
|
+
}>]) => Type<IntRange<Start, End>>;
|
|
14
13
|
//# sourceMappingURL=int-range.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int-range.d.mts","sourceRoot":"","sources":["../../src/enum/int-range.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"int-range.d.mts","sourceRoot":"","sources":["../../src/enum/int-range.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,eAAO,MAAM,QAAQ,GAAI,KAAK,SAAS,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,IAAI,WAEhE,SAAS,CACP,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC,CACH,GACD,SAAS,CACP,OAAO,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC,CACH,KACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAc3B,CAAC"}
|
package/dist/enum/int-range.mjs
CHANGED
|
@@ -4,15 +4,24 @@ import { createCastFn } from '../utils/create-cast-fn.mjs';
|
|
|
4
4
|
import { createIsFn } from '../utils/create-is-fn.mjs';
|
|
5
5
|
import '@sindresorhus/is';
|
|
6
6
|
|
|
7
|
-
const intRange = ({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const intRange = (...args) => {
|
|
8
|
+
switch (args.length) {
|
|
9
|
+
case 1:
|
|
10
|
+
return intRangeImpl(args[0].start, args[0].end, {
|
|
11
|
+
defaultValue: args[0].defaultValue,
|
|
12
|
+
typeName: args[0].typeName
|
|
13
|
+
});
|
|
14
|
+
case 2:
|
|
15
|
+
return intRangeImpl(args[0], args[1]);
|
|
16
|
+
case 3:
|
|
17
|
+
return intRangeImpl(args[0], args[1], args[2]);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const intRangeImpl = (start, end, options) => {
|
|
21
|
+
const typeNameFilled = options?.typeName ?? `intRange(${start}, ${end})`;
|
|
13
22
|
const getDefaultValue = memoizeFunction(
|
|
14
23
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
15
|
-
() => options
|
|
24
|
+
() => options?.defaultValue ?? start
|
|
16
25
|
);
|
|
17
26
|
const validate = (a) => {
|
|
18
27
|
if (!(isNumber(a) && Number.isSafeInteger(a) && Num.isInRange(start, end)(a))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int-range.mjs","sources":["../../src/enum/int-range.mts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"int-range.mjs","sources":["../../src/enum/int-range.mts"],"sourcesContent":["import { isNumber, memoizeFunction, Num, Result } from 'ts-data-forge';\nimport { type Int11, type IntRange } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createAssertFn,\n createCastFn,\n createIsFn,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport type { IntRange } from 'ts-type-forge';\n\nexport const intRange = <Start extends Int11, End extends Int11 | 1024>(\n ...args:\n | readonly [\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: IntRange<Start, End>;\n }>,\n ]\n | readonly [\n options: Readonly<{\n start: Start;\n end: End;\n typeName?: string;\n defaultValue?: IntRange<Start, End>;\n }>,\n ]\n): Type<IntRange<Start, End>> => {\n switch (args.length) {\n case 1:\n return intRangeImpl(args[0].start, args[0].end, {\n defaultValue: args[0].defaultValue,\n typeName: args[0].typeName,\n });\n\n case 2:\n return intRangeImpl(args[0], args[1]);\n\n case 3:\n return intRangeImpl(args[0], args[1], args[2]);\n }\n};\n\nconst intRangeImpl = <Start extends Int11, End extends Int11 | 1024>(\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: IntRange<Start, End>;\n }>,\n): Type<IntRange<Start, End>> => {\n type T = IntRange<Start, End>;\n\n const typeNameFilled = options?.typeName ?? `intRange(${start}, ${end})`;\n\n const getDefaultValue = memoizeFunction(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (): T => options?.defaultValue ?? (start as T),\n );\n\n const validate: Type<T>['validate'] = (a) => {\n if (!(\n isNumber(a) &&\n Number.isSafeInteger(a) &&\n Num.isInRange(start, end)(a)\n )) {\n return Result.err([\n {\n path: [],\n actualValue: a,\n expectedType: typeNameFilled,\n typeName: typeNameFilled,\n details: {\n kind: 'integer-range',\n start,\n endExclusive: end,\n },\n } satisfies ValidationError,\n ]);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Result.ok(a as T);\n };\n\n const is = createIsFn<T>(validate);\n\n const fill: Type<T>['fill'] = (a) => (is(a) ? a : getDefaultValue());\n\n return {\n typeName: typeNameFilled,\n get defaultValue() {\n return getDefaultValue();\n },\n fill,\n prune: (a) => a,\n validate,\n is,\n assertIs: createAssertFn(validate),\n cast: createCastFn(validate),\n };\n};\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,QAAA,GAAW,IACnB,IAAA,KAiB4B;AAC/B,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,YAAA,CAAa,KAAK,CAAC,CAAA,CAAE,OAAO,IAAA,CAAK,CAAC,EAAE,GAAA,EAAK;AAAA,QAC9C,YAAA,EAAc,IAAA,CAAK,CAAC,CAAA,CAAE,YAAA;AAAA,QACtB,QAAA,EAAU,IAAA,CAAK,CAAC,CAAA,CAAE;AAAA,OACnB,CAAA;AAAA,IAEH,KAAK,CAAA;AACH,MAAA,OAAO,aAAa,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,IAEtC,KAAK,CAAA;AACH,MAAA,OAAO,YAAA,CAAa,KAAK,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA;AAEnD;AAEA,MAAM,YAAA,GAAe,CACnB,KAAA,EACA,GAAA,EACA,OAAA,KAI+B;AAG/B,EAAA,MAAM,iBAAiB,OAAA,EAAS,QAAA,IAAY,CAAA,SAAA,EAAY,KAAK,KAAK,GAAG,CAAA,CAAA,CAAA;AAErE,EAAA,MAAM,eAAA,GAAkB,eAAA;AAAA;AAAA,IAEtB,MAAS,SAAS,YAAA,IAAiB;AAAA,GACrC;AAEA,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KAAM;AAC3C,IAAA,IAAI,EACF,QAAA,CAAS,CAAC,CAAA,IACV,OAAO,aAAA,CAAc,CAAC,CAAA,IACtB,GAAA,CAAI,SAAA,CAAU,KAAA,EAAO,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA,EAC1B;AACD,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB;AAAA,UACE,MAAM,EAAC;AAAA,UACP,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,cAAA;AAAA,UACd,QAAA,EAAU,cAAA;AAAA,UACV,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,eAAA;AAAA,YACN,KAAA;AAAA,YACA,YAAA,EAAc;AAAA;AAChB;AACF,OACD,CAAA;AAAA,IACH;AAGA,IAAA,OAAO,MAAA,CAAO,GAAG,CAAM,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,EAAA,GAAK,WAAc,QAAQ,CAAA;AAEjC,EAAA,MAAM,OAAwB,CAAC,CAAA,KAAO,GAAG,CAAC,CAAA,GAAI,IAAI,eAAA,EAAgB;AAElE,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAI,YAAA,GAAe;AACjB,MAAA,OAAO,eAAA,EAAgB;AAAA,IACzB,CAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA;AAAA,IACd,QAAA;AAAA,IACA,EAAA;AAAA,IACA,QAAA,EAAU,eAAe,QAAQ,CAAA;AAAA,IACjC,IAAA,EAAM,aAAa,QAAQ;AAAA,GAC7B;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Uint11, type UintRangeInclusive } from 'ts-type-forge';
|
|
2
|
+
import { type Type } from '../type.mjs';
|
|
3
|
+
export type { UintRangeInclusive } from 'ts-type-forge';
|
|
4
|
+
export declare const uintRangeInclusive: <Start extends Uint11, End extends Uint11>(...args: readonly [start: Start, end: End, options?: Readonly<{
|
|
5
|
+
typeName?: string;
|
|
6
|
+
defaultValue?: UintRangeInclusive<Start, End>;
|
|
7
|
+
}>] | readonly [options: Readonly<{
|
|
8
|
+
start: Start;
|
|
9
|
+
end: End;
|
|
10
|
+
typeName?: string;
|
|
11
|
+
defaultValue?: UintRangeInclusive<Start, End>;
|
|
12
|
+
}>]) => Type<UintRangeInclusive<Start, End>>;
|
|
13
|
+
//# sourceMappingURL=uint-range-inclusive.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uint-range-inclusive.d.mts","sourceRoot":"","sources":["../../src/enum/uint-range-inclusive.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,kBAAkB,GAAI,KAAK,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,WAErE,SAAS,CACP,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAC/C,CAAC,CACH,GACD,SAAS,CACP,OAAO,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAC/C,CAAC,CACH,KACJ,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAcrC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { memoizeFunction, isNumber, Num, Result } from 'ts-data-forge';
|
|
2
|
+
import { createAssertFn } from '../utils/create-assert-fn.mjs';
|
|
3
|
+
import { createCastFn } from '../utils/create-cast-fn.mjs';
|
|
4
|
+
import { createIsFn } from '../utils/create-is-fn.mjs';
|
|
5
|
+
import '@sindresorhus/is';
|
|
6
|
+
|
|
7
|
+
const uintRangeInclusive = (...args) => {
|
|
8
|
+
switch (args.length) {
|
|
9
|
+
case 1:
|
|
10
|
+
return uintRangeInclusiveImpl(args[0].start, args[0].end, {
|
|
11
|
+
defaultValue: args[0].defaultValue,
|
|
12
|
+
typeName: args[0].typeName
|
|
13
|
+
});
|
|
14
|
+
case 2:
|
|
15
|
+
return uintRangeInclusiveImpl(args[0], args[1]);
|
|
16
|
+
case 3:
|
|
17
|
+
return uintRangeInclusiveImpl(args[0], args[1], args[2]);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const uintRangeInclusiveImpl = (start, end, options) => {
|
|
21
|
+
const typeNameFilled = options?.typeName ?? `uintRangeInclusive(${start}, ${end})`;
|
|
22
|
+
const getDefaultValue = memoizeFunction(
|
|
23
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
24
|
+
() => options?.defaultValue ?? start
|
|
25
|
+
);
|
|
26
|
+
const validate = (a) => {
|
|
27
|
+
if (!(isNumber(a) && Number.isSafeInteger(a) && Num.isInRangeInclusive(start, end)(a))) {
|
|
28
|
+
return Result.err([
|
|
29
|
+
{
|
|
30
|
+
path: [],
|
|
31
|
+
actualValue: a,
|
|
32
|
+
expectedType: typeNameFilled,
|
|
33
|
+
typeName: typeNameFilled,
|
|
34
|
+
details: {
|
|
35
|
+
kind: "integer-range-inclusive",
|
|
36
|
+
start,
|
|
37
|
+
endInclusive: end
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
return Result.ok(a);
|
|
43
|
+
};
|
|
44
|
+
const is = createIsFn(validate);
|
|
45
|
+
const fill = (a) => is(a) ? a : getDefaultValue();
|
|
46
|
+
return {
|
|
47
|
+
typeName: typeNameFilled,
|
|
48
|
+
get defaultValue() {
|
|
49
|
+
return getDefaultValue();
|
|
50
|
+
},
|
|
51
|
+
fill,
|
|
52
|
+
prune: (a) => a,
|
|
53
|
+
validate,
|
|
54
|
+
is,
|
|
55
|
+
assertIs: createAssertFn(validate),
|
|
56
|
+
cast: createCastFn(validate)
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { uintRangeInclusive };
|
|
61
|
+
//# sourceMappingURL=uint-range-inclusive.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uint-range-inclusive.mjs","sources":["../../src/enum/uint-range-inclusive.mts"],"sourcesContent":["import { isNumber, memoizeFunction, Num, Result } from 'ts-data-forge';\nimport { type Uint11, type UintRangeInclusive } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createAssertFn,\n createCastFn,\n createIsFn,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport type { UintRangeInclusive } from 'ts-type-forge';\n\nexport const uintRangeInclusive = <Start extends Uint11, End extends Uint11>(\n ...args:\n | readonly [\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: UintRangeInclusive<Start, End>;\n }>,\n ]\n | readonly [\n options: Readonly<{\n start: Start;\n end: End;\n typeName?: string;\n defaultValue?: UintRangeInclusive<Start, End>;\n }>,\n ]\n): Type<UintRangeInclusive<Start, End>> => {\n switch (args.length) {\n case 1:\n return uintRangeInclusiveImpl(args[0].start, args[0].end, {\n defaultValue: args[0].defaultValue,\n typeName: args[0].typeName,\n });\n\n case 2:\n return uintRangeInclusiveImpl(args[0], args[1]);\n\n case 3:\n return uintRangeInclusiveImpl(args[0], args[1], args[2]);\n }\n};\n\nconst uintRangeInclusiveImpl = <Start extends Uint11, End extends Uint11>(\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: UintRangeInclusive<Start, End>;\n }>,\n): Type<UintRangeInclusive<Start, End>> => {\n type T = UintRangeInclusive<Start, End>;\n\n const typeNameFilled =\n options?.typeName ?? `uintRangeInclusive(${start}, ${end})`;\n\n const getDefaultValue = memoizeFunction(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (): T => options?.defaultValue ?? (start as T),\n );\n\n const validate: Type<T>['validate'] = (a) => {\n if (!(\n isNumber(a) &&\n Number.isSafeInteger(a) &&\n Num.isInRangeInclusive(start, end)(a)\n )) {\n return Result.err([\n {\n path: [],\n actualValue: a,\n expectedType: typeNameFilled,\n typeName: typeNameFilled,\n details: {\n kind: 'integer-range-inclusive',\n start,\n endInclusive: end,\n },\n } satisfies ValidationError,\n ]);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Result.ok(a as T);\n };\n\n const is = createIsFn<T>(validate);\n\n const fill: Type<T>['fill'] = (a) => (is(a) ? a : getDefaultValue());\n\n return {\n typeName: typeNameFilled,\n get defaultValue() {\n return getDefaultValue();\n },\n fill,\n prune: (a) => a,\n validate,\n is,\n assertIs: createAssertFn(validate),\n cast: createCastFn(validate),\n };\n};\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,kBAAA,GAAqB,IAC7B,IAAA,KAiBsC;AACzC,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,sBAAA,CAAuB,KAAK,CAAC,CAAA,CAAE,OAAO,IAAA,CAAK,CAAC,EAAE,GAAA,EAAK;AAAA,QACxD,YAAA,EAAc,IAAA,CAAK,CAAC,CAAA,CAAE,YAAA;AAAA,QACtB,QAAA,EAAU,IAAA,CAAK,CAAC,CAAA,CAAE;AAAA,OACnB,CAAA;AAAA,IAEH,KAAK,CAAA;AACH,MAAA,OAAO,uBAAuB,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,IAEhD,KAAK,CAAA;AACH,MAAA,OAAO,sBAAA,CAAuB,KAAK,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA;AAE7D;AAEA,MAAM,sBAAA,GAAyB,CAC7B,KAAA,EACA,GAAA,EACA,OAAA,KAIyC;AAGzC,EAAA,MAAM,iBACJ,OAAA,EAAS,QAAA,IAAY,CAAA,mBAAA,EAAsB,KAAK,KAAK,GAAG,CAAA,CAAA,CAAA;AAE1D,EAAA,MAAM,eAAA,GAAkB,eAAA;AAAA;AAAA,IAEtB,MAAS,SAAS,YAAA,IAAiB;AAAA,GACrC;AAEA,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KAAM;AAC3C,IAAA,IAAI,EACF,QAAA,CAAS,CAAC,CAAA,IACV,OAAO,aAAA,CAAc,CAAC,CAAA,IACtB,GAAA,CAAI,kBAAA,CAAmB,KAAA,EAAO,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA,EACnC;AACD,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB;AAAA,UACE,MAAM,EAAC;AAAA,UACP,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,cAAA;AAAA,UACd,QAAA,EAAU,cAAA;AAAA,UACV,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,yBAAA;AAAA,YACN,KAAA;AAAA,YACA,YAAA,EAAc;AAAA;AAChB;AACF,OACD,CAAA;AAAA,IACH;AAGA,IAAA,OAAO,MAAA,CAAO,GAAG,CAAM,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,EAAA,GAAK,WAAc,QAAQ,CAAA;AAEjC,EAAA,MAAM,OAAwB,CAAC,CAAA,KAAO,GAAG,CAAC,CAAA,GAAI,IAAI,eAAA,EAAgB;AAElE,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAI,YAAA,GAAe;AACjB,MAAA,OAAO,eAAA,EAAgB;AAAA,IACzB,CAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA;AAAA,IACd,QAAA;AAAA,IACA,EAAA;AAAA,IACA,QAAA,EAAU,eAAe,QAAQ,CAAA;AAAA,IACjC,IAAA,EAAM,aAAa,QAAQ;AAAA,GAC7B;AACF,CAAA;;;;"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Uint11, type UintRange } from 'ts-type-forge';
|
|
2
2
|
import { type Type } from '../type.mjs';
|
|
3
3
|
export type { UintRange } from 'ts-type-forge';
|
|
4
|
-
export declare const uintRange: <Start extends
|
|
4
|
+
export declare const uintRange: <Start extends Uint11, End extends Exclude<Uint11 | 2048, Start>>(...args: readonly [start: Start, end: End, options?: Readonly<{
|
|
5
|
+
typeName?: string;
|
|
6
|
+
defaultValue?: UintRange<Start, End>;
|
|
7
|
+
}>] | readonly [options: Readonly<{
|
|
5
8
|
start: Start;
|
|
6
9
|
end: End;
|
|
7
10
|
typeName?: string;
|
|
8
11
|
defaultValue?: UintRange<Start, End>;
|
|
9
|
-
}>) => Type<UintRange<Start, End>>;
|
|
12
|
+
}>]) => Type<UintRange<Start, End>>;
|
|
10
13
|
//# sourceMappingURL=uint-range.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint-range.d.mts","sourceRoot":"","sources":["../../src/enum/uint-range.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"uint-range.d.mts","sourceRoot":"","sources":["../../src/enum/uint-range.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,eAAO,MAAM,SAAS,GACpB,KAAK,SAAS,MAAM,EACpB,GAAG,SAAS,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,WAGrC,SAAS,CACP,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACtC,CAAC,CACH,GACD,SAAS,CACP,OAAO,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACtC,CAAC,CACH,KACJ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAc5B,CAAC"}
|
package/dist/enum/uint-range.mjs
CHANGED
|
@@ -4,15 +4,24 @@ import { createCastFn } from '../utils/create-cast-fn.mjs';
|
|
|
4
4
|
import { createIsFn } from '../utils/create-is-fn.mjs';
|
|
5
5
|
import '@sindresorhus/is';
|
|
6
6
|
|
|
7
|
-
const uintRange = ({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const uintRange = (...args) => {
|
|
8
|
+
switch (args.length) {
|
|
9
|
+
case 1:
|
|
10
|
+
return uintRangeImpl(args[0].start, args[0].end, {
|
|
11
|
+
defaultValue: args[0].defaultValue,
|
|
12
|
+
typeName: args[0].typeName
|
|
13
|
+
});
|
|
14
|
+
case 2:
|
|
15
|
+
return uintRangeImpl(args[0], args[1]);
|
|
16
|
+
case 3:
|
|
17
|
+
return uintRangeImpl(args[0], args[1], args[2]);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const uintRangeImpl = (start, end, options) => {
|
|
21
|
+
const typeNameFilled = options?.typeName ?? `uintRange(${start}, ${end})`;
|
|
13
22
|
const getDefaultValue = memoizeFunction(
|
|
14
23
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
15
|
-
() => options
|
|
24
|
+
() => options?.defaultValue ?? start
|
|
16
25
|
);
|
|
17
26
|
const validate = (a) => {
|
|
18
27
|
if (!(isNumber(a) && Number.isSafeInteger(a) && Num.isInRange(start, end)(a))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint-range.mjs","sources":["../../src/enum/uint-range.mts"],"sourcesContent":["import { isNumber, memoizeFunction, Num, Result } from 'ts-data-forge';\nimport { type
|
|
1
|
+
{"version":3,"file":"uint-range.mjs","sources":["../../src/enum/uint-range.mts"],"sourcesContent":["import { isNumber, memoizeFunction, Num, Result } from 'ts-data-forge';\nimport { type Uint11, type UintRange } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createAssertFn,\n createCastFn,\n createIsFn,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport type { UintRange } from 'ts-type-forge';\n\nexport const uintRange = <\n Start extends Uint11,\n End extends Exclude<Uint11 | 2048, Start>,\n>(\n ...args:\n | readonly [\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: UintRange<Start, End>;\n }>,\n ]\n | readonly [\n options: Readonly<{\n start: Start;\n end: End;\n typeName?: string;\n defaultValue?: UintRange<Start, End>;\n }>,\n ]\n): Type<UintRange<Start, End>> => {\n switch (args.length) {\n case 1:\n return uintRangeImpl(args[0].start, args[0].end, {\n defaultValue: args[0].defaultValue,\n typeName: args[0].typeName,\n });\n\n case 2:\n return uintRangeImpl(args[0], args[1]);\n\n case 3:\n return uintRangeImpl(args[0], args[1], args[2]);\n }\n};\n\nconst uintRangeImpl = <\n Start extends Uint11,\n End extends Exclude<Uint11 | 2048, Start>,\n>(\n start: Start,\n end: End,\n options?: Readonly<{\n typeName?: string;\n defaultValue?: UintRange<Start, End>;\n }>,\n): Type<UintRange<Start, End>> => {\n type T = UintRange<Start, End>;\n\n const typeNameFilled = options?.typeName ?? `uintRange(${start}, ${end})`;\n\n const getDefaultValue = memoizeFunction(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (): T => options?.defaultValue ?? (start as T),\n );\n\n const validate: Type<T>['validate'] = (a) => {\n if (!(\n isNumber(a) &&\n Number.isSafeInteger(a) &&\n Num.isInRange(start, end)(a)\n )) {\n return Result.err([\n {\n path: [],\n actualValue: a,\n expectedType: typeNameFilled,\n typeName: typeNameFilled,\n details: {\n kind: 'integer-range',\n start,\n endExclusive: end,\n },\n } satisfies ValidationError,\n ]);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Result.ok(a as T);\n };\n\n const is = createIsFn<T>(validate);\n\n const fill: Type<T>['fill'] = (a) => (is(a) ? a : getDefaultValue());\n\n return {\n typeName: typeNameFilled,\n get defaultValue() {\n return getDefaultValue();\n },\n fill,\n prune: (a) => a,\n validate,\n is,\n assertIs: createAssertFn(validate),\n cast: createCastFn(validate),\n };\n};\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,SAAA,GAAY,IAIpB,IAAA,KAiB6B;AAChC,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,aAAA,CAAc,KAAK,CAAC,CAAA,CAAE,OAAO,IAAA,CAAK,CAAC,EAAE,GAAA,EAAK;AAAA,QAC/C,YAAA,EAAc,IAAA,CAAK,CAAC,CAAA,CAAE,YAAA;AAAA,QACtB,QAAA,EAAU,IAAA,CAAK,CAAC,CAAA,CAAE;AAAA,OACnB,CAAA;AAAA,IAEH,KAAK,CAAA;AACH,MAAA,OAAO,cAAc,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,IAEvC,KAAK,CAAA;AACH,MAAA,OAAO,aAAA,CAAc,KAAK,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA;AAEpD;AAEA,MAAM,aAAA,GAAgB,CAIpB,KAAA,EACA,GAAA,EACA,OAAA,KAIgC;AAGhC,EAAA,MAAM,iBAAiB,OAAA,EAAS,QAAA,IAAY,CAAA,UAAA,EAAa,KAAK,KAAK,GAAG,CAAA,CAAA,CAAA;AAEtE,EAAA,MAAM,eAAA,GAAkB,eAAA;AAAA;AAAA,IAEtB,MAAS,SAAS,YAAA,IAAiB;AAAA,GACrC;AAEA,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KAAM;AAC3C,IAAA,IAAI,EACF,QAAA,CAAS,CAAC,CAAA,IACV,OAAO,aAAA,CAAc,CAAC,CAAA,IACtB,GAAA,CAAI,SAAA,CAAU,KAAA,EAAO,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA,EAC1B;AACD,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB;AAAA,UACE,MAAM,EAAC;AAAA,UACP,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,cAAA;AAAA,UACd,QAAA,EAAU,cAAA;AAAA,UACV,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,eAAA;AAAA,YACN,KAAA;AAAA,YACA,YAAA,EAAc;AAAA;AAChB;AACF,OACD,CAAA;AAAA,IACH;AAGA,IAAA,OAAO,MAAA,CAAO,GAAG,CAAM,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,EAAA,GAAK,WAAc,QAAQ,CAAA;AAEjC,EAAA,MAAM,OAAwB,CAAC,CAAA,KAAO,GAAG,CAAC,CAAA,GAAI,IAAI,eAAA,EAAgB;AAElE,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAI,YAAA,GAAe;AACjB,MAAA,OAAO,eAAA,EAAgB;AAAA,IACzB,CAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA;AAAA,IACd,QAAA;AAAA,IACA,EAAA;AAAA,IACA,QAAA,EAAU,eAAe,QAAQ,CAAA;AAAA,IACjC,IAAA,EAAM,aAAa,QAAQ;AAAA,GAC7B;AACF,CAAA;;;;"}
|
package/dist/index.mjs
CHANGED
|
@@ -15,7 +15,9 @@ export { brandedString, simpleBrandedString } from './brand/branded-string.mjs';
|
|
|
15
15
|
export { intersection } from './compose/intersection.mjs';
|
|
16
16
|
export { union } from './compose/union.mjs';
|
|
17
17
|
export { enumType } from './enum/enum.mjs';
|
|
18
|
+
export { intRangeInclusive } from './enum/int-range-inclusive.mjs';
|
|
18
19
|
export { intRange } from './enum/int-range.mjs';
|
|
20
|
+
export { uintRangeInclusive } from './enum/uint-range-inclusive.mjs';
|
|
19
21
|
export { uintRange } from './enum/uint-range.mjs';
|
|
20
22
|
export { literal } from './other-types/literal.mjs';
|
|
21
23
|
export { MapType } from './other-types/map.mjs';
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int8.d.mts","sourceRoot":"","sources":["../../src/predefined/int8.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,IAAI,kBAAkB,IAAI,KAAO,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"int8.d.mts","sourceRoot":"","sources":["../../src/predefined/int8.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,IAAI,kBAAkB,IAAI,KAAO,IAAI,CAAC,IAAI,CAChB,CAAC"}
|
package/dist/predefined/int8.mjs
CHANGED
|
@@ -3,11 +3,7 @@ import '@sindresorhus/is';
|
|
|
3
3
|
import '../other-types/unknown.mjs';
|
|
4
4
|
import { intRange } from '../enum/int-range.mjs';
|
|
5
5
|
|
|
6
|
-
const int8 = (defaultValue = 0) => intRange({
|
|
7
|
-
start: -128,
|
|
8
|
-
end: 128,
|
|
9
|
-
defaultValue
|
|
10
|
-
});
|
|
6
|
+
const int8 = (defaultValue = 0) => intRange(-128, 128, { defaultValue });
|
|
11
7
|
|
|
12
8
|
export { int8 };
|
|
13
9
|
//# sourceMappingURL=int8.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int8.mjs","sources":["../../src/predefined/int8.mts"],"sourcesContent":["import { type Int8 } from 'ts-type-forge';\nimport { intRange } from '../enum/index.mjs';\nimport { type Type } from '../type.mjs';\n\nexport const int8 = (defaultValue: Int8 = 0): Type<Int8> =>\n intRange(
|
|
1
|
+
{"version":3,"file":"int8.mjs","sources":["../../src/predefined/int8.mts"],"sourcesContent":["import { type Int8 } from 'ts-type-forge';\nimport { intRange } from '../enum/index.mjs';\nimport { type Type } from '../type.mjs';\n\nexport const int8 = (defaultValue: Int8 = 0): Type<Int8> =>\n intRange(-128, 128, { defaultValue });\n"],"names":[],"mappings":";;;;;AAIO,MAAM,IAAA,GAAO,CAAC,YAAA,GAAqB,CAAA,KACxC,SAAS,IAAA,EAAM,GAAA,EAAK,EAAE,YAAA,EAAc;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint8.d.mts","sourceRoot":"","sources":["../../src/predefined/uint8.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,KAAK,kBAAkB,KAAK,KAAO,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"uint8.d.mts","sourceRoot":"","sources":["../../src/predefined/uint8.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,KAAK,kBAAkB,KAAK,KAAO,IAAI,CAAC,KAAK,CACrB,CAAC"}
|
|
@@ -3,11 +3,7 @@ import '@sindresorhus/is';
|
|
|
3
3
|
import '../other-types/unknown.mjs';
|
|
4
4
|
import { uintRange } from '../enum/uint-range.mjs';
|
|
5
5
|
|
|
6
|
-
const uint8 = (defaultValue = 0) => uintRange({
|
|
7
|
-
start: 0,
|
|
8
|
-
end: 256,
|
|
9
|
-
defaultValue
|
|
10
|
-
});
|
|
6
|
+
const uint8 = (defaultValue = 0) => uintRange(0, 256, { defaultValue });
|
|
11
7
|
|
|
12
8
|
export { uint8 };
|
|
13
9
|
//# sourceMappingURL=uint8.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint8.mjs","sources":["../../src/predefined/uint8.mts"],"sourcesContent":["import { type Uint8 } from 'ts-type-forge';\nimport { uintRange } from '../enum/index.mjs';\nimport { type Type } from '../type.mjs';\n\nexport const uint8 = (defaultValue: Uint8 = 0): Type<Uint8> =>\n uintRange(
|
|
1
|
+
{"version":3,"file":"uint8.mjs","sources":["../../src/predefined/uint8.mts"],"sourcesContent":["import { type Uint8 } from 'ts-type-forge';\nimport { uintRange } from '../enum/index.mjs';\nimport { type Type } from '../type.mjs';\n\nexport const uint8 = (defaultValue: Uint8 = 0): Type<Uint8> =>\n uintRange(0, 256, { defaultValue });\n"],"names":[],"mappings":";;;;;AAIO,MAAM,KAAA,GAAQ,CAAC,YAAA,GAAsB,CAAA,KAC1C,UAAU,CAAA,EAAG,GAAA,EAAK,EAAE,YAAA,EAAc;;;;"}
|
|
@@ -10,6 +10,10 @@ export type ValidationErrorDetails = Readonly<{
|
|
|
10
10
|
kind: 'integer-range';
|
|
11
11
|
start: number;
|
|
12
12
|
endExclusive: number;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'integer-range-inclusive';
|
|
15
|
+
start: number;
|
|
16
|
+
endInclusive: number;
|
|
13
17
|
} | {
|
|
14
18
|
kind: 'tuple-length';
|
|
15
19
|
expectedLength: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-error.d.mts","sourceRoot":"","sources":["../../src/utils/validation-error.mts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation-error.d.mts","sourceRoot":"","sources":["../../src/utils/validation-error.mts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,8 @@ const createDetailsMessage = (error, actualValue) => {
|
|
|
46
46
|
return `expected <${error.expectedType}> but ${typedValueClause(actualValue)} was passed.`;
|
|
47
47
|
case "integer-range":
|
|
48
48
|
return `expected an integer between ${error.details.start} and ${error.details.endExclusive - 1} but ${bareValueClause(actualValue)} was passed.`;
|
|
49
|
+
case "integer-range-inclusive":
|
|
50
|
+
return `expected an integer between ${error.details.start} and ${error.details.endInclusive} but ${bareValueClause(actualValue)} was passed.`;
|
|
49
51
|
case "tuple-length":
|
|
50
52
|
return `expected tuple of length ${error.details.expectedLength} but length ${error.details.actualLength} was passed.`;
|
|
51
53
|
case "array-length":
|