ts-fortress 6.2.3 → 6.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +8 -1
  2. package/dist/array/array-at-least-length.d.mts +2 -2
  3. package/dist/array/array-at-least-length.d.mts.map +1 -1
  4. package/dist/array/array-at-least-length.mjs +9 -6
  5. package/dist/array/array-at-least-length.mjs.map +1 -1
  6. package/dist/array/array-of-length.d.mts +2 -2
  7. package/dist/array/array-of-length.d.mts.map +1 -1
  8. package/dist/array/array-of-length.mjs +12 -9
  9. package/dist/array/array-of-length.mjs.map +1 -1
  10. package/dist/array/array.d.mts +2 -2
  11. package/dist/array/array.d.mts.map +1 -1
  12. package/dist/array/array.mjs +7 -4
  13. package/dist/array/array.mjs.map +1 -1
  14. package/dist/array/non-empty-array.d.mts +2 -2
  15. package/dist/array/non-empty-array.d.mts.map +1 -1
  16. package/dist/array/non-empty-array.mjs +7 -4
  17. package/dist/array/non-empty-array.mjs.map +1 -1
  18. package/dist/array/tuple.d.mts +5 -5
  19. package/dist/array/tuple.d.mts.map +1 -1
  20. package/dist/array/tuple.mjs +7 -5
  21. package/dist/array/tuple.mjs.map +1 -1
  22. package/dist/brand/brand.d.mts +1 -1
  23. package/dist/brand/brand.d.mts.map +1 -1
  24. package/dist/brand/branded-number.d.mts.map +1 -1
  25. package/dist/brand/branded-number.mjs +1 -2
  26. package/dist/brand/branded-number.mjs.map +1 -1
  27. package/dist/brand/branded-string.d.mts.map +1 -1
  28. package/dist/brand/branded-string.mjs +1 -2
  29. package/dist/brand/branded-string.mjs.map +1 -1
  30. package/dist/compose/intersection.d.mts +4 -4
  31. package/dist/compose/intersection.d.mts.map +1 -1
  32. package/dist/compose/intersection.mjs.map +1 -1
  33. package/dist/compose/merge-records.d.mts +3 -3
  34. package/dist/compose/merge-records.d.mts.map +1 -1
  35. package/dist/compose/merge-records.mjs +6 -4
  36. package/dist/compose/merge-records.mjs.map +1 -1
  37. package/dist/compose/union.d.mts +2 -2
  38. package/dist/compose/union.d.mts.map +1 -1
  39. package/dist/compose/union.mjs +7 -4
  40. package/dist/compose/union.mjs.map +1 -1
  41. package/dist/enum/enum.d.mts +2 -2
  42. package/dist/enum/enum.d.mts.map +1 -1
  43. package/dist/enum/enum.mjs +8 -6
  44. package/dist/enum/enum.mjs.map +1 -1
  45. package/dist/enum/int-range.d.mts.map +1 -1
  46. package/dist/enum/int-range.mjs +8 -6
  47. package/dist/enum/int-range.mjs.map +1 -1
  48. package/dist/enum/uint-range.d.mts.map +1 -1
  49. package/dist/enum/uint-range.mjs +8 -6
  50. package/dist/enum/uint-range.mjs.map +1 -1
  51. package/dist/globals.d.mts +0 -2
  52. package/dist/other-types/map.d.mts +2 -2
  53. package/dist/other-types/map.d.mts.map +1 -1
  54. package/dist/other-types/map.mjs +8 -6
  55. package/dist/other-types/map.mjs.map +1 -1
  56. package/dist/other-types/recursion.d.mts +119 -2
  57. package/dist/other-types/recursion.d.mts.map +1 -1
  58. package/dist/other-types/recursion.mjs +121 -16
  59. package/dist/other-types/recursion.mjs.map +1 -1
  60. package/dist/other-types/set.d.mts +2 -2
  61. package/dist/other-types/set.d.mts.map +1 -1
  62. package/dist/other-types/set.mjs +8 -6
  63. package/dist/other-types/set.mjs.map +1 -1
  64. package/dist/other-types/unknown.d.mts.map +1 -1
  65. package/dist/other-types/unknown.mjs +3 -1
  66. package/dist/other-types/unknown.mjs.map +1 -1
  67. package/dist/predefined/brand/string/email.d.mts +2 -2
  68. package/dist/predefined/brand/string/email.d.mts.map +1 -1
  69. package/dist/predefined/brand/string/email.mjs.map +1 -1
  70. package/dist/predefined/brand/string/json-string.d.mts +2 -2
  71. package/dist/predefined/brand/string/json-string.d.mts.map +1 -1
  72. package/dist/predefined/brand/string/json-string.mjs.map +1 -1
  73. package/dist/predefined/brand/string/uuid.d.mts +2 -2
  74. package/dist/predefined/brand/string/uuid.d.mts.map +1 -1
  75. package/dist/predefined/brand/string/uuid.mjs.map +1 -1
  76. package/dist/primitives/bigint.d.mts +10 -10
  77. package/dist/primitives/bigint.d.mts.map +1 -1
  78. package/dist/primitives/bigint.mjs.map +1 -1
  79. package/dist/primitives/number.d.mts +10 -10
  80. package/dist/primitives/number.d.mts.map +1 -1
  81. package/dist/primitives/number.mjs.map +1 -1
  82. package/dist/primitives/string.d.mts +20 -20
  83. package/dist/primitives/string.d.mts.map +1 -1
  84. package/dist/primitives/string.mjs.map +1 -1
  85. package/dist/record/key-value-record.d.mts +2 -2
  86. package/dist/record/key-value-record.d.mts.map +1 -1
  87. package/dist/record/key-value-record.mjs.map +1 -1
  88. package/dist/record/keyof.d.mts +2 -2
  89. package/dist/record/keyof.d.mts.map +1 -1
  90. package/dist/record/keyof.mjs.map +1 -1
  91. package/dist/record/omit.d.mts +2 -2
  92. package/dist/record/omit.d.mts.map +1 -1
  93. package/dist/record/omit.mjs.map +1 -1
  94. package/dist/record/partial.d.mts +8 -8
  95. package/dist/record/partial.d.mts.map +1 -1
  96. package/dist/record/partial.mjs.map +1 -1
  97. package/dist/record/pick.d.mts +2 -2
  98. package/dist/record/pick.d.mts.map +1 -1
  99. package/dist/record/pick.mjs.map +1 -1
  100. package/dist/record/record.d.mts +4 -4
  101. package/dist/record/record.d.mts.map +1 -1
  102. package/dist/record/record.mjs +7 -5
  103. package/dist/record/record.mjs.map +1 -1
  104. package/dist/record/required.d.mts +8 -8
  105. package/dist/record/required.d.mts.map +1 -1
  106. package/dist/record/required.mjs.map +1 -1
  107. package/dist/record/valueof.d.mts +2 -2
  108. package/dist/record/valueof.d.mts.map +1 -1
  109. package/dist/record/valueof.mjs.map +1 -1
  110. package/dist/type.d.mts +4 -4
  111. package/dist/type.d.mts.map +1 -1
  112. package/package.json +25 -21
  113. package/src/array/array-at-least-length.mts +20 -12
  114. package/src/array/array-of-length.mts +26 -15
  115. package/src/array/array.mts +14 -9
  116. package/src/array/non-empty-array.mts +17 -11
  117. package/src/array/tuple.mts +17 -14
  118. package/src/brand/brand.mts +1 -1
  119. package/src/brand/branded-number.mts +2 -3
  120. package/src/brand/branded-string.mts +2 -3
  121. package/src/compose/intersection.mts +76 -59
  122. package/src/compose/merge-records.mts +89 -64
  123. package/src/compose/union-literal-array.test.mts +1 -1
  124. package/src/compose/union-nested-record.test.mts +10 -8
  125. package/src/compose/union-records.test.mts +10 -8
  126. package/src/compose/union.mts +28 -13
  127. package/src/enum/enum.mts +14 -10
  128. package/src/enum/int-range.mts +14 -6
  129. package/src/enum/uint-range.mts +8 -6
  130. package/src/globals.d.mts +0 -2
  131. package/src/other-types/map.mts +14 -10
  132. package/src/other-types/recursion.mts +128 -24
  133. package/src/other-types/recursion.test.mts +33 -1
  134. package/src/other-types/set.mts +13 -9
  135. package/src/other-types/unknown.mts +3 -1
  136. package/src/predefined/brand/string/email.mts +5 -3
  137. package/src/predefined/brand/string/json-string.mts +5 -3
  138. package/src/predefined/brand/string/uuid.mts +10 -8
  139. package/src/primitives/bigint.mts +24 -30
  140. package/src/primitives/number.mts +24 -30
  141. package/src/primitives/string.mts +53 -58
  142. package/src/record/key-value-record.mts +5 -3
  143. package/src/record/keyof.mts +17 -9
  144. package/src/record/omit.mts +19 -14
  145. package/src/record/partial.mts +25 -18
  146. package/src/record/pick.mts +19 -14
  147. package/src/record/record.mts +42 -32
  148. package/src/record/required.mts +27 -26
  149. package/src/record/valueof.mts +9 -7
  150. package/src/type.mts +9 -15
