ts-fortress 7.1.0 → 7.2.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 (44) hide show
  1. package/dist/entry-point.mjs +1 -0
  2. package/dist/entry-point.mjs.map +1 -1
  3. package/dist/index.mjs +1 -0
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/predefined/brand/index.mjs +1 -0
  6. package/dist/predefined/brand/index.mjs.map +1 -1
  7. package/dist/predefined/brand/string/email.d.mts +1 -1
  8. package/dist/predefined/brand/string/email.d.mts.map +1 -1
  9. package/dist/predefined/brand/string/email.mjs +5 -2
  10. package/dist/predefined/brand/string/email.mjs.map +1 -1
  11. package/dist/predefined/brand/string/index.d.mts +1 -0
  12. package/dist/predefined/brand/string/index.d.mts.map +1 -1
  13. package/dist/predefined/brand/string/index.mjs +1 -0
  14. package/dist/predefined/brand/string/index.mjs.map +1 -1
  15. package/dist/predefined/brand/string/iso-8601.d.mts +1 -1
  16. package/dist/predefined/brand/string/iso-8601.d.mts.map +1 -1
  17. package/dist/predefined/brand/string/iso-8601.mjs +4 -2
  18. package/dist/predefined/brand/string/iso-8601.mjs.map +1 -1
  19. package/dist/predefined/brand/string/json-string.d.mts +1 -1
  20. package/dist/predefined/brand/string/json-string.d.mts.map +1 -1
  21. package/dist/predefined/brand/string/json-string.mjs +5 -2
  22. package/dist/predefined/brand/string/json-string.mjs.map +1 -1
  23. package/dist/predefined/brand/string/non-empty-string.d.mts +5 -0
  24. package/dist/predefined/brand/string/non-empty-string.d.mts.map +1 -0
  25. package/dist/predefined/brand/string/non-empty-string.mjs +16 -0
  26. package/dist/predefined/brand/string/non-empty-string.mjs.map +1 -0
  27. package/dist/predefined/brand/string/uuid.d.mts +4 -4
  28. package/dist/predefined/brand/string/uuid.d.mts.map +1 -1
  29. package/dist/predefined/brand/string/uuid.mjs +1 -1
  30. package/dist/predefined/brand/string/uuid.mjs.map +1 -1
  31. package/dist/predefined/index.mjs +1 -0
  32. package/dist/predefined/index.mjs.map +1 -1
  33. package/package.json +11 -11
  34. package/src/predefined/brand/string/email.mts +7 -3
  35. package/src/predefined/brand/string/email.test.mts +3 -0
  36. package/src/predefined/brand/string/index.mts +1 -0
  37. package/src/predefined/brand/string/iso-8601.mts +7 -3
  38. package/src/predefined/brand/string/iso-8601.test.mts +3 -0
  39. package/src/predefined/brand/string/json-string.mts +8 -3
  40. package/src/predefined/brand/string/json-string.test.mts +3 -0
  41. package/src/predefined/brand/string/non-empty-string.mts +24 -0
  42. package/src/predefined/brand/string/non-empty-string.test.mts +54 -0
  43. package/src/predefined/brand/string/uuid.mts +9 -7
  44. package/src/predefined/brand/string/uuid.test.mts +3 -0
@@ -40,6 +40,7 @@ export { uint32 } from './predefined/brand/number/uint32.mjs';
40
40
  export { email } from './predefined/brand/string/email.mjs';
41
41
  export { iso8601 } from './predefined/brand/string/iso-8601.mjs';
42
42
  export { jsonString } from './predefined/brand/string/json-string.mjs';
43
+ export { nonEmptyString } from './predefined/brand/string/non-empty-string.mjs';
43
44
  export { uuid, uuidV4, uuidV6, uuidV7 } from './predefined/brand/string/uuid.mjs';
44
45
  export { int8 } from './predefined/int8.mjs';
45
46
  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
@@ -39,6 +39,7 @@ export { uint32 } from './predefined/brand/number/uint32.mjs';
39
39
  export { email } from './predefined/brand/string/email.mjs';
40
40
  export { iso8601 } from './predefined/brand/string/iso-8601.mjs';
41
41
  export { jsonString } from './predefined/brand/string/json-string.mjs';
42
+ export { nonEmptyString } from './predefined/brand/string/non-empty-string.mjs';
42
43
  export { uuid, uuidV4, uuidV6, uuidV7 } from './predefined/brand/string/uuid.mjs';
43
44
  export { int8 } from './predefined/int8.mjs';
44
45
  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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -17,5 +17,6 @@ export { uint32 } from './number/uint32.mjs';
17
17
  export { email } from './string/email.mjs';
18
18
  export { iso8601 } from './string/iso-8601.mjs';
19
19
  export { jsonString } from './string/json-string.mjs';
20
+ export { nonEmptyString } from './string/non-empty-string.mjs';
20
21
  export { uuid, uuidV4, uuidV6, uuidV7 } from './string/uuid.mjs';
21
22
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { type Brand } from 'ts-type-forge';
2
2
  import { type Type } from '../../../type.mjs';
