ts-fortress 6.2.5 → 6.4.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 +6 -6
- package/dist/array/array-at-least-length.mjs +1 -1
- package/dist/array/array-at-least-length.mjs.map +1 -1
- package/dist/array/array-of-length.mjs +2 -2
- package/dist/array/array-of-length.mjs.map +1 -1
- package/dist/array/array.mjs +1 -1
- package/dist/array/array.mjs.map +1 -1
- package/dist/array/non-empty-array.mjs +1 -1
- package/dist/array/non-empty-array.mjs.map +1 -1
- package/dist/array/tuple.d.mts.map +1 -1
- package/dist/array/tuple.mjs +2 -1
- package/dist/array/tuple.mjs.map +1 -1
- package/dist/compose/intersection.mjs +1 -1
- package/dist/compose/intersection.mjs.map +1 -1
- package/dist/compose/merge-records.mjs +1 -1
- package/dist/compose/merge-records.mjs.map +1 -1
- package/dist/entry-point.mjs +1 -0
- package/dist/entry-point.mjs.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/other-types/index.d.mts +1 -0
- package/dist/other-types/index.d.mts.map +1 -1
- package/dist/other-types/index.mjs +1 -0
- package/dist/other-types/index.mjs.map +1 -1
- package/dist/other-types/map.mjs +1 -1
- package/dist/other-types/map.mjs.map +1 -1
- package/dist/other-types/recursion.d.mts +28 -1
- package/dist/other-types/recursion.d.mts.map +1 -1
- package/dist/other-types/recursion.mjs +28 -1
- package/dist/other-types/recursion.mjs.map +1 -1
- package/dist/other-types/set.mjs +1 -1
- package/dist/other-types/set.mjs.map +1 -1
- package/dist/other-types/template-literal.d.mts +85 -0
- package/dist/other-types/template-literal.d.mts.map +1 -0
- package/dist/other-types/template-literal.mjs +118 -0
- package/dist/other-types/template-literal.mjs.map +1 -0
- package/dist/other-types/unknown.d.mts.map +1 -1
- package/dist/other-types/unknown.mjs.map +1 -1
- package/dist/primitives/bigint.d.mts.map +1 -1
- package/dist/primitives/bigint.mjs +3 -2
- package/dist/primitives/bigint.mjs.map +1 -1
- package/dist/primitives/number.d.mts.map +1 -1
- package/dist/primitives/number.mjs +3 -2
- package/dist/primitives/number.mjs.map +1 -1
- package/dist/primitives/string.d.mts.map +1 -1
- package/dist/primitives/string.mjs +3 -2
- package/dist/primitives/string.mjs.map +1 -1
- package/dist/record/key-value-record.mjs +1 -1
- package/dist/record/key-value-record.mjs.map +1 -1
- package/dist/record/optional.d.mts +71 -1
- package/dist/record/optional.d.mts.map +1 -1
- package/dist/record/optional.mjs +80 -3
- package/dist/record/optional.mjs.map +1 -1
- package/dist/record/record.d.mts.map +1 -1
- package/dist/record/record.mjs +31 -7
- package/dist/record/record.mjs.map +1 -1
- package/dist/utils/create-assert-fn.mjs.map +1 -1
- package/dist/utils/create-is-fn.d.mts.map +1 -1
- package/dist/utils/create-is-fn.mjs +1 -1
- package/dist/utils/create-is-fn.mjs.map +1 -1
- package/dist/utils/validation-error.d.mts +2 -0
- package/dist/utils/validation-error.d.mts.map +1 -1
- package/dist/utils/validation-error.mjs +6 -2
- package/dist/utils/validation-error.mjs.map +1 -1
- package/package.json +14 -10
- package/src/array/array-at-least-length.mts +1 -1
- package/src/array/array-at-least-length.test.mts +9 -9
- package/src/array/array-of-length.mts +2 -2
- package/src/array/array-of-length.test.mts +10 -10
- package/src/array/array.mts +1 -1
- package/src/array/array.test.mts +7 -7
- package/src/array/non-empty-array.mts +1 -1
- package/src/array/non-empty-array.test.mts +10 -10
- package/src/array/tuple.mts +2 -1
- package/src/array/tuple.test.mts +10 -10
- package/src/compose/intersection.mts +1 -1
- package/src/compose/intersection.test.mts +7 -7
- package/src/compose/merge-records.mts +1 -1
- package/src/compose/merge-records.test.mts +6 -6
- package/src/compose/union-literal-array.test.mts +3 -3
- package/src/compose/union-mixed.test.mts +5 -5
- package/src/compose/union-nested-array.test.mts +7 -7
- package/src/compose/union-nested-record.test.mts +6 -6
- package/src/compose/union-primitive-array.test.mts +6 -6
- package/src/compose/union-record-array.test.mts +7 -7
- package/src/compose/union-record-primitive.test.mts +4 -4
- package/src/compose/union-records.test.mts +6 -6
- package/src/compose/union.test.mts +3 -3
- package/src/other-types/index.mts +1 -0
- package/src/other-types/map.mts +1 -1
- package/src/other-types/recursion.mts +28 -1
- package/src/other-types/recursion.test.mts +657 -143
- package/src/other-types/set.mts +1 -1
- package/src/other-types/set.test.mts +2 -2
- package/src/other-types/template-literal.mts +131 -0
- package/src/other-types/template-literal.test.mts +314 -0
- package/src/other-types/unknown.mts +12 -11
- package/src/predefined/brand/number/non-zero-finite-number.test.mts +2 -3
- package/src/predefined/brand/number/non-zero-safe-int.test.mts +2 -3
- package/src/predefined/brand/number/positive-finite-number.test.mts +2 -3
- package/src/primitives/bigint.mts +5 -2
- package/src/primitives/number.mts +5 -2
- package/src/primitives/string.mts +5 -2
- package/src/record/key-value-record.mts +1 -1
- package/src/record/key-value-record.test.mts +8 -8
- package/src/record/omit.test.mts +12 -12
- package/src/record/optional.mts +94 -6
- package/src/record/optional.test.mts +3 -1
- package/src/record/partial.test.mts +27 -27
- package/src/record/pick.test.mts +13 -13
- package/src/record/record-allow-excess-properties.test.mts +10 -10
- package/src/record/record-strict-composition-simple.test.mts +35 -12
- package/src/record/record-strict-composition.test.mts +45 -25
- package/src/record/record.mts +46 -12
- package/src/record/record.test.mts +22 -22
- package/src/record/required.test.mts +31 -31
- package/src/record/strict-record.test.mts +24 -12
- package/src/utils/create-assert-fn.mts +1 -1
- package/src/utils/create-is-fn.mts +1 -1
- package/src/utils/validation-error.mts +20 -12
- package/src/utils/validation-error.test.mts +4 -4
package/README.md
CHANGED
|
@@ -127,7 +127,7 @@ const partialData = {
|
|
|
127
127
|
// notifications missing - will be filled with default
|
|
128
128
|
},
|
|
129
129
|
// age, email, tags missing - will be filled with defaults
|
|
130
|
-
};
|
|
130
|
+
} as const;
|
|
131
131
|
|
|
132
132
|
const filledData = UserProfile.fill(partialData);
|
|
133
133
|
|
|
@@ -534,7 +534,7 @@ const User = t.record({
|
|
|
534
534
|
type User = t.TypeOf<typeof User>;
|
|
535
535
|
|
|
536
536
|
// Use defaultValue for initialization
|
|
537
|
-
const newUser: User = { ...User.defaultValue, id: 'user-123' };
|
|
537
|
+
const newUser: User = { ...User.defaultValue, id: 'user-123' } as const;
|
|
538
538
|
|
|
539
539
|
// This default value filling process can also be written as follows:
|
|
540
540
|
const newUser2: User = User.fill({ id: 'user-456' });
|
|
@@ -645,13 +645,13 @@ const PermissiveUserType = t.record(
|
|
|
645
645
|
);
|
|
646
646
|
|
|
647
647
|
// Example usage - both StrictUserType and StrictUserTypeAlias behave identically
|
|
648
|
-
const strictData = { id: '123', name: 'John', extra: 'not allowed' };
|
|
648
|
+
const strictData = { id: '123', name: 'John', extra: 'not allowed' } as const;
|
|
649
649
|
|
|
650
650
|
assert.isFalse(StrictUserType.is(strictData)); // 'extra' property causes rejection
|
|
651
651
|
|
|
652
652
|
assert.isFalse(StrictUserTypeAlias.is(strictData)); // same as above
|
|
653
653
|
|
|
654
|
-
const permissiveData = { id: '123', name: 'John', extra: 'allowed' };
|
|
654
|
+
const permissiveData = { id: '123', name: 'John', extra: 'allowed' } as const;
|
|
655
655
|
|
|
656
656
|
assert.isTrue(PermissiveUserType.is(permissiveData)); // 'extra' property is allowed
|
|
657
657
|
|
|
@@ -927,7 +927,7 @@ const User = t.record({
|
|
|
927
927
|
|
|
928
928
|
type User = t.TypeOf<typeof User>;
|
|
929
929
|
|
|
930
|
-
const invalidData = { name: 123, age: 'not a number' };
|
|
930
|
+
const invalidData = { name: 123, age: 'not a number' } as const;
|
|
931
931
|
|
|
932
932
|
const result = User.validate(invalidData);
|
|
933
933
|
|
|
@@ -986,7 +986,7 @@ const StrictType = t.record(
|
|
|
986
986
|
},
|
|
987
987
|
);
|
|
988
988
|
|
|
989
|
-
const dataWithExcess = { name: 'John', age: 30, extra: 'not allowed' };
|
|
989
|
+
const dataWithExcess = { name: 'John', age: 30, extra: 'not allowed' } as const;
|
|
990
990
|
|
|
991
991
|
const strictResult = StrictType.validate(dataWithExcess);
|
|
992
992
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-at-least-length.mjs","sources":["../../src/array/array-at-least-length.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAWO,MAAM,kBAAkB,GAAG,CAChC,IAAO,EACP,WAAoB,EACpB,OAKC,KAC8B;AAG/B,IAAA,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,gBAAA,EAAmB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,GAAG;IAE1E,MAAM,eAAe,GAAG,eAAe,CACrC,MACE,OAAO,EAAE,YAAY;;QAEpB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAO,CACpD;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,SAAS,EAAE,IAAI;wBACf,YAAY,EAAE,CAAC,CAAC,MAAM;AACvB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"array-at-least-length.mjs","sources":["../../src/array/array-at-least-length.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAWO,MAAM,kBAAkB,GAAG,CAChC,IAAO,EACP,WAAoB,EACpB,OAKC,KAC8B;AAG/B,IAAA,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,gBAAA,EAAmB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,GAAG;IAE1E,MAAM,eAAe,GAAG,eAAe,CACrC,MACE,OAAO,EAAE,YAAY;;QAEpB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAO,CACpD;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,SAAS,EAAE,IAAI;wBACf,YAAY,EAAE,CAAC,CAAC,MAAM;AACvB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;;AAGA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAiB,CAAC;AACrC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,GAAG,CAAC,OAAO,CAAC,CAAC;AACX;;YAEG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAa;UACjE,eAAe,EAAE;IAEvB,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5B,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;KACnC;AACH;;;;"}
|
|
@@ -20,7 +20,7 @@ const arrayOfLength = (size, elementType, options) => {
|
|
|
20
20
|
}),
|
|
21
21
|
]);
|
|
22
22
|
}
|
|
23
|
-
if (a
|
|
23
|
+
if (!Arr.isArrayOfLength(a, size)) {
|
|
24
24
|
return Result.err([
|
|
25
25
|
{
|
|
26
26
|
path: [],
|
|
@@ -43,7 +43,7 @@ const arrayOfLength = (size, elementType, options) => {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
|
-
if (errors
|
|
46
|
+
if (Arr.isNonEmpty(errors)) {
|
|
47
47
|
return Result.err(errors);
|
|
48
48
|
}
|
|
49
49
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-of-length.mjs","sources":["../../src/array/array-of-length.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAWO,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,WAAoB,EACpB,OAKC,KAC4B;AAG7B,IAAA,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,cAAA,EAAiB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,GAAG;IAExE,MAAM,eAAe,GAAG,eAAe,CACrC,MACE,OAAO,EAAE,YAAY;;QAEpB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAO,CACpD;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;
|
|
1
|
+
{"version":3,"file":"array-of-length.mjs","sources":["../../src/array/array-of-length.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAWO,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,WAAoB,EACpB,OAKC,KAC4B;AAG7B,IAAA,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,cAAA,EAAiB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,GAAG;IAExE,MAAM,eAAe,GAAG,eAAe,CACrC,MACE,OAAO,EAAE,YAAY;;QAEpB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAO,CACpD;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;QAEA,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,cAAc;AACpB,wBAAA,cAAc,EAAE,IAAI;wBACpB,YAAY,EAAE,CAAC,CAAC,MAAM;AACvB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;;AAGA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAiB,CAAC;AACrC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;UACV,eAAe;AACjB;;YAEG,GAAG,CAAC,GAAG,CACN,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EACb,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAa,CACpC;IAEb,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5B,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;KACnC;AACH;;;;"}
|
package/dist/array/array.mjs
CHANGED
package/dist/array/array.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.mjs","sources":["../../src/array/array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAWa,KAAK,GAAG,CACnB,WAAoB,EACpB,OAKC,KACqB;IAGtB,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAA,EAAG,WAAW,CAAC,QAAQ,CAAA,EAAA,CAAI;AAEjE,IAAA,MAAM,eAAe,GAAG,eAAe,CAAC,MAAS,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;AAE7E,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"array.mjs","sources":["../../src/array/array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAWa,KAAK,GAAG,CACnB,WAAoB,EACpB,OAKC,KACqB;IAGtB,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAA,EAAG,WAAW,CAAC,QAAQ,CAAA,EAAA,CAAI;AAEjE,IAAA,MAAM,eAAe,GAAG,eAAe,CAAC,MAAS,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;AAE7E,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;;AAGA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAM,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzE,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-empty-array.mjs","sources":["../../src/array/non-empty-array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAWa,aAAa,GAAG,CAC3B,WAAoB,EACpB,OAKC,KACyB;IAG1B,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,cAAA,EAAiB,WAAW,CAAC,QAAQ,CAAA,CAAA,CAAG;IAE/D,MAAM,eAAe,GAAG,eAAe,CACrC,MAAS,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAC5E;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,iBAAiB;AACxB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"non-empty-array.mjs","sources":["../../src/array/non-empty-array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAWa,aAAa,GAAG,CAC3B,WAAoB,EACpB,OAKC,KACyB;IAG1B,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,cAAA,EAAiB,WAAW,CAAC,QAAQ,CAAA,CAAA,CAAG;IAE/D,MAAM,eAAe,GAAG,eAAe,CACrC,MAAS,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAC5E;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,iBAAiB;AACxB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;;AAGA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAiB,CAAC;AACrC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AAChC,UAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;UACrC,eAAe,EAAE;IAEvB,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuple.d.mts","sourceRoot":"","sources":["../../src/array/tuple.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAUrD,KAAK,QAAQ,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC;KAC1D,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,EAC5D,OAAO,CAAC,EACR,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"tuple.d.mts","sourceRoot":"","sources":["../../src/array/tuple.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAUrD,KAAK,QAAQ,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC;KAC1D,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,EAC5D,OAAO,CAAC,EACR,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAyElB,CAAC"}
|
package/dist/array/tuple.mjs
CHANGED
|
@@ -18,6 +18,7 @@ const tuple = (types, options) => {
|
|
|
18
18
|
}),
|
|
19
19
|
]);
|
|
20
20
|
}
|
|
21
|
+
// eslint-disable-next-line ts-data-forge/prefer-arr-is-array-of-length
|
|
21
22
|
if (a.length !== types.length) {
|
|
22
23
|
return Result.err([
|
|
23
24
|
{
|
|
@@ -41,7 +42,7 @@ const tuple = (types, options) => {
|
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
});
|
|
44
|
-
if (errors
|
|
45
|
+
if (Arr.isNonEmpty(errors)) {
|
|
45
46
|
return Result.err(errors);
|
|
46
47
|
}
|
|
47
48
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
package/dist/array/tuple.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuple.mjs","sources":["../../src/array/tuple.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAea,KAAK,GAAG,CACnB,KAAQ,EACR,OAIC,KACoB;AAGrB,IAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO;IAE7C,MAAM,eAAe,GAAG,eAAe,CACrC,MAAmB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAgB,CACxE;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ
|
|
1
|
+
{"version":3,"file":"tuple.mjs","sources":["../../src/array/tuple.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAea,KAAK,GAAG,CACnB,KAAQ,EACR,OAIC,KACoB;AAGrB,IAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO;IAE7C,MAAM,eAAe,GAAG,eAAe,CACrC,MAAmB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAgB,CACxE;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;;QAGA,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;YAC7B,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,cAAc;wBACpB,cAAc,EAAE,KAAK,CAAC,MAAM;wBAC5B,YAAY,EAAE,CAAC,CAAC,MAAM;AACvB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;YAC/D,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEhC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;;AAGA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAM,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;UACV,eAAe;AACjB;YACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAiB;IAExD,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.mjs","sources":["../../src/compose/intersection.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAUO,MAAM,YAAY,GAAG,CAC1B,KAAY,EACZ,WAAoC,EACpC,OAIC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,CAAA,EAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5B,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM;AACJ,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,QAAQ,EAAE,cAAc;AACxB,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACxC,yBAAA;qBACwB;AAE3B,oBAAA,OAAO,GAAG,CAAC,KAAK;;;AAGtB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"intersection.mjs","sources":["../../src/compose/intersection.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAUO,MAAM,YAAY,GAAG,CAC1B,KAAY,EACZ,WAAoC,EACpC,OAIC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,CAAA,EAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5B,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM;AACJ,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,QAAQ,EAAE,cAAc;AACxB,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACxC,yBAAA;qBACwB;AAE3B,oBAAA,OAAO,GAAG,CAAC,KAAK;;;AAGtB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;;;AAI3B,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAM,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,CAAC;IAElC,MAAM,IAAI,GAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtE,OAAO;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,IAAI;QACJ,QAAQ;QACR,EAAE;AACF,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-records.mjs","sources":["../../src/compose/merge-records.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAgBa,YAAY,GAAG,CAG1B,KAAY,EACZ,OAKC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,CAAA,EAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5B,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM;AACJ,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,QAAQ,EAAE,cAAc;AACxB,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACxC,yBAAA;qBACwB;AAE3B,oBAAA,OAAO,GAAG,CAAC,KAAK;;;AAGtB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"merge-records.mjs","sources":["../../src/compose/merge-records.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAgBa,YAAY,GAAG,CAG1B,KAAY,EACZ,OAKC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,CAAA,EAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5B,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM;AACJ,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,QAAQ,EAAE,cAAc;AACxB,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACxC,yBAAA;qBACwB;AAE3B,oBAAA,OAAO,GAAG,CAAC,KAAK;;;AAGtB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;;;AAI3B,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAM,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,CAAC;IAElC,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,EAAE,CAAC,CAAC;AACF,UAAE;WACC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9B,YAAA,iBAAiB,CACf,QAAQ,CAAC,CAAC;kBACN,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,kBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAChC,CAAC;IAER,MAAM,eAAe,GAAG,eAAe,CACrC,MACE,OAAO,EAAE,WAAW,EAAE,YAAY;AAClC,QAAA,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CACtD;IAED,OAAO;AACL,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;SACzB;QACD,IAAI;QACJ,QAAQ;QACR,EAAE;AACF,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;AA2JA,MAAM,iBAAiB,GAAG,CACxB,IAAQ;AAER;AACA,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAqB;;;;"}
|
package/dist/entry-point.mjs
CHANGED
|
@@ -18,6 +18,7 @@ export { MapType } from './other-types/map.mjs';
|
|
|
18
18
|
export { recursion } from './other-types/recursion.mjs';
|
|
19
19
|
export { refine } from './other-types/refine.mjs';
|
|
20
20
|
export { SetType } from './other-types/set.mjs';
|
|
21
|
+
export { templateLiteral } from './other-types/template-literal.mjs';
|
|
21
22
|
export { unknown } from './other-types/unknown.mjs';
|
|
22
23
|
export { finiteNumber } from './predefined/brand/number/finite-number.mjs';
|
|
23
24
|
export { int } from './predefined/brand/number/int.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/index.mjs
CHANGED
|
@@ -17,6 +17,7 @@ export { MapType } from './other-types/map.mjs';
|
|
|
17
17
|
export { recursion } from './other-types/recursion.mjs';
|
|
18
18
|
export { refine } from './other-types/refine.mjs';
|
|
19
19
|
export { SetType } from './other-types/set.mjs';
|
|
20
|
+
export { templateLiteral } from './other-types/template-literal.mjs';
|
|
20
21
|
export { unknown } from './other-types/unknown.mjs';
|
|
21
22
|
export { finiteNumber } from './predefined/brand/number/finite-number.mjs';
|
|
22
23
|
export { int } from './predefined/brand/number/int.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":"index.d.mts","sourceRoot":"","sources":["../../src/other-types/index.mts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/other-types/index.mts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC"}
|
|
@@ -3,5 +3,6 @@ export { MapType } from './map.mjs';
|
|
|
3
3
|
export { recursion } from './recursion.mjs';
|
|
4
4
|
export { refine } from './refine.mjs';
|
|
5
5
|
export { SetType } from './set.mjs';
|
|
6
|
+
export { templateLiteral } from './template-literal.mjs';
|
|
6
7
|
export { unknown } from './unknown.mjs';
|
|
7
8
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/dist/other-types/map.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.mjs","sources":["../../src/other-types/map.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAWA,MAAM,KAAK,GAAG,CAAC,KAAc,KAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,cAAc;AAOnD,MAAM,OAAO,GAAG,CACrB,OAAU,EACV,SAAY,EACZ,OAIC,KAC4B;AAG7B,IAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK;IAE3C,MAAM,eAAe,GAAG,eAAe,CAAC,MAAS,IAAI,GAAG,EAAE,CAAC;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACb,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,KAAK;oBACnB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChC;oBACE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE/B,oBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACrB,MAAM;AACJ,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,WAAW,EAAE,CAAC;AACd,4BAAA,YAAY,EAAE,QAAQ;4BACtB,QAAQ;AACR,4BAAA,OAAO,EAAE;AACP,gCAAA,IAAI,EAAE,WAAW;AACjB,gCAAA,KAAK,EAAE,KAAK;gCACZ,YAAY,EAAE,OAAO,CAAC,QAAQ;AAC/B,6BAAA;yBACwB;AAE3B,wBAAA,OAAO,GAAG,CAAC,KAAK;oBAClB;gBACF;gBAEA;oBACE,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEjC,oBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACrB,MAAM;AACJ,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,WAAW,EAAE,CAAC;AACd,4BAAA,YAAY,EAAE,QAAQ;4BACtB,QAAQ;AACR,4BAAA,OAAO,EAAE;AACP,gCAAA,IAAI,EAAE,WAAW;AACjB,gCAAA,KAAK,EAAE,OAAO;gCACd,YAAY,EAAE,SAAS,CAAC,QAAQ;AACjC,6BAAA;yBACwB;AAE3B,wBAAA,OAAO,6BAA6B,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;oBACrE;gBACF;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"map.mjs","sources":["../../src/other-types/map.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAWA,MAAM,KAAK,GAAG,CAAC,KAAc,KAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,cAAc;AAOnD,MAAM,OAAO,GAAG,CACrB,OAAU,EACV,SAAY,EACZ,OAIC,KAC4B;AAG7B,IAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK;IAE3C,MAAM,eAAe,GAAG,eAAe,CAAC,MAAS,IAAI,GAAG,EAAE,CAAC;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACb,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,KAAK;oBACnB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChC;oBACE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE/B,oBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACrB,MAAM;AACJ,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,WAAW,EAAE,CAAC;AACd,4BAAA,YAAY,EAAE,QAAQ;4BACtB,QAAQ;AACR,4BAAA,OAAO,EAAE;AACP,gCAAA,IAAI,EAAE,WAAW;AACjB,gCAAA,KAAK,EAAE,KAAK;gCACZ,YAAY,EAAE,OAAO,CAAC,QAAQ;AAC/B,6BAAA;yBACwB;AAE3B,wBAAA,OAAO,GAAG,CAAC,KAAK;oBAClB;gBACF;gBAEA;oBACE,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEjC,oBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACrB,MAAM;AACJ,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,WAAW,EAAE,CAAC;AACd,4BAAA,YAAY,EAAE,QAAQ;4BACtB,QAAQ;AACR,4BAAA,OAAO,EAAE;AACP,gCAAA,IAAI,EAAE,WAAW;AACjB,gCAAA,KAAK,EAAE,OAAO;gCACd,YAAY,EAAE,SAAS,CAAC,QAAQ;AACjC,6BAAA;yBACwB;AAE3B,wBAAA,OAAO,6BAA6B,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;oBACrE;gBACF;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;AAEA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAM,CAAC;AAC1B,IAAA,CAAC;IAED,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,CAAC,KAAK,CAAC,CAAC;UACJ,eAAe;AACjB,UAAG,IAAI,GAAG,CACN,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAC5B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAC7C,CACI;IAEb,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;;;;"}
|
|
@@ -106,13 +106,40 @@ import { type Type } from '../type.mjs';
|
|
|
106
106
|
* );
|
|
107
107
|
* ```
|
|
108
108
|
*
|
|
109
|
+
* @example
|
|
110
|
+
* // Mutually recursive types with optional fields
|
|
111
|
+
* ```ts
|
|
112
|
+
* import * as t from 'ts-fortress';
|
|
113
|
+
*
|
|
114
|
+
* type EvenNumber = Readonly<{ type: 'even'; next?: OddNumber }>;
|
|
115
|
+
*
|
|
116
|
+
* type OddNumber = Readonly<{ type: 'odd'; next?: EvenNumber }>;
|
|
117
|
+
*
|
|
118
|
+
* // When using optional fields in mutually recursive types,
|
|
119
|
+
* // use forceUndefinedDefault to avoid infinite loops when accessing defaultValue
|
|
120
|
+
* const EvenNumber: t.Type<EvenNumber> = t.recursion('EvenNumber', () =>
|
|
121
|
+
* t.record({
|
|
122
|
+
* type: t.literal('even'),
|
|
123
|
+
* next: t.optional(OddNumber, { forceUndefinedDefault: true }),
|
|
124
|
+
* }),
|
|
125
|
+
* );
|
|
126
|
+
*
|
|
127
|
+
* const OddNumber: t.Type<OddNumber> = t.recursion('OddNumber', () =>
|
|
128
|
+
* t.record({
|
|
129
|
+
* type: t.literal('odd'),
|
|
130
|
+
* next: t.optional(EvenNumber, { forceUndefinedDefault: true }),
|
|
131
|
+
* }),
|
|
132
|
+
* );
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
109
135
|
* @remarks
|
|
110
136
|
* **Important Notes:**
|
|
111
137
|
* - The `definition` function is called lazily on first use, enabling self-reference
|
|
112
138
|
* - For mutually recursive types, accessing `defaultValue` may cause infinite loops
|
|
113
139
|
* unless proper precautions are taken:
|
|
114
140
|
* 1. Place terminal types (like `nullType`) first in union types, OR
|
|
115
|
-
* 2. Provide an explicit `defaultValue` in options
|
|
141
|
+
* 2. Provide an explicit `defaultValue` in options, OR
|
|
142
|
+
* 3. Use `optional()` with `forceUndefinedDefault: true` for optional fields
|
|
116
143
|
* - The type definition itself (validation, type checking) works fine regardless of
|
|
117
144
|
* union ordering or defaultValue specification
|
|
118
145
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursion.d.mts","sourceRoot":"","sources":["../../src/other-types/recursion.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC
|
|
1
|
+
{"version":3,"file":"recursion.d.mts","sourceRoot":"","sources":["../../src/other-types/recursion.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+IG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,UAAU,MAAM,EAChB,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,EACzB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC,CACH,KACA,IAAI,CAAC,CAAC,CAwBR,CAAC"}
|
|
@@ -110,13 +110,40 @@ import { createIsFn } from '../utils/create-is-fn.mjs';
|
|
|
110
110
|
* );
|
|
111
111
|
* ```
|
|
112
112
|
*
|
|
113
|
+
* @example
|
|
114
|
+
* // Mutually recursive types with optional fields
|
|
115
|
+
* ```ts
|
|
116
|
+
* import * as t from 'ts-fortress';
|
|
117
|
+
*
|
|
118
|
+
* type EvenNumber = Readonly<{ type: 'even'; next?: OddNumber }>;
|
|
119
|
+
*
|
|
120
|
+
* type OddNumber = Readonly<{ type: 'odd'; next?: EvenNumber }>;
|
|
121
|
+
*
|
|
122
|
+
* // When using optional fields in mutually recursive types,
|
|
123
|
+
* // use forceUndefinedDefault to avoid infinite loops when accessing defaultValue
|
|
124
|
+
* const EvenNumber: t.Type<EvenNumber> = t.recursion('EvenNumber', () =>
|
|
125
|
+
* t.record({
|
|
126
|
+
* type: t.literal('even'),
|
|
127
|
+
* next: t.optional(OddNumber, { forceUndefinedDefault: true }),
|
|
128
|
+
* }),
|
|
129
|
+
* );
|
|
130
|
+
*
|
|
131
|
+
* const OddNumber: t.Type<OddNumber> = t.recursion('OddNumber', () =>
|
|
132
|
+
* t.record({
|
|
133
|
+
* type: t.literal('odd'),
|
|
134
|
+
* next: t.optional(EvenNumber, { forceUndefinedDefault: true }),
|
|
135
|
+
* }),
|
|
136
|
+
* );
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
113
139
|
* @remarks
|
|
114
140
|
* **Important Notes:**
|
|
115
141
|
* - The `definition` function is called lazily on first use, enabling self-reference
|
|
116
142
|
* - For mutually recursive types, accessing `defaultValue` may cause infinite loops
|
|
117
143
|
* unless proper precautions are taken:
|
|
118
144
|
* 1. Place terminal types (like `nullType`) first in union types, OR
|
|
119
|
-
* 2. Provide an explicit `defaultValue` in options
|
|
145
|
+
* 2. Provide an explicit `defaultValue` in options, OR
|
|
146
|
+
* 3. Use `optional()` with `forceUndefinedDefault: true` for optional fields
|
|
120
147
|
* - The type definition itself (validation, type checking) works fine regardless of
|
|
121
148
|
* union ordering or defaultValue specification
|
|
122
149
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursion.mjs","sources":["../../src/other-types/recursion.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAIA
|
|
1
|
+
{"version":3,"file":"recursion.mjs","sources":["../../src/other-types/recursion.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+IG;AACI,MAAM,SAAS,GAAG,CACvB,QAAgB,EAChB,UAAyB,EACzB,OAIC,KACU;AACX,IAAA,MAAM,eAAe,GAAG,eAAe,CACrC,MAAS,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,CAAC,YAAY,CAC9D;AAED,IAAA,MAAM,YAAY,GAAkB,eAAe,CAAC,UAAU,CAAC;AAE/D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEvE,IAAA,MAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,CAAC;AAElC,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3D,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;QACR,EAAE;AACF,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;;;;"}
|
package/dist/other-types/set.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.mjs","sources":["../../src/other-types/set.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAUA,MAAM,KAAK,GAAG,CAAC,KAAc,KAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,cAAc;MAI7C,OAAO,GAAG,CACrB,WAAc,EACd,OAIC,KACyB;AAG1B,IAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK;IAE3C,MAAM,eAAe,GAAG,eAAe,CAAC,MAAS,IAAI,GAAG,EAAE,CAAC;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACb,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,KAAK;oBACnB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;YAC/D,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;AAEzC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM;AACJ,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,YAAY,EAAE,QAAQ;wBACtB,QAAQ;AACR,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,aAAa;4BACnB,YAAY,EAAE,WAAW,CAAC,QAAQ;AACnC,yBAAA;qBACwB;AAE3B,oBAAA,OAAO,GAAG,CAAC,KAAK;gBAClB;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"set.mjs","sources":["../../src/other-types/set.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAUA,MAAM,KAAK,GAAG,CAAC,KAAc,KAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,cAAc;MAI7C,OAAO,GAAG,CACrB,WAAc,EACd,OAIC,KACyB;AAG1B,IAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK;IAE3C,MAAM,eAAe,GAAG,eAAe,CAAC,MAAS,IAAI,GAAG,EAAE,CAAC;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACb,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,KAAK;oBACnB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;YAC/D,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;AAEzC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM;AACJ,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,YAAY,EAAE,QAAQ;wBACtB,QAAQ;AACR,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,aAAa;4BACnB,YAAY,EAAE,WAAW,CAAC,QAAQ;AACnC,yBAAA;qBACwB;AAE3B,oBAAA,OAAO,GAAG,CAAC,KAAK;gBAClB;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;AAEA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAM,CAAC;AAC1B,IAAA,CAAC;IAED,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,CAAC,KAAK,CAAC,CAAC;UACJ,eAAe;AACjB,UAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAO;IAE7E,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;;;;"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type Type } from '../type.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a type validator for template literal string types.
|
|
4
|
+
*
|
|
5
|
+
* @template T - The template literal string type to validate
|
|
6
|
+
* @param options - Configuration object
|
|
7
|
+
* @param options.is - A type guard function that validates the template literal format
|
|
8
|
+
* @param options.typeName - A descriptive name for the type (e.g., 'PathString', 'UrlString')
|
|
9
|
+
* @param options.defaultValue - Default value for the type
|
|
10
|
+
*
|
|
11
|
+
* @returns A Type validator for the template literal string type
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // Path string starting with /
|
|
15
|
+
* ```ts
|
|
16
|
+
* import * as t from 'ts-fortress';
|
|
17
|
+
*
|
|
18
|
+
* type PathString = `/${string}`;
|
|
19
|
+
*
|
|
20
|
+
* const PathString = t.templateLiteral<PathString>({
|
|
21
|
+
* is: (value: unknown): value is PathString =>
|
|
22
|
+
* typeof value === 'string' && value.startsWith('/'),
|
|
23
|
+
* typeName: 'PathString',
|
|
24
|
+
* defaultValue: '/' as PathString,
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* assert.isTrue(PathString.is('/users'));
|
|
28
|
+
*
|
|
29
|
+
* assert.isTrue(PathString.is('/users/123'));
|
|
30
|
+
*
|
|
31
|
+
* assert.isFalse(PathString.is('users'));
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // URL string starting with http:// or https://
|
|
36
|
+
* ```ts
|
|
37
|
+
* import * as t from 'ts-fortress';
|
|
38
|
+
*
|
|
39
|
+
* type HttpUrl = `http://${string}` | `https://${string}`;
|
|
40
|
+
*
|
|
41
|
+
* const HttpUrl = t.templateLiteral<HttpUrl>({
|
|
42
|
+
* is: (value: unknown): value is HttpUrl =>
|
|
43
|
+
* typeof value === 'string' &&
|
|
44
|
+
* (value.startsWith('http://') || value.startsWith('https://')) &&
|
|
45
|
+
* value.length > 7,
|
|
46
|
+
* typeName: 'HttpUrl',
|
|
47
|
+
* defaultValue: 'https://example.com' as HttpUrl,
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* assert.isTrue(HttpUrl.is('https://example.com'));
|
|
51
|
+
*
|
|
52
|
+
* assert.isTrue(HttpUrl.is('http://example.com'));
|
|
53
|
+
*
|
|
54
|
+
* assert.isFalse(HttpUrl.is('ftp://example.com'));
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* // Version string like 1.2.3
|
|
59
|
+
* ```ts
|
|
60
|
+
* import * as t from 'ts-fortress';
|
|
61
|
+
*
|
|
62
|
+
* type SemVer = `${number}.${number}.${number}`;
|
|
63
|
+
*
|
|
64
|
+
* const SemVer = t.templateLiteral<SemVer>({
|
|
65
|
+
* is: (value: unknown): value is SemVer =>
|
|
66
|
+
* typeof value === 'string' && /^\d+\.\d+\.\d+$/u.test(value),
|
|
67
|
+
* typeName: 'SemVer',
|
|
68
|
+
* defaultValue: '0.0.0' as SemVer,
|
|
69
|
+
* });
|
|
70
|
+
*
|
|
71
|
+
* assert.isTrue(SemVer.is('1.2.3'));
|
|
72
|
+
*
|
|
73
|
+
* assert.isTrue(SemVer.is('10.20.30'));
|
|
74
|
+
*
|
|
75
|
+
* assert.isFalse(SemVer.is('1.2'));
|
|
76
|
+
*
|
|
77
|
+
* assert.isFalse(SemVer.is('1.2.3.4'));
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare const templateLiteral: <T extends string>({ defaultValue, is, typeName, }: Readonly<{
|
|
81
|
+
is: (value: unknown) => value is T;
|
|
82
|
+
typeName: string;
|
|
83
|
+
defaultValue: T;
|
|
84
|
+
}>) => Type<T>;
|
|
85
|
+
//# sourceMappingURL=template-literal.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-literal.d.mts","sourceRoot":"","sources":["../../src/other-types/template-literal.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,iCAI/C,QAAQ,CAAC;IACV,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC,KAAG,IAAI,CAAC,CAAC,CAmCV,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { 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 { createPrimitiveValidationError } from '../utils/validation-error.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Creates a type validator for template literal string types.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The template literal string type to validate
|
|
11
|
+
* @param options - Configuration object
|
|
12
|
+
* @param options.is - A type guard function that validates the template literal format
|
|
13
|
+
* @param options.typeName - A descriptive name for the type (e.g., 'PathString', 'UrlString')
|
|
14
|
+
* @param options.defaultValue - Default value for the type
|
|
15
|
+
*
|
|
16
|
+
* @returns A Type validator for the template literal string type
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // Path string starting with /
|
|
20
|
+
* ```ts
|
|
21
|
+
* import * as t from 'ts-fortress';
|
|
22
|
+
*
|
|
23
|
+
* type PathString = `/${string}`;
|
|
24
|
+
*
|
|
25
|
+
* const PathString = t.templateLiteral<PathString>({
|
|
26
|
+
* is: (value: unknown): value is PathString =>
|
|
27
|
+
* typeof value === 'string' && value.startsWith('/'),
|
|
28
|
+
* typeName: 'PathString',
|
|
29
|
+
* defaultValue: '/' as PathString,
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* assert.isTrue(PathString.is('/users'));
|
|
33
|
+
*
|
|
34
|
+
* assert.isTrue(PathString.is('/users/123'));
|
|
35
|
+
*
|
|
36
|
+
* assert.isFalse(PathString.is('users'));
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // URL string starting with http:// or https://
|
|
41
|
+
* ```ts
|
|
42
|
+
* import * as t from 'ts-fortress';
|
|
43
|
+
*
|
|
44
|
+
* type HttpUrl = `http://${string}` | `https://${string}`;
|
|
45
|
+
*
|
|
46
|
+
* const HttpUrl = t.templateLiteral<HttpUrl>({
|
|
47
|
+
* is: (value: unknown): value is HttpUrl =>
|
|
48
|
+
* typeof value === 'string' &&
|
|
49
|
+
* (value.startsWith('http://') || value.startsWith('https://')) &&
|
|
50
|
+
* value.length > 7,
|
|
51
|
+
* typeName: 'HttpUrl',
|
|
52
|
+
* defaultValue: 'https://example.com' as HttpUrl,
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* assert.isTrue(HttpUrl.is('https://example.com'));
|
|
56
|
+
*
|
|
57
|
+
* assert.isTrue(HttpUrl.is('http://example.com'));
|
|
58
|
+
*
|
|
59
|
+
* assert.isFalse(HttpUrl.is('ftp://example.com'));
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* // Version string like 1.2.3
|
|
64
|
+
* ```ts
|
|
65
|
+
* import * as t from 'ts-fortress';
|
|
66
|
+
*
|
|
67
|
+
* type SemVer = `${number}.${number}.${number}`;
|
|
68
|
+
*
|
|
69
|
+
* const SemVer = t.templateLiteral<SemVer>({
|
|
70
|
+
* is: (value: unknown): value is SemVer =>
|
|
71
|
+
* typeof value === 'string' && /^\d+\.\d+\.\d+$/u.test(value),
|
|
72
|
+
* typeName: 'SemVer',
|
|
73
|
+
* defaultValue: '0.0.0' as SemVer,
|
|
74
|
+
* });
|
|
75
|
+
*
|
|
76
|
+
* assert.isTrue(SemVer.is('1.2.3'));
|
|
77
|
+
*
|
|
78
|
+
* assert.isTrue(SemVer.is('10.20.30'));
|
|
79
|
+
*
|
|
80
|
+
* assert.isFalse(SemVer.is('1.2'));
|
|
81
|
+
*
|
|
82
|
+
* assert.isFalse(SemVer.is('1.2.3.4'));
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
const templateLiteral = ({ defaultValue, is, typeName, }) => {
|
|
86
|
+
const validate = (a) => {
|
|
87
|
+
if (!is(a)) {
|
|
88
|
+
return Result.err([
|
|
89
|
+
createPrimitiveValidationError({
|
|
90
|
+
actualValue: a,
|
|
91
|
+
expectedType: typeName,
|
|
92
|
+
typeName,
|
|
93
|
+
details: { kind: 'template-literal' },
|
|
94
|
+
}),
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
return Result.ok(a);
|
|
98
|
+
};
|
|
99
|
+
const fill = (a) => {
|
|
100
|
+
const result = validate(a);
|
|
101
|
+
if (Result.isOk(result)) {
|
|
102
|
+
return result.value;
|
|
103
|
+
}
|
|
104
|
+
return defaultValue;
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
typeName,
|
|
108
|
+
defaultValue,
|
|
109
|
+
fill,
|
|
110
|
+
validate,
|
|
111
|
+
is: createIsFn(validate),
|
|
112
|
+
assertIs: createAssertFn(validate),
|
|
113
|
+
cast: createCastFn(validate),
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export { templateLiteral };
|
|
118
|
+
//# sourceMappingURL=template-literal.mjs.map
|