ts-fortress 2.9.0 → 3.0.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 (80) hide show
  1. package/dist/branded/brand.d.mts +2 -2
  2. package/dist/branded/brand.d.mts.map +1 -1
  3. package/dist/branded/brand.mjs +7 -7
  4. package/dist/branded/brand.mjs.map +1 -1
  5. package/dist/branded/number/finite-number.mjs +1 -1
  6. package/dist/branded/number/finite-number.mjs.map +1 -1
  7. package/dist/branded/number/int.mjs +1 -1
  8. package/dist/branded/number/int.mjs.map +1 -1
  9. package/dist/branded/number/int16.mjs +1 -1
  10. package/dist/branded/number/int16.mjs.map +1 -1
  11. package/dist/branded/number/int32.mjs +1 -1
  12. package/dist/branded/number/int32.mjs.map +1 -1
  13. package/dist/branded/number/non-negative-finite-number.mjs +1 -1
  14. package/dist/branded/number/non-negative-finite-number.mjs.map +1 -1
  15. package/dist/branded/number/non-zero-finite-number.mjs +1 -1
  16. package/dist/branded/number/non-zero-finite-number.mjs.map +1 -1
  17. package/dist/branded/number/non-zero-int.mjs +1 -1
  18. package/dist/branded/number/non-zero-int.mjs.map +1 -1
  19. package/dist/branded/number/non-zero-safe-int.mjs +1 -1
  20. package/dist/branded/number/non-zero-safe-int.mjs.map +1 -1
  21. package/dist/branded/number/positive-finite-number.mjs +1 -1
  22. package/dist/branded/number/positive-finite-number.mjs.map +1 -1
  23. package/dist/branded/number/positive-int.mjs +1 -1
  24. package/dist/branded/number/positive-int.mjs.map +1 -1
  25. package/dist/branded/number/positive-safe-int.mjs +1 -1
  26. package/dist/branded/number/positive-safe-int.mjs.map +1 -1
  27. package/dist/branded/number/safe-int.mjs +1 -1
  28. package/dist/branded/number/safe-int.mjs.map +1 -1
  29. package/dist/branded/number/safe-uint.mjs +1 -1
  30. package/dist/branded/number/safe-uint.mjs.map +1 -1
  31. package/dist/branded/number/uint.mjs +1 -1
  32. package/dist/branded/number/uint.mjs.map +1 -1
  33. package/dist/branded/number/uint16.mjs +1 -1
  34. package/dist/branded/number/uint16.mjs.map +1 -1
  35. package/dist/branded/number/uint32.mjs +1 -1
  36. package/dist/branded/number/uint32.mjs.map +1 -1
  37. package/dist/branded/simple-branded-number.d.mts +5 -1
  38. package/dist/branded/simple-branded-number.d.mts.map +1 -1
  39. package/dist/branded/simple-branded-number.mjs +3 -3
  40. package/dist/branded/simple-branded-number.mjs.map +1 -1
  41. package/dist/branded/simple-branded-string.d.mts +5 -1
  42. package/dist/branded/simple-branded-string.d.mts.map +1 -1
  43. package/dist/branded/simple-branded-string.mjs +3 -3
  44. package/dist/branded/simple-branded-string.mjs.map +1 -1
  45. package/dist/entry-point.mjs +1 -0
  46. package/dist/entry-point.mjs.map +1 -1
  47. package/dist/index.mjs +1 -0
  48. package/dist/index.mjs.map +1 -1
  49. package/dist/other-types/index.d.mts +1 -0
  50. package/dist/other-types/index.d.mts.map +1 -1
  51. package/dist/other-types/index.mjs +1 -0
  52. package/dist/other-types/index.mjs.map +1 -1
  53. package/dist/other-types/refine.d.mts +8 -0
  54. package/dist/other-types/refine.d.mts.map +1 -0
  55. package/dist/other-types/refine.mjs +27 -0
  56. package/dist/other-types/refine.mjs.map +1 -0
  57. package/package.json +1 -1
  58. package/src/branded/brand.mts +9 -9
  59. package/src/branded/number/finite-number.mts +1 -1
  60. package/src/branded/number/int.mts +1 -1
  61. package/src/branded/number/int16.mts +1 -1
  62. package/src/branded/number/int32.mts +1 -1
  63. package/src/branded/number/non-negative-finite-number.mts +1 -1
  64. package/src/branded/number/non-zero-finite-number.mts +1 -1
  65. package/src/branded/number/non-zero-int.mts +1 -1
  66. package/src/branded/number/non-zero-safe-int.mts +1 -1
  67. package/src/branded/number/positive-finite-number.mts +1 -1
  68. package/src/branded/number/positive-int.mts +1 -1
  69. package/src/branded/number/positive-safe-int.mts +1 -1
  70. package/src/branded/number/safe-int.mts +1 -1
  71. package/src/branded/number/safe-uint.mts +1 -1
  72. package/src/branded/number/uint.mts +1 -1
  73. package/src/branded/number/uint16.mts +1 -1
  74. package/src/branded/number/uint32.mts +1 -1
  75. package/src/branded/simple-branded-number.mts +12 -7
  76. package/src/branded/simple-branded-number.test.mts +12 -3
  77. package/src/branded/simple-branded-string.mts +12 -7
  78. package/src/branded/simple-branded-string.test.mts +20 -5
  79. package/src/other-types/index.mts +1 -0
  80. package/src/other-types/refine.mts +46 -0
@@ -1,7 +1,7 @@
1
1
  import { type Type } from '../type.mjs';
2
2
  type ArrayToUnion<A extends readonly unknown[]> = A extends readonly [] ? never : A[number];