package/README.md CHANGED
@@ -548,6 +548,7 @@ const UserForm = () => {
548
548
  const [formData, setFormData] = useState<User>(User.defaultValue);
549
549
 
550
550
  // ...
551
+ IGNORE_EMBEDDING(formData, setFormData);
551
552
  };
552
553
  ```
553
554
 
@@ -716,6 +717,8 @@ assert.isTrue(t.Result.isOk(uuidResult));
716
717
 
717
718
  if (t.Result.isOk(uuidResult)) {
718
719
  const validUuid = uuidResult.value; // string, guaranteed to be valid Uuid format
720
+
721
+ IGNORE_EMBEDDING(validUuid);
719
722
  }
720
723
 
721
724
  const positiveResult = PositiveNumber.validate(42);
@@ -724,6 +727,8 @@ assert.isTrue(t.Result.isOk(positiveResult));
724
727
 
725
728
  if (t.Result.isOk(positiveResult)) {
726
729
  const positiveNum = positiveResult.value; // number, guaranteed to be > 0
730
+
731
+ IGNORE_EMBEDDING(positiveNum);
727
732
  }
728
733
 
729
734
  // Invalid cases
@@ -847,6 +852,8 @@ assert.isTrue(t.Result.isOk(userIdResult));
847
852
 
848
853
  if (t.Result.isOk(userIdResult)) {
849
854
  const id: UserId = userIdResult.value;
855
+
856
+ IGNORE_EMBEDDING(id);
850
857
  }
851
858
  ```
852
859
 
@@ -943,7 +950,7 @@ assert.deepStrictEqual(result.value, [
943
950
  typeName: 'number',
944
951
  details: undefined,
945
952
  },
946
- ] satisfies t.ValidationError[]);
953
+ ] satisfies readonly t.ValidationError[]);
947
954
 
948
955
  // Convert to string messages
949
956
  const messages = t.validationErrorsToMessages(result.value);
@@ -1,6 +1,6 @@
1
1
  import { type Type } from '../type.mjs';