3
- export type Email = Brand<string, 'Email'>;
3
+ export type Email = Brand<string, 'Email' | 'NonEmptyString'>;
4
4
  /**
5
5
  * @link https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/email.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,KAAK,GAChB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CACH,KACA,IAAI,CAAC,KAAK,CAKT,CAAC"}
1
+ {"version":3,"file":"email.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/email.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,KAAK,GAChB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CACH,KACA,IAAI,CAAC,KAAK,CAOT,CAAC"}
@@ -1,14 +1,17 @@
1
+ import { brand } from '../../../brand/brand.mjs';
1
2
  import 'ts-data-forge';
2
3
  import '@sindresorhus/is';
3
4
  import '../../../other-types/unknown.mjs';
4
- import { brandedString } from '../../../brand/branded-string.mjs';
5
+ import { string } from '../../../primitives/string.mjs';
5
6
 
6
7
  /**
7
8
  * @link https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
8
9
  */
9
- const email = (options) => brandedString({
10
+ const email = (options) => brand({
11
+ baseType: string(options?.defaultValue ?? defaultEmail),
10
12
  is: (s) => regexpEmailAddress.test(s),
11
13
  defaultValue: options?.defaultValue ?? defaultEmail,
14
+ brandKeys: ['Email', 'NonEmptyString'],
12
15
  typeName: 'Email',
13
16
  });
14
17
  const defaultEmail = 'ts-f.o.r.t.r.e.s.s@gmail.com';
@@ -1 +1 @@
1
- {"version":3,"file":"email.mjs","sources":["../../../../src/predefined/brand/string/email.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAMA;;AAEG;AACI,MAAM,KAAK,GAAG,CACnB,OAIC,KAED,aAAa,CAAC;IACZ,EAAE,EAAE,CAAC,CAAC,KAAiB,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,IAAA,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,YAAY;AACnD,IAAA,QAAQ,EAAE,OAAO;AAClB,CAAA;AAEH,MAAM,YAAY,GAAG,8BAA8B;AAEnD,MAAM,kBAAkB;AACtB;AACA,uIAAuI;;;;"}
1
+ {"version":3,"file":"email.mjs","sources":["../../../../src/predefined/brand/string/email.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAQA;;AAEG;AACI,MAAM,KAAK,GAAG,CACnB,OAIC,KAED,KAAK,CAAC;IACJ,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,YAAY,CAAC;IACvD,EAAE,EAAE,CAAC,CAAC,KAAiB,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,IAAA,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,YAAY;AACnD,IAAA,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;AACtC,IAAA,QAAQ,EAAE,OAAO;AAClB,CAAA;AAEH,MAAM,YAAY,GAAG,8BAA8B;AAEnD,MAAM,kBAAkB;AACtB;AACA,uIAAuI;;;;"}
@@ -1,5 +1,6 @@
1
1
  export * from './email.mjs';
2
2
  export * from './iso-8601.mjs';
3
3
  export * from './json-string.mjs';
4
+ export * from './non-empty-string.mjs';
4
5
  export * from './uuid.mjs';
5
6
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/index.mts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/index.mts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { email } from './email.mjs';
2
2
  export { iso8601 } from './iso-8601.mjs';
3
3
  export { jsonString } from './json-string.mjs';
4
+ export { nonEmptyString } from './non-empty-string.mjs';
4
5
  export { uuid, uuidV4, uuidV6, uuidV7 } from './uuid.mjs';
5
6
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,6 +1,6 @@
1
1
  import { type Brand } from 'ts-type-forge';
2
2
  import { type Type, type TypeOf } from '../../../type.mjs';
3
- export type Iso8601 = Brand<string, 'Iso8601'>;
3
+ export type Iso8601 = Brand<string, 'Iso8601' | 'NonEmptyString'>;
4
4
  /**
5
5
  * @link https://github.com/validatorjs/validator.js/tree/v13.1.17?tab=readme-ov-file#validators
6
6
  * @link https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
@@ -1 +1 @@
1
- {"version":3,"file":"iso-8601.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/iso-8601.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAmB,MAAM,eAAe,CAAC;AAI5D,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,UAAU,sBAAsB,KAAG,IAAI,CAAC,OAAO,CAUtE,CAAC;AAEF,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe1B,CAAC;AAEH,KAAK,sBAAsB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"iso-8601.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/iso-8601.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAmB,MAAM,eAAe,CAAC;AAI5D,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3D,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAAC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,UAAU,sBAAsB,KAAG,IAAI,CAAC,OAAO,CAYtE,CAAC;AAEF,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe1B,CAAC;AAEH,KAAK,sBAAsB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -1,9 +1,9 @@
1
+ import { brand } from '../../../brand/brand.mjs';
1
2
  import 'ts-data-forge';
2
3
  import '@sindresorhus/is';
3
4
  import '../../../other-types/unknown.mjs';
4
5
  import { boolean } from '../../../primitives/boolean.mjs';
5
6
  import { string } from '../../../primitives/string.mjs';
6
- import { brandedString } from '../../../brand/branded-string.mjs';
7
7
  import { record } from '../../../record/record.mjs';
8
8
 
9
9
  /**
@@ -14,9 +14,11 @@ import { record } from '../../../record/record.mjs';
14
14
  const iso8601 = (options) => {
15
15
  const filledOptions = ISO8601ValidatorOption.fill(options);
16
16
  const is = isISO8601(filledOptions);
17
- return brandedString({
17
+ return brand({
18
+ baseType: string(filledOptions.defaultValue),
18
19
  is,
19
20
  defaultValue: filledOptions.defaultValue,
21
+ brandKeys: ['Iso8601', 'NonEmptyString'],
20
22
  typeName: 'Iso8601',
21
23
  });
22
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"iso-8601.mjs","sources":["../../../../src/predefined/brand/string/iso-8601.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAQA;;;;AAIG;AACI,MAAM,OAAO,GAAG,CAAC,OAAgC,KAAmB;IACzE,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AAE1D,IAAA,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC;AAEnC,IAAA,OAAO,aAAa,CAAC;QACnB,EAAE;QACF,YAAY,EAAE,aAAa,CAAC,YAAY;AACxC,QAAA,QAAQ,EAAE,SAAS;AACpB,KAAA,CAAC;AACJ;AAEA,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACpC;;AAEG;AACH,IAAA,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;AAEtB;;AAEG;AACH,IAAA,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC;AAE/B;;AAEG;IACH,YAAY,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAA,CAAC;AAIF,MAAM,SAAS,GACb,CAAC,OAAqE,KACtE,CAAC,GAAW,KAAoB;IAC9B,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AAE1D,IAAA,MAAM,KAAK,GAAG,aAAa,CAAC;AAC1B,UAAE,4BAA4B,CAAC,IAAI,CAAC,GAAG;AACvC,UAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3B,IAAA,IAAI,KAAK,IAAI,aAAa,CAAC,MAAM;AAAE,QAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AAE1D,IAAA,OAAO,KAAK;AACd,CAAC;AAEH;AACA,MAAM,aAAa;AACjB;AACA,yRAAyR;AAE3R;AACA,MAAM,4BAA4B;AAChC;AACA,qRAAqR;AAEvR,MAAM,WAAW,GAAG,CAAC,GAAW,KAAa;;;;;IAK3C,MAAM,YAAY,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC;AAE9D,IAAA,IAAI,YAAY,KAAK,IAAI,EAAE;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;AAGpC,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC;YAC7D,OAAO,IAAI,IAAI,GAAG;QAEpB,OAAO,IAAI,IAAI,GAAG;IACpB;AAEA,IAAA,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;AAEjE,IAAA,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;AAEvB,IAAA,MAAM,KAAK,GAAuB,KAAK,GAAG,CAAC,CAAC;AAE5C,IAAA,MAAM,IAAI,GAAuB,KAAK,GAAG,CAAC,CAAC;;AAG3C,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAChB,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAA,CAAA,EAAI,KAAK,IAAI,CAAC,CAAA,CAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA,EAAI,CAAA,CAAA,EAAI,IAAI,IAAI,CAAC,CAAA,CAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAE,CACrE;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE;AAC7C,QAAA,QACE,CAAC,CAAC,cAAc,EAAE,KAAK,IAAI;AAC3B,YAAA,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,KAAK;AAC7B,YAAA,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI;IAE3B;AAEA,IAAA,OAAO,IAAI;AACb,CAAC;;;;"}
1
+ {"version":3,"file":"iso-8601.mjs","sources":["../../../../src/predefined/brand/string/iso-8601.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type Brand } from 'ts-type-forge';
2
2
  import { type Type } from '../../../type.mjs';
3
- export type JsonString = Brand<string, 'JsonString'>;
3
+ export type JsonString = Brand<string, 'JsonString' | 'NonEmptyString'>;
4
4
  /**
5
5
  * @link https://github.com/validatorjs/validator.js/tree/v13.1.17?tab=readme-ov-file#validators
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"json-string.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/json-string.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CACH,KACA,IAAI,CAAC,UAAU,CAKd,CAAC"}
1
+ {"version":3,"file":"json-string.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/json-string.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CACH,KACA,IAAI,CAAC,UAAU,CAOd,CAAC"}
@@ -1,14 +1,17 @@
1
1
  import { isNonNullObject } from 'ts-data-forge';
2
+ import { brand } from '../../../brand/brand.mjs';
2
3
  import '@sindresorhus/is';
3
4
  import '../../../other-types/unknown.mjs';
4
- import { brandedString } from '../../../brand/branded-string.mjs';
5
+ import { string } from '../../../primitives/string.mjs';
5
6
 
6
7
  /**
7
8
  * @link https://github.com/validatorjs/validator.js/tree/v13.1.17?tab=readme-ov-file#validators
8
9
  */
9
- const jsonString = (options) => brandedString({
10
+ const jsonString = (options) => brand({
11
+ baseType: string(options?.defaultValue ?? defaultJsonString),
10
12
  is: isJsonString,
11
13
  defaultValue: options?.defaultValue ?? defaultJsonString,
14
+ brandKeys: ['JsonString', 'NonEmptyString'],
12
15
  typeName: 'JsonString',
13
16
  });
14
17
  const defaultJsonString = '{}';
@@ -1 +1 @@
1
- {"version":3,"file":"json-string.mjs","sources":["../../../../src/predefined/brand/string/json-string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAOA;;AAEG;AACI,MAAM,UAAU,GAAG,CACxB,OAIC,KAED,aAAa,CAAC;AACZ,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,iBAAiB;AACxD,IAAA,QAAQ,EAAE,YAAY;AACvB,CAAA;AAEH,MAAM,iBAAiB,GAAG,IAAI;AAE9B,MAAM,YAAY,GAAG,CAAC,GAAW,KAAuB;AACtD,IAAA,IAAI;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF,CAAC;;;;"}
1
+ {"version":3,"file":"json-string.mjs","sources":["../../../../src/predefined/brand/string/json-string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAUA;;AAEG;AACI,MAAM,UAAU,GAAG,CACxB,OAIC,KAED,KAAK,CAAC;IACJ,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,iBAAiB,CAAC;AAC5D,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,iBAAiB;AACxD,IAAA,SAAS,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;AAC3C,IAAA,QAAQ,EAAE,YAAY;AACvB,CAAA;AAEH,MAAM,iBAAiB,GAAG,IAAI;AAE9B,MAAM,YAAY,GAAG,CAAC,GAAW,KAAuB;AACtD,IAAA,IAAI;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF,CAAC;;;;"}
@@ -0,0 +1,5 @@
1
+ import { type NonEmptyString } from 'ts-type-forge';
2
+ import { type Type } from '../../../type.mjs';
3
+ export type { NonEmptyString } from 'ts-type-forge';
4
+ export declare const nonEmptyString: (defaultValue?: string) => Type<NonEmptyString>;
5
+ //# sourceMappingURL=non-empty-string.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"non-empty-string.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/non-empty-string.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,cAAc,GACzB,eAAc,MAAY,KACzB,IAAI,CAAC,cAAc,CAOlB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { isNonEmptyString } from 'ts-data-forge';
2
+ import { brand } from '../../../brand/brand.mjs';
3
+ import '@sindresorhus/is';
4
+ import '../../../other-types/unknown.mjs';
5
+ import { string } from '../../../primitives/string.mjs';
6
+
7
+ const nonEmptyString = (defaultValue = ' ') => brand({
8
+ baseType: string(defaultValue),
9
+ is: isNonEmptyString,
10
+ defaultValue,
11
+ brandKeys: ['NonEmptyString'],
12
+ typeName: 'NonEmptyString',
13
+ });
14
+
15
+ export { nonEmptyString };
16
+ //# sourceMappingURL=non-empty-string.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"non-empty-string.mjs","sources":["../../../../src/predefined/brand/string/non-empty-string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAQO,MAAM,cAAc,GAAG,CAC5B,YAAA,GAAuB,GAAG,KAE1B,KAAK,CAAC;AACJ,IAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,EAAE,EAAE,gBAAgB;IACpB,YAAY;IACZ,SAAS,EAAE,CAAC,gBAAgB,CAAC;AAC7B,IAAA,QAAQ,EAAE,gBAAgB;AAC3B,CAAA;;;;"}
@@ -2,10 +2,10 @@ import { type Brand, type TypeEq, type UintRangeInclusive } from 'ts-type-forge'
2
2
  import { type Type } from '../../../type.mjs';
3
3
  export type UuidVersion = UintRangeInclusive<1, 8>;
4
4
  export type UuidBaseString<V extends UuidVersion = UuidVersion> = `${string}-${string}-${V}${string}-${string}-${string}` | '00000000-0000-0000-0000-000000000000' | 'ffffffff-ffff-ffff-ffff-ffffffffffff';
5
- export type Uuid = Brand<UuidBaseString, 'Uuid'>;
6
- export type Uuid4 = Brand<UuidBaseString<4>, 'Uuid'>;
7
- export type Uuid6 = Brand<UuidBaseString<6>, 'Uuid'>;
8
- export type Uuid7 = Brand<UuidBaseString<7>, 'Uuid'>;
5
+ export type Uuid = Brand<UuidBaseString, 'Uuid' | 'NonEmptyString'>;
6
+ export type Uuid4 = Brand<UuidBaseString<4>, 'Uuid' | 'NonEmptyString'>;
7
+ export type Uuid6 = Brand<UuidBaseString<6>, 'Uuid' | 'NonEmptyString'>;
8
+ export type Uuid7 = Brand<UuidBaseString<7>, 'Uuid' | 'NonEmptyString'>;
9
9
  /**
10
10
  * @link https://github.com/validatorjs/validator.js/tree/v13.1.17?tab=readme-ov-file#validators
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/uuid.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,MAAM,EACX,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAC1D,GAAG,MAAM,IAAI,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,GACvD,sCAAsC,GACtC,sCAAsC,CAAC;AAE3C,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,WAAW,GAAG,2BAA2B,EACtE,UAAU,mBAAmB,CAAC,CAAC,CAAC,KAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAyBhB,CAAC;AAEF,KAAK,2BAA2B,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEnE,KAAK,MAAM,CAAC,CAAC,SAAS,WAAW,GAAG,2BAA2B,IAC7D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACrB,KAAK,GACL,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACvB,KAAK,GACL,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACvB,KAAK,GACL,IAAI,CAAC;AAEf,eAAO,MAAM,MAAM,GAAI,eAAe,MAAM,KAAG,IAAI,CAAC,KAAK,CAIrD,CAAC;AAEL,eAAO,MAAM,MAAM,GAAI,eAAe,MAAM,KAAG,IAAI,CAAC,KAAK,CAIrD,CAAC;AAEL,eAAO,MAAM,MAAM,GAAI,eAAe,MAAM,KAAG,IAAI,CAAC,KAAK,CAIrD,CAAC;AAEL,KAAK,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,2BAA2B,IAC1E,OAAO,CACL,QAAQ,CAAC;IACP;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC;IAEX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"uuid.d.mts","sourceRoot":"","sources":["../../../../src/predefined/brand/string/uuid.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,MAAM,EACX,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAC1D,GAAG,MAAM,IAAI,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,GACvD,sCAAsC,GACtC,sCAAsC,CAAC;AAI3C,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;AAEpE,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;AAExE,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;AAExE,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,WAAW,GAAG,2BAA2B,EACtE,UAAU,mBAAmB,CAAC,CAAC,CAAC,KAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAyBhB,CAAC;AAEF,KAAK,2BAA2B,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEnE,KAAK,MAAM,CAAC,CAAC,SAAS,WAAW,GAAG,2BAA2B,IAC7D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACrB,KAAK,GACL,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACvB,KAAK,GACL,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACvB,KAAK,GACL,IAAI,CAAC;AAEf,eAAO,MAAM,MAAM,GAAI,eAAe,MAAM,KAAG,IAAI,CAAC,KAAK,CAIrD,CAAC;AAEL,eAAO,MAAM,MAAM,GAAI,eAAe,MAAM,KAAG,IAAI,CAAC,KAAK,CAIrD,CAAC;AAEL,eAAO,MAAM,MAAM,GAAI,eAAe,MAAM,KAAG,IAAI,CAAC,KAAK,CAIrD,CAAC;AAEL,KAAK,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,2BAA2B,IAC1E,OAAO,CACL,QAAQ,CAAC;IACP;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC;IAEX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CACH,CAAC"}
@@ -17,7 +17,7 @@ const uuid = (options) => {
17
17
  is: (s) => uuidDef[version](s),
18
18
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
19
19
  defaultValue: defaultValue,
20
- brandKeys: ['Uuid'],
20
+ brandKeys: ['Uuid', 'NonEmptyString'],
21
21
  typeName: options?.typeName ??
22
22
  (version === 4
23
23
  ? 'UuidV4'
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.mjs","sources":["../../../../src/predefined/brand/string/uuid.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAyBA;;AAEG;AACI,MAAM,IAAI,GAAG,CAClB,OAAgC,KACb;AAGnB,IAAA,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,OAAO;AAErD,IAAA,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK;;AAGzC,IAAA,OAAO,KAAK,CAAoC;;AAE9C,QAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAyB;AACtD,QAAA,EAAE,EAAE,CAAC,CAAC,KAAa,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AAEtC,QAAA,YAAY,EAAE,YAA8B;QAC5C,SAAS,EAAE,CAAC,MAAM,CAAC;QACnB,QAAQ,EACN,OAAO,EAAE,QAAQ;aAChB,OAAO,KAAK;AACX,kBAAE;kBACA,OAAO,KAAK;AACZ,sBAAE;sBACA,OAAO,KAAK;AACZ,0BAAE;0BACA,MAAM,CAAC;AAClB,KAAA,CAAsC;AACzC;AAaO,MAAM,MAAM,GAAG,CAAC,YAAqB,KAC1C,IAAI,CAAC;IACH,YAAY,EAAE,YAAY,IAAI,sCAAsC;AACpE,IAAA,OAAO,EAAE,CAAC;AACX,CAAA;AAEI,MAAM,MAAM,GAAG,CAAC,YAAqB,KAC1C,IAAI,CAAC;IACH,YAAY,EAAE,YAAY,IAAI,sCAAsC;AACpE,IAAA,OAAO,EAAE,CAAC;AACX,CAAA;AAEI,MAAM,MAAM,GAAG,CAAC,YAAqB,KAC1C,IAAI,CAAC;IACH,YAAY,EAAE,YAAY,IAAI,sCAAsC;AACpE,IAAA,OAAO,EAAE,CAAC;AACX,CAAA;AAeH,MAAM,OAAO,GAAG,sCAA+D;AAE/E,MAAM,OAAO,GAAG,sCAA+D;AAE/E,MAAM,QAAQ,GAAG;AACf,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,CAAC,EAAE,mEAAmE;AACtE,IAAA,KAAK,EAAE,4DAA4D;AACnE,IAAA,KAAK,EACH,4EAA4E;CACtE;AAEV,MAAM,OAAO,GAGT;AACF,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO;IACzB,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO;AACzB,IAAA,KAAK,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;CAC7D;;;;"}
1
+ {"version":3,"file":"uuid.mjs","sources":["../../../../src/predefined/brand/string/uuid.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export { uint32 } from './brand/number/uint32.mjs';
17
17
  export { email } from './brand/string/email.mjs';
18
18
  export { iso8601 } from './brand/string/iso-8601.mjs';
19
19
  export { jsonString } from './brand/string/json-string.mjs';
20
+ export { nonEmptyString } from './brand/string/non-empty-string.mjs';
20
21
  export { uuid, uuidV4, uuidV6, uuidV7 } from './brand/string/uuid.mjs';
21
22
  export { int8 } from './int8.mjs';
22
23
  export { JsonObject, JsonPrimitive, JsonValue } from './json.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-fortress",
3
- "version": "7.1.0",
3
+ "version": "7.2.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript"
@@ -76,8 +76,8 @@
76
76
  },
77
77
  "dependencies": {
78
78
  "@sindresorhus/is": "^8.0.0",
79
- "ts-data-forge": "^6.9.6",
80
- "ts-type-forge": "^3.1.0"
79
+ "ts-data-forge": "^6.11.0",
80
+ "ts-type-forge": "^3.2.0"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@rollup/plugin-replace": "6.0.3",
@@ -87,10 +87,10 @@
87
87
  "@semantic-release/commit-analyzer": "13.0.1",
88
88
  "@semantic-release/exec": "7.1.0",
89
89
  "@semantic-release/git": "10.0.1",
90
- "@semantic-release/github": "12.0.6",
90
+ "@semantic-release/github": "12.0.8",
91
91
  "@semantic-release/npm": "13.1.5",
92
92
  "@semantic-release/release-notes-generator": "14.1.0",
93
- "@types/node": "25.6.0",
93
+ "@types/node": "25.9.1",
94
94
  "@vitest/browser-playwright": "4.1.5",
95
95
  "@vitest/coverage-v8": "4.1.5",
96
96
  "@vitest/ui": "4.1.5",
@@ -103,7 +103,7 @@
103
103
  "fp-ts": "2.16.11",
104
104
  "github-settings-as-code": "1.2.9",
105
105
  "io-ts": "2.2.22",
106
- "jiti": "2.6.1",
106
+ "jiti": "2.7.0",
107
107
  "markdownlint": "0.40.0",
108
108
  "markdownlint-cli2": "0.22.1",
109
109
  "npm-run-all2": "8.0.4",
@@ -111,7 +111,7 @@
111
111
  "prettier": "3.8.3",
112
112
  "prettier-plugin-organize-imports": "4.3.0",
113
113
  "prettier-plugin-packagejson": "3.0.2",
114
- "rollup": "4.60.2",
114
+ "rollup": "4.60.4",
115
115
  "semantic-release": "25.0.3",
116
116
  "ts-codemod-lib": "2.1.7",
117
117
  "ts-repo-utils": "10.0.3",
@@ -120,16 +120,16 @@
120
120
  "typedoc": "0.28.19",
121
121
  "typedoc-github-theme": "0.4.0",
122
122
  "typescript": "5.9.3",
123
- "vite": "8.0.10",
123
+ "vite": "8.0.16",
124
124
  "vitest": "4.1.5",
125
125
  "zod": "4.4.3"
126
126
  },
127
- "packageManager": "pnpm@10.33.4",
127
+ "packageManager": "pnpm@10.34.4",
128
128
  "engines": {
129
- "node": ">=22.18.0",
129
+ "node": ">=22.22.2",
130
130
  "pnpm": ">=9.0.0"
131
131
  },
132
132
  "volta": {
133
- "node": "25.9.0"
133
+ "node": "26.3.1"
134
134
  }
135
135
  }
@@ -1,8 +1,10 @@
1
1
  import { type Brand } from 'ts-type-forge';
2
- import { brandedString } from '../../../brand/index.mjs';
2
+ import { brand } from '../../../brand/index.mjs';
3
+ import { string } from '../../../primitives/index.mjs';
3
4
  import { type Type } from '../../../type.mjs';
4
5
 
5
- export type Email = Brand<string, 'Email'>;
6
+ // A valid e-mail address is always non-empty, so it also satisfies `NonEmptyString`.
7
+ export type Email = Brand<string, 'Email' | 'NonEmptyString'>;
6
8
 
7
9
  /**
8
10
  * @link https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
@@ -14,9 +16,11 @@ export const email = (
14
16
  }>
15
17
  >,
16
18
  ): Type<Email> =>
17
- brandedString({
19
+ brand({
20
+ baseType: string(options?.defaultValue ?? defaultEmail),
18
21
  is: (s): s is Email => regexpEmailAddress.test(s),
19
22
  defaultValue: options?.defaultValue ?? defaultEmail,
23
+ brandKeys: ['Email', 'NonEmptyString'],
20
24
  typeName: 'Email',
21
25
  });
22
26
 
@@ -1,6 +1,7 @@
1
1
  /* cSpell:disable */
2
2
 
3
3
  import { expectType } from 'ts-data-forge';
4
+ import { type NonEmptyString } from 'ts-type-forge';
4
5
  import { type TypeOf } from '../../../type.mjs';
5
6
  import { email } from './email.mjs';
6
7
 
@@ -77,6 +78,8 @@ describe(email, () => {
77
78
 
78
79
  expectType<EmailType, string>('<=');
79
80
 
81
+ expectType<EmailType, NonEmptyString>('<=');
82
+
80
83
  expectType<typeof baseType.defaultValue, EmailType>('=');
81
84
 
82
85
  test.each(validSamples)('should accept $0', (e) => {
@@ -1,4 +1,5 @@
1
1
  export * from './email.mjs';
2
2
  export * from './iso-8601.mjs';
3
3
  export * from './json-string.mjs';
4
+ export * from './non-empty-string.mjs';
4
5
  export * from './uuid.mjs';
@@ -1,10 +1,12 @@
1
1
  import { type Brand, type StrictOmit } from 'ts-type-forge';
2
- import { brandedString } from '../../../brand/index.mjs';
2
+ import { brand } from '../../../brand/index.mjs';
3
3
  import { boolean, string } from '../../../primitives/index.mjs';
4
4
  import { record } from '../../../record/index.mjs';
5
5
  import { type Type, type TypeOf } from '../../../type.mjs';
6
6
 
7
- export type Iso8601 = Brand<string, 'Iso8601'>;
7
+ // A valid ISO 8601 string always begins with a 4-digit year, so it is always
8
+ // non-empty and also satisfies `NonEmptyString`.
9
+ export type Iso8601 = Brand<string, 'Iso8601' | 'NonEmptyString'>;
8
10
 
9
11
  /**
10
12
  * @link https://github.com/validatorjs/validator.js/tree/v13.1.17?tab=readme-ov-file#validators
@@ -16,9 +18,11 @@ export const iso8601 = (options?: ISO8601ValidatorOption): Type<Iso8601> => {
16
18
 
17
19
  const is = isISO8601(filledOptions);
18
20
 
19
- return brandedString({
21
+ return brand({
22
+ baseType: string(filledOptions.defaultValue),
20
23
  is,
21
24
  defaultValue: filledOptions.defaultValue,
25
+ brandKeys: ['Iso8601', 'NonEmptyString'],
22
26
  typeName: 'Iso8601',
23
27
  });
24
28
  };
@@ -1,4 +1,5 @@
1
1
  import { expectType, Result } from 'ts-data-forge';
2
+ import { type NonEmptyString } from 'ts-type-forge';
2
3
  import { type TypeOf } from '../../../type.mjs';
3
4
  import { validationErrorsToMessages } from '../../../utils/index.mjs';
4
5
  import { iso8601 } from './iso-8601.mjs';
@@ -96,6 +97,8 @@ describe(iso8601, () => {
96
97
 
97
98
  expectType<Iso8601Type, string>('<=');
98
99
 
100
+ expectType<Iso8601Type, NonEmptyString>('<=');
101
+
99
102
  expectType<typeof baseType.defaultValue, Iso8601Type>('=');
100
103
 
101
104
  test.each(validSamples)('should accept $0', (e) => {
@@ -1,9 +1,12 @@
1
1
  import { isNonNullObject } from 'ts-data-forge';
2
2
  import { type Brand } from 'ts-type-forge';
3
- import { brandedString } from '../../../brand/index.mjs';
3
+ import { brand } from '../../../brand/index.mjs';
4
+ import { string } from '../../../primitives/index.mjs';
4
5
  import { type Type } from '../../../type.mjs';
5
6
 
6
- export type JsonString = Brand<string, 'JsonString'>;
7
+ // A valid JSON string (an object or array literal) is always non-empty, so it
8
+ // also satisfies `NonEmptyString`.
9
+ export type JsonString = Brand<string, 'JsonString' | 'NonEmptyString'>;
7
10
 
8
11
  /**
9
12
  * @link https://github.com/validatorjs/validator.js/tree/v13.1.17?tab=readme-ov-file#validators
@@ -15,9 +18,11 @@ export const jsonString = (
15
18
  }>
16
19
  >,
17
20
  ): Type<JsonString> =>
18
- brandedString({
21
+ brand({
22
+ baseType: string(options?.defaultValue ?? defaultJsonString),
19
23
  is: isJsonString,
20
24
  defaultValue: options?.defaultValue ?? defaultJsonString,
25
+ brandKeys: ['JsonString', 'NonEmptyString'],
21
26
  typeName: 'JsonString',
22
27
  });
23
28
 
@@ -1,4 +1,5 @@
1
1
  import { expectType, Result } from 'ts-data-forge';
2
+ import { type NonEmptyString } from 'ts-type-forge';
2
3
  import { type TypeOf } from '../../../type.mjs';
3
4
  import { validationErrorsToMessages } from '../../../utils/index.mjs';
4
5
  import { jsonString } from './json-string.mjs';
@@ -12,6 +13,8 @@ describe(jsonString, () => {
12
13
 
13
14
  expectType<JsonStringType, string>('<=');
14
15
 
16
+ expectType<JsonStringType, NonEmptyString>('<=');
17
+
15
18
  expectType<typeof baseType.defaultValue, JsonStringType>('=');
16
19
 
17
20
  test('provides an object literal as default', () => {
@@ -0,0 +1,24 @@
1
+ import { isNonEmptyString } from 'ts-data-forge';
2
+ import { type NonEmptyString } from 'ts-type-forge';
3
+ import { brand } from '../../../brand/index.mjs';
4
+ import { string } from '../../../primitives/index.mjs';
5
+ import { type Type } from '../../../type.mjs';
6
+
7
+ export type { NonEmptyString } from 'ts-type-forge';
8
+
9
+ export const nonEmptyString = (
10
+ defaultValue: string = ' ',
11
+ ): Type<NonEmptyString> =>
12
+ brand({
13
+ baseType: string(defaultValue),
14
+ is: isNonEmptyString,
15
+ defaultValue,
16
+ brandKeys: ['NonEmptyString'],
17
+ typeName: 'NonEmptyString',
18
+ });
19
+
20
+ if (import.meta.vitest !== undefined) {
21
+ test('defaultValue', () => {
22
+ assert.isTrue(isNonEmptyString(' '));
23
+ });
24
+ }
@@ -0,0 +1,54 @@
1
+ import { expectType } from 'ts-data-forge';
2
+ import { type NonEmptyString } from 'ts-type-forge';
3
+ import { type TypeOf } from '../../../type.mjs';
4
+ import { type Email } from './email.mjs';
5
+ import { type Iso8601 } from './iso-8601.mjs';
6
+ import { type JsonString } from './json-string.mjs';
7
+ import { nonEmptyString } from './non-empty-string.mjs';
8
+ import { type Uuid, type Uuid4, type Uuid6, type Uuid7 } from './uuid.mjs';
9
+
10
+ describe(nonEmptyString, () => {
11
+ const baseType = nonEmptyString();
12
+
13
+ type NonEmptyStringType = TypeOf<typeof baseType>;
14
+
15
+ expectType<NonEmptyStringType, string>('<=');
16
+
17
+ expectType<NonEmptyStringType, NonEmptyString>('=');
18
+
19
+ expectType<typeof baseType.defaultValue, NonEmptyStringType>('=');
20
+
21
+ // The other string brand types in this directory never produce empty
22
+ // strings, so they must also be assignable to `NonEmptyString`.
23
+ expectType<Email, NonEmptyString>('<=');
24
+
25
+ expectType<Iso8601, NonEmptyString>('<=');
26
+
27
+ expectType<JsonString, NonEmptyString>('<=');
28
+
29
+ expectType<Uuid, NonEmptyString>('<=');
30
+
31
+ expectType<Uuid4, NonEmptyString>('<=');
32
+
33
+ expectType<Uuid6, NonEmptyString>('<=');
34
+
35
+ expectType<Uuid7, NonEmptyString>('<=');
36
+
37
+ test('uses a non-empty default value', () => {
38
+ assert.isTrue(baseType.is(baseType.defaultValue));
39
+ });
40
+
41
+ test.each(['a', ' ', 'hello', '0'] as const)('accepts %o', (s) => {
42
+ assert.isTrue(baseType.is(s));
43
+ });
44
+
45
+ test('rejects the empty string', () => {
46
+ assert.isFalse(baseType.is(''));
47
+ });
48
+
49
+ test('accepts a custom default value', () => {
50
+ const t = nonEmptyString('default');
51
+
52
+ expect(t.defaultValue).toBe('default');
53
+ });
54
+ });
@@ -15,13 +15,15 @@ export type UuidBaseString<V extends UuidVersion = UuidVersion> =
15
15
  | '00000000-0000-0000-0000-000000000000'
16
16
  | 'ffffffff-ffff-ffff-ffff-ffffffffffff';
17
17
 
18
- export type Uuid = Brand<UuidBaseString, 'Uuid'>;
18
+ // A UUID always has the dash-separated hexadecimal form, so it is never an
19
+ // empty string and also satisfies `NonEmptyString`.
20
+ export type Uuid = Brand<UuidBaseString, 'Uuid' | 'NonEmptyString'>;
19
21
 
20
- export type Uuid4 = Brand<UuidBaseString<4>, 'Uuid'>;
22
+ export type Uuid4 = Brand<UuidBaseString<4>, 'Uuid' | 'NonEmptyString'>;
21
23
 
22
- export type Uuid6 = Brand<UuidBaseString<6>, 'Uuid'>;
24
+ export type Uuid6 = Brand<UuidBaseString<6>, 'Uuid' | 'NonEmptyString'>;
23
25
 
24
- export type Uuid7 = Brand<UuidBaseString<7>, 'Uuid'>;
26
+ export type Uuid7 = Brand<UuidBaseString<7>, 'Uuid' | 'NonEmptyString'>;
25
27
 
26
28
  /**
27
29
  * @link https://github.com/validatorjs/validator.js/tree/v13.1.17?tab=readme-ov-file#validators
@@ -29,20 +31,20 @@ export type Uuid7 = Brand<UuidBaseString<7>, 'Uuid'>;
29
31
  export const uuid = <V extends UuidVersion | UuidVersionAdditionalOption>(
30
32
  options?: UuidValidatorOption<V>,
31
33
  ): Type<UuidOf<V>> => {
32
- type T = Brand<UuidBaseString, 'Uuid'>;
34
+ type T = Brand<UuidBaseString, 'Uuid' | 'NonEmptyString'>;
33
35
 
34
36
  const defaultValue = options?.defaultValue ?? nilUuid;
35
37
 
36
38
  const version = options?.version ?? 'all';
37
39
 
38
40
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
39
- return brand<UuidBaseString, readonly ['Uuid']>({
41
+ return brand<UuidBaseString, readonly ['Uuid', 'NonEmptyString']>({
40
42
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
41
43
  baseType: string(defaultValue) as Type<UuidBaseString>,
42
44
  is: (s): s is T => uuidDef[version](s),
43
45
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
44
46
  defaultValue: defaultValue as UuidBaseString,
45
- brandKeys: ['Uuid'],
47
+ brandKeys: ['Uuid', 'NonEmptyString'],
46
48
  typeName:
47
49
  options?.typeName ??
48
50
  (version === 4
@@ -1,4 +1,5 @@
1
1
  import { expectType, Result } from 'ts-data-forge';
2
+ import { type NonEmptyString } from 'ts-type-forge';
2
3
  import { type TypeOf } from '../../../type.mjs';
3
4
  import { validationErrorsToMessages } from '../../../utils/index.mjs';
4
5
  import { uuid, uuidV4, uuidV6, uuidV7 } from './uuid.mjs';
@@ -20,6 +21,8 @@ describe(uuid, () => {
20
21
 
21
22
  expectType<UuidType, string>('<=');
22
23
 
24
+ expectType<UuidType, NonEmptyString>('<=');
25
+
23
26
  expectType<typeof baseType.defaultValue, UuidType>('=');
24
27
 
25
28
  test('provides nil UUID as default', () => {