ts-fortress 2.2.1 → 2.3.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.
Files changed (139) hide show
  1. package/README.md +135 -0
  2. package/dist/array/array-of-length.d.mts.map +1 -1
  3. package/dist/array/array-of-length.mjs +8 -6
  4. package/dist/array/array-of-length.mjs.map +1 -1
  5. package/dist/array/array.d.mts.map +1 -1
  6. package/dist/array/array.mjs +8 -6
  7. package/dist/array/array.mjs.map +1 -1
  8. package/dist/array/non-empty-array.d.mts.map +1 -1
  9. package/dist/array/non-empty-array.mjs +8 -6
  10. package/dist/array/non-empty-array.mjs.map +1 -1
  11. package/dist/array/tuple.d.mts.map +1 -1
  12. package/dist/array/tuple.mjs +8 -6
  13. package/dist/array/tuple.mjs.map +1 -1
  14. package/dist/compose/index.d.mts +1 -0
  15. package/dist/compose/index.d.mts.map +1 -1
  16. package/dist/compose/index.mjs +1 -0
  17. package/dist/compose/index.mjs.map +1 -1
  18. package/dist/compose/intersection.d.mts.map +1 -1
  19. package/dist/compose/intersection.mjs +10 -10
  20. package/dist/compose/intersection.mjs.map +1 -1
  21. package/dist/compose/merge-records.d.mts.map +1 -1
  22. package/dist/compose/merge-records.mjs +10 -10
  23. package/dist/compose/merge-records.mjs.map +1 -1
  24. package/dist/compose/recursion.d.mts +5 -0
  25. package/dist/compose/recursion.d.mts.map +1 -0
  26. package/dist/compose/recursion.mjs +38 -0
  27. package/dist/compose/recursion.mjs.map +1 -0
  28. package/dist/compose/union.d.mts.map +1 -1
  29. package/dist/compose/union.mjs.map +1 -1
  30. package/dist/enum/enum.d.mts.map +1 -1
  31. package/dist/enum/enum.mjs.map +1 -1
  32. package/dist/enum/uint-range.d.mts.map +1 -1
  33. package/dist/enum/uint-range.mjs.map +1 -1
  34. package/dist/index.d.mts +0 -1
  35. package/dist/index.d.mts.map +1 -1
  36. package/dist/index.mjs +2 -1
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/record/key-value-record.d.mts.map +1 -1
  39. package/dist/record/key-value-record.mjs +21 -24
  40. package/dist/record/key-value-record.mjs.map +1 -1
  41. package/dist/record/omit.d.mts.map +1 -1
  42. package/dist/record/omit.mjs +3 -2
  43. package/dist/record/omit.mjs.map +1 -1
  44. package/dist/record/partial.d.mts.map +1 -1
  45. package/dist/record/partial.mjs +2 -2
  46. package/dist/record/partial.mjs.map +1 -1
  47. package/dist/record/pick.d.mts.map +1 -1
  48. package/dist/record/pick.mjs +2 -2
  49. package/dist/record/pick.mjs.map +1 -1
  50. package/dist/record/record.d.mts.map +1 -1
  51. package/dist/record/record.mjs +23 -21
  52. package/dist/record/record.mjs.map +1 -1
  53. package/dist/type.d.mts +1 -1
  54. package/dist/type.d.mts.map +1 -1
  55. package/dist/utils/create-assert-fn.mjs +1 -1
  56. package/dist/utils/create-cast-fn.mjs +1 -1
  57. package/dist/utils/create-primitive-type.mjs +1 -1
  58. package/dist/utils/index.d.mts +1 -0
  59. package/dist/utils/index.d.mts.map +1 -1
  60. package/dist/utils/index.mjs +1 -0
  61. package/dist/utils/index.mjs.map +1 -1
  62. package/dist/utils/validation-error.d.mts.map +1 -0
  63. package/dist/utils/validation-error.mjs.map +1 -0
  64. package/package.json +4 -2
  65. package/src/array/array-of-length.mts +12 -7
  66. package/src/array/array-of-length.test.mts +10 -1
  67. package/src/array/array.mts +12 -7
  68. package/src/array/array.test.mts +10 -1
  69. package/src/array/non-empty-array.mts +11 -7
  70. package/src/array/non-empty-array.test.mts +10 -1
  71. package/src/array/tuple.mts +11 -9
  72. package/src/array/tuple.test.mts +14 -1
  73. package/src/branded/brand.mts +2 -2
  74. package/src/branded/number/finite-number.test.mts +10 -1
  75. package/src/branded/number/int.test.mts +10 -1
  76. package/src/branded/number/int16.test.mts +10 -1
  77. package/src/branded/number/int32.test.mts +10 -1
  78. package/src/branded/number/non-negative-finite-number.test.mts +10 -1
  79. package/src/branded/number/non-zero-finite-number.test.mts +10 -1
  80. package/src/branded/number/non-zero-int.test.mts +10 -1
  81. package/src/branded/number/non-zero-safe-int.test.mts +10 -1
  82. package/src/branded/number/positive-finite-number.test.mts +10 -1
  83. package/src/branded/number/positive-int.test.mts +10 -1
  84. package/src/branded/number/positive-safe-int.test.mts +10 -1
  85. package/src/branded/number/safe-int.test.mts +10 -1
  86. package/src/branded/number/safe-uint.test.mts +10 -1
  87. package/src/branded/number/uint.test.mts +10 -1
  88. package/src/branded/number/uint16.test.mts +10 -1
  89. package/src/branded/number/uint32.test.mts +10 -1
  90. package/src/branded/simple-branded-number.test.mts +19 -1
  91. package/src/branded/simple-branded-string.test.mts +19 -1
  92. package/src/compose/index.mts +1 -0
  93. package/src/compose/intersection.mts +23 -19
  94. package/src/compose/intersection.test.mts +28 -1
  95. package/src/compose/merge-records.mts +22 -19
  96. package/src/compose/merge-records.test.mts +10 -1
  97. package/src/compose/recursion.mts +49 -0
  98. package/src/compose/recursion.test.mts +234 -0
  99. package/src/compose/union.mts +6 -2
  100. package/src/compose/union.test.mts +10 -1
  101. package/src/enum/enum.mts +6 -2
  102. package/src/enum/enum.test.mts +10 -1
  103. package/src/enum/uint-range.mts +6 -2
  104. package/src/enum/uint-range.test.mts +10 -1
  105. package/src/index.mts +0 -1
  106. package/src/primitives/bigint.test.mts +19 -1
  107. package/src/primitives/boolean.test.mts +28 -1
  108. package/src/primitives/null.test.mts +9 -0
  109. package/src/primitives/number.test.mts +18 -0
  110. package/src/primitives/string.test.mts +18 -0
  111. package/src/primitives/symbol.test.mts +10 -1
  112. package/src/primitives/undefined.test.mts +9 -0
  113. package/src/record/key-value-record.mts +34 -36
  114. package/src/record/key-value-record.test.mts +14 -1
  115. package/src/record/keyof.test.mts +10 -1
  116. package/src/record/omit.mts +8 -5
  117. package/src/record/omit.test.mts +46 -1
  118. package/src/record/partial.mts +7 -5
  119. package/src/record/partial.test.mts +71 -1
  120. package/src/record/pick.mts +7 -5
  121. package/src/record/pick.test.mts +46 -1
  122. package/src/record/record-allow-excess-properties.test.mts +28 -1
  123. package/src/record/record-strict-composition-simple.test.mts +38 -0
  124. package/src/record/record-strict-composition.test.mts +71 -0
  125. package/src/record/record.mts +30 -29
  126. package/src/record/record.test.mts +26 -1
  127. package/src/record/strict-record.test.mts +10 -1
  128. package/src/type.mts +1 -1
  129. package/src/utils/create-assert-fn.mts +1 -1
  130. package/src/utils/create-cast-fn.mts +1 -1
  131. package/src/utils/create-primitive-type.mts +1 -1
  132. package/src/utils/index.mts +1 -0
  133. package/dist/validation-error.d.mts.map +0 -1
  134. package/dist/validation-error.mjs.map +0 -1
  135. package/src/combination.test.mts +0 -544
  136. /package/dist/{validation-error.d.mts → utils/validation-error.d.mts} +0 -0
  137. /package/dist/{validation-error.mjs → utils/validation-error.mjs} +0 -0
  138. /package/src/{validation-error.mts → utils/validation-error.mts} +0 -0
  139. /package/src/{validation-error.test.mts → utils/validation-error.test.mts} +0 -0