3
- export declare const brand: <const A extends Primitive, const BrandTrueKeys extends readonly string[], const BrandFalseKeys extends readonly string[] = []>({ codec, is, defaultValue, typeName, brandKeys, brandFalseKeys, }: Readonly<{
4
- codec: Type<A>;
3
+ export declare const brand: <const A extends Primitive, const BrandTrueKeys extends readonly string[], const BrandFalseKeys extends readonly string[] = []>({ baseType, is, defaultValue, typeName, brandKeys, brandFalseKeys, }: Readonly<{
4
+ baseType: Type<A>;
5
5
  is: (a: A) => a is Brand<A, ArrayToUnion<BrandTrueKeys>, ArrayToUnion<BrandFalseKeys>>;
6
6
  defaultValue: Brand<A, ArrayToUnion<BrandTrueKeys>, ArrayToUnion<BrandFalseKeys>>;
7
7
  typeName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.mts","sourceRoot":"","sources":["../../src/branded/brand.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,CAAC,SAAS,SAAS,EAAE,GACnE,KAAK,GACL,CAAC,CAAC,MAAM,CAAC,CAAC;AAEd,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,CAAC,SAAS,SAAS,EACzB,KAAK,CAAC,aAAa,SAAS,SAAS,MAAM,EAAE,EAC7C,KAAK,CAAC,cAAc,SAAS,SAAS,MAAM,EAAE,GAAG,EAAE,EACnD,mEAOC,QAAQ,CAAC;IACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,EAAE,EAAE,CACF,CAAC,EAAE,CAAC,KACD,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,YAAY,EAAE,KAAK,CACjB,CAAC,EACD,YAAY,CAAC,aAAa,CAAC,EAC3B,YAAY,CAAC,cAAc,CAAC,CAC7B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC,KAAG,IAAI,CACP,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAuCpE,CAAC"}
1
+ {"version":3,"file":"brand.d.mts","sourceRoot":"","sources":["../../src/branded/brand.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,CAAC,SAAS,SAAS,EAAE,GACnE,KAAK,GACL,CAAC,CAAC,MAAM,CAAC,CAAC;AAEd,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,CAAC,SAAS,SAAS,EACzB,KAAK,CAAC,aAAa,SAAS,SAAS,MAAM,EAAE,EAC7C,KAAK,CAAC,cAAc,SAAS,SAAS,MAAM,EAAE,GAAG,EAAE,EACnD,sEAOC,QAAQ,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,EAAE,EAAE,CACF,CAAC,EAAE,CAAC,KACD,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,YAAY,EAAE,KAAK,CACjB,CAAC,EACD,YAAY,CAAC,aAAa,CAAC,EAC3B,YAAY,CAAC,cAAc,CAAC,CAC7B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC,KAAG,IAAI,CACP,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAuCpE,CAAC"}
@@ -1,22 +1,22 @@
1
1
  import { pipe, Result } from 'ts-data-forge';
2
2
  import { createType } from '../utils/create-type.mjs';
3
3
 
4
- const brand = ({ codec, is, defaultValue, typeName, brandKeys, brandFalseKeys, }) => {
4
+ const brand = ({ baseType, is, defaultValue, typeName, brandKeys, brandFalseKeys, }) => {
5
5
  const brandKeysStr = [
6
6
  ...brandKeys.map((s) => `"${s}"`),
7
7
  ...(brandFalseKeys?.map((s) => `not("${s}")`) ?? []),
8
8
  ].join(' & ');
9
9
  const typeNameFilled = typeName ?? brandKeysStr;
10
10
  const validate = (a) => pipe(a)
11
- .map(codec.validate)
12
- .map((v) => Result.isErr(v)
13
- ? v
14
- : is(v.value)
15
- ? Result.ok(v.value)
11
+ .map(baseType.validate)
12
+ .map((res) => Result.isErr(res)
13
+ ? res
14
+ : is(res.value)
15
+ ? Result.ok(res.value)
16
16
  : Result.err([
17
17
  {
18
18
  path: [],
19
- actualValue: v.value,
19
+ actualValue: res.value,
20
20
  expectedType: typeNameFilled,
21
21
  typeName: brandKeysStr,
22
22
  message: typeName === undefined
@@ -1 +1 @@
1
- {"version":3,"file":"brand.mjs","sources":["../../src/branded/brand.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAQO,MAAM,KAAK,GAAG,CAInB,EACA,KAAK,EACL,EAAE,EACF,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,cAAc,GAcd,KAEE;AAGF,IAAA,MAAM,YAAY,GAAG;AACnB,QAAA,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC;AACjC,QAAA,IAAI,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA,EAAA,CAAI,CAAC,IAAI,EAAE,CAAC;AACrD,KAAA,CAAC,IAAI,CAAC,KAAK,CAAC;AAEb,IAAA,MAAM,cAAc,GAAG,QAAQ,IAAI,YAAY;IAE/C,MAAM,QAAQ,GAAwB,CAAC,CAAC,KACtC,IAAI,CAAC,CAAC;AACH,SAAA,GAAG,CAAC,KAAK,CAAC,QAAQ;SAClB,GAAG,CACF,CAAC,CAAC,KACA,MAAM,CAAC,KAAK,CAAC,CAAC;AACZ,UAAE;AACF,UAAE,EAAE,CAAC,CAAC,CAAC,KAAK;cACR,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AACnB,cAAE,MAAM,CAAC,GAAG,CAAC;AACT,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;oBACR,WAAW,EAAE,CAAC,CAAC,KAAK;AACpB,oBAAA,YAAY,EAAE,cAAc;AAC5B,oBAAA,QAAQ,EAAE,YAAY;oBACtB,OAAO,EACL,QAAQ,KAAK;0BACT,CAAA,wEAAA,EAA2E,YAAY,CAAA,CAAA;AACzF,0BAAE,SAAS;AACU,iBAAA;aAC5B,CAAC,CACX,CAAC,KAAK;AAEX,IAAA,OAAO,UAAU,CAAC;AAChB,QAAA,QAAQ,EAAE,YAAY;QACtB,YAAY;QACZ,QAAQ;AACT,KAAA,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"brand.mjs","sources":["../../src/branded/brand.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAQO,MAAM,KAAK,GAAG,CAInB,EACA,QAAQ,EACR,EAAE,EACF,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,cAAc,GAcd,KAEE;AAGF,IAAA,MAAM,YAAY,GAAG;AACnB,QAAA,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC;AACjC,QAAA,IAAI,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA,EAAA,CAAI,CAAC,IAAI,EAAE,CAAC;AACrD,KAAA,CAAC,IAAI,CAAC,KAAK,CAAC;AAEb,IAAA,MAAM,cAAc,GAAG,QAAQ,IAAI,YAAY;IAE/C,MAAM,QAAQ,GAAwB,CAAC,CAAC,KACtC,IAAI,CAAC,CAAC;AACH,SAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ;SACrB,GAAG,CACF,CAAC,GAAG,KACF,MAAM,CAAC,KAAK,CAAC,GAAG;AACd,UAAE;AACF,UAAE,EAAE,CAAC,GAAG,CAAC,KAAK;cACV,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAiB;AACjC,cAAE,MAAM,CAAC,GAAG,CAAC;AACT,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;oBACR,WAAW,EAAE,GAAG,CAAC,KAAK;AACtB,oBAAA,YAAY,EAAE,cAAc;AAC5B,oBAAA,QAAQ,EAAE,YAAY;oBACtB,OAAO,EACL,QAAQ,KAAK;0BACT,CAAA,wEAAA,EAA2E,YAAY,CAAA,CAAA;AACzF,0BAAE,SAAS;AACU,iBAAA;aAC5B,CAAC,CACX,CAAC,KAAK;AAEX,IAAA,OAAO,UAAU,CAAC;AAChB,QAAA,QAAQ,EAAE,YAAY;QACtB,YAAY;QACZ,QAAQ;AACT,KAAA,CAAC;AACJ;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const finiteNumber = (defaultValue = asFiniteNumber(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: FiniteNumber.is,
8
8
  defaultValue,
9
9
  brandKeys: ['Finite'],
@@ -1 +1 @@
1
- {"version":3,"file":"finite-number.mjs","sources":["../../../src/branded/number/finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,YAAY,GAAG,CAC1B,YAAA,GAA6B,cAAc,CAAC,CAAC,CAAC,KAE9C,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;IAC3B,EAAE,EAAE,YAAY,CAAC,EAAE;IACnB,YAAY;IACZ,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,cAAc;AACzB,CAAA;;;;"}
1
+ {"version":3,"file":"finite-number.mjs","sources":["../../../src/branded/number/finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,YAAY,GAAG,CAC1B,YAAA,GAA6B,cAAc,CAAC,CAAC,CAAC,KAE9C,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAC9B,EAAE,EAAE,YAAY,CAAC,EAAE;IACnB,YAAY;IACZ,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,cAAc;AACzB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const int = (defaultValue = asInt(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: Int.is,
8
8
  defaultValue,
9
9
  brandKeys: ['Finite', 'Int'],
@@ -1 +1 @@
1
- {"version":3,"file":"int.mjs","sources":["../../../src/branded/number/int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,GAAG,GAAG,CAAC,YAAA,GAAoB,KAAK,CAAC,CAAC,CAAC,KAC9C,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;IAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;IACV,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC5B,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,KAAK;AAChB,CAAA;;;;"}
1
+ {"version":3,"file":"int.mjs","sources":["../../../src/branded/number/int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,GAAG,GAAG,CAAC,YAAA,GAAoB,KAAK,CAAC,CAAC,CAAC,KAC9C,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAC9B,EAAE,EAAE,GAAG,CAAC,EAAE;IACV,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC5B,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,KAAK;AAChB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const int16 = (defaultValue = asInt16(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isInt16,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"int16.mjs","sources":["../../../src/branded/number/int16.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,KAAK,GAAG,CAAC,YAAA,GAAsB,OAAO,CAAC,CAAC,CAAC,KACpD,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,OAAO;IACX,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,UAAU;AACX,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,OAAO;AAClB,CAAA;;;;"}
1
+ {"version":3,"file":"int16.mjs","sources":["../../../src/branded/number/int16.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,KAAK,GAAG,CAAC,YAAA,GAAsB,OAAO,CAAC,CAAC,CAAC,KACpD,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,OAAO;IACX,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,UAAU;AACX,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,OAAO;AAClB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const int32 = (defaultValue = asInt32(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isInt32,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"int32.mjs","sources":["../../../src/branded/number/int32.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,KAAK,GAAG,CAAC,YAAA,GAAsB,OAAO,CAAC,CAAC,CAAC,KACpD,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,OAAO;IACX,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,QAAQ;QACR,QAAQ;AACT,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,OAAO;AAClB,CAAA;;;;"}
1
+ {"version":3,"file":"int32.mjs","sources":["../../../src/branded/number/int32.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,KAAK,GAAG,CAAC,YAAA,GAAsB,OAAO,CAAC,CAAC,CAAC,KACpD,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,OAAO;IACX,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,QAAQ;QACR,QAAQ;AACT,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,OAAO;AAClB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const nonNegativeFiniteNumber = (defaultValue = asNonNegativeFiniteNumber(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isNonNegativeFiniteNumber,
8
8
  defaultValue,
9
9
  brandKeys: ['>=0', '> -2^16', '> -2^32', '>= -2^15', '>= -2^31', 'Finite'],
@@ -1 +1 @@
1
- {"version":3,"file":"non-negative-finite-number.mjs","sources":["../../../src/branded/number/non-negative-finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAQO,MAAM,uBAAuB,GAAG,CACrC,YAAA,GAAwC,yBAAyB,CAAC,CAAC,CAAC,KAEpE,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,yBAAyB;IAC7B,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;IAC1E,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,yBAAyB;AACpC,CAAA;;;;"}
1
+ {"version":3,"file":"non-negative-finite-number.mjs","sources":["../../../src/branded/number/non-negative-finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAQO,MAAM,uBAAuB,GAAG,CACrC,YAAA,GAAwC,yBAAyB,CAAC,CAAC,CAAC,KAEpE,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,yBAAyB;IAC7B,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;IAC1E,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,yBAAyB;AACpC,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const nonZeroFiniteNumber = (defaultValue) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isNonZeroFiniteNumber,
8
8
  defaultValue,
9
9
  brandKeys: ['!=0', 'Finite'],
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-finite-number.mjs","sources":["../../../src/branded/number/non-zero-finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,mBAAmB,GAAG,CACjC,YAAiC,KAEjC,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,qBAAqB;IACzB,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC5B,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,qBAAqB;AAChC,CAAA;;;;"}
1
+ {"version":3,"file":"non-zero-finite-number.mjs","sources":["../../../src/branded/number/non-zero-finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,mBAAmB,GAAG,CACjC,YAAiC,KAEjC,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,qBAAqB;IACzB,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC5B,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,qBAAqB;AAChC,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const nonZeroInt = (defaultValue = asNonZeroInt(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isNonZeroInt,
8
8
  defaultValue,
9
9
  brandKeys: ['Finite', 'Int', '!=0'],
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-int.mjs","sources":["../../../src/branded/number/non-zero-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,UAAU,GAAG,CACxB,YAAA,GAA2B,YAAY,CAAC,CAAC,CAAC,KAE1C,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,YAAY;IAChB,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;IACnC,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,YAAY;AACvB,CAAA;;;;"}
1
+ {"version":3,"file":"non-zero-int.mjs","sources":["../../../src/branded/number/non-zero-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,UAAU,GAAG,CACxB,YAAA,GAA2B,YAAY,CAAC,CAAC,CAAC,KAE1C,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,YAAY;IAChB,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;IACnC,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,YAAY;AACvB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const nonZeroSafeInt = (defaultValue) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isNonZeroSafeInt,
8
8
  defaultValue,
9
9
  brandKeys: ['Finite', 'Int', 'SafeInt', '!=0'],
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-safe-int.mjs","sources":["../../../src/branded/number/non-zero-safe-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,cAAc,GAAG,CAC5B,YAA4B,KAE5B,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,gBAAgB;IACpB,YAAY;IACZ,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;IAC9C,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,gBAAgB;AAC3B,CAAA;;;;"}
1
+ {"version":3,"file":"non-zero-safe-int.mjs","sources":["../../../src/branded/number/non-zero-safe-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,cAAc,GAAG,CAC5B,YAA4B,KAE5B,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,gBAAgB;IACpB,YAAY;IACZ,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;IAC9C,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,gBAAgB;AAC3B,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const positiveFiniteNumber = (defaultValue) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isPositiveFiniteNumber,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"positive-finite-number.mjs","sources":["../../../src/branded/number/positive-finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,oBAAoB,GAAG,CAClC,YAAkC,KAElC,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,sBAAsB;IAC1B,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,QAAQ;QACR,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,sBAAsB;AACjC,CAAA;;;;"}
1
+ {"version":3,"file":"positive-finite-number.mjs","sources":["../../../src/branded/number/positive-finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,oBAAoB,GAAG,CAClC,YAAkC,KAElC,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,sBAAsB;IAC1B,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,QAAQ;QACR,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,sBAAsB;AACjC,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const positiveInt = (defaultValue = asPositiveInt(1)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isPositiveInt,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"positive-int.mjs","sources":["../../../src/branded/number/positive-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,WAAW,GAAG,CACzB,YAAA,GAA4B,aAAa,CAAC,CAAC,CAAC,KAE5C,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,aAAa;IACjB,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,KAAK;QACL,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,aAAa;AACxB,CAAA;;;;"}
1
+ {"version":3,"file":"positive-int.mjs","sources":["../../../src/branded/number/positive-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,WAAW,GAAG,CACzB,YAAA,GAA4B,aAAa,CAAC,CAAC,CAAC,KAE5C,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,aAAa;IACjB,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,KAAK;QACL,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,aAAa;AACxB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const positiveSafeInt = (defaultValue = asPositiveSafeInt(1)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isPositiveSafeInt,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"positive-safe-int.mjs","sources":["../../../src/branded/number/positive-safe-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,eAAe,GAAG,CAC7B,YAAA,GAAgC,iBAAiB,CAAC,CAAC,CAAC,KAEpD,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,iBAAiB;IACrB,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,KAAK;QACL,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,iBAAiB;AAC5B,CAAA;;;;"}
1
+ {"version":3,"file":"positive-safe-int.mjs","sources":["../../../src/branded/number/positive-safe-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,eAAe,GAAG,CAC7B,YAAA,GAAgC,iBAAiB,CAAC,CAAC,CAAC,KAEpD,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,iBAAiB;IACrB,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,KAAK;QACL,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,iBAAiB;AAC5B,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const safeInt = (defaultValue = asSafeInt(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: SafeInt.is,
8
8
  defaultValue,
9
9
  brandKeys: ['Finite', 'Int', 'SafeInt'],
@@ -1 +1 @@
1
- {"version":3,"file":"safe-int.mjs","sources":["../../../src/branded/number/safe-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,OAAO,GAAG,CAAC,YAAA,GAAwB,SAAS,CAAC,CAAC,CAAC,KAC1D,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;IAC3B,EAAE,EAAE,OAAO,CAAC,EAAE;IACd,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;IACvC,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,SAAS;AACpB,CAAA;;;;"}
1
+ {"version":3,"file":"safe-int.mjs","sources":["../../../src/branded/number/safe-int.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,OAAO,GAAG,CAAC,YAAA,GAAwB,SAAS,CAAC,CAAC,CAAC,KAC1D,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAC9B,EAAE,EAAE,OAAO,CAAC,EAAE;IACd,YAAY;AACZ,IAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;IACvC,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,SAAS;AACpB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const safeUint = (defaultValue = asSafeUint(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isSafeUint,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"safe-uint.mjs","sources":["../../../src/branded/number/safe-uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,QAAQ,GAAG,CACtB,YAAA,GAAyB,UAAU,CAAC,CAAC,CAAC,KAEtC,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,UAAU;IACd,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,UAAU;AACrB,CAAA;;;;"}
1
+ {"version":3,"file":"safe-uint.mjs","sources":["../../../src/branded/number/safe-uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,QAAQ,GAAG,CACtB,YAAA,GAAyB,UAAU,CAAC,CAAC,CAAC,KAEtC,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,UAAU;IACd,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,UAAU;AACrB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const uint = (defaultValue = asUint(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isUint,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"uint.mjs","sources":["../../../src/branded/number/uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,IAAI,GAAG,CAAC,YAAA,GAAqB,MAAM,CAAC,CAAC,CAAC,KACjD,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,MAAM;IACV,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,MAAM;AACjB,CAAA;;;;"}
1
+ {"version":3,"file":"uint.mjs","sources":["../../../src/branded/number/uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,IAAI,GAAG,CAAC,YAAA,GAAqB,MAAM,CAAC,CAAC,CAAC,KACjD,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,MAAM;IACV,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,KAAK;AACN,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,MAAM;AACjB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const uint16 = (defaultValue = asUint16(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isUint16,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"uint16.mjs","sources":["../../../src/branded/number/uint16.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,MAAM,GAAG,CAAC,YAAA,GAAuB,QAAQ,CAAC,CAAC,CAAC,KACvD,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,QAAQ;IACZ,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,QAAQ;AACT,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,QAAQ;AACnB,CAAA;;;;"}
1
+ {"version":3,"file":"uint16.mjs","sources":["../../../src/branded/number/uint16.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,MAAM,GAAG,CAAC,YAAA,GAAuB,QAAQ,CAAC,CAAC,CAAC,KACvD,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,QAAQ;IACZ,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,QAAQ;AACT,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,QAAQ;AACnB,CAAA;;;;"}
@@ -3,7 +3,7 @@ import { number } from '../../primitives/number.mjs';
3
3
  import { brand } from '../brand.mjs';
4
4
 
5
5
  const uint32 = (defaultValue = asUint32(0)) => brand({
6
- codec: number(defaultValue),
6
+ baseType: number(defaultValue),
7
7
  is: isUint32,
8
8
  defaultValue,
9
9
  brandKeys: [
@@ -1 +1 @@
1
- {"version":3,"file":"uint32.mjs","sources":["../../../src/branded/number/uint32.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,MAAM,GAAG,CAAC,YAAA,GAAuB,QAAQ,CAAC,CAAC,CAAC,KACvD,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,EAAE,QAAQ;IACZ,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,KAAK;QACL,QAAQ;AACT,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,QAAQ;AACnB,CAAA;;;;"}
1
+ {"version":3,"file":"uint32.mjs","sources":["../../../src/branded/number/uint32.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,MAAM,GAAG,CAAC,YAAA,GAAuB,QAAQ,CAAC,CAAC,CAAC,KACvD,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,QAAQ;IACZ,YAAY;AACZ,IAAA,SAAS,EAAE;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,KAAK;QACL,QAAQ;AACT,KAAA;IACD,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,EAAE,QAAQ;AACnB,CAAA;;;;"}
@@ -1,3 +1,7 @@
1
1
  import { type Type } from '../type.mjs';
2
- export declare const simpleBrandedNumber: <S extends string>(typeName: S, defaultValue?: number) => Type<Brand<number, S>>;
2
+ export declare const simpleBrandedNumber: <K extends string>({ typeName, defaultValue, is, }: Readonly<{
3
+ typeName: K;
4
+ defaultValue: number;
5
+ is?: (u: number) => u is Brand<number, K>;
6
+ }>) => Type<Brand<number, K>>;
3
7
  //# sourceMappingURL=simple-branded-number.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-branded-number.d.mts","sourceRoot":"","sources":["../../src/branded/simple-branded-number.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,EAClD,UAAU,CAAC,EACX,eAAc,MAAU,KACvB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAUpB,CAAC"}
1
+ {"version":3,"file":"simple-branded-number.d.mts","sourceRoot":"","sources":["../../src/branded/simple-branded-number.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,EAAE,iCAInD,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAUtB,CAAC"}
@@ -2,12 +2,12 @@ import 'ts-data-forge';
2
2
  import { number } from '../primitives/number.mjs';
3
3
  import { brand } from './brand.mjs';
4
4
 
5
- const simpleBrandedNumber = (typeName, defaultValue = 0) => brand({
6
- codec: number(defaultValue),
5
+ const simpleBrandedNumber = ({ typeName, defaultValue, is = (_u) => true, }) => brand({
6
+ baseType: number(defaultValue),
7
7
  defaultValue:
8
8
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
9
9
  defaultValue,
10
- is: (_id) => true,
10
+ is,
11
11
  brandKeys: [typeName],
12
12
  });
13
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"simple-branded-number.mjs","sources":["../../src/branded/simple-branded-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIO,MAAM,mBAAmB,GAAG,CACjC,QAAW,EACX,YAAA,GAAuB,CAAC,KAExB,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;IAE3B,YAAY;;IAEV,YAAgC;AAElC,IAAA,EAAE,EAAE,CAAC,GAAW,KAA8B,IAAI;IAClD,SAAS,EAAE,CAAC,QAAQ,CAAC;AACtB,CAAA;;;;"}
1
+ {"version":3,"file":"simple-branded-number.mjs","sources":["../../src/branded/simple-branded-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;MAIa,mBAAmB,GAAG,CAAmB,EACpD,QAAQ,EACR,YAAY,EACZ,EAAE,GAAG,CAAC,EAAE,KAA6B,IAAI,GAKzC,KACA,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAE9B,YAAY;;IAEV,YAAgC;IAElC,EAAE;IACF,SAAS,EAAE,CAAC,QAAQ,CAAC;AACtB,CAAA;;;;"}
@@ -1,3 +1,7 @@
1
1
  import { type Type } from '../type.mjs';
2
- export declare const simpleBrandedString: <S extends string>(typeName: S, defaultValue?: string) => Type<Brand<string, S>>;
2
+ export declare const simpleBrandedString: <K extends string>({ typeName, defaultValue, is, }: Readonly<{
3
+ typeName: K;
4
+ defaultValue: string;
5
+ is?: (u: string) => u is Brand<string, K>;
6
+ }>) => Type<Brand<string, K>>;
3
7
  //# sourceMappingURL=simple-branded-string.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-branded-string.d.mts","sourceRoot":"","sources":["../../src/branded/simple-branded-string.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,EAClD,UAAU,CAAC,EACX,eAAc,MAAW,KACxB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAUpB,CAAC"}
1
+ {"version":3,"file":"simple-branded-string.d.mts","sourceRoot":"","sources":["../../src/branded/simple-branded-string.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,EAAE,iCAInD,QAAQ,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,CAAC,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAUtB,CAAC"}
@@ -2,12 +2,12 @@ import 'ts-data-forge';
2
2
  import { string } from '../primitives/string.mjs';
3
3
  import { brand } from './brand.mjs';
4
4
 
5
- const simpleBrandedString = (typeName, defaultValue = '') => brand({
6
- codec: string(defaultValue),
5
+ const simpleBrandedString = ({ typeName, defaultValue, is = (_u) => true, }) => brand({
6
+ baseType: string(defaultValue),
7
7
  defaultValue:
8
8
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
9
9
  defaultValue,
10
- is: (_id) => true,
10
+ is,
11
11
  brandKeys: [typeName],
12
12
  });
13
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"simple-branded-string.mjs","sources":["../../src/branded/simple-branded-string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIO,MAAM,mBAAmB,GAAG,CACjC,QAAW,EACX,YAAA,GAAuB,EAAE,KAEzB,KAAK,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;IAE3B,YAAY;;IAEV,YAAgC;AAElC,IAAA,EAAE,EAAE,CAAC,GAAW,KAA8B,IAAI;IAClD,SAAS,EAAE,CAAC,QAAQ,CAAC;AACtB,CAAA;;;;"}
1
+ {"version":3,"file":"simple-branded-string.mjs","sources":["../../src/branded/simple-branded-string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;MAIa,mBAAmB,GAAG,CAAmB,EACpD,QAAQ,EACR,YAAY,EACZ,EAAE,GAAG,CAAC,EAAE,KAA6B,IAAI,GAKzC,KACA,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAE9B,YAAY;;IAEV,YAAgC;IAElC,EAAE;IACF,SAAS,EAAE,CAAC,QAAQ,CAAC;AACtB,CAAA;;;;"}
@@ -30,6 +30,7 @@ export { enumType } from './enum/enum.mjs';
30
30
  export { intRange } from './enum/int-range.mjs';
31
31
  export { uintRange } from './enum/uint-range.mjs';
32
32
  export { literal } from './other-types/literal.mjs';
33
+ export { refine } from './other-types/refine.mjs';
33
34
  export { unknown } from './other-types/unknown.mjs';
34
35
  export { int8 } from './predefined/int8.mjs';
35
36
  export { JsonObject, JsonPrimitive, JsonValue } from './predefined/json.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"entry-point.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"entry-point.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.mjs CHANGED
@@ -29,6 +29,7 @@ export { enumType } from './enum/enum.mjs';
29
29
  export { intRange } from './enum/int-range.mjs';
30
30
  export { uintRange } from './enum/uint-range.mjs';
31
31
  export { literal } from './other-types/literal.mjs';
32
+ export { refine } from './other-types/refine.mjs';
32
33
  export { unknown } from './other-types/unknown.mjs';
33
34
  export { int8 } from './predefined/int8.mjs';
34
35
  export { JsonObject, JsonPrimitive, JsonValue } from './predefined/json.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,3 +1,4 @@
1
1
  export * from './literal.mjs';
2
+ export * from './refine.mjs';
2
3
  export * from './unknown.mjs';
3
4
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/other-types/index.mts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/other-types/index.mts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { literal } from './literal.mjs';
2
+ export { refine } from './refine.mjs';
2
3
  export { unknown } from './unknown.mjs';
3
4
  //# 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,8 @@
1
+ import { type Type } from '../type.mjs';
2
+ export declare const refine: <Base extends Extract<Primitive, string | boolean | bigint | number>, R extends Base>({ baseType, is, defaultValue, typeName, }: Readonly<{
3
+ baseType: Type<Base>;
4
+ is: (a: Base) => a is R;
5
+ defaultValue: R;
6
+ typeName?: string;
7
+ }>) => Type<R>;
8
+ //# sourceMappingURL=refine.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine.d.mts","sourceRoot":"","sources":["../../src/other-types/refine.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAOxC,eAAO,MAAM,MAAM,GACjB,IAAI,SAAS,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,EACnE,CAAC,SAAS,IAAI,EACd,2CAKC,QAAQ,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,KAAG,IAAI,CAAC,CAAC,CAwBV,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { pipe, Result } from 'ts-data-forge';
2
+ import { createPrimitiveValidationError } from '../utils/validation-error.mjs';
3
+ import { createType } from '../utils/create-type.mjs';
4
+
5
+ const refine = ({ baseType, is, defaultValue, typeName = `${baseType.typeName} refined`, }) => {
6
+ const validate = (a) => pipe(a)
7
+ .map(baseType.validate)
8
+ .map((res) => Result.isErr(res)
9
+ ? res
10
+ : is(res.value)
11
+ ? Result.ok(res.value)
12
+ : Result.err([
13
+ createPrimitiveValidationError({
14
+ actualValue: a,
15
+ expectedType: typeName,
16
+ typeName,
17
+ }),
18
+ ])).value;
19
+ return createType({
20
+ typeName,
21
+ defaultValue,
22
+ validate,
23
+ });
24
+ };
25
+
26
+ export { refine };
27
+ //# sourceMappingURL=refine.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine.mjs","sources":["../../src/other-types/refine.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;MAQa,MAAM,GAAG,CAGpB,EACA,QAAQ,EACR,EAAE,EACF,YAAY,EACZ,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAC,QAAQ,CAAA,QAAA,CAAU,GAMzC,KAAa;IACb,MAAM,QAAQ,GAAwB,CAAC,CAAC,KACtC,IAAI,CAAC,CAAC;AACH,SAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ;SACrB,GAAG,CACF,CAAC,GAAG,KACF,MAAM,CAAC,KAAK,CAAC,GAAG;AACd,UAAE;AACF,UAAE,EAAE,CAAC,GAAG,CAAC,KAAK;cACV,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACrB,cAAE,MAAM,CAAC,GAAG,CAAC;AACT,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;iBACT,CAAC;aACH,CAAC,CACX,CAAC,KAAK;AAEX,IAAA,OAAO,UAAU,CAAC;QAChB,QAAQ;QACR,YAAY;QACZ,QAAQ;AACT,KAAA,CAAC;AACJ;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-fortress",
3
- "version": "2.9.0",
3
+ "version": "3.0.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript"
@@ -11,14 +11,14 @@ export const brand = <
11
11
  const BrandTrueKeys extends readonly string[],
12
12
  const BrandFalseKeys extends readonly string[] = [],
13
13
  >({
14
- codec,
14
+ baseType,
15
15
  is,
16
16
  defaultValue,
17
17
  typeName,
18
18
  brandKeys,
19
19
  brandFalseKeys,
20
20
  }: Readonly<{
21
- codec: Type<A>;
21
+ baseType: Type<A>;
22
22
  is: (
23
23
  a: A,
24
24
  ) => a is Brand<A, ArrayToUnion<BrandTrueKeys>, ArrayToUnion<BrandFalseKeys>>;
@@ -44,17 +44,17 @@ export const brand = <
44
44
 
45
45
  const validate: Type<T>['validate'] = (a) =>
46
46
  pipe(a)
47
- .map(codec.validate)
47
+ .map(baseType.validate)
48
48
  .map(
49
- (v): Result<T, readonly ValidationError[]> =>
50
- Result.isErr(v)
51
- ? v
52
- : is(v.value)
53
- ? Result.ok(v.value)
49
+ (res): Result<T, readonly ValidationError[]> =>
50
+ Result.isErr(res)
51
+ ? res
52
+ : is(res.value)
53
+ ? Result.ok(res.value satisfies T)
54
54
  : Result.err([
55
55
  {
56
56
  path: [],
57
- actualValue: v.value,
57
+ actualValue: res.value,
58
58
  expectedType: typeNameFilled,
59
59
  typeName: brandKeysStr,
60
60
  message:
@@ -7,7 +7,7 @@ export const finiteNumber = (
7
7
  defaultValue: FiniteNumber = asFiniteNumber(0),
8
8
  ): Type<FiniteNumber> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: FiniteNumber.is,
12
12
  defaultValue,
13
13
  brandKeys: ['Finite'],
@@ -5,7 +5,7 @@ import { brand } from '../brand.mjs';
5
5
 
6
6
  export const int = (defaultValue: Int = asInt(0)): Type<Int> =>
7
7
  brand({
8
- codec: number(defaultValue),
8
+ baseType: number(defaultValue),
9
9
  is: Int.is,
10
10
  defaultValue,
11
11
  brandKeys: ['Finite', 'Int'],
@@ -5,7 +5,7 @@ import { brand } from '../brand.mjs';
5
5
 
6
6
  export const int16 = (defaultValue: Int16 = asInt16(0)): Type<Int16> =>
7
7
  brand({
8
- codec: number(defaultValue),
8
+ baseType: number(defaultValue),
9
9
  is: isInt16,
10
10
  defaultValue,
11
11
  brandKeys: [
@@ -5,7 +5,7 @@ import { brand } from '../brand.mjs';
5
5
 
6
6
  export const int32 = (defaultValue: Int32 = asInt32(0)): Type<Int32> =>
7
7
  brand({
8
- codec: number(defaultValue),
8
+ baseType: number(defaultValue),
9
9
  is: isInt32,
10
10
  defaultValue,
11
11
  brandKeys: [
@@ -10,7 +10,7 @@ export const nonNegativeFiniteNumber = (
10
10
  defaultValue: NonNegativeFiniteNumber = asNonNegativeFiniteNumber(0),
11
11
  ): Type<NonNegativeFiniteNumber> =>
12
12
  brand({
13
- codec: number(defaultValue),
13
+ baseType: number(defaultValue),
14
14
  is: isNonNegativeFiniteNumber,
15
15
  defaultValue,
16
16
  brandKeys: ['>=0', '> -2^16', '> -2^32', '>= -2^15', '>= -2^31', 'Finite'],
@@ -7,7 +7,7 @@ export const nonZeroFiniteNumber = (
7
7
  defaultValue: NonZeroFiniteNumber,
8
8
  ): Type<NonZeroFiniteNumber> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: isNonZeroFiniteNumber,
12
12
  defaultValue,
13
13
  brandKeys: ['!=0', 'Finite'],
@@ -7,7 +7,7 @@ export const nonZeroInt = (
7
7
  defaultValue: NonZeroInt = asNonZeroInt(0),
8
8
  ): Type<NonZeroInt> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: isNonZeroInt,
12
12
  defaultValue,
13
13
  brandKeys: ['Finite', 'Int', '!=0'],
@@ -7,7 +7,7 @@ export const nonZeroSafeInt = (
7
7
  defaultValue: NonZeroSafeInt,
8
8
  ): Type<NonZeroSafeInt> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: isNonZeroSafeInt,
12
12
  defaultValue,
13
13
  brandKeys: ['Finite', 'Int', 'SafeInt', '!=0'],
@@ -7,7 +7,7 @@ export const positiveFiniteNumber = (
7
7
  defaultValue: PositiveFiniteNumber,
8
8
  ): Type<PositiveFiniteNumber> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: isPositiveFiniteNumber,
12
12
  defaultValue,
13
13
  brandKeys: [
@@ -7,7 +7,7 @@ export const positiveInt = (
7
7
  defaultValue: PositiveInt = asPositiveInt(1),
8
8
  ): Type<PositiveInt> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: isPositiveInt,
12
12
  defaultValue,
13
13
  brandKeys: [
@@ -7,7 +7,7 @@ export const positiveSafeInt = (
7
7
  defaultValue: PositiveSafeInt = asPositiveSafeInt(1),
8
8
  ): Type<PositiveSafeInt> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: isPositiveSafeInt,
12
12
  defaultValue,
13
13
  brandKeys: [
@@ -5,7 +5,7 @@ import { brand } from '../brand.mjs';
5
5
 
6
6
  export const safeInt = (defaultValue: SafeInt = asSafeInt(0)): Type<SafeInt> =>
7
7
  brand({
8
- codec: number(defaultValue),
8
+ baseType: number(defaultValue),
9
9
  is: SafeInt.is,
10
10
  defaultValue,
11
11
  brandKeys: ['Finite', 'Int', 'SafeInt'],
@@ -7,7 +7,7 @@ export const safeUint = (
7
7
  defaultValue: SafeUint = asSafeUint(0),
8
8
  ): Type<SafeUint> =>
9
9
  brand({
10
- codec: number(defaultValue),
10
+ baseType: number(defaultValue),
11
11
  is: isSafeUint,
12
12
  defaultValue,
13
13
  brandKeys: [
@@ -5,7 +5,7 @@ import { brand } from '../brand.mjs';
5
5
 
6
6
  export const uint = (defaultValue: Uint = asUint(0)): Type<Uint> =>
7
7
  brand({
8
- codec: number(defaultValue),
8
+ baseType: number(defaultValue),
9
9
  is: isUint,
10
10
  defaultValue,
11
11
  brandKeys: [
@@ -5,7 +5,7 @@ import { brand } from '../brand.mjs';
5
5
 
6
6
  export const uint16 = (defaultValue: Uint16 = asUint16(0)): Type<Uint16> =>
7
7
  brand({
8
- codec: number(defaultValue),
8
+ baseType: number(defaultValue),
9
9
  is: isUint16,
10
10
  defaultValue,
11
11
  brandKeys: [
@@ -5,7 +5,7 @@ import { brand } from '../brand.mjs';
5
5
 
6
6
  export const uint32 = (defaultValue: Uint32 = asUint32(0)): Type<Uint32> =>
7
7
  brand({
8
- codec: number(defaultValue),
8
+ baseType: number(defaultValue),
9
9
  is: isUint32,
10
10
  defaultValue,
11
11
  brandKeys: [
@@ -2,17 +2,22 @@ import { number } from '../primitives/index.mjs';
2
2
  import { type Type } from '../type.mjs';
3
3
  import { brand } from './brand.mjs';
4
4
 
5
- export const simpleBrandedNumber = <S extends string>(
6
- typeName: S,
7
- defaultValue: number = 0,
8
- ): Type<Brand<number, S>> =>
5
+ export const simpleBrandedNumber = <K extends string>({
6
+ typeName,
7
+ defaultValue,
8
+ is = (_u): _u is Brand<number, K> => true,
9
+ }: Readonly<{
10
+ typeName: K;
11
+ defaultValue: number;
12
+ is?: (u: number) => u is Brand<number, K>;
13
+ }>): Type<Brand<number, K>> =>
9
14
  brand({
10
- codec: number(defaultValue),
15
+ baseType: number(defaultValue),
11
16
 
12
17
  defaultValue:
13
18
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
14
- defaultValue as Brand<number, S>,
19
+ defaultValue as Brand<number, K>,
15
20
 
16
- is: (_id: number): _id is Brand<number, S> => true,
21
+ is,
17
22
  brandKeys: [typeName],
18
23
  });
@@ -5,7 +5,10 @@ import { simpleBrandedNumber } from './simple-branded-number.mjs';
5
5
 
6
6
  describe('simpleBrandedNumber', () => {
7
7
  describe('with default value', () => {
8
- const userIdType = simpleBrandedNumber('UserId');
8
+ const userIdType = simpleBrandedNumber({
9
+ typeName: 'UserId',
10
+ defaultValue: 0,
11
+ });
9
12
 
10
13
  type UserId = TypeOf<typeof userIdType>;
11
14
 
@@ -97,7 +100,10 @@ describe('simpleBrandedNumber', () => {
97
100
  });
98
101
 
99
102
  describe('with custom default value', () => {
100
- const scoreType = simpleBrandedNumber('Score', 100);
103
+ const scoreType = simpleBrandedNumber({
104
+ typeName: 'Score',
105
+ defaultValue: 100,
106
+ });
101
107
 
102
108
  type Score = TypeOf<typeof scoreType>;
103
109
 
@@ -160,7 +166,10 @@ describe('simpleBrandedNumber', () => {
160
166
  });
161
167
 
162
168
  describe('type assertions and narrowing', () => {
163
- const priceType = simpleBrandedNumber('Price', 0);
169
+ const priceType = simpleBrandedNumber({
170
+ typeName: 'Price',
171
+ defaultValue: 0,
172
+ });
164
173
 
165
174
  test('type narrowing works correctly', () => {
166
175
  const x: unknown = 29.99;
@@ -2,17 +2,22 @@ import { string } from '../primitives/index.mjs';
2
2
  import { type Type } from '../type.mjs';
3
3
  import { brand } from './brand.mjs';
4
4
 
5
- export const simpleBrandedString = <S extends string>(
6
- typeName: S,
7
- defaultValue: string = '',
8
- ): Type<Brand<string, S>> =>
5
+ export const simpleBrandedString = <K extends string>({
6
+ typeName,
7
+ defaultValue,
8
+ is = (_u): _u is Brand<string, K> => true,
9
+ }: Readonly<{
10
+ typeName: K;
11
+ defaultValue: string;
12
+ is?: (u: string) => u is Brand<string, K>;
13
+ }>): Type<Brand<string, K>> =>
9
14
  brand({
10
- codec: string(defaultValue),
15
+ baseType: string(defaultValue),
11
16
 
12
17
  defaultValue:
13
18
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
14
- defaultValue as Brand<string, S>,
19
+ defaultValue as Brand<string, K>,
15
20
 
16
- is: (_id: string): _id is Brand<string, S> => true,
21
+ is,
17
22
  brandKeys: [typeName],
18
23
  });
@@ -5,7 +5,10 @@ import { simpleBrandedString } from './simple-branded-string.mjs';
5
5
 
6
6
  describe('simpleBrandedString', () => {
7
7
  describe('with default value', () => {
8
- const userNameType = simpleBrandedString('UserName');
8
+ const userNameType = simpleBrandedString({
9
+ typeName: 'UserName',
10
+ defaultValue: '',
11
+ });
9
12
 
10
13
  type UserName = TypeOf<typeof userNameType>;
11
14
 
@@ -98,7 +101,10 @@ describe('simpleBrandedString', () => {
98
101
  });
99
102
 
100
103
  describe('with custom default value', () => {
101
- const categoryType = simpleBrandedString('Category', 'general');
104
+ const categoryType = simpleBrandedString({
105
+ typeName: 'Category',
106
+ defaultValue: 'general',
107
+ });
102
108
 
103
109
  type Category = TypeOf<typeof categoryType>;
104
110
 
@@ -161,7 +167,10 @@ describe('simpleBrandedString', () => {
161
167
  });
162
168
 
163
169
  describe('type assertions and narrowing', () => {
164
- const emailType = simpleBrandedString('Email', '');
170
+ const emailType = simpleBrandedString({
171
+ typeName: 'Email',
172
+ defaultValue: '',
173
+ });
165
174
 
166
175
  test('type narrowing works correctly', () => {
167
176
  const x: unknown = 'user@example.com';
@@ -178,8 +187,14 @@ describe('simpleBrandedString', () => {
178
187
  });
179
188
 
180
189
  describe('different brand types', () => {
181
- const firstNameType = simpleBrandedString('FirstName', '');
182
- const lastNameType = simpleBrandedString('LastName', '');
190
+ const firstNameType = simpleBrandedString({
191
+ typeName: 'FirstName',
192
+ defaultValue: '',
193
+ });
194
+ const lastNameType = simpleBrandedString({
195
+ typeName: 'LastName',
196
+ defaultValue: '',
197
+ });
183
198
 
184
199
  test('creates distinct branded types', () => {
185
200
  type FirstName = TypeOf<typeof firstNameType>;
@@ -1,2 +1,3 @@
1
1
  export * from './literal.mjs';
2
+ export * from './refine.mjs';
2
3
  export * from './unknown.mjs';
@@ -0,0 +1,46 @@
1
+ import { pipe, Result } from 'ts-data-forge';
2
+ import { type Type } from '../type.mjs';
3
+ import {
4
+ createPrimitiveValidationError,
5
+ createType,
6
+ type ValidationError,
7
+ } from '../utils/index.mjs';
8
+
9
+ export const refine = <
10
+ Base extends Extract<Primitive, string | boolean | bigint | number>,
11
+ R extends Base,
12
+ >({
13
+ baseType,
14
+ is,
15
+ defaultValue,
16
+ typeName = `${baseType.typeName} refined`,
17
+ }: Readonly<{
18
+ baseType: Type<Base>;
19
+ is: (a: Base) => a is R;
20
+ defaultValue: R;
21
+ typeName?: string;
22
+ }>): Type<R> => {
23
+ const validate: Type<R>['validate'] = (a) =>
24
+ pipe(a)
25
+ .map(baseType.validate)
26
+ .map(
27
+ (res): Result<R, readonly ValidationError[]> =>
28
+ Result.isErr(res)
29
+ ? res
30
+ : is(res.value)
31
+ ? Result.ok(res.value)
32
+ : Result.err([
33
+ createPrimitiveValidationError({
34
+ actualValue: a,
35
+ expectedType: typeName,
36
+ typeName,
37
+ }),
38
+ ]),
39
+ ).value;
40
+
41
+ return createType({
42
+ typeName,
43
+ defaultValue,
44
+ validate,
45
+ });
46
+ };