2
- export declare const arrayAtLeastLength: <A, N extends SmallUint>(size: N, elementType: Type<A>, options?: PartialReadonly<{
2
+ export declare const arrayAtLeastLength: <A, N extends SmallUint>(size: N, elementType: Type<A>, options?: Partial<Readonly<{
3
3
  typeName: string;
4
4
  defaultValue: ArrayAtLeastLen<N, A>;
5
- }>) => Type<ArrayAtLeastLen<N, A>>;
5
+ }>>) => Type<ArrayAtLeastLen<N, A>>;
6
6
  //# sourceMappingURL=array-at-least-length.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array-at-least-length.d.mts","sourceRoot":"","sources":["../../src/array/array-at-least-length.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EACvD,MAAM,CAAC,EACP,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC,CAAC,KACD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAuE5B,CAAC"}
1
+ {"version":3,"file":"array-at-least-length.d.mts","sourceRoot":"","sources":["../../src/array/array-at-least-length.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EACvD,MAAM,CAAC,EACP,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC,CAAC,CACH,KACA,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CA6E5B,CAAC"}
@@ -1,13 +1,14 @@
1
- import { Arr, Result } from 'ts-data-forge';
1
+ import { memoizeFunction, Arr, Result } from 'ts-data-forge';
2
2
  import { createAssertFn } from '../utils/create-assert-fn.mjs';
3
3
  import { createCastFn } from '../utils/create-cast-fn.mjs';
4
4
  import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const arrayAtLeastLength = (size, elementType, options) => {
8
- const {
9
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
10
- defaultValue = Arr.create(size, elementType.defaultValue), typeName = `ArrayAtLeastLen<${size}, ${elementType.typeName}>`, } = options ?? {};
8
+ const typeName = options?.typeName ?? `ArrayAtLeastLen<${size}, ${elementType.typeName}>`;
9
+ const getDefaultValue = memoizeFunction(() => options?.defaultValue ??
10
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
11
+ Arr.create(size, elementType.defaultValue));
11
12
  const validate = (a) => {
12
13
  if (!Arr.isArray(a)) {
13
14
  return Result.err([
@@ -52,10 +53,12 @@ const arrayAtLeastLength = (size, elementType, options) => {
52
53
  ? // TODO: remove as
53
54
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
54
55
  Arr.map(Arr.seq(size), (i) => elementType.fill(a[i]))
55
- : defaultValue;
56
+ : getDefaultValue();
56
57
  return {
57
58
  typeName,
58
- defaultValue,
59
+ get defaultValue() {
60
+ return getDefaultValue();
61
+ },
59
62
  fill,
60
63
  validate,
61
64
  is: createIsFn(validate),
@@ -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,OAGE,KAC6B;IAG/B,MAAM;;IAEJ,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAM,EAC9D,QAAQ,GAAG,CAAA,gBAAA,EAAmB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,CAAA,CAAA,CAAG,GAC/D,GAAG,OAAO,IAAI,EAAE;AAEjB,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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,YAAY;IAElB,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,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;;;;"}
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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { type Type } from '../type.mjs';
2
- export declare const arrayOfLength: <A, N extends SmallUint>(size: N, elementType: Type<A>, options?: PartialReadonly<{
2
+ export declare const arrayOfLength: <A, N extends SmallUint>(size: N, elementType: Type<A>, options?: Partial<Readonly<{
3
3
  typeName: string;
4
4
  defaultValue: ArrayOfLength<N, A>;
5
- }>) => Type<ArrayOfLength<N, A>>;
5
+ }>>) => Type<ArrayOfLength<N, A>>;
6
6
  //# sourceMappingURL=array-of-length.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array-of-length.d.mts","sourceRoot":"","sources":["../../src/array/array-of-length.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EAClD,MAAM,CAAC,EACP,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC,CAAC,KACD,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAuE1B,CAAC"}
1
+ {"version":3,"file":"array-of-length.d.mts","sourceRoot":"","sources":["../../src/array/array-of-length.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EAClD,MAAM,CAAC,EACP,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC,CAAC,CACH,KACA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAgF1B,CAAC"}
@@ -1,13 +1,14 @@
1
- import { Arr, Result } from 'ts-data-forge';
1
+ import { memoizeFunction, Arr, Result } from 'ts-data-forge';
2
2
  import { createAssertFn } from '../utils/create-assert-fn.mjs';
3
3
  import { createCastFn } from '../utils/create-cast-fn.mjs';
4
4
  import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const arrayOfLength = (size, elementType, options) => {
8
- const {
9
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
10
- defaultValue = Arr.create(size, elementType.defaultValue), typeName = `ArrayOfLength<${size}, ${elementType.typeName}>`, } = options ?? {};
8
+ const typeName = options?.typeName ?? `ArrayOfLength<${size}, ${elementType.typeName}>`;
9
+ const getDefaultValue = memoizeFunction(() => options?.defaultValue ??
10
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
11
+ Arr.create(size, elementType.defaultValue));
11
12
  const validate = (a) => {
12
13
  if (!Arr.isArray(a)) {
13
14
  return Result.err([
@@ -48,14 +49,16 @@ const arrayOfLength = (size, elementType, options) => {
48
49
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
49
50
  return Result.ok(a);
50
51
  };
51
- const fill = (a) => Arr.isArray(a)
52
- ? // TODO: remove as
52
+ const fill = (a) => !Arr.isArray(a)
53
+ ? getDefaultValue()
54
+ : // TODO: remove as
53
55
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
54
- Arr.map(Arr.seq(size), (i) => elementType.fill(a[i]))
55
- : defaultValue;
56
+ Arr.map(Arr.seq(size), (i) => elementType.fill(a[i]));
56
57
  return {
57
58
  typeName,
58
- defaultValue,
59
+ get defaultValue() {
60
+ return getDefaultValue();
61
+ },
59
62
  fill,
60
63
  validate,
61
64
  is: createIsFn(validate),
@@ -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,OAGE,KAC2B;IAG7B,MAAM;;IAEJ,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAM,EAC9D,QAAQ,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,CAAA,CAAA,CAAG,GAC7D,GAAG,OAAO,IAAI,EAAE;AAEjB,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,KAAK,IAAI,EAAE;YACrB,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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,YAAY;IAElB,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,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;;;;"}
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;AAEA,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE;YACrB,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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { type Type } from '../type.mjs';
2
- export declare const array: <A>(elementType: Type<A>, options?: PartialReadonly<{
2
+ export declare const array: <A>(elementType: Type<A>, options?: Partial<Readonly<{
3
3
  typeName: string;
4
4
  defaultValue: readonly A[];
5
- }>) => Type<readonly A[]>;
5
+ }>>) => Type<readonly A[]>;
6
6
  //# sourceMappingURL=array.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.mts","sourceRoot":"","sources":["../../src/array/array.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;CAC5B,CAAC,KACD,IAAI,CAAC,SAAS,CAAC,EAAE,CAgDnB,CAAC"}
1
+ {"version":3,"file":"array.d.mts","sourceRoot":"","sources":["../../src/array/array.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;CAC5B,CAAC,CACH,KACA,IAAI,CAAC,SAAS,CAAC,EAAE,CAmDnB,CAAC"}
@@ -1,11 +1,12 @@
1
- import { Arr, Result } from 'ts-data-forge';
1
+ import { memoizeFunction, Arr, Result } from 'ts-data-forge';
2
2
  import { createAssertFn } from '../utils/create-assert-fn.mjs';
3
3
  import { createCastFn } from '../utils/create-cast-fn.mjs';
4
4
  import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const array = (elementType, options) => {
8
- const { defaultValue = [], typeName = `${elementType.typeName}[]` } = options ?? {};
8
+ const typeName = options?.typeName ?? `${elementType.typeName}[]`;
9
+ const getDefaultValue = memoizeFunction(() => options?.defaultValue ?? []);
9
10
  const validate = (a) => {
10
11
  if (!Arr.isArray(a)) {
11
12
  return Result.err([
@@ -31,10 +32,12 @@ const array = (elementType, options) => {
31
32
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
32
33
  return Result.ok(a);
33
34
  };
34
- const fill = (a) => Arr.isArray(a) ? a.map((e) => elementType.fill(e)) : defaultValue;
35
+ const fill = (a) => !Arr.isArray(a) ? getDefaultValue() : a.map((e) => elementType.fill(e));
35
36
  return {
36
37
  typeName,
37
- defaultValue,
38
+ get defaultValue() {
39
+ return getDefaultValue();
40
+ },
38
41
  fill,
39
42
  validate,
40
43
  is: createIsFn(validate),
@@ -1 +1 @@
1
- {"version":3,"file":"array.mjs","sources":["../../src/array/array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAWa,KAAK,GAAG,CACnB,WAAoB,EACpB,OAGE,KACoB;AAGtB,IAAA,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,QAAQ,GAAG,CAAA,EAAG,WAAW,CAAC,QAAQ,CAAA,EAAA,CAAI,EAAE,GACjE,OAAO,IAAI,EAAE;AAEf,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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAEnE,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,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
+ {"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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,6 +1,6 @@
1
1
  import { type Type } from '../type.mjs';
2
- export declare const nonEmptyArray: <A>(elementType: Type<A>, options?: PartialReadonly<{
2
+ export declare const nonEmptyArray: <A>(elementType: Type<A>, options?: Partial<Readonly<{
3
3
  typeName: string;
4
4
  defaultValue: NonEmptyArray<A>;
5
- }>) => Type<NonEmptyArray<A>>;
5
+ }>>) => Type<NonEmptyArray<A>>;
6
6
  //# sourceMappingURL=non-empty-array.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"non-empty-array.d.mts","sourceRoot":"","sources":["../../src/array/non-empty-array.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC,KACD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAkEvB,CAAC"}
1
+ {"version":3,"file":"non-empty-array.d.mts","sourceRoot":"","sources":["../../src/array/non-empty-array.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC,CACH,KACA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAsEvB,CAAC"}
@@ -1,11 +1,12 @@
1
- import { Arr, Result } from 'ts-data-forge';
1
+ import { memoizeFunction, Arr, Result } from 'ts-data-forge';
2
2
  import { createAssertFn } from '../utils/create-assert-fn.mjs';
3
3
  import { createCastFn } from '../utils/create-cast-fn.mjs';
4
4
  import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const nonEmptyArray = (elementType, options) => {
8
- const { defaultValue = Arr.newArray(1, elementType.defaultValue), typeName = `NonEmptyArray<${elementType.typeName}>`, } = options ?? {};
8
+ const typeName = options?.typeName ?? `NonEmptyArray<${elementType.typeName}>`;
9
+ const getDefaultValue = memoizeFunction(() => options?.defaultValue ?? Arr.newArray(1, elementType.defaultValue));
9
10
  const validate = (a) => {
10
11
  if (!Arr.isArray(a)) {
11
12
  return Result.err([
@@ -46,10 +47,12 @@ const nonEmptyArray = (elementType, options) => {
46
47
  };
47
48
  const fill = (a) => Arr.isArray(a) && Arr.isNonEmpty(a)
48
49
  ? Arr.map(a, (e) => elementType.fill(e))
49
- : defaultValue;
50
+ : getDefaultValue();
50
51
  return {
51
52
  typeName,
52
- defaultValue,
53
+ get defaultValue() {
54
+ return getDefaultValue();
55
+ },
53
56
  fill,
54
57
  validate,
55
58
  is: createIsFn(validate),
@@ -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,OAGE,KACwB;IAG1B,MAAM,EACJ,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,EACxD,QAAQ,GAAG,CAAA,cAAA,EAAiB,WAAW,CAAC,QAAQ,CAAA,CAAA,CAAG,GACpD,GAAG,OAAO,IAAI,EAAE;AAEjB,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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,YAAY;IAElB,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,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
+ {"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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,9 +1,9 @@
1
1
  import { type Type, type TypeOf } from '../type.mjs';
2
- type MapTuple<T extends readonly Type<unknown>[]> = {
3
- readonly [K in keyof T]: TypeOf<T[K]>;
4
- };
5
- export declare const tuple: <const A extends readonly Type<unknown>[]>(types: A, options?: PartialReadonly<{
2
+ type MapTuple<T extends readonly Type<unknown>[]> = Readonly<{
3
+ [K in keyof T]: TypeOf<T[K]>;
4
+ }>;
5
+ export declare const tuple: <const A extends readonly Type<unknown>[]>(types: A, options?: Partial<Readonly<{
6
6
  typeName: string;
7
- }>) => Type<MapTuple<A>>;
7
+ }>>) => Type<MapTuple<A>>;
8
8
  export {};
9
9
  //# sourceMappingURL=tuple.d.mts.map
@@ -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;IAClD,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,EAC5D,OAAO,CAAC,EACR,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,KACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAuElB,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,CAwElB,CAAC"}
@@ -1,12 +1,12 @@
1
- import { Arr, Result } from 'ts-data-forge';
1
+ import { memoizeFunction, Arr, Result } from 'ts-data-forge';
2
2
  import { createAssertFn } from '../utils/create-assert-fn.mjs';
3
3
  import { createCastFn } from '../utils/create-cast-fn.mjs';
4
4
  import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const tuple = (types, options) => {
8
- const { typeName = 'tuple' } = options ?? {};
9
- const defaultValue = Arr.map(types, (t) => t.defaultValue);
8
+ const typeName = options?.typeName ?? 'tuple';
9
+ const getDefaultValue = memoizeFunction(() => Arr.map(types, (t) => t.defaultValue));
10
10
  const validate = (a) => {
11
11
  if (!Arr.isArray(a)) {
12
12
  return Result.err([
@@ -48,12 +48,14 @@ const tuple = (types, options) => {
48
48
  return Result.ok(a);
49
49
  };
50
50
  const fill = (a) => !Arr.isArray(a)
51
- ? defaultValue
51
+ ? getDefaultValue()
52
52
  : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
53
53
  types.map((t, i) => t.fill(a[i]));
54
54
  return {
55
55
  typeName,
56
- defaultValue,
56
+ get defaultValue() {
57
+ return getDefaultValue();
58
+ },
57
59
  fill,
58
60
  validate,
59
61
  is: createIsFn(validate),
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.mjs","sources":["../../src/array/tuple.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAea,KAAK,GAAG,CACnB,KAAQ,EACR,OAEE,KACmB;IAGrB,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE;AAE5C,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAC1B,KAAK,EACL,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CACA;AAEvB,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,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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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;AACZ,UAAE;AACF;YACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAiB;IAExD,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,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
+ {"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;QAEA,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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,6 +1,6 @@
1
1
  import { type Type } from '../type.mjs';
2
2
  type ArrayToUnion<A extends readonly unknown[]> = A extends readonly [] ? never : A[number];
3
- export declare const brand: <const A extends StrictExtract<Primitive, string | number | bigint | boolean>, const BrandTrueKeys extends readonly string[], const BrandFalseKeys extends readonly string[] = []>({ baseType, brandFalseKeys, brandKeys, defaultValue, is, typeName, }: Readonly<{
3
+ export declare const brand: <const A extends StrictExtract<Primitive, string | number | bigint | boolean>, const BrandTrueKeys extends readonly string[], const BrandFalseKeys extends readonly string[] = readonly []>({ baseType, brandFalseKeys, brandKeys, defaultValue, is, typeName, }: Readonly<{
4
4
  baseType: Type<A>;
5
5
  is: (a: A) => a is Brand<A, ArrayToUnion<BrandTrueKeys>, ArrayToUnion<BrandFalseKeys>>;
6
6
  defaultValue: A;
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.mts","sourceRoot":"","sources":["../../src/brand/brand.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,CAAC,SAAS,SAAS,EAAE,GACnE,KAAK,GACL,CAAC,CAAC,MAAM,CAAC,CAAC;AAEd,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,CAAC,SAAS,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAC5E,KAAK,CAAC,aAAa,SAAS,SAAS,MAAM,EAAE,EAC7C,KAAK,CAAC,cAAc,SAAS,SAAS,MAAM,EAAE,GAAG,EAAE,EACnD,sEAOC,QAAQ,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,EAAE,EAAE,CACF,CAAC,EAAE,CAAC,KACD,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC,KAAG,IAAI,CACP,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAiDpE,CAAC"}
1
+ {"version":3,"file":"brand.d.mts","sourceRoot":"","sources":["../../src/brand/brand.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,CAAC,SAAS,SAAS,EAAE,GACnE,KAAK,GACL,CAAC,CAAC,MAAM,CAAC,CAAC;AAEd,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,CAAC,SAAS,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAC5E,KAAK,CAAC,aAAa,SAAS,SAAS,MAAM,EAAE,EAC7C,KAAK,CAAC,cAAc,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,EAC5D,sEAOC,QAAQ,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,EAAE,EAAE,CACF,CAAC,EAAE,CAAC,KACD,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC,KAAG,IAAI,CACP,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAiDpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"branded-number.d.mts","sourceRoot":"","sources":["../../src/brand/branded-number.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,iCAI7C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAWtB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GA1BF,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAkBsB,CAAC"}
1
+ {"version":3,"file":"branded-number.d.mts","sourceRoot":"","sources":["../../src/brand/branded-number.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,iCAI7C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAUtB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAzBF,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAiBsB,CAAC"}
@@ -5,9 +5,8 @@ import { brand } from './brand.mjs';
5
5
 
6
6
  const brandedNumber = ({ defaultValue, is = (_u) => true, typeName, }) => brand({
7
7
  baseType: number(defaultValue),
8
- defaultValue:
9
8
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
10
- defaultValue,
9
+ defaultValue: defaultValue,
11
10
  is,
12
11
  brandKeys: [typeName],
13
12
  typeName,
@@ -1 +1 @@
1
- {"version":3,"file":"branded-number.mjs","sources":["../../src/brand/branded-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAIa,aAAa,GAAG,CAAmB,EAC9C,YAAY,EACZ,EAAE,GAAG,CAAC,EAAE,KAA6B,IAAI,EACzC,QAAQ,GAKR,KACA,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAE9B,YAAY;;IAEV,YAAgC;IAElC,EAAE;IACF,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,QAAQ;AACT,CAAA;AAEH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG;;;;"}
1
+ {"version":3,"file":"branded-number.mjs","sources":["../../src/brand/branded-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAIa,aAAa,GAAG,CAAmB,EAC9C,YAAY,EACZ,EAAE,GAAG,CAAC,EAAE,KAA6B,IAAI,EACzC,QAAQ,GAKR,KACA,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;;AAG9B,IAAA,YAAY,EAAE,YAAgC;IAE9C,EAAE;IACF,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,QAAQ;AACT,CAAA;AAEH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"branded-string.d.mts","sourceRoot":"","sources":["../../src/brand/branded-string.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,iCAI7C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAWtB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GA1BF,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAkBsB,CAAC"}
1
+ {"version":3,"file":"branded-string.d.mts","sourceRoot":"","sources":["../../src/brand/branded-string.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,iCAI7C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAUtB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAzBF,CAAC,SAAS,MAAM,mCAI3C,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAiBsB,CAAC"}
@@ -5,9 +5,8 @@ import { brand } from './brand.mjs';
5
5
 
6
6
  const brandedString = ({ defaultValue, is = (_u) => true, typeName, }) => brand({
7
7
  baseType: string(defaultValue),
8
- defaultValue:
9
8
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
10
- defaultValue,
9
+ defaultValue: defaultValue,
11
10
  is,
12
11
  brandKeys: [typeName],
13
12
  typeName,
@@ -1 +1 @@
1
- {"version":3,"file":"branded-string.mjs","sources":["../../src/brand/branded-string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAIa,aAAa,GAAG,CAAmB,EAC9C,YAAY,EACZ,EAAE,GAAG,CAAC,EAAE,KAA6B,IAAI,EACzC,QAAQ,GAKR,KACA,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAE9B,YAAY;;IAEV,YAAgC;IAElC,EAAE;IACF,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,QAAQ;AACT,CAAA;AAEH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG;;;;"}
1
+ {"version":3,"file":"branded-string.mjs","sources":["../../src/brand/branded-string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAIa,aAAa,GAAG,CAAmB,EAC9C,YAAY,EACZ,EAAE,GAAG,CAAC,EAAE,KAA6B,IAAI,EACzC,QAAQ,GAKR,KACA,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;;AAG9B,IAAA,YAAY,EAAE,YAAgC;IAE9C,EAAE;IACF,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,QAAQ;AACT,CAAA;AAEH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG;;;;"}
@@ -1,17 +1,17 @@
1
1
  import { type Type, type TypeOf } from '../type.mjs';
2
- export declare const intersection: <const Types extends NonEmptyArray<Type<unknown>>>(types: Types, defaultType: IntersectionType<Types>, options?: PartialReadonly<{
2
+ export declare const intersection: <const Types extends NonEmptyArray<Type<unknown>>>(types: Types, defaultType: IntersectionType<Types>, options?: Partial<Readonly<{
3
3
  typeName: string;
4
- }>) => IntersectionType<Types>;
4
+ }>>) => IntersectionType<Types>;
5
5
  type IntersectionType<Types extends NonEmptyArray<Type<unknown>>> = Type<IntersectionTypeValue<Types>>;
6
6
  type IntersectionTypeValue<Types extends NonEmptyArray<Type<unknown>>> = TsFortressInternal.IntersectionTypeValueImpl<Types>;
7
7
  declare namespace TsFortressInternal {
8
8
  export type IntersectionTypeValueImpl<Types extends NonEmptyArray<Type<unknown>>> = Intersection<Cast0<UnwrapTypeList<Types>>>;
9
- type Cast0<T> = [T] extends [NonEmptyArray<unknown>] ? T : never;
9
+ type Cast0<T> = readonly [T] extends readonly [NonEmptyArray<unknown>] ? T : never;
10
10
  export {};
11
11
  }
12
12
  type UnwrapTypeList<Types extends readonly Type<unknown>[]> = TsFortressInternal.UnwrapTypeImpl<Types>;
13
13
  declare namespace TsFortressInternal {
14
- export type UnwrapTypeImpl<Types extends readonly unknown[]> = Types extends readonly [] ? [] : Types extends readonly [infer Head, ...infer Tail] ? readonly [TypeOf<Cast1<Head>>, ...UnwrapTypeImpl<Tail>] : never;
14
+ export type UnwrapTypeImpl<Types extends readonly unknown[]> = Types extends readonly [] ? readonly [] : Types extends readonly [infer Head, ...infer Tail] ? readonly [TypeOf<Cast1<Head>>, ...UnwrapTypeImpl<Tail>] : never;
15
15
  type Cast1<T> = [T] extends [Type<unknown>] ? T : never;
16
16
  export {};
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.d.mts","sourceRoot":"","sources":["../../src/compose/intersection.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,YAAY,GAAI,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3E,OAAO,KAAK,EACZ,aAAa,gBAAgB,CAAC,KAAK,CAAC,EACpC,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,KACD,gBAAgB,CAAC,KAAK,CAkDxB,CAAC;AAEF,KAAK,gBAAgB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CACtE,qBAAqB,CAAC,KAAK,CAAC,CAC7B,CAAC;AAEF,KAAK,qBAAqB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACnE,kBAAkB,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAEtD,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,yBAAyB,CACnC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACxC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/C,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;CAClE;AAsBD,KAAK,cAAc,CAAC,KAAK,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,IACxD,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAE3C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IACzD,KAAK,SAAS,SAAS,EAAE,GACrB,EAAE,GACF,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAChD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,GACvD,KAAK,CAAC;IAEd,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;CACzD"}
1
+ {"version":3,"file":"intersection.d.mts","sourceRoot":"","sources":["../../src/compose/intersection.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,YAAY,GAAI,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3E,OAAO,KAAK,EACZ,aAAa,gBAAgB,CAAC,KAAK,CAAC,EACpC,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,gBAAgB,CAAC,KAAK,CAkDxB,CAAC;AAEF,KAAK,gBAAgB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CACtE,qBAAqB,CAAC,KAAK,CAAC,CAC7B,CAAC;AAEF,KAAK,qBAAqB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACnE,kBAAkB,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAEtD,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,yBAAyB,CACnC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACxC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/C,KAAK,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAClE,CAAC,GACD,KAAK,CAAC;;CACX;AA4BD,KAAK,cAAc,CAAC,KAAK,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,IACxD,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAE3C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IACzD,KAAK,SAAS,SAAS,EAAE,GACrB,SAAS,EAAE,GACX,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAChD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,GACvD,KAAK,CAAC;IAGd,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;CACzD"}
@@ -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,OAEE,KACyB;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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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
+ {"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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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,13 +1,13 @@
1
1
  import { type Type, type TypeOf } from '../type.mjs';
2
- export declare const mergeRecords: <const Types extends NonEmptyArray<Type<UnknownRecord>>>(types: Types, options?: PartialReadonly<{
2
+ export declare const mergeRecords: <const Types extends NonEmptyArray<Type<UnknownRecord>>>(types: Types, options?: Partial<Readonly<{
3
3
  typeName: string;
4
4
  defaultType: IntersectionType<Types>;
5
- }>) => IntersectionType<Types>;
5
+ }>>) => IntersectionType<Types>;
6
6
  type IntersectionType<Types extends NonEmptyArray<Type<UnknownRecord>>> = Type<IntersectionTypeValue<Types>>;
7
7
  type IntersectionTypeValue<Types extends NonEmptyArray<Type<UnknownRecord>>> = Intersection<TsFortressInternal.UnwrapTypeList<Types>>;
8
8
  declare namespace TsFortressInternal {
9
9
  export type UnwrapTypeList<Types extends readonly Type<UnknownRecord>[]> = UnwrapTypeImpl<Types>;
10
- type UnwrapTypeImpl<Types extends readonly unknown[]> = Types extends readonly [] ? [] : Types extends readonly [infer Head, ...infer Tail] ? readonly [TypeOf<Cast1<Head>>, ...UnwrapTypeImpl<Tail>] : never;
10
+ type UnwrapTypeImpl<Types extends readonly unknown[]> = Types extends readonly [] ? readonly [] : Types extends readonly [infer Head, ...infer Tail] ? readonly [TypeOf<Cast1<Head>>, ...UnwrapTypeImpl<Tail>] : never;
11
11
  type Cast1<T> = [T] extends [Type<UnknownRecord>] ? T : never;
12
12
  export {};
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merge-records.d.mts","sourceRoot":"","sources":["../../src/compose/merge-records.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,YAAY,GACvB,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAEtD,OAAO,KAAK,EACZ,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CACtC,CAAC,KACD,gBAAgB,CAAC,KAAK,CA8DxB,CAAC;AAEF,KAAK,gBAAgB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAC5E,qBAAqB,CAAC,KAAK,CAAC,CAC7B,CAAC;AAEF,KAAK,qBAAqB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IACzE,YAAY,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzD,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE,IACrE,cAAc,CAAC,KAAK,CAAC,CAAC;IAExB,KAAK,cAAc,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IAClD,KAAK,SAAS,SAAS,EAAE,GACrB,EAAE,GACF,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAChD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,GACvD,KAAK,CAAC;IAEd,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;CAC/D"}
1
+ {"version":3,"file":"merge-records.d.mts","sourceRoot":"","sources":["../../src/compose/merge-records.mts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,YAAY,GACvB,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAEtD,OAAO,KAAK,EACZ,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CACtC,CAAC,CACH,KACA,gBAAgB,CAAC,KAAK,CAkExB,CAAC;AAEF,KAAK,gBAAgB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAC5E,qBAAqB,CAAC,KAAK,CAAC,CAC7B,CAAC;AAEF,KAAK,qBAAqB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IACzE,YAAY,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzD,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE,IACrE,cAAc,CAAC,KAAK,CAAC,CAAC;IAExB,KAAK,cAAc,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IAClD,KAAK,SAAS,SAAS,EAAE,GACrB,SAAS,EAAE,GACX,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAChD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,GACvD,KAAK,CAAC;IAGd,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;CAC/D"}
@@ -1,4 +1,4 @@
1
- import { Arr, Result, isRecord } from 'ts-data-forge';
1
+ import { memoizeFunction, Arr, Result, isRecord } from 'ts-data-forge';
2
2
  import { createAssertFn } from '../utils/create-assert-fn.mjs';
3
3
  import { createCastFn } from '../utils/create-cast-fn.mjs';
4
4
  import { createIsFn } from '../utils/create-is-fn.mjs';
@@ -39,11 +39,13 @@ const mergeRecords = (types, options) => {
39
39
  mergeRecordValues(isRecord(a)
40
40
  ? [...types.map((t) => t.fill(a)), a]
41
41
  : types.map((t) => t.fill(a))));
42
- const defaultValue = options?.defaultType?.defaultValue ??
43
- mergeRecordValues(types.map((t) => t.defaultValue));
42
+ const getDefaultValue = memoizeFunction(() => options?.defaultType?.defaultValue ??
43
+ mergeRecordValues(types.map((t) => t.defaultValue)));
44
44
  return {
45
45
  typeName: typeNameFilled,
46
- defaultValue,
46
+ get defaultValue() {
47
+ return getDefaultValue();
48
+ },
47
49
  fill,
48
50
  validate,
49
51
  is,
@@ -1 +1 @@
1
- {"version":3,"file":"merge-records.mjs","sources":["../../src/compose/merge-records.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAUa,YAAY,GAAG,CAG1B,KAAY,EACZ,OAGE,KACyB;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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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;AAER,IAAA,MAAM,YAAY,GAChB,OAAO,EAAE,WAAW,EAAE,YAAY;AAClC,QAAA,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC;IAErD,OAAO;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,YAAY;QACZ,IAAI;QACJ,QAAQ;QACR,EAAE;AACF,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B;AACH;AA8IA,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;;;;"}
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,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,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;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { type Type, type TypeOf } from '../type.mjs';
2
- export declare const union: <const Types extends NonEmptyArray<Type<unknown>>>(types: Types, options?: PartialReadonly<{
2
+ export declare const union: <const Types extends NonEmptyArray<Type<unknown>>>(types: Types, options?: Partial<Readonly<{
3
3
  typeName: string;
4
4
  defaultType: UnionType<Types>;
5
- }>) => UnionType<Types>;
5
+ }>>) => UnionType<Types>;
6
6
  type UnionType<Types extends NonEmptyArray<Type<unknown>>> = Type<UnionTypeValue<Types>>;
7
7
  type UnionTypeValue<Types extends NonEmptyArray<Type<unknown>>> = TsFortressInternal.UnionTypeValueImpl<Types>;
8
8
  declare namespace TsFortressInternal {
@@ -1 +1 @@
1
- {"version":3,"file":"union.d.mts","sourceRoot":"","sources":["../../src/compose/union.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACpE,OAAO,KAAK,EACZ,UAAU,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC,KACD,SAAS,CAAC,KAAK,CAuCjB,CAAC;AAEF,KAAK,SAAS,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAC/D,cAAc,CAAC,KAAK,CAAC,CACtB,CAAC;AAEF,KAAK,cAAc,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAC5D,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAE/C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACvE,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,KAAK,WAAW,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;;CAC7E"}
1
+ {"version":3,"file":"union.d.mts","sourceRoot":"","sources":["../../src/compose/union.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACpE,OAAO,KAAK,EACZ,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC,CACH,KACA,SAAS,CAAC,KAAK,CA4CjB,CAAC;AAEF,KAAK,SAAS,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAC/D,cAAc,CAAC,KAAK,CAAC,CACtB,CAAC;AAEF,KAAK,cAAc,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAC5D,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAE/C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACvE,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,KAAK,WAAW,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;;CAC7E"}
@@ -1,12 +1,13 @@
1
- import { Result } from 'ts-data-forge';
1
+ import { memoizeFunction, Result } from 'ts-data-forge';
2
2
  import { createAssertFn } from '../utils/create-assert-fn.mjs';
3
3
  import { createCastFn } from '../utils/create-cast-fn.mjs';
4
4
  import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { toUnionString } from '../utils/to-union-string.mjs';
6
6
 
7
7
  const union = (types, options) => {
8
+ const getDefaultType = memoizeFunction(() =>
8
9
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
9
- const defaultType = options?.defaultType ?? types[0];
10
+ options?.defaultType ?? types[0]);
10
11
  const typeNameFilled = options?.typeName ?? `(${toUnionString(types.map((a) => a.typeName))})`;
11
12
  const validate = (a) => types.some((t) => t.is(a))
12
13
  ? // eslint-disable-next-line total-functions/no-unsafe-type-assertion
@@ -24,10 +25,12 @@ const union = (types, options) => {
24
25
  },
25
26
  ]);
26
27
  const is = createIsFn(validate);
27
- const fill = (a) => (is(a) ? a : defaultType.fill(a));
28
+ const fill = (a) => (is(a) ? a : getDefaultType().fill(a));
28
29
  return {
29
30
  typeName: typeNameFilled,
30
- defaultValue: defaultType.defaultValue,
31
+ get defaultValue() {
32
+ return getDefaultType().defaultValue;
33
+ },
31
34
  fill,
32
35
  validate,
33
36
  is,