package/README.md CHANGED
@@ -488,6 +488,141 @@ type Type<A> = Readonly<{
488
488
  }>;
489
489
  ```
490
490
 
491
+ #### API Method Usage
492
+
493
+ ##### `validate` - Detailed validation with error reporting
494
+
495
+ The `validate` method performs comprehensive validation and returns a `Result` type. **When validation succeeds, it returns the original input object (same reference)**, preserving object identity:
496
+
497
+ ```typescript
498
+ import * as t from 'ts-fortress';
499
+ import { Result } from 'ts-data-forge';
500
+
501
+ const User = t.record({
502
+ name: t.string(''),
503
+ age: t.number(0),
504
+ });
505
+
506
+ // Success case - returns the same object reference
507
+ const validData = { name: 'Alice', age: 30 };
508
+ const result = User.validate(validData);
509
+
510
+ if (Result.isOk(result)) {
511
+ console.log(result.value === validData); // true - same reference!
512
+ console.log(result.value); // { name: 'Alice', age: 30 }
513
+ }
514
+
515
+ // Error case - provides detailed error information
516
+ const invalidData = { name: 'Bob', age: 'thirty' };
517
+ const errorResult = User.validate(invalidData);
518
+
519
+ if (Result.isErr(errorResult)) {
520
+ console.log(errorResult.value);
521
+ // [
522
+ // {
523
+ // path: ['age'],
524
+ // actualValue: 'thirty',
525
+ // expectedType: 'number',
526
+ // typeName: 'number'
527
+ // }
528
+ // ]
529
+ }
530
+ ```
531
+
532
+ ##### `assertIs` - Type assertion with runtime checking
533
+
534
+ When using `assertIs`, you must assign it to a typed variable with an explicit type annotation due to TypeScript's limitations with assertion functions:
535
+
536
+ ```typescript
537
+ import * as t from 'ts-fortress';
538
+
539
+ const numberType = t.number(0);
540
+
541
+ // ✅ Correct usage - explicit type annotation required
542
+ const assertIsNumber: (a: unknown) => asserts a is number = numberType.assertIs;
543
+
544
+ function processValue(value: unknown) {
545
+ // After assertion, TypeScript knows value is a number
546
+ assertIsNumber(value);
547
+ console.log(value.toFixed(2)); // TypeScript knows this is safe
548
+ }
549
+
550
+ try {
551
+ processValue(42); // Works
552
+ processValue('not a number'); // Throws error
553
+ } catch (error) {
554
+ console.error('Assertion failed:', error);
555
+ }
556
+
557
+ // Example with complex types
558
+ const User = t.record({
559
+ id: t.string(''),
560
+ name: t.string(''),
561
+ });
562
+
563
+ type User = t.TypeOf<typeof User>;
564
+
565
+ // Explicit type annotation for the assertion function
566
+ const assertIsUser: (a: unknown) => asserts a is User = User.assertIs;
567
+
568
+ function processUser(data: unknown) {
569
+ assertIsUser(data);
570
+ // TypeScript now knows data is User type
571
+ console.log(`User ${data.name} has ID ${data.id}`);
572
+ }
573
+ ```
574
+
575
+ ##### `cast` - Type casting with validation
576
+
577
+ The `cast` method validates the input and returns it if valid, otherwise **throws an Error** with validation details:
578
+
579
+ ```typescript
580
+ import * as t from 'ts-fortress';
581
+
582
+ const Port = t.number(8080);
583
+
584
+ console.log(Port.cast(3000)); // 3000 - valid number
585
+
586
+ try {
587
+ console.log(Port.cast('invalid')); // Throws Error!
588
+ } catch (error) {
589
+ console.error(error.message); // "Expected number, got string"
590
+ }
591
+ ```
592
+
593
+ ##### `fill` - Intelligent default value filling
594
+
595
+ The `fill` method attempts to preserve valid parts of the input while filling in missing or invalid values with defaults:
596
+
597
+ See [Default Values and Data Filling](#default-values-and-data-filling)
598
+
599
+ ##### `defaultValue` - Accessing the default value
600
+
601
+ Every type has a `defaultValue` property that can be used for initialization:
602
+
603
+ ```typescript
604
+ import * as t from 'ts-fortress';
605
+
606
+ const User = t.record({
607
+ id: t.string(''),
608
+ name: t.string('Guest'),
609
+ score: t.number(0),
610
+ });
611
+
612
+ type User = t.TypeOf<typeof User>;
613
+
614
+ // Use defaultValue for initialization
615
+ const newUser: User = { ...User.defaultValue, id: 'user-123' };
616
+ console.log(newUser);
617
+ // { id: 'user-123', name: 'Guest', score: 0 }
618
+
619
+ // Useful for React state initialization
620
+ function UserForm() {
621
+ const [formData, setFormData] = useState<User>(User.defaultValue);
622
+ // ...
623
+ }
624
+ ```
625
+
491
626
  ### Primitive Types
492
627
 
493
628
  ```typescript
@@ -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;AAQxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EAClD,MAAM,CAAC,EACP,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,CAAC,KACD,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAkE1B,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;AAWxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EAClD,MAAM,CAAC,EACP,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,CAAC,KACD,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAoE1B,CAAC"}
@@ -2,7 +2,7 @@ import { 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
- import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const arrayOfLength = (size, elementType, options) => {
8
8
  const { typeName,
@@ -30,11 +30,13 @@ const arrayOfLength = (size, elementType, options) => {
30
30
  },
31
31
  ]);
32
32
  }
33
- const errors = a.flatMap((el, index) => {
34
- const res = elementType.validate(el);
35
- return Result.isErr(res)
36
- ? prependIndexToValidationErrors(res.value, index)
37
- : [];
33
+ const errors = Arr.generate(function* () {
34
+ for (const [index, el] of a.entries()) {
35
+ const res = elementType.validate(el);
36
+ if (Result.isErr(res)) {
37
+ yield* prependIndexToValidationErrors(res.value, index);
38
+ }
39
+ }
38
40
  });
39
41
  if (errors.length > 0) {
40
42
  return Result.err(errors);
@@ -1 +1 @@
1
- {"version":3,"file":"array-of-length.mjs","sources":["../../src/array/array-of-length.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AASO,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,WAAoB,EACpB,OAGE,KAC2B;AAG7B,IAAA,MAAM,EACJ,QAAQ;;AAER,IAAA,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAM,GAC/D,GAAG,OAAO,IAAI,EAAE;IAEjB,MAAM,cAAc,GAClB,QAAQ,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG;AAEtE,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;AACrB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,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,cAAc;AAC5B,oBAAA,OAAO,EAAE,CAAA,yBAAA,EAA4B,IAAI,gBAAgB,CAAC,CAAC,MAAM,CAAA,CAAE;AACnE,oBAAA,QAAQ,EAAE,cAAc;AACY,iBAAA;AACvC,aAAA,CAAC;QACJ;QAEA,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;YACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AACpC,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG;kBACnB,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK;kBAC/C,EAAE;AACR,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;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,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":";;;;;;AAYO,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,WAAoB,EACpB,OAGE,KAC2B;AAG7B,IAAA,MAAM,EACJ,QAAQ;;AAER,IAAA,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAM,GAC/D,GAAG,OAAO,IAAI,EAAE;IAEjB,MAAM,cAAc,GAClB,QAAQ,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG;AAEtE,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;AACrB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,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,cAAc;AAC5B,oBAAA,OAAO,EAAE,CAAA,yBAAA,EAA4B,IAAI,gBAAgB,CAAC,CAAC,MAAM,CAAA,CAAE;AACnE,oBAAA,QAAQ,EAAE,cAAc;AACY,iBAAA;AACvC,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;AACpC,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;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,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 +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;AAOxC,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,CA6CnB,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,CA+CnB,CAAC"}
@@ -2,7 +2,7 @@ import { 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
- import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const array = (elementType, options) => {
8
8
  const { typeName, defaultValue = [] } = options ?? {};
@@ -17,11 +17,13 @@ const array = (elementType, options) => {
17
17
  }),
18
18
  ]);
19
19
  }
20
- const errors = a.flatMap((el, index) => {
21
- const res = elementType.validate(el);
22
- return Result.isErr(res)
23
- ? prependIndexToValidationErrors(res.value, index)
24
- : [];
20
+ const errors = Arr.generate(function* () {
21
+ for (const [index, el] of a.entries()) {
22
+ const res = elementType.validate(el);
23
+ if (Result.isErr(res)) {
24
+ yield* prependIndexToValidationErrors(res.value, index);
25
+ }
26
+ }
25
27
  });
26
28
  if (errors.length > 0) {
27
29
  return Result.err(errors);
@@ -1 +1 @@
1
- {"version":3,"file":"array.mjs","sources":["../../src/array/array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAQa,KAAK,GAAG,CACnB,WAAoB,EACpB,OAKC,KACqB;IAGtB,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE;IAErD,MAAM,cAAc,GAAW,QAAQ,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAA,GAAA,CAAK;AAExE,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;AACrB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAC;AACH,aAAA,CAAC;QACJ;QAEA,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;YACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AACpC,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG;kBACnB,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK;kBAC/C,EAAE;AACR,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;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,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,EAAE,QAAQ,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE;IAErD,MAAM,cAAc,GAAW,QAAQ,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAA,GAAA,CAAK;AAExE,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;AACrB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,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;AACpC,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;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,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 +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;AASxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACjC,CAAC,KACD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CA6DvB,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;AAWxC,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACjC,CAAC,KACD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CA+DvB,CAAC"}
@@ -2,7 +2,7 @@ import { 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
- import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const nonEmptyArray = (elementType, options) => {
8
8
  const { typeName, defaultValue = Arr.newArray(1, elementType.defaultValue) } = options ?? {};
@@ -28,11 +28,13 @@ const nonEmptyArray = (elementType, options) => {
28
28
  },
29
29
  ]);
30
30
  }
31
- const errors = a.flatMap((el, index) => {
32
- const res = elementType.validate(el);
33
- return Result.isErr(res)
34
- ? prependIndexToValidationErrors(res.value, index)
35
- : [];
31
+ const errors = Arr.generate(function* () {
32
+ for (const [index, el] of a.entries()) {
33
+ const res = elementType.validate(el);
34
+ if (Result.isErr(res)) {
35
+ yield* prependIndexToValidationErrors(res.value, index);
36
+ }
37
+ }
36
38
  });
37
39
  if (errors.length > 0) {
38
40
  return Result.err(errors);
@@ -1 +1 @@
1
- {"version":3,"file":"non-empty-array.mjs","sources":["../../src/array/non-empty-array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAUa,aAAa,GAAG,CAC3B,WAAoB,EACpB,OAGE,KACwB;IAG1B,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,GAC1E,OAAO,IAAI,EAAE;IAEf,MAAM,cAAc,GAClB,QAAQ,IAAI,iBAAiB,WAAW,CAAC,QAAQ,CAAA,CAAA,CAAG;AAEtD,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;AACrB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,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,cAAc;AAC5B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,OAAO,EAAE,2CAA2C;AAChB,iBAAA;AACvC,aAAA,CAAC;QACJ;QAEA,MAAM,MAAM,GAA+B,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;YACjE,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AACpC,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG;kBACnB,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK;kBAC/C,EAAE;AACR,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;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,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":";;;;;;MAYa,aAAa,GAAG,CAC3B,WAAoB,EACpB,OAGE,KACwB;IAG1B,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,GAC1E,OAAO,IAAI,EAAE;IAEf,MAAM,cAAc,GAClB,QAAQ,IAAI,iBAAiB,WAAW,CAAC,QAAQ,CAAA,CAAA,CAAG;AAEtD,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;AACrB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,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,cAAc;AAC5B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,OAAO,EAAE,2CAA2C;AAChB,iBAAA;AACvC,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;AACpC,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;AACL,QAAA,QAAQ,EAAE,cAAc;QACxB,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 +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;AASrD,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,OAAO,CAAC,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,KACjD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAiElB,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;AAWrD,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,OAAO,CAAC,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,KACjD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAiElB,CAAC"}
@@ -2,7 +2,7 @@ import { 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
- import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const tuple = (types, options) => {
8
8
  const { typeName = 'tuple' } = options ?? {};
@@ -28,11 +28,13 @@ const tuple = (types, options) => {
28
28
  },
29
29
  ]);
30
30
  }
31
- const errors = Arr.zip(types, a).flatMap(([typeDef, el], index) => {
32
- const res = typeDef.validate(el);
33
- return Result.isErr(res)
34
- ? prependIndexToValidationErrors(res.value, index)
35
- : [];
31
+ const errors = Arr.generate(function* () {
32
+ for (const [index, [typeDef, el]] of Arr.zip(types, a).entries()) {
33
+ const res = typeDef.validate(el);
34
+ if (Result.isErr(res)) {
35
+ yield* prependIndexToValidationErrors(res.value, index);
36
+ }
37
+ }
36
38
  });
37
39
  if (errors.length > 0) {
38
40
  return Result.err(errors);
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.mjs","sources":["../../src/array/tuple.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAca,KAAK,GAAG,CACnB,KAAQ,EACR,OAAkD,KAC7B;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;iBACT,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;oBACR,OAAO,EAAE,yCAAyC,KAAK,CAAC,MAAM,CAAA,qBAAA,EAAwB,CAAC,CAAC,MAAM,CAAA,CAAE;AAC5D,iBAAA;AACvC,aAAA,CAAC;QACJ;QAEA,MAAM,MAAM,GAA+B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAClE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,KAAI;YACvB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChC,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG;kBACnB,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK;kBAC/C,EAAE;AACR,QAAA,CAAC,CACF;AAED,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":";;;;;;MAgBa,KAAK,GAAG,CACnB,KAAQ,EACR,OAAkD,KAC7B;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;iBACT,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;oBACR,OAAO,EAAE,yCAAyC,KAAK,CAAC,MAAM,CAAA,qBAAA,EAAwB,CAAC,CAAC,MAAM,CAAA,CAAE;AAC5D,iBAAA;AACvC,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;AAChC,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,4 +1,5 @@
1
1
  export * from './intersection.mjs';
2
2
  export * from './merge-records.mjs';
3
+ export * from './recursion.mjs';
3
4
  export * from './union.mjs';
4
5
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/compose/index.mts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/compose/index.mts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { intersection } from './intersection.mjs';
2
2
  export { mergeRecords } from './merge-records.mjs';
3
+ export { recursion } from './recursion.mjs';
3
4
  export { union } from './union.mjs';
4
5
  //# 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":";;;"}
@@ -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;AAOrD,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,CA+CxB,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,CAiDxB,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,4 +1,4 @@
1
- import { Result } from 'ts-data-forge';
1
+ import { 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';
@@ -7,11 +7,11 @@ const intersection = (types, defaultType, options) => {
7
7
  const typeNameFilled = options?.typeName ??
8
8
  `Intersection<${types.map((a) => a.typeName).join(', ')}>`;
9
9
  const validate = (a) => {
10
- const errors = types.flatMap((type) => {
11
- const r = type.validate(a);
12
- return Result.isErr(r)
13
- ? [
14
- {
10
+ const errors = Arr.generate(function* () {
11
+ for (const type of types) {
12
+ const res = type.validate(a);
13
+ if (Result.isErr(res)) {
14
+ yield {
15
15
  path: [],
16
16
  actualValue: a,
17
17
  expectedType: typeNameFilled,
@@ -19,10 +19,10 @@ const intersection = (types, defaultType, options) => {
19
19
  .map((t) => t.typeName)
20
20
  .join(', ')} }`,
21
21
  typeName: typeNameFilled,
22
- },
23
- ...r.value,
24
- ]
25
- : [];
22
+ };
23
+ yield* res.value;
24
+ }
25
+ }
26
26
  });
27
27
  if (errors.length > 0) {
28
28
  return Result.err(errors);
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.mjs","sources":["../../src/compose/intersection.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAQO,MAAM,YAAY,GAAG,CAC1B,KAAY,EACZ,WAAoC,EACpC,OAIC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,aAAA,EAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAE5D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,MAAM,MAAM,GAA+B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAChE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1B,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,kBAAE;AACE,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,YAAY,EAAE,cAAc;wBAC5B,OAAO,EAAE,yDAAyD;6BAC/D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ;6BACrB,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AACjB,wBAAA,QAAQ,EAAE,cAAc;AACY,qBAAA;oBACtC,GAAG,CAAC,CAAC,KAAK;AACX;kBACD,EAAE;AACR,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,aAAA,EAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAE5D,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;wBAC5B,OAAO,EAAE,yDAAyD;6BAC/D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ;6BACrB,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AACjB,wBAAA,QAAQ,EAAE,cAAc;qBACY;AAEtC,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 +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;AAOrD,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,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,gBAAgB,CAAC,KAAK,CA2DxB,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":"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,OAAO,CACf,QAAQ,CAAC;IACP,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,gBAAgB,CAAC,KAAK,CA4DxB,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,4 +1,4 @@
1
- import { Result, isRecord } from 'ts-data-forge';
1
+ import { 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';
@@ -7,11 +7,11 @@ const mergeRecords = (types, options) => {
7
7
  const typeNameFilled = options?.typeName ??
8
8
  `Intersection<${types.map((a) => a.typeName).join(', ')}>`;
9
9
  const validate = (a) => {
10
- const errors = types.flatMap((type) => {
11
- const r = type.validate(a);
12
- return Result.isErr(r)
13
- ? [
14
- {
10
+ const errors = Arr.generate(function* () {
11
+ for (const type of types) {
12
+ const res = type.validate(a);
13
+ if (Result.isErr(res)) {
14
+ yield {
15
15
  path: [],
16
16
  actualValue: a,
17
17
  expectedType: typeNameFilled,
@@ -19,10 +19,10 @@ const mergeRecords = (types, options) => {
19
19
  .map((t) => t.typeName)
20
20
  .join(', ')} }`,
21
21
  typeName: typeNameFilled,
22
- },
23
- ...r.value,
24
- ]
25
- : [];
22
+ };
23
+ yield* res.value;
24
+ }
25
+ }
26
26
  });
27
27
  if (errors.length > 0) {
28
28
  return Result.err(errors);
@@ -1 +1 @@
1
- {"version":3,"file":"merge-records.mjs","sources":["../../src/compose/merge-records.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAQa,YAAY,GAAG,CAG1B,KAAY,EACZ,OAKC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,aAAA,EAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAE5D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,MAAM,MAAM,GAA+B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAChE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1B,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,kBAAE;AACE,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,YAAY,EAAE,cAAc;wBAC5B,OAAO,EAAE,yDAAyD;6BAC/D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ;6BACrB,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AACjB,wBAAA,QAAQ,EAAE,cAAc;AACY,qBAAA;oBACtC,GAAG,CAAC,CAAC,KAAK;AACX;kBACD,EAAE;AACR,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":";;;;;MAUa,YAAY,GAAG,CAG1B,KAAY,EACZ,OAKC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,aAAA,EAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAE5D,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;AAC5B,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;wBAC5B,OAAO,EAAE,yDAAyD;6BAC/D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ;6BACrB,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AACjB,wBAAA,QAAQ,EAAE,cAAc;qBACY;AAEtC,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;;;;"}
@@ -0,0 +1,5 @@
1
+ import { type Type } from '../type.mjs';
2
+ export declare const recursion: <A>(typeName: string, definition: () => Type<A>, options?: Partial<Readonly<{
3
+ defaultValue: A;
4
+ }>>) => Type<A>;
5
+ //# sourceMappingURL=recursion.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursion.d.mts","sourceRoot":"","sources":["../../src/compose/recursion.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,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,CAqCR,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { createAssertFn } from '../utils/create-assert-fn.mjs';
2
+ import { createCastFn } from '../utils/create-cast-fn.mjs';
3
+ import { createIsFn } from '../utils/create-is-fn.mjs';
4
+ import 'ts-data-forge';
5
+
6
+ const recursion = (typeName, definition, options) => {
7
+ const cache = {
8
+ innerType: undefined,
9
+ computedDefaultValue: undefined,
10
+ };
11
+ const getInnerType = () => {
12
+ // eslint-disable-next-line functional/immutable-data
13
+ cache.innerType ??= definition();
14
+ return cache.innerType;
15
+ };
16
+ const validate = (a) => getInnerType().validate(a);
17
+ const is = createIsFn(validate);
18
+ const fill = (a) => getInnerType().fill(a);
19
+ return {
20
+ typeName,
21
+ get defaultValue() {
22
+ if (options?.defaultValue !== undefined) {
23
+ return options.defaultValue;
24
+ }
25
+ // eslint-disable-next-line functional/immutable-data
26
+ cache.computedDefaultValue ??= getInnerType().defaultValue;
27
+ return cache.computedDefaultValue;
28
+ },
29
+ fill,
30
+ validate,
31
+ is,
32
+ assertIs: createAssertFn(validate),
33
+ cast: createCastFn(validate),
34
+ };
35
+ };
36
+
37
+ export { recursion };
38
+ //# sourceMappingURL=recursion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursion.mjs","sources":["../../src/compose/recursion.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAGO,MAAM,SAAS,GAAG,CACvB,QAAgB,EAChB,UAAyB,EACzB,OAIC,KACU;AACX,IAAA,MAAM,KAAK,GAGP;AACF,QAAA,SAAS,EAAE,SAAgC;AAC3C,QAAA,oBAAoB,EAAE,SAA0B;KACjD;IAED,MAAM,YAAY,GAAG,MAAc;;AAEjC,QAAA,KAAK,CAAC,SAAS,KAAK,UAAU,EAAE;QAChC,OAAO,KAAK,CAAC,SAAS;AACxB,IAAA,CAAC;AAED,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;AACd,YAAA,IAAI,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE;gBACvC,OAAO,OAAO,CAAC,YAAY;YAC7B;;AAEA,YAAA,KAAK,CAAC,oBAAoB,KAAK,YAAY,EAAE,CAAC,YAAY;YAC1D,OAAO,KAAK,CAAC,oBAAoB;QACnC,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;;;;"}
@@ -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;AAIrD,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,CAsCjB,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;AAQrD,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,CAsCjB,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 +1 @@
1
- {"version":3,"file":"union.mjs","sources":["../../src/compose/union.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAKa,KAAK,GAAG,CACnB,KAAY,EACZ,OAKC,KACmB;;IAIpB,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAK,KAAK,CAAC,CAAC,CAAsB;IAE1E,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ,IAAI,CAAA,MAAA,EAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG;IAE1E,MAAM,QAAQ,GAAwB,CAAC,CAAC,KACtC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACE,YAAA,MAAM,CAAC,EAAE,CAAC,CAAM;AAClB,UAAE,MAAM,CAAC,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,YAAY,EAAE,cAAc;gBAC5B,OAAO,EAAE,0EAA0E;qBAChF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ;qBACrB,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AACjB,gBAAA,QAAQ,EAAE,cAAc;AACY,aAAA;AACvC,SAAA,CAAC;AAER,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":"union.mjs","sources":["../../src/compose/union.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MASa,KAAK,GAAG,CACnB,KAAY,EACZ,OAKC,KACmB;;IAIpB,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAK,KAAK,CAAC,CAAC,CAAsB;IAE1E,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ,IAAI,CAAA,MAAA,EAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG;IAE1E,MAAM,QAAQ,GAAwB,CAAC,CAAC,KACtC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACE,YAAA,MAAM,CAAC,EAAE,CAAC,CAAM;AAClB,UAAE,MAAM,CAAC,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,YAAY,EAAE,cAAc;gBAC5B,OAAO,EAAE,0EAA0E;qBAChF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ;qBACrB,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AACjB,gBAAA,QAAQ,EAAE,cAAc;AACY,aAAA;AACvC,SAAA,CAAC;AAER,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":"enum.d.mts","sourceRoot":"","sources":["../../src/enum/enum.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,eAAO,MAAM,QAAQ,GAAI,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,EACpE,QAAQ,MAAM,EACd,UAAU,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC,KACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CA4C3B,CAAC"}
1
+ {"version":3,"file":"enum.d.mts","sourceRoot":"","sources":["../../src/enum/enum.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,eAAO,MAAM,QAAQ,GAAI,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,EACpE,QAAQ,MAAM,EACd,UAAU,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC,KACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CA4C3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"enum.mjs","sources":["../../src/enum/enum.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAKa,QAAQ,GAAG,CACtB,MAAc,EACd,OAGE,KAC4B;IAG9B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAEpC,IAAA,MAAM,kBAAkB,GACtB,OAAO,EAAE,YAAY;;QAEpB,MAAM,CAAC,CAAC,CAA0B;AAErC,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,MAAM,cAAc,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM;QAClD;;AAEE,QAAA,QAAQ,CAAC,GAAG,CAAC,CAAc;AACzB;AACE,gBAAA,MAAM,CAAC,EAAE,CAAC,CAAM;AAClB,cAAE,MAAM,CAAC,GAAG,CAAC;AACT,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,cAAc;oBAC5B,OAAO,EAAE,kEAAkE,MAAM,CAAC,IAAI,CACpF,IAAI,CACL,CAAA,EAAA,CAAI;AACL,oBAAA,QAAQ,EAAE,cAAc;AACY,iBAAA;AACvC,aAAA,CAAC;AAEV,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,kBAAkB,CAAC;IAErE,OAAO;AACL,QAAA,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,MAAM;AACrC,QAAA,YAAY,EAAE,kBAAkB;QAChC,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":"enum.mjs","sources":["../../src/enum/enum.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MASa,QAAQ,GAAG,CACtB,MAAc,EACd,OAGE,KAC4B;IAG9B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAEpC,IAAA,MAAM,kBAAkB,GACtB,OAAO,EAAE,YAAY;;QAEpB,MAAM,CAAC,CAAC,CAA0B;AAErC,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,MAAM,cAAc,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM;QAClD;;AAEE,QAAA,QAAQ,CAAC,GAAG,CAAC,CAAc;AACzB;AACE,gBAAA,MAAM,CAAC,EAAE,CAAC,CAAM;AAClB,cAAE,MAAM,CAAC,GAAG,CAAC;AACT,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,cAAc;oBAC5B,OAAO,EAAE,kEAAkE,MAAM,CAAC,IAAI,CACpF,IAAI,CACL,CAAA,EAAA,CAAI;AACL,oBAAA,QAAQ,EAAE,cAAc;AACY,iBAAA;AACvC,aAAA,CAAC;AAEV,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,kBAAkB,CAAC;IAErE,OAAO;AACL,QAAA,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,MAAM;AACrC,QAAA,YAAY,EAAE,kBAAkB;QAChC,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":"uint-range.d.mts","sourceRoot":"","sources":["../../src/enum/uint-range.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,eAAO,MAAM,SAAS,GACpB,KAAK,SAAS,KAAK,EACnB,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EACjC,4BAIC,QAAQ,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACtC,CAAC,KAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAwC9B,CAAC"}
1
+ {"version":3,"file":"uint-range.d.mts","sourceRoot":"","sources":["../../src/enum/uint-range.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,eAAO,MAAM,SAAS,GACpB,KAAK,SAAS,KAAK,EACnB,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EACjC,4BAIC,QAAQ,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACtC,CAAC,KAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAwC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"uint-range.mjs","sources":["../../src/enum/uint-range.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAKO,MAAM,SAAS,GAAG,CAGvB,EACA,KAAK,EACL,GAAG,EACH,GAAG,OAAO,EAMV,KAAiC;IAGjC,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAA,UAAA,EAAa,KAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG;AAExE,IAAA,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY;;AAEnB,QAAA,KAAW;AAEd,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACzE,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,cAAc;AAC5B,oBAAA,OAAO,EAAE,CAAA,+CAAA,EAAkD,KAAK,QAAQ,GAAG,GAAG,CAAC,CAAA,CAAE;AACjF,oBAAA,QAAQ,EAAE,cAAc;AACY,iBAAA;AACvC,aAAA,CAAC;QACJ;;AAGA,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,YAAY,CAAC;IAE/D,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;;;;"}
1
+ {"version":3,"file":"uint-range.mjs","sources":["../../src/enum/uint-range.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AASO,MAAM,SAAS,GAAG,CAGvB,EACA,KAAK,EACL,GAAG,EACH,GAAG,OAAO,EAMV,KAAiC;IAGjC,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAA,UAAA,EAAa,KAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG;AAExE,IAAA,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY;;AAEnB,QAAA,KAAW;AAEd,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACzE,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,cAAc;AAC5B,oBAAA,OAAO,EAAE,CAAA,+CAAA,EAAkD,KAAK,QAAQ,GAAG,GAAG,CAAC,CAAA,CAAE;AACjF,oBAAA,QAAQ,EAAE,cAAc;AACY,iBAAA;AACvC,aAAA,CAAC;QACJ;;AAGA,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,YAAY,CAAC;IAE/D,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;;;;"}
package/dist/index.d.mts CHANGED
@@ -7,5 +7,4 @@ export * from './record/index.mjs';
7
7
  export * from './type.mjs';
8
8
  export * from './unknown.mjs';
9
9
  export * from './utils/index.mjs';
10
- export * from './validation-error.mjs';
11
10
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC"}
package/dist/index.mjs CHANGED
@@ -23,6 +23,7 @@ export { simpleBrandedNumber } from './branded/simple-branded-number.mjs';
23
23
  export { simpleBrandedString } from './branded/simple-branded-string.mjs';
24
24
  export { intersection } from './compose/intersection.mjs';
25
25
  export { mergeRecords } from './compose/merge-records.mjs';
26
+ export { recursion } from './compose/recursion.mjs';
26
27
  export { union } from './compose/union.mjs';
27
28
  export { enumType } from './enum/enum.mjs';
28
29
  export { uintRange } from './enum/uint-range.mjs';
@@ -46,5 +47,5 @@ export { createCastFn } from './utils/create-cast-fn.mjs';
46
47
  export { createIsFn } from './utils/create-is-fn.mjs';
47
48
  export { createPrimitiveType } from './utils/create-primitive-type.mjs';
48
49
  export { createType } from './utils/create-type.mjs';
49
- export { createPrimitiveValidationError, prependIndexToValidationErrors, prependPathToValidationErrors, validationErrorToMessage, validationErrorsToMessages } from './validation-error.mjs';
50
+ export { createPrimitiveValidationError, prependIndexToValidationErrors, prependPathToValidationErrors, validationErrorToMessage, validationErrorsToMessages } from './utils/validation-error.mjs';
50
51
  //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"key-value-record.d.mts","sourceRoot":"","sources":["../../src/record/key-value-record.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,KAAK,gBAAgB,CACnB,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EACtB,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IACrB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,EAC5E,SAAS,CAAC,EACV,WAAW,CAAC,EACZ,UAAU,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,KACxC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAoF7B,CAAC"}
1
+ {"version":3,"file":"key-value-record.d.mts","sourceRoot":"","sources":["../../src/record/key-value-record.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAWrD,KAAK,gBAAgB,CACnB,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EACtB,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IACrB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,EAC5E,SAAS,CAAC,EACV,WAAW,CAAC,EACZ,UAAU,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,KACxC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAgF7B,CAAC"}