ts-fortress 2.2.1 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) 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/intersection.d.mts.map +1 -1
  15. package/dist/compose/intersection.mjs +10 -10
  16. package/dist/compose/intersection.mjs.map +1 -1
  17. package/dist/compose/merge-records.d.mts.map +1 -1
  18. package/dist/compose/merge-records.mjs +10 -10
  19. package/dist/compose/merge-records.mjs.map +1 -1
  20. package/dist/compose/union.d.mts.map +1 -1
  21. package/dist/compose/union.mjs.map +1 -1
  22. package/dist/enum/enum.d.mts.map +1 -1
  23. package/dist/enum/enum.mjs.map +1 -1
  24. package/dist/enum/uint-range.d.mts.map +1 -1
  25. package/dist/enum/uint-range.mjs.map +1 -1
  26. package/dist/index.d.mts +0 -1
  27. package/dist/index.d.mts.map +1 -1
  28. package/dist/index.mjs +1 -1
  29. package/dist/record/key-value-record.d.mts.map +1 -1
  30. package/dist/record/key-value-record.mjs +21 -24
  31. package/dist/record/key-value-record.mjs.map +1 -1
  32. package/dist/record/omit.d.mts.map +1 -1
  33. package/dist/record/omit.mjs +3 -2
  34. package/dist/record/omit.mjs.map +1 -1
  35. package/dist/record/partial.d.mts.map +1 -1
  36. package/dist/record/partial.mjs +2 -2
  37. package/dist/record/partial.mjs.map +1 -1
  38. package/dist/record/pick.d.mts.map +1 -1
  39. package/dist/record/pick.mjs +2 -2
  40. package/dist/record/pick.mjs.map +1 -1
  41. package/dist/record/record.d.mts.map +1 -1
  42. package/dist/record/record.mjs +23 -21
  43. package/dist/record/record.mjs.map +1 -1
  44. package/dist/type.d.mts +1 -1
  45. package/dist/type.d.mts.map +1 -1
  46. package/dist/utils/create-assert-fn.mjs +1 -1
  47. package/dist/utils/create-cast-fn.mjs +1 -1
  48. package/dist/utils/create-primitive-type.mjs +1 -1
  49. package/dist/utils/index.d.mts +1 -0
  50. package/dist/utils/index.d.mts.map +1 -1
  51. package/dist/utils/index.mjs +1 -0
  52. package/dist/utils/index.mjs.map +1 -1
  53. package/dist/utils/validation-error.d.mts.map +1 -0
  54. package/dist/utils/validation-error.mjs.map +1 -0
  55. package/package.json +4 -2
  56. package/src/array/array-of-length.mts +12 -7
  57. package/src/array/array-of-length.test.mts +10 -1
  58. package/src/array/array.mts +12 -7
  59. package/src/array/array.test.mts +10 -1
  60. package/src/array/non-empty-array.mts +11 -7
  61. package/src/array/non-empty-array.test.mts +10 -1
  62. package/src/array/tuple.mts +11 -9
  63. package/src/array/tuple.test.mts +14 -1
  64. package/src/branded/brand.mts +2 -2
  65. package/src/branded/number/finite-number.test.mts +10 -1
  66. package/src/branded/number/int.test.mts +10 -1
  67. package/src/branded/number/int16.test.mts +10 -1
  68. package/src/branded/number/int32.test.mts +10 -1
  69. package/src/branded/number/non-negative-finite-number.test.mts +10 -1
  70. package/src/branded/number/non-zero-finite-number.test.mts +10 -1
  71. package/src/branded/number/non-zero-int.test.mts +10 -1
  72. package/src/branded/number/non-zero-safe-int.test.mts +10 -1
  73. package/src/branded/number/positive-finite-number.test.mts +10 -1
  74. package/src/branded/number/positive-int.test.mts +10 -1
  75. package/src/branded/number/positive-safe-int.test.mts +10 -1
  76. package/src/branded/number/safe-int.test.mts +10 -1
  77. package/src/branded/number/safe-uint.test.mts +10 -1
  78. package/src/branded/number/uint.test.mts +10 -1
  79. package/src/branded/number/uint16.test.mts +10 -1
  80. package/src/branded/number/uint32.test.mts +10 -1
  81. package/src/branded/simple-branded-number.test.mts +19 -1
  82. package/src/branded/simple-branded-string.test.mts +19 -1
  83. package/src/compose/intersection.mts +23 -19
  84. package/src/compose/intersection.test.mts +28 -1
  85. package/src/compose/merge-records.mts +22 -19
  86. package/src/compose/merge-records.test.mts +10 -1
  87. package/src/compose/union.mts +6 -2
  88. package/src/compose/union.test.mts +10 -1
  89. package/src/enum/enum.mts +6 -2
  90. package/src/enum/enum.test.mts +10 -1
  91. package/src/enum/uint-range.mts +6 -2
  92. package/src/enum/uint-range.test.mts +10 -1
  93. package/src/index.mts +0 -1
  94. package/src/primitives/bigint.test.mts +19 -1
  95. package/src/primitives/boolean.test.mts +28 -1
  96. package/src/primitives/null.test.mts +9 -0
  97. package/src/primitives/number.test.mts +18 -0
  98. package/src/primitives/string.test.mts +18 -0
  99. package/src/primitives/symbol.test.mts +10 -1
  100. package/src/primitives/undefined.test.mts +9 -0
  101. package/src/record/key-value-record.mts +34 -36
  102. package/src/record/key-value-record.test.mts +14 -1
  103. package/src/record/keyof.test.mts +10 -1
  104. package/src/record/omit.mts +8 -5
  105. package/src/record/omit.test.mts +46 -1
  106. package/src/record/partial.mts +7 -5
  107. package/src/record/partial.test.mts +71 -1
  108. package/src/record/pick.mts +7 -5
  109. package/src/record/pick.test.mts +46 -1
  110. package/src/record/record-allow-excess-properties.test.mts +28 -1
  111. package/src/record/record-strict-composition-simple.test.mts +38 -0
  112. package/src/record/record-strict-composition.test.mts +71 -0
  113. package/src/record/record.mts +30 -29
  114. package/src/record/record.test.mts +26 -1
  115. package/src/record/strict-record.test.mts +10 -1
  116. package/src/type.mts +1 -1
  117. package/src/utils/create-assert-fn.mts +1 -1
  118. package/src/utils/create-cast-fn.mts +1 -1
  119. package/src/utils/create-primitive-type.mts +1 -1
  120. package/src/utils/index.mts +1 -0
  121. package/dist/validation-error.d.mts.map +0 -1
  122. package/dist/validation-error.mjs.map +0 -1
  123. package/src/combination.test.mts +0 -544
  124. /package/dist/{validation-error.d.mts → utils/validation-error.d.mts} +0 -0
  125. /package/dist/{validation-error.mjs → utils/validation-error.mjs} +0 -0
  126. /package/src/{validation-error.mts → utils/validation-error.mts} +0 -0
  127. /package/src/{validation-error.test.mts → utils/validation-error.test.mts} +0 -0
@@ -2,7 +2,7 @@ import { Obj, isRecord, 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 } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError } from '../utils/validation-error.mjs';
6
6
 
7
7
  /** Creates a record type with keys omitted. */
8
8
  const omit = (recordType, keysToOmit, options) => {
@@ -25,7 +25,8 @@ const omit = (recordType, keysToOmit, options) => {
25
25
  ...a,
26
26
  };
27
27
  const baseValidationResult = recordType.validate(objectFilled);
28
- return Result.map(baseValidationResult, Obj.omit(keysToOmit));
28
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
29
+ return Result.map(baseValidationResult, () => a);
29
30
  };
30
31
  const fill = (a) => Obj.omit(recordType.fill(a), keysToOmit);
31
32
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"omit.mjs","sources":["../../src/record/omit.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAKA;AACO,MAAM,IAAI,GAAG,CAIlB,UAAa,EACb,UAAsB,EACtB,OAIC,KAC6B;AAG9B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;QACjB,CAAA,KAAA,EAAQ,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AAEzD,IAAA,MAAM,YAAY,GAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC;AAErE,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAC;AACH,aAAA,CAAC;;;AAIJ,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC3C,YAAA,GAAG,CAAC;SACQ;QAEd,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;AAE9D,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAE3D;AACH,IAAA,CAAC;IAED,MAAM,IAAI,GAAoB,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;IAE7E,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":"omit.mjs","sources":["../../src/record/omit.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AASA;AACO,MAAM,IAAI,GAAG,CAIlB,UAAa,EACb,UAAsB,EACtB,OAIC,KAC6B;AAG9B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;QACjB,CAAA,KAAA,EAAQ,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AAEzD,IAAA,MAAM,YAAY,GAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC;AAErE,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAC;AACH,aAAA,CAAC;;;AAIJ,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC3C,YAAA,GAAG,CAAC;SACQ;QAEd,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;;QAG9D,OAAO,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAM,CAAC;AACvD,IAAA,CAAC;IAED,MAAM,IAAI,GAAoB,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;IAE7E,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":"partial.d.mts","sourceRoot":"","sources":["../../src/record/partial.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrD;;;GAGG;AACH,eAAO,MAAM,OAAO,GAClB,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EACnC,KAAK,CAAC,gBAAgB,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAEtE,YAAY,CAAC,EACb,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,WAAW,CAAC,CAAC,EAAE,gBAAgB,CA0EjC,CAAC;AAEF,KAAK,gBAAgB,CACnB,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EAC7B,gBAAgB,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,IAE5E,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,SAAS,IAAI,GAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAClB,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAElE,KAAK,WAAW,CACd,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EAC7B,gBAAgB,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,IAC1E,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"partial.d.mts","sourceRoot":"","sources":["../../src/record/partial.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrD;;;GAGG;AACH,eAAO,MAAM,OAAO,GAClB,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EACnC,KAAK,CAAC,gBAAgB,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAEtE,YAAY,CAAC,EACb,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,WAAW,CAAC,CAAC,EAAE,gBAAgB,CAwEjC,CAAC;AAEF,KAAK,gBAAgB,CACnB,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EAC7B,gBAAgB,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,IAE5E,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,SAAS,IAAI,GAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAClB,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAElE,KAAK,WAAW,CACd,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EAC7B,gBAAgB,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,IAC1E,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { Obj, isRecord, Result, ISet } 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 } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError } from '../utils/validation-error.mjs';
6
6
 
7
7
  /**
8
8
  * Creates a Partial type. If keysToBeOptional is set, only those keys are
@@ -35,7 +35,7 @@ const partial = (recordType, options) => {
35
35
  };
36
36
  const validationResult = recordType.validate(objectFilled);
37
37
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
38
- return Result.map(validationResult, Obj.pick(Object.keys(a)));
38
+ return Result.map(validationResult, () => a);
39
39
  };
40
40
  const fill = (a) => {
41
41
  if (!isRecord(a)) {
@@ -1 +1 @@
1
- {"version":3,"file":"partial.mjs","sources":["../../src/record/partial.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAKA;;;AAGG;MACU,OAAO,GAAG,CAIrB,UAAa,EACb,OAKC,KACmC;AAGpC,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,SAAC,OAAO,EAAE,gBAAgB,KAAK;AAC7B,cAAE,CAAA,QAAA,EAAW,UAAU,CAAC,QAAQ,CAAA,CAAA;AAChC,cAAE,CAAA,iBAAA,EAAoB,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;AAExF,IAAA,MAAM,gBAAgB,GACpB,OAAO,EAAE,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;;AAGnE,IAAA,MAAM,YAAY,GAAM,GAAG,CAAC,IAAI,CAC9B,UAAU,CAAC,YAAY,EACvB,gBAAgB,CACZ;AAEN,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAC;AACH,aAAA,CAAC;;;AAIJ,QAAA,MAAM,YAAY,GAAG;;YAEnB,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,gBAAgB,CAAC;;AAEtD,YAAA,GAAG,CAAC;SACQ;QAEd,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;;AAG1D,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAE3D;AACH,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAAI;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAChB,YAAA,OAAO,YAAY;;AAGrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAG7C,OAAO,GAAG,CAAC,IAAI;;AAEb,QAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;;AAElB,QAAA,gBAAgB,CAAC,MAAM,CACrB,CAAC,CAAC;;QAEA,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CACpB,CACc;AACnB,IAAA,CAAC;IAED,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;AAeA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;"}
1
+ {"version":3,"file":"partial.mjs","sources":["../../src/record/partial.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AASA;;;AAGG;MACU,OAAO,GAAG,CAIrB,UAAa,EACb,OAKC,KACmC;AAGpC,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,SAAC,OAAO,EAAE,gBAAgB,KAAK;AAC7B,cAAE,CAAA,QAAA,EAAW,UAAU,CAAC,QAAQ,CAAA,CAAA;AAChC,cAAE,CAAA,iBAAA,EAAoB,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;AAExF,IAAA,MAAM,gBAAgB,GACpB,OAAO,EAAE,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;;AAGnE,IAAA,MAAM,YAAY,GAAM,GAAG,CAAC,IAAI,CAC9B,UAAU,CAAC,YAAY,EACvB,gBAAgB,CACZ;AAEN,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAC;AACH,aAAA,CAAC;;;AAIJ,QAAA,MAAM,YAAY,GAAG;;YAEnB,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,gBAAgB,CAAC;;AAEtD,YAAA,GAAG,CAAC;SACQ;QAEd,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;;QAG1D,OAAO,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAM,CAAC;AACnD,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAAI;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAChB,YAAA,OAAO,YAAY;;AAGrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAG7C,OAAO,GAAG,CAAC,IAAI;;AAEb,QAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;;AAElB,QAAA,gBAAgB,CAAC,MAAM,CACrB,CAAC,CAAC;;QAEA,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CACpB,CACc;AACnB,IAAA,CAAC;IAED,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;AAeA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"pick.d.mts","sourceRoot":"","sources":["../../src/record/pick.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrD,8CAA8C;AAC9C,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EACnC,KAAK,CAAC,UAAU,SAAS,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,EAE9D,YAAY,CAAC,EACb,YAAY,UAAU,EACtB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,UAAU,CAAC,CAAC,EAAE,UAAU,CA8C1B,CAAC;AAEF,KAAK,UAAU,CACb,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,SAAS,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"pick.d.mts","sourceRoot":"","sources":["../../src/record/pick.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrD,8CAA8C;AAC9C,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EACnC,KAAK,CAAC,UAAU,SAAS,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,EAE9D,YAAY,CAAC,EACb,YAAY,UAAU,EACtB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,UAAU,CAAC,CAAC,EAAE,UAAU,CA4C1B,CAAC;AAEF,KAAK,UAAU,CACb,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,SAAS,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { Obj, isRecord, 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 } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError } from '../utils/validation-error.mjs';
6
6
 
7
7
  /** Creates a record type with keys picked. */
8
8
  const pick = (recordType, keysToPick, options) => {
@@ -26,7 +26,7 @@ const pick = (recordType, keysToPick, options) => {
26
26
  };
27
27
  const baseValidationResult = recordType.validate(objectFilled);
28
28
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
29
- return Result.map(baseValidationResult, Obj.pick(keysToPick));
29
+ return Result.map(baseValidationResult, () => a);
30
30
  };
31
31
  const fill = (a) => Obj.pick(recordType.fill(a), keysToPick);
32
32
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"pick.mjs","sources":["../../src/record/pick.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAKA;AACO,MAAM,IAAI,GAAG,CAIlB,UAAa,EACb,UAAsB,EACtB,OAIC,KAC4B;AAG7B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;QACjB,CAAA,KAAA,EAAQ,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AAEzD,IAAA,MAAM,YAAY,GAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAM;AAE1E,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAC;AACH,aAAA,CAAC;;;AAIJ,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC3C,YAAA,GAAG,CAAC;SACQ;QAEd,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;;AAG9D,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAE3D;AACH,IAAA,CAAC;IAED,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAM;IAE/C,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":"pick.mjs","sources":["../../src/record/pick.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AASA;AACO,MAAM,IAAI,GAAG,CAIlB,UAAa,EACb,UAAsB,EACtB,OAIC,KAC4B;AAG7B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;QACjB,CAAA,KAAA,EAAQ,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AAEzD,IAAA,MAAM,YAAY,GAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAM;AAE1E,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAC;AACH,aAAA,CAAC;;;AAIJ,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC3C,YAAA,GAAG,CAAC;SACQ;QAEd,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;;QAG9D,OAAO,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAM,CAAC;AACvD,IAAA,CAAC;IAED,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAM;IAE/C,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":"record.d.mts","sourceRoot":"","sources":["../../src/record/record.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAC1E,QAAQ,CAAC,EACT,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IAEjB,oBAAoB;IACpB,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC,CACH,KACA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAwGzB,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAClE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE5C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAC7C,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,sBAAsB,CACzB,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAC/C,YAAY,SAAS,MAAM,CAAC,IAE5B,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,IAAI,GACpC,QAAQ,CAAC;SACN,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACxD,CAAC,GACF,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,SAAS,IAAI,GACxC,QAAQ,CACN,iBAAiB,CAAC;SACf,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACvC,CAAC,CACH,GACD,QAAQ,CACN,iBAAiB,CACf;SACG,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACvC,GAAG;SACD,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACxD,CACF,CACF,CAAC;IAEV,KAAK,gBAAgB,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;SACtE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAAE,QAAQ,EAAE,IAAI,CAAA;SAAE,GAAG,CAAC,GAAG,KAAK;KAC5D,CAAC,MAAM,CAAC,CAAC,CAAC;;CACZ;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAErD,QAAQ,CAAC,EACT,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACoC,CAAC"}
1
+ {"version":3,"file":"record.d.mts","sourceRoot":"","sources":["../../src/record/record.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAWrD,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAC1E,QAAQ,CAAC,EACT,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IAEjB,oBAAoB;IACpB,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC,CACH,KACA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAuGzB,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAClE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE5C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAC7C,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,sBAAsB,CACzB,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAC/C,YAAY,SAAS,MAAM,CAAC,IAE5B,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,IAAI,GACpC,QAAQ,CAAC;SACN,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACxD,CAAC,GACF,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,SAAS,IAAI,GACxC,QAAQ,CACN,iBAAiB,CAAC;SACf,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACvC,CAAC,CACH,GACD,QAAQ,CACN,iBAAiB,CACf;SACG,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACvC,GAAG;SACD,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACxD,CACF,CACF,CAAC;IAEV,KAAK,gBAAgB,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;SACtE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAAE,QAAQ,EAAE,IAAI,CAAA;SAAE,GAAG,CAAC,GAAG,KAAK;KAC5D,CAAC,MAAM,CAAC,CAAC,CAAC;;CACZ;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAErD,QAAQ,CAAC,EACT,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACoC,CAAC"}
@@ -1,8 +1,8 @@
1
- import { tp, isRecord, Result } from 'ts-data-forge';
1
+ import { tp, isRecord, Result, Arr } 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, prependPathToValidationErrors } from '../validation-error.mjs';
5
+ import { createPrimitiveValidationError, prependPathToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  const record = (source, options) => {
8
8
  const sourceKeys = new Set(Object.keys(source));
@@ -24,26 +24,28 @@ const record = (source, options) => {
24
24
  }),
25
25
  ]);
26
26
  }
27
- const defaultErrors = Object.entries(source).flatMap(([k, valueType]) => {
28
- if (!Object.hasOwn(a, k)) {
29
- if (source[k]?.optional === true)
30
- return [];
31
- return [
32
- {
33
- path: [k],
34
- actualValue: a,
35
- typeName: typeNameFilled,
36
- expectedType: typeNameFilled,
37
- message: `Missing required key "${k}"`,
38
- },
39
- ];
27
+ const defaultErrors = Arr.generate(function* () {
28
+ for (const [k, valueType] of Object.entries(source)) {
29
+ if (!Object.hasOwn(a, k)) {
30
+ if (source[k]?.optional !== true) {
31
+ yield {
32
+ path: [k],
33
+ actualValue: a,
34
+ typeName: typeNameFilled,
35
+ expectedType: typeNameFilled,
36
+ message: `Missing required key "${k}"`,
37
+ };
38
+ }
39
+ }
40
+ else {
41
+ // The case where the key exists in the object
42
+ const v = a[k];
43
+ const res = valueType.validate(v);
44
+ if (Result.isErr(res)) {
45
+ yield* prependPathToValidationErrors(res.value, k);
46
+ }
47
+ }
40
48
  }
41
- const v = a[k];
42
- const res = valueType.validate(v);
43
- if (Result.isErr(res)) {
44
- return prependPathToValidationErrors(res.value, k);
45
- }
46
- return [];
47
49
  });
48
50
  // Check for excess properties if allowExcessProperties is false
49
51
  if (!allowExcessProperties) {
@@ -1 +1 @@
1
- {"version":3,"file":"record.mjs","sources":["../../src/record/record.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.mjs","sources":["../../src/record/record.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/type.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Result } from 'ts-data-forge';
2
- import { type ValidationError } from './validation-error.mjs';
2
+ import { type ValidationError } from './utils/index.mjs';
3
3
  /**
4
4
  * - `typeName` : Name for this type
5
5
  * - `is` : Type guard function
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.mts","sourceRoot":"","sources":["../src/type.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,CAAC,CAAC;IAChB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC,CAAC;IAEhE,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAEhE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,iBAAiB,CAC7C,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC,CACvC,CAAC"}
1
+ {"version":3,"file":"type.d.mts","sourceRoot":"","sources":["../src/type.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,CAAC,CAAC;IAChB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC,CAAC;IAEhE,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAEhE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,iBAAiB,CAC7C,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC,CACvC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Result } from 'ts-data-forge';
2
- import { validationErrorsToMessages } from '../validation-error.mjs';
2
+ import { validationErrorsToMessages } from './validation-error.mjs';
3
3
 
4
4
  const validationResultToString = (result) => `\n${validationErrorsToMessages(result).join(',\n')}`;
5
5
  const createAssertFn = (validate) => (a) => {
@@ -1,5 +1,5 @@
1
1
  import { Result } from 'ts-data-forge';
2
- import { validationErrorsToMessages } from '../validation-error.mjs';
2
+ import { validationErrorsToMessages } from './validation-error.mjs';
3
3
 
4
4
  const validationResultToString = (result) => `\n${validationErrorsToMessages(result).join(',\n')}`;
5
5
  const createCastFn = (validate) => (a) => {
@@ -1,7 +1,7 @@
1
1
  import { Result } from 'ts-data-forge';
2
- import { createPrimitiveValidationError } from '../validation-error.mjs';
3
2
  import { createAssertFn } from './create-assert-fn.mjs';
4
3
  import { createCastFn } from './create-cast-fn.mjs';
4
+ import { createPrimitiveValidationError } from './validation-error.mjs';
5
5
 
6
6
  const createPrimitiveType = ({ typeName, defaultValue, is, }) => {
7
7
  const validate = (a) => is(a)
@@ -3,4 +3,5 @@ export * from './create-cast-fn.mjs';
3
3
  export * from './create-is-fn.mjs';
4
4
  export * from './create-primitive-type.mjs';
5
5
  export * from './create-type.mjs';
6
+ export * from './validation-error.mjs';
6
7
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/utils/index.mts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/utils/index.mts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
@@ -3,4 +3,5 @@ export { createCastFn } from './create-cast-fn.mjs';
3
3
  export { createIsFn } from './create-is-fn.mjs';
4
4
  export { createPrimitiveType } from './create-primitive-type.mjs';
5
5
  export { createType } from './create-type.mjs';
6
+ export { createPrimitiveValidationError, prependIndexToValidationErrors, prependPathToValidationErrors, validationErrorToMessage, validationErrorsToMessages } from './validation-error.mjs';
6
7
  //# 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":";;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.d.mts","sourceRoot":"","sources":["../../src/utils/validation-error.mts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,iFAAiF;IACjF,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,CACxD,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CACvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,eAAe,KAAG,MASjE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GACrC,QAAQ,SAAS,eAAe,EAAE,KACjC,SAAS,MAAM,EAA0C,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,6BAA6B,GACxC,QAAQ,SAAS,eAAe,EAAE,EAClC,aAAa,MAAM,KAClB,SAAS,eAAe,EAItB,CAAC;AAEN;;GAEG;AACH,eAAO,MAAM,8BAA8B,GACzC,QAAQ,SAAS,eAAe,EAAE,EAClC,OAAO,MAAM,KACZ,SAAS,eAAe,EAC8B,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,8BAA8B,GAAI,0CAI5C,QAAQ,CAAC;IACV,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,KAAG,eAMH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.mjs","sources":["../../src/utils/validation-error.mts"],"sourcesContent":[null],"names":[],"mappings":"AAoBA;;AAEG;AACI,MAAM,wBAAwB,GAAG,CAAC,KAAsB,KAAY;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,IAAA,EAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,GAAG,EAAE;AAC1E,IAAA,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,WAAW;AAE9C,IAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;AAC/B,QAAA,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA,EAAG,OAAO,EAAE;IACrC;IAEA,OAAO,CAAA,SAAA,EAAY,KAAK,CAAC,YAAY,GAAG,OAAO,CAAA,MAAA,EAAS,aAAa,CAAA,CAAE;AACzE;AAEA;;;AAGG;AACI,MAAM,0BAA0B,GAAG,CACxC,MAAkC,KACZ,MAAM,CAAC,GAAG,CAAC,wBAAwB;AAE3D;;AAEG;MACU,6BAA6B,GAAG,CAC3C,MAAkC,EAClC,WAAmB,KAEnB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AACrB,IAAA,GAAG,KAAK;IACR,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,CAAA,CAAC;AAEJ;;AAEG;MACU,8BAA8B,GAAG,CAC5C,MAAkC,EAClC,KAAa,KAEb,6BAA6B,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE;AAExD;;AAEG;AACI,MAAM,8BAA8B,GAAG,CAAC,EAC7C,WAAW,EACX,YAAY,EACZ,QAAQ,GAKR,MAAuB;AACvB,IAAA,IAAI,EAAE,EAAE;IACR,WAAW;IACX,YAAY;IACZ,QAAQ;AACR,IAAA,OAAO,EAAE,SAAS;AACnB,CAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-fortress",
3
- "version": "2.2.1",
3
+ "version": "2.2.2",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript"
@@ -84,6 +84,7 @@
84
84
  "eslint-plugin-unicorn": "60.0.0",
85
85
  "eslint-plugin-vitest": "0.5.4",
86
86
  "fast-glob": "^3.3.3",
87
+ "io-ts": "^2.2.22",
87
88
  "markdownlint-cli2": "^0.18.1",
88
89
  "prettier": "^3.6.2",
89
90
  "prettier-plugin-organize-imports": "^4.2.0",
@@ -97,6 +98,7 @@
97
98
  "typedoc-plugin-markdown": "^4.8.1",
98
99
  "typescript": "^5.9.2",
99
100
  "typescript-eslint": "^8.39.1",
100
- "vitest": "^3.2.4"
101
+ "vitest": "^3.2.4",
102
+ "zod": "^4.0.17"
101
103
  }
102
104
  }
@@ -1,11 +1,14 @@
1
1
  import { Arr, Result } from 'ts-data-forge';
2
2
  import { type Type } from '../type.mjs';
3
- import { createAssertFn, createCastFn, createIsFn } from '../utils/index.mjs';
4
3
  import {
4
+ createAssertFn,
5
+ createCastFn,
6
+ createIsFn,
5
7
  createPrimitiveValidationError,
6
8
  prependIndexToValidationErrors,
9
+ type ValidationError,
7
10
  type ValidationErrorWithMessage,
8
- } from '../validation-error.mjs';
11
+ } from '../utils/index.mjs';
9
12
 
10
13
  export const arrayOfLength = <A, N extends SmallUint>(
11
14
  size: N,
@@ -49,11 +52,13 @@ export const arrayOfLength = <A, N extends SmallUint>(
49
52
  ]);
50
53
  }
51
54
 
52
- const errors = a.flatMap((el, index) => {
53
- const res = elementType.validate(el);
54
- return Result.isErr(res)
55
- ? prependIndexToValidationErrors(res.value, index)
56
- : [];
55
+ const errors: readonly ValidationError[] = Arr.generate(function* () {
56
+ for (const [index, el] of a.entries()) {
57
+ const res = elementType.validate(el);
58
+ if (Result.isErr(res)) {
59
+ yield* prependIndexToValidationErrors(res.value, index);
60
+ }
61
+ }
57
62
  });
58
63
 
59
64
  if (errors.length > 0) {
@@ -4,7 +4,7 @@ import { type TypeOf } from '../type.mjs';
4
4
  import {
5
5
  type ValidationError,
6
6
  validationErrorsToMessages,
7
- } from '../validation-error.mjs';
7
+ } from '../utils/index.mjs';
8
8
  import { arrayOfLength } from './array-of-length.mjs';
9
9
 
10
10
  describe('arrayOfLength', () => {
@@ -89,6 +89,15 @@ describe('arrayOfLength', () => {
89
89
  }
90
90
  });
91
91
 
92
+ test('validate returns input as-is for OK cases', () => {
93
+ const input = [5, 6, 7, 8];
94
+ const result = xs.validate(input);
95
+ expect(Result.isOk(result)).toBe(true);
96
+ if (Result.isOk(result)) {
97
+ expect(result.value).toBe(input); // ✅ same reference
98
+ }
99
+ });
100
+
92
101
  test('falsy case 1', () => {
93
102
  const ys: unknown = [];
94
103
 
@@ -1,10 +1,13 @@
1
1
  import { Arr, Result } from 'ts-data-forge';
2
2
  import { type Type } from '../type.mjs';
3
- import { createAssertFn, createCastFn, createIsFn } from '../utils/index.mjs';
4
3
  import {
4
+ createAssertFn,
5
+ createCastFn,
6
+ createIsFn,
5
7
  createPrimitiveValidationError,
6
8
  prependIndexToValidationErrors,
7
- } from '../validation-error.mjs';
9
+ type ValidationError,
10
+ } from '../utils/index.mjs';
8
11
 
9
12
  export const array = <A,>(
10
13
  elementType: Type<A>,
@@ -32,11 +35,13 @@ export const array = <A,>(
32
35
  ]);
33
36
  }
34
37
 
35
- const errors = a.flatMap((el, index) => {
36
- const res = elementType.validate(el);
37
- return Result.isErr(res)
38
- ? prependIndexToValidationErrors(res.value, index)
39
- : [];
38
+ const errors: readonly ValidationError[] = Arr.generate(function* () {
39
+ for (const [index, el] of a.entries()) {
40
+ const res = elementType.validate(el);
41
+ if (Result.isErr(res)) {
42
+ yield* prependIndexToValidationErrors(res.value, index);
43
+ }
44
+ }
40
45
  });
41
46
 
42
47
  if (errors.length > 0) {
@@ -4,7 +4,7 @@ import { type TypeOf } from '../type.mjs';
4
4
  import {
5
5
  type ValidationError,
6
6
  validationErrorsToMessages,
7
- } from '../validation-error.mjs';
7
+ } from '../utils/index.mjs';
8
8
  import { array } from './array.mjs';
9
9
 
10
10
  describe('array', () => {
@@ -108,6 +108,15 @@ describe('array', () => {
108
108
  throw new Error('Expected validation to fail');
109
109
  }
110
110
  });
111
+
112
+ test('validate returns input as-is for OK cases', () => {
113
+ const input = [10, 20, 30];
114
+ const result = xs.validate(input);
115
+ expect(Result.isOk(result)).toBe(true);
116
+ if (Result.isOk(result)) {
117
+ expect(result.value).toBe(input); // ✅ same reference
118
+ }
119
+ });
111
120
  });
112
121
 
113
122
  describe('fill', () => {
@@ -1,12 +1,14 @@
1
1
  import { Arr, Result } from 'ts-data-forge';
2
2
  import { type Type } from '../type.mjs';
3
- import { createAssertFn, createCastFn, createIsFn } from '../utils/index.mjs';
4
3
  import {
4
+ createAssertFn,
5
+ createCastFn,
6
+ createIsFn,
5
7
  createPrimitiveValidationError,
6
8
  prependIndexToValidationErrors,
7
9
  type ValidationError,
8
10
  type ValidationErrorWithMessage,
9
- } from '../validation-error.mjs';
11
+ } from '../utils/index.mjs';
10
12
 
11
13
  export const nonEmptyArray = <A,>(
12
14
  elementType: Type<A>,
@@ -46,11 +48,13 @@ export const nonEmptyArray = <A,>(
46
48
  ]);
47
49
  }
48
50
 
49
- const errors: readonly ValidationError[] = a.flatMap((el, index) => {
50
- const res = elementType.validate(el);
51
- return Result.isErr(res)
52
- ? prependIndexToValidationErrors(res.value, index)
53
- : [];
51
+ const errors: readonly ValidationError[] = Arr.generate(function* () {
52
+ for (const [index, el] of a.entries()) {
53
+ const res = elementType.validate(el);
54
+ if (Result.isErr(res)) {
55
+ yield* prependIndexToValidationErrors(res.value, index);
56
+ }
57
+ }
54
58
  });
55
59
 
56
60
  if (errors.length > 0) {
@@ -4,7 +4,7 @@ import { type TypeOf } from '../type.mjs';
4
4
  import {
5
5
  type ValidationError,
6
6
  validationErrorsToMessages,
7
- } from '../validation-error.mjs';
7
+ } from '../utils/index.mjs';
8
8
  import { nonEmptyArray } from './non-empty-array.mjs';
9
9
 
10
10
  describe('nonEmptyArray', () => {
@@ -89,6 +89,15 @@ describe('nonEmptyArray', () => {
89
89
  }
90
90
  });
91
91
 
92
+ test('validate returns input as-is for OK cases', () => {
93
+ const input = [1, 2, 3];
94
+ const result = xs.validate(input);
95
+ expect(Result.isOk(result)).toBe(true);
96
+ if (Result.isOk(result)) {
97
+ expect(result.value).toBe(input); // ✅ same reference
98
+ }
99
+ });
100
+
92
101
  test('falsy case 1', () => {
93
102
  const ys: unknown = [];
94
103
 
@@ -1,12 +1,14 @@
1
1
  import { Arr, Result } from 'ts-data-forge';
2
2
  import { type Type, type TypeOf } from '../type.mjs';
3
- import { createAssertFn, createCastFn, createIsFn } from '../utils/index.mjs';
4
3
  import {
4
+ createAssertFn,
5
+ createCastFn,
6
+ createIsFn,
5
7
  createPrimitiveValidationError,
6
8
  prependIndexToValidationErrors,
7
9
  type ValidationError,
8
10
  type ValidationErrorWithMessage,
9
- } from '../validation-error.mjs';
11
+ } from '../utils/index.mjs';
10
12
 
11
13
  type MapTuple<T extends readonly Type<unknown>[]> = {
12
14
  readonly [K in keyof T]: TypeOf<T[K]>;
@@ -48,14 +50,14 @@ export const tuple = <const A extends readonly Type<unknown>[]>(
48
50
  ]);
49
51
  }
50
52
 
51
- const errors: readonly ValidationError[] = Arr.zip(types, a).flatMap(
52
- ([typeDef, el], index) => {
53
+ const errors: readonly ValidationError[] = Arr.generate(function* () {
54
+ for (const [index, [typeDef, el]] of Arr.zip(types, a).entries()) {
53
55
  const res = typeDef.validate(el);
54
- return Result.isErr(res)
55
- ? prependIndexToValidationErrors(res.value, index)
56
- : [];
57
- },
58
- );
56
+ if (Result.isErr(res)) {
57
+ yield* prependIndexToValidationErrors(res.value, index);
58
+ }
59
+ }
60
+ });
59
61
 
60
62
  if (errors.length > 0) {
61
63
  return Result.err(errors);
@@ -5,7 +5,7 @@ import { type TypeOf } from '../type.mjs';
5
5
  import {
6
6
  type ValidationError,
7
7
  validationErrorsToMessages,
8
- } from '../validation-error.mjs';
8
+ } from '../utils/index.mjs';
9
9
  import { tuple } from './tuple.mjs';
10
10
 
11
11
  describe('tuple', () => {
@@ -158,6 +158,19 @@ describe('tuple', () => {
158
158
  ]);
159
159
  }
160
160
  });
161
+
162
+ test('validate returns input as-is for OK cases', () => {
163
+ const input = [{ x: 5, y: 10 }, 3, '2'];
164
+ const result = targetType.validate(input);
165
+ expect(Result.isOk(result)).toBe(true);
166
+ if (Result.isOk(result)) {
167
+ // Note: tuple validation may create new arrays for type safety
168
+ // so we check for structural equality rather than reference equality
169
+ expect(result.value).toStrictEqual(input);
170
+ // For tuples, the inner objects should maintain reference equality
171
+ expect(result.value[0]).toBe(input[0]); // ✅ same reference for nested objects
172
+ }
173
+ });
161
174
  });
162
175
 
163
176
  describe('fill', () => {
@@ -1,10 +1,10 @@
1
1
  import { pipe, Result } from 'ts-data-forge';
2
2
  import { type Type } from '../type.mjs';
3
- import { createType } from '../utils/index.mjs';
4
3
  import {
4
+ createType,
5
5
  type ValidationError,
6
6
  type ValidationErrorWithMessage,
7
- } from '../validation-error.mjs';
7
+ } from '../utils/index.mjs';
8
8
 
9
9
  type ArrayToUnion<A extends readonly unknown[]> = A extends readonly []
10
10
  ? never
@@ -1,6 +1,6 @@
1
1
  import { asFiniteNumber, expectType, Result } from 'ts-data-forge';
2
2
  import { type TypeOf } from '../../type.mjs';
3
- import { validationErrorsToMessages } from '../../validation-error.mjs';
3
+ import { validationErrorsToMessages } from '../../utils/index.mjs';
4
4
  import { finiteNumber } from './finite-number.mjs';
5
5
 
6
6
  describe('finiteNumber', () => {
@@ -72,6 +72,15 @@ describe('finiteNumber', () => {
72
72
  }
73
73
  });
74
74
 
75
+ test('validate returns input as-is for OK cases', () => {
76
+ const input = 123.456;
77
+ const result = targetType.validate(input);
78
+ expect(Result.isOk(result)).toBe(true);
79
+ if (Result.isOk(result)) {
80
+ expect(result.value).toBe(input); // ✅ same reference
81
+ }
82
+ });
83
+
75
84
  test('falsy case - infinity', () => {
76
85
  const result = targetType.validate(Number.POSITIVE_INFINITY);
77
86
  expect(Result.isErr(result)).toBe(true);
@@ -1,6 +1,6 @@
1
1
  import { asInt, expectType, Result } from 'ts-data-forge';
2
2
  import { type TypeOf } from '../../type.mjs';
3
- import { validationErrorsToMessages } from '../../validation-error.mjs';
3
+ import { validationErrorsToMessages } from '../../utils/index.mjs';
4
4
  import { int } from './int.mjs';
5
5
 
6
6
  describe('int', () => {
@@ -102,6 +102,15 @@ describe('int', () => {
102
102
  ]);
103
103
  }
104
104
  });
105
+
106
+ test('validate returns input as-is for OK cases', () => {
107
+ const input = 123;
108
+ const result = targetType.validate(input);
109
+ expect(Result.isOk(result)).toBe(true);
110
+ if (Result.isOk(result)) {
111
+ expect(result.value).toBe(input); // ✅ same reference
112
+ }
113
+ });
105
114
  });
106
115
 
107
116
  describe('assertIs', () => {