@duplojs/utils 1.1.13 → 1.1.14

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 (224) hide show
  1. package/dist/array/flat.cjs +1 -13
  2. package/dist/array/flat.d.ts +1 -4
  3. package/dist/array/flat.mjs +1 -13
  4. package/dist/array/index.cjs +2 -0
  5. package/dist/array/index.d.ts +1 -0
  6. package/dist/array/index.mjs +1 -0
  7. package/dist/array/notIncludes.cjs +12 -0
  8. package/dist/array/notIncludes.d.ts +4 -0
  9. package/dist/array/notIncludes.mjs +10 -0
  10. package/dist/array/reduce.d.ts +6 -7
  11. package/dist/array/reduceRight.d.ts +4 -3
  12. package/dist/common/createKindIdentifier.cjs +27 -0
  13. package/dist/common/createKindIdentifier.d.ts +7 -0
  14. package/dist/common/createKindIdentifier.mjs +25 -0
  15. package/dist/common/index.d.ts +1 -0
  16. package/dist/common/kind.d.ts +2 -2
  17. package/dist/common/or.d.ts +9 -9
  18. package/dist/common/types/index.d.ts +1 -0
  19. package/dist/common/types/onlyLiteral.d.ts +18 -0
  20. package/dist/dataParser/base.cjs +55 -29
  21. package/dist/dataParser/base.d.ts +1 -1
  22. package/dist/dataParser/base.mjs +55 -29
  23. package/dist/dataParser/baseExtended.cjs +15 -2
  24. package/dist/dataParser/baseExtended.d.ts +8 -3
  25. package/dist/dataParser/baseExtended.mjs +15 -2
  26. package/dist/dataParser/extended/array.cjs +1 -0
  27. package/dist/dataParser/extended/array.d.ts +11 -5
  28. package/dist/dataParser/extended/array.mjs +1 -0
  29. package/dist/dataParser/extended/bigint.cjs +1 -0
  30. package/dist/dataParser/extended/bigint.d.ts +9 -2
  31. package/dist/dataParser/extended/bigint.mjs +1 -0
  32. package/dist/dataParser/extended/boolean.cjs +1 -0
  33. package/dist/dataParser/extended/boolean.d.ts +13 -2
  34. package/dist/dataParser/extended/boolean.mjs +1 -0
  35. package/dist/dataParser/extended/coerce/bigint.cjs +1 -0
  36. package/dist/dataParser/extended/coerce/bigint.mjs +1 -0
  37. package/dist/dataParser/extended/coerce/boolean.cjs +1 -0
  38. package/dist/dataParser/extended/coerce/boolean.mjs +1 -0
  39. package/dist/dataParser/extended/coerce/empty.cjs +1 -0
  40. package/dist/dataParser/extended/coerce/empty.mjs +1 -0
  41. package/dist/dataParser/extended/coerce/nil.cjs +1 -0
  42. package/dist/dataParser/extended/coerce/nil.mjs +1 -0
  43. package/dist/dataParser/extended/coerce/number.cjs +1 -0
  44. package/dist/dataParser/extended/coerce/number.mjs +1 -0
  45. package/dist/dataParser/extended/coerce/string.cjs +1 -0
  46. package/dist/dataParser/extended/coerce/string.mjs +1 -0
  47. package/dist/dataParser/extended/empty.cjs +1 -0
  48. package/dist/dataParser/extended/empty.d.ts +13 -2
  49. package/dist/dataParser/extended/empty.mjs +1 -0
  50. package/dist/dataParser/extended/index.cjs +2 -0
  51. package/dist/dataParser/extended/index.d.ts +1 -0
  52. package/dist/dataParser/extended/index.mjs +1 -0
  53. package/dist/dataParser/extended/lazy.cjs +1 -0
  54. package/dist/dataParser/extended/lazy.d.ts +13 -3
  55. package/dist/dataParser/extended/lazy.mjs +1 -0
  56. package/dist/dataParser/extended/literal.cjs +1 -0
  57. package/dist/dataParser/extended/literal.d.ts +13 -2
  58. package/dist/dataParser/extended/literal.mjs +1 -0
  59. package/dist/dataParser/extended/nil.cjs +1 -0
  60. package/dist/dataParser/extended/nil.d.ts +13 -2
  61. package/dist/dataParser/extended/nil.mjs +1 -0
  62. package/dist/dataParser/extended/nullable.cjs +1 -0
  63. package/dist/dataParser/extended/nullable.d.ts +14 -4
  64. package/dist/dataParser/extended/nullable.mjs +1 -0
  65. package/dist/dataParser/extended/number.cjs +1 -0
  66. package/dist/dataParser/extended/number.d.ts +9 -2
  67. package/dist/dataParser/extended/number.mjs +1 -0
  68. package/dist/dataParser/extended/object.cjs +1 -0
  69. package/dist/dataParser/extended/object.d.ts +13 -2
  70. package/dist/dataParser/extended/object.mjs +1 -0
  71. package/dist/dataParser/extended/optional.cjs +1 -0
  72. package/dist/dataParser/extended/optional.d.ts +14 -4
  73. package/dist/dataParser/extended/optional.mjs +1 -0
  74. package/dist/dataParser/extended/pipe.cjs +1 -0
  75. package/dist/dataParser/extended/pipe.d.ts +13 -3
  76. package/dist/dataParser/extended/pipe.mjs +1 -0
  77. package/dist/dataParser/extended/record.cjs +3 -2
  78. package/dist/dataParser/extended/record.d.ts +13 -3
  79. package/dist/dataParser/extended/record.mjs +2 -1
  80. package/dist/dataParser/extended/recover.cjs +14 -0
  81. package/dist/dataParser/extended/recover.d.ts +23 -0
  82. package/dist/dataParser/extended/recover.mjs +12 -0
  83. package/dist/dataParser/extended/string.cjs +1 -0
  84. package/dist/dataParser/extended/string.d.ts +9 -2
  85. package/dist/dataParser/extended/string.mjs +1 -0
  86. package/dist/dataParser/extended/templateLiteral.cjs +4 -2
  87. package/dist/dataParser/extended/templateLiteral.d.ts +13 -2
  88. package/dist/dataParser/extended/templateLiteral.mjs +3 -1
  89. package/dist/dataParser/extended/transform.cjs +1 -0
  90. package/dist/dataParser/extended/transform.d.ts +12 -2
  91. package/dist/dataParser/extended/transform.mjs +1 -0
  92. package/dist/dataParser/extended/tuple.cjs +11 -1
  93. package/dist/dataParser/extended/tuple.d.ts +19 -2
  94. package/dist/dataParser/extended/tuple.mjs +11 -1
  95. package/dist/dataParser/extended/union.cjs +1 -0
  96. package/dist/dataParser/extended/union.d.ts +13 -2
  97. package/dist/dataParser/extended/union.mjs +1 -0
  98. package/dist/dataParser/extended/unknown.cjs +1 -0
  99. package/dist/dataParser/extended/unknown.d.ts +13 -2
  100. package/dist/dataParser/extended/unknown.mjs +1 -0
  101. package/dist/dataParser/identifier.cjs +2 -17
  102. package/dist/dataParser/identifier.d.ts +216 -8
  103. package/dist/dataParser/identifier.mjs +2 -17
  104. package/dist/dataParser/index.cjs +29 -18
  105. package/dist/dataParser/index.mjs +18 -14
  106. package/dist/dataParser/parsers/array/checkers/max.cjs +3 -3
  107. package/dist/dataParser/parsers/array/checkers/max.d.ts +2 -2
  108. package/dist/dataParser/parsers/array/checkers/max.mjs +3 -3
  109. package/dist/dataParser/parsers/array/checkers/min.cjs +3 -3
  110. package/dist/dataParser/parsers/array/checkers/min.d.ts +2 -2
  111. package/dist/dataParser/parsers/array/checkers/min.mjs +3 -3
  112. package/dist/dataParser/parsers/array/index.d.ts +14 -7
  113. package/dist/dataParser/parsers/bigint/checkers/max.cjs +3 -3
  114. package/dist/dataParser/parsers/bigint/checkers/max.d.ts +2 -2
  115. package/dist/dataParser/parsers/bigint/checkers/max.mjs +3 -3
  116. package/dist/dataParser/parsers/bigint/checkers/min.cjs +3 -3
  117. package/dist/dataParser/parsers/bigint/checkers/min.d.ts +2 -2
  118. package/dist/dataParser/parsers/bigint/checkers/min.mjs +3 -3
  119. package/dist/dataParser/parsers/bigint/index.d.ts +11 -4
  120. package/dist/dataParser/parsers/boolean.d.ts +16 -4
  121. package/dist/dataParser/parsers/coerce/bigint.cjs +1 -0
  122. package/dist/dataParser/parsers/coerce/bigint.mjs +1 -0
  123. package/dist/dataParser/parsers/coerce/boolean.cjs +1 -0
  124. package/dist/dataParser/parsers/coerce/boolean.mjs +1 -0
  125. package/dist/dataParser/parsers/coerce/empty.cjs +1 -0
  126. package/dist/dataParser/parsers/coerce/empty.mjs +1 -0
  127. package/dist/dataParser/parsers/coerce/nil.cjs +1 -0
  128. package/dist/dataParser/parsers/coerce/nil.mjs +1 -0
  129. package/dist/dataParser/parsers/coerce/number.cjs +1 -0
  130. package/dist/dataParser/parsers/coerce/number.mjs +1 -0
  131. package/dist/dataParser/parsers/coerce/string.cjs +1 -0
  132. package/dist/dataParser/parsers/coerce/string.mjs +1 -0
  133. package/dist/dataParser/parsers/empty.d.ts +16 -4
  134. package/dist/dataParser/parsers/index.d.ts +2 -0
  135. package/dist/dataParser/parsers/lazy.d.ts +16 -4
  136. package/dist/dataParser/parsers/literal.d.ts +16 -4
  137. package/dist/dataParser/parsers/nil.d.ts +16 -4
  138. package/dist/dataParser/parsers/nullable.cjs +3 -2
  139. package/dist/dataParser/parsers/nullable.d.ts +19 -6
  140. package/dist/dataParser/parsers/nullable.mjs +3 -2
  141. package/dist/dataParser/parsers/number/checkers/int.cjs +3 -3
  142. package/dist/dataParser/parsers/number/checkers/int.d.ts +2 -2
  143. package/dist/dataParser/parsers/number/checkers/int.mjs +3 -3
  144. package/dist/dataParser/parsers/number/checkers/max.cjs +3 -3
  145. package/dist/dataParser/parsers/number/checkers/max.d.ts +2 -2
  146. package/dist/dataParser/parsers/number/checkers/max.mjs +3 -3
  147. package/dist/dataParser/parsers/number/checkers/min.cjs +3 -3
  148. package/dist/dataParser/parsers/number/checkers/min.d.ts +2 -2
  149. package/dist/dataParser/parsers/number/checkers/min.mjs +3 -3
  150. package/dist/dataParser/parsers/number/index.d.ts +11 -4
  151. package/dist/dataParser/parsers/object.d.ts +16 -4
  152. package/dist/dataParser/parsers/optional.cjs +3 -2
  153. package/dist/dataParser/parsers/optional.d.ts +19 -6
  154. package/dist/dataParser/parsers/optional.mjs +3 -2
  155. package/dist/dataParser/parsers/pipe.d.ts +16 -4
  156. package/dist/dataParser/parsers/record/findRecordRequiredKey.cjs +50 -0
  157. package/dist/dataParser/parsers/record/findRecordRequiredKey.d.ts +4 -0
  158. package/dist/dataParser/parsers/record/findRecordRequiredKey.mjs +47 -0
  159. package/dist/dataParser/parsers/{record.cjs → record/index.cjs} +21 -3
  160. package/dist/dataParser/parsers/record/index.d.ts +42 -0
  161. package/dist/dataParser/parsers/{record.mjs → record/index.mjs} +21 -4
  162. package/dist/dataParser/parsers/recover.cjs +32 -0
  163. package/dist/dataParser/parsers/recover.d.ts +28 -0
  164. package/dist/dataParser/parsers/recover.mjs +29 -0
  165. package/dist/dataParser/parsers/refine.cjs +18 -0
  166. package/dist/dataParser/parsers/refine.d.ts +17 -0
  167. package/dist/dataParser/parsers/refine.mjs +15 -0
  168. package/dist/dataParser/parsers/string/checkers/email.cjs +3 -3
  169. package/dist/dataParser/parsers/string/checkers/email.d.ts +2 -2
  170. package/dist/dataParser/parsers/string/checkers/email.mjs +3 -3
  171. package/dist/dataParser/parsers/string/checkers/max.cjs +3 -3
  172. package/dist/dataParser/parsers/string/checkers/max.d.ts +2 -2
  173. package/dist/dataParser/parsers/string/checkers/max.mjs +3 -3
  174. package/dist/dataParser/parsers/string/checkers/min.cjs +3 -3
  175. package/dist/dataParser/parsers/string/checkers/min.d.ts +2 -2
  176. package/dist/dataParser/parsers/string/checkers/min.mjs +3 -3
  177. package/dist/dataParser/parsers/string/checkers/regex.cjs +3 -3
  178. package/dist/dataParser/parsers/string/checkers/regex.d.ts +2 -2
  179. package/dist/dataParser/parsers/string/checkers/regex.mjs +3 -3
  180. package/dist/dataParser/parsers/string/checkers/url.cjs +3 -3
  181. package/dist/dataParser/parsers/string/checkers/url.d.ts +2 -2
  182. package/dist/dataParser/parsers/string/checkers/url.mjs +3 -3
  183. package/dist/dataParser/parsers/string/index.d.ts +11 -4
  184. package/dist/dataParser/parsers/templateLiteral/createTemplateLiteralPattern.cjs +75 -0
  185. package/dist/dataParser/parsers/templateLiteral/createTemplateLiteralPattern.d.ts +2 -0
  186. package/dist/dataParser/parsers/templateLiteral/createTemplateLiteralPattern.mjs +73 -0
  187. package/dist/dataParser/parsers/templateLiteral/index.cjs +31 -0
  188. package/dist/dataParser/parsers/templateLiteral/index.d.ts +66 -0
  189. package/dist/dataParser/parsers/templateLiteral/index.mjs +27 -0
  190. package/dist/dataParser/parsers/transform.d.ts +16 -4
  191. package/dist/dataParser/parsers/tuple.d.ts +14 -4
  192. package/dist/dataParser/parsers/union.d.ts +16 -4
  193. package/dist/dataParser/parsers/unknown.d.ts +16 -4
  194. package/dist/dataParser/types/checkers.d.ts +1 -1
  195. package/dist/dataParser/types/dataParsers.d.ts +2 -2
  196. package/dist/either/bool/falsy.cjs +1 -1
  197. package/dist/either/bool/falsy.mjs +1 -1
  198. package/dist/either/bool/truthy.cjs +2 -2
  199. package/dist/either/bool/truthy.mjs +2 -2
  200. package/dist/either/future/create.cjs +1 -1
  201. package/dist/either/future/create.mjs +1 -1
  202. package/dist/either/nullable/empty.cjs +1 -1
  203. package/dist/either/nullable/empty.mjs +1 -1
  204. package/dist/either/nullish/filled.cjs +2 -2
  205. package/dist/either/nullish/filled.mjs +2 -2
  206. package/dist/either/optional/filled.cjs +2 -2
  207. package/dist/either/optional/filled.mjs +2 -2
  208. package/dist/either/right/asyncPipe.cjs +1 -1
  209. package/dist/either/right/asyncPipe.mjs +1 -1
  210. package/dist/either/right/pipe.cjs +1 -1
  211. package/dist/either/right/pipe.mjs +1 -1
  212. package/dist/generator/asyncReduce.cjs +1 -1
  213. package/dist/generator/asyncReduce.d.ts +4 -3
  214. package/dist/generator/asyncReduce.mjs +1 -1
  215. package/dist/generator/reduce.d.ts +6 -7
  216. package/dist/index.cjs +2 -0
  217. package/dist/index.mjs +1 -0
  218. package/dist/string/types/index.d.ts +1 -0
  219. package/dist/string/types/templateLiteralContainLargeType.d.ts +5 -0
  220. package/package.json +3 -3
  221. package/dist/dataParser/parsers/record.d.ts +0 -30
  222. package/dist/dataParser/parsers/templateLiteral.cjs +0 -47
  223. package/dist/dataParser/parsers/templateLiteral.d.ts +0 -49
  224. package/dist/dataParser/parsers/templateLiteral.mjs +0 -44
@@ -0,0 +1,15 @@
1
+ import { dataParserCheckerInit } from '../base.mjs';
2
+ import { SymbolDataParserErrorIssue } from '../error.mjs';
3
+ import { createDataParserKind } from '../kind.mjs';
4
+
5
+ const dataParserCheckerRefineKind = createDataParserKind("checker-string-max");
6
+ function checkerRefine(theFunction, definition) {
7
+ return dataParserCheckerInit(dataParserCheckerRefineKind, {
8
+ definition: {
9
+ ...definition,
10
+ theFunction,
11
+ },
12
+ }, (value, self) => self.definition.theFunction(value) ? value : SymbolDataParserErrorIssue);
13
+ }
14
+
15
+ export { checkerRefine, dataParserCheckerRefineKind };
@@ -5,10 +5,10 @@ var error = require('../../../error.cjs');
5
5
  var index = require('../index.cjs');
6
6
  var kind = require('../../../kind.cjs');
7
7
 
8
- const dataParserCheckerEmailKind = kind.createDataParserKind("checker-string-email");
8
+ const checkerEmailKind = kind.createDataParserKind("checker-string-email");
9
9
  const emailPattern = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9-]*\.)+[A-Za-z]{2,}$/;
10
10
  function checkerEmail(definition = {}) {
11
- return base.dataParserCheckerInit(dataParserCheckerEmailKind, {
11
+ return base.dataParserCheckerInit(checkerEmailKind, {
12
12
  definition: {
13
13
  ...definition,
14
14
  pattern: emailPattern,
@@ -27,5 +27,5 @@ function email(definition) {
27
27
  }
28
28
 
29
29
  exports.checkerEmail = checkerEmail;
30
- exports.dataParserCheckerEmailKind = dataParserCheckerEmailKind;
30
+ exports.checkerEmailKind = checkerEmailKind;
31
31
  exports.email = email;
@@ -4,8 +4,8 @@ export interface DataParserCheckerDefinitionEmail extends DataParserCheckerDefin
4
4
  normalize?: boolean;
5
5
  pattern: RegExp;
6
6
  }
7
- export declare const dataParserCheckerEmailKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-email", unknown>>;
8
- type _DataParserCheckerEmail = (Kind<typeof dataParserCheckerEmailKind.definition> & DataParserChecker<DataParserCheckerDefinitionEmail, string>);
7
+ export declare const checkerEmailKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-email", unknown>>;
8
+ type _DataParserCheckerEmail = (Kind<typeof checkerEmailKind.definition> & DataParserChecker<DataParserCheckerDefinitionEmail, string>);
9
9
  export interface DataParserCheckerEmail extends _DataParserCheckerEmail {
10
10
  }
11
11
  export declare function checkerEmail(definition?: Partial<DataParserCheckerDefinitionEmail>): DataParserCheckerEmail;
@@ -3,10 +3,10 @@ import { SymbolDataParserErrorIssue } from '../../../error.mjs';
3
3
  import { string } from '../index.mjs';
4
4
  import { createDataParserKind } from '../../../kind.mjs';
5
5
 
6
- const dataParserCheckerEmailKind = createDataParserKind("checker-string-email");
6
+ const checkerEmailKind = createDataParserKind("checker-string-email");
7
7
  const emailPattern = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9-]*\.)+[A-Za-z]{2,}$/;
8
8
  function checkerEmail(definition = {}) {
9
- return dataParserCheckerInit(dataParserCheckerEmailKind, {
9
+ return dataParserCheckerInit(checkerEmailKind, {
10
10
  definition: {
11
11
  ...definition,
12
12
  pattern: emailPattern,
@@ -24,4 +24,4 @@ function email(definition) {
24
24
  });
25
25
  }
26
26
 
27
- export { checkerEmail, dataParserCheckerEmailKind, email };
27
+ export { checkerEmail, checkerEmailKind, email };
@@ -4,9 +4,9 @@ var base = require('../../../base.cjs');
4
4
  var error = require('../../../error.cjs');
5
5
  var kind = require('../../../kind.cjs');
6
6
 
7
- const dataParserCheckerStringMaxKind = kind.createDataParserKind("checker-string-max");
7
+ const checkerStringMaxKind = kind.createDataParserKind("checker-string-max");
8
8
  function checkerStringMax(max, definition = {}) {
9
- return base.dataParserCheckerInit(dataParserCheckerStringMaxKind, {
9
+ return base.dataParserCheckerInit(checkerStringMaxKind, {
10
10
  definition: {
11
11
  ...definition,
12
12
  max,
@@ -15,4 +15,4 @@ function checkerStringMax(max, definition = {}) {
15
15
  }
16
16
 
17
17
  exports.checkerStringMax = checkerStringMax;
18
- exports.dataParserCheckerStringMaxKind = dataParserCheckerStringMaxKind;
18
+ exports.checkerStringMaxKind = checkerStringMaxKind;
@@ -3,8 +3,8 @@ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../
3
3
  export interface DataParserCheckerDefinitionStringMax extends DataParserCheckerDefinition {
4
4
  max: number;
5
5
  }
6
- export declare const dataParserCheckerStringMaxKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-max", unknown>>;
7
- type _DataParserCheckerStringMax = (Kind<typeof dataParserCheckerStringMaxKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringMax, string>);
6
+ export declare const checkerStringMaxKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-max", unknown>>;
7
+ type _DataParserCheckerStringMax = (Kind<typeof checkerStringMaxKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringMax, string>);
8
8
  export interface DataParserCheckerStringMax extends _DataParserCheckerStringMax {
9
9
  }
10
10
  export declare function checkerStringMax(max: number, definition?: Partial<Omit<DataParserCheckerDefinitionStringMax, "max">>): DataParserCheckerStringMax;
@@ -2,9 +2,9 @@ import { dataParserCheckerInit } from '../../../base.mjs';
2
2
  import { SymbolDataParserErrorIssue } from '../../../error.mjs';
3
3
  import { createDataParserKind } from '../../../kind.mjs';
4
4
 
5
- const dataParserCheckerStringMaxKind = createDataParserKind("checker-string-max");
5
+ const checkerStringMaxKind = createDataParserKind("checker-string-max");
6
6
  function checkerStringMax(max, definition = {}) {
7
- return dataParserCheckerInit(dataParserCheckerStringMaxKind, {
7
+ return dataParserCheckerInit(checkerStringMaxKind, {
8
8
  definition: {
9
9
  ...definition,
10
10
  max,
@@ -12,4 +12,4 @@ function checkerStringMax(max, definition = {}) {
12
12
  }, (value, self) => value.length <= self.definition.max ? value : SymbolDataParserErrorIssue);
13
13
  }
14
14
 
15
- export { checkerStringMax, dataParserCheckerStringMaxKind };
15
+ export { checkerStringMax, checkerStringMaxKind };
@@ -4,9 +4,9 @@ var base = require('../../../base.cjs');
4
4
  var error = require('../../../error.cjs');
5
5
  var kind = require('../../../kind.cjs');
6
6
 
7
- const dataParserCheckerStringMinKind = kind.createDataParserKind("checker-string-min");
7
+ const checkerStringMinKind = kind.createDataParserKind("checker-string-min");
8
8
  function checkerStringMin(min, definition = {}) {
9
- return base.dataParserCheckerInit(dataParserCheckerStringMinKind, {
9
+ return base.dataParserCheckerInit(checkerStringMinKind, {
10
10
  definition: {
11
11
  ...definition,
12
12
  min,
@@ -15,4 +15,4 @@ function checkerStringMin(min, definition = {}) {
15
15
  }
16
16
 
17
17
  exports.checkerStringMin = checkerStringMin;
18
- exports.dataParserCheckerStringMinKind = dataParserCheckerStringMinKind;
18
+ exports.checkerStringMinKind = checkerStringMinKind;
@@ -3,8 +3,8 @@ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../
3
3
  export interface DataParserCheckerDefinitionStringMin extends DataParserCheckerDefinition {
4
4
  min: number;
5
5
  }
6
- export declare const dataParserCheckerStringMinKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-min", unknown>>;
7
- type _DataParserCheckerStringMin = (Kind<typeof dataParserCheckerStringMinKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringMin, string>);
6
+ export declare const checkerStringMinKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-min", unknown>>;
7
+ type _DataParserCheckerStringMin = (Kind<typeof checkerStringMinKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringMin, string>);
8
8
  export interface DataParserCheckerStringMin extends _DataParserCheckerStringMin {
9
9
  }
10
10
  export declare function checkerStringMin(min: number, definition?: Partial<Omit<DataParserCheckerDefinitionStringMin, "min">>): DataParserCheckerStringMin;
@@ -2,9 +2,9 @@ import { dataParserCheckerInit } from '../../../base.mjs';
2
2
  import { SymbolDataParserErrorIssue } from '../../../error.mjs';
3
3
  import { createDataParserKind } from '../../../kind.mjs';
4
4
 
5
- const dataParserCheckerStringMinKind = createDataParserKind("checker-string-min");
5
+ const checkerStringMinKind = createDataParserKind("checker-string-min");
6
6
  function checkerStringMin(min, definition = {}) {
7
- return dataParserCheckerInit(dataParserCheckerStringMinKind, {
7
+ return dataParserCheckerInit(checkerStringMinKind, {
8
8
  definition: {
9
9
  ...definition,
10
10
  min,
@@ -12,4 +12,4 @@ function checkerStringMin(min, definition = {}) {
12
12
  }, (value, self) => value.length >= self.definition.min ? value : SymbolDataParserErrorIssue);
13
13
  }
14
14
 
15
- export { checkerStringMin, dataParserCheckerStringMinKind };
15
+ export { checkerStringMin, checkerStringMinKind };
@@ -4,9 +4,9 @@ var base = require('../../../base.cjs');
4
4
  var error = require('../../../error.cjs');
5
5
  var kind = require('../../../kind.cjs');
6
6
 
7
- const dataParserCheckerStringRegexKind = kind.createDataParserKind("checker-string-regex");
7
+ const checkerStringRegexKind = kind.createDataParserKind("checker-string-regex");
8
8
  function checkerStringRegex(regex, definition = {}) {
9
- return base.dataParserCheckerInit(dataParserCheckerStringRegexKind, {
9
+ return base.dataParserCheckerInit(checkerStringRegexKind, {
10
10
  definition: {
11
11
  ...definition,
12
12
  regex,
@@ -17,4 +17,4 @@ function checkerStringRegex(regex, definition = {}) {
17
17
  }
18
18
 
19
19
  exports.checkerStringRegex = checkerStringRegex;
20
- exports.dataParserCheckerStringRegexKind = dataParserCheckerStringRegexKind;
20
+ exports.checkerStringRegexKind = checkerStringRegexKind;
@@ -3,8 +3,8 @@ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../
3
3
  export interface DataParserCheckerDefinitionStringRegex extends DataParserCheckerDefinition {
4
4
  regex: RegExp;
5
5
  }
6
- export declare const dataParserCheckerStringRegexKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-regex", unknown>>;
7
- type _DataParserCheckerStringRegex = (Kind<typeof dataParserCheckerStringRegexKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringRegex, string>);
6
+ export declare const checkerStringRegexKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-regex", unknown>>;
7
+ type _DataParserCheckerStringRegex = (Kind<typeof checkerStringRegexKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringRegex, string>);
8
8
  export interface DataParserCheckerStringRegex extends _DataParserCheckerStringRegex {
9
9
  }
10
10
  export declare function checkerStringRegex(regex: RegExp, definition?: Partial<Omit<DataParserCheckerDefinitionStringRegex, "regex">>): DataParserCheckerStringRegex;
@@ -2,9 +2,9 @@ import { dataParserCheckerInit } from '../../../base.mjs';
2
2
  import { SymbolDataParserErrorIssue } from '../../../error.mjs';
3
3
  import { createDataParserKind } from '../../../kind.mjs';
4
4
 
5
- const dataParserCheckerStringRegexKind = createDataParserKind("checker-string-regex");
5
+ const checkerStringRegexKind = createDataParserKind("checker-string-regex");
6
6
  function checkerStringRegex(regex, definition = {}) {
7
- return dataParserCheckerInit(dataParserCheckerStringRegexKind, {
7
+ return dataParserCheckerInit(checkerStringRegexKind, {
8
8
  definition: {
9
9
  ...definition,
10
10
  regex,
@@ -14,4 +14,4 @@ function checkerStringRegex(regex, definition = {}) {
14
14
  : SymbolDataParserErrorIssue);
15
15
  }
16
16
 
17
- export { checkerStringRegex, dataParserCheckerStringRegexKind };
17
+ export { checkerStringRegex, checkerStringRegexKind };
@@ -5,10 +5,10 @@ var error = require('../../../error.cjs');
5
5
  var index = require('../index.cjs');
6
6
  var kind = require('../../../kind.cjs');
7
7
 
8
- const dataParserCheckerUrlKind = kind.createDataParserKind("checker-string-url");
8
+ const checkerUrlKind = kind.createDataParserKind("checker-string-url");
9
9
  const regexRemoveDote = /:$/;
10
10
  function checkerUrl(definition = {}) {
11
- return base.dataParserCheckerInit(dataParserCheckerUrlKind, {
11
+ return base.dataParserCheckerInit(checkerUrlKind, {
12
12
  definition: definition,
13
13
  }, (input, self) => {
14
14
  try {
@@ -44,5 +44,5 @@ function url(definition) {
44
44
  }
45
45
 
46
46
  exports.checkerUrl = checkerUrl;
47
- exports.dataParserCheckerUrlKind = dataParserCheckerUrlKind;
47
+ exports.checkerUrlKind = checkerUrlKind;
48
48
  exports.url = url;
@@ -5,8 +5,8 @@ export interface DataParserCheckerDefinitionUrl extends DataParserCheckerDefinit
5
5
  protocol?: RegExp;
6
6
  normalize?: boolean;
7
7
  }
8
- export declare const dataParserCheckerUrlKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-url", unknown>>;
9
- type _DataParserCheckerUrl = (Kind<typeof dataParserCheckerUrlKind.definition> & DataParserChecker<DataParserCheckerDefinitionUrl, string>);
8
+ export declare const checkerUrlKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-url", unknown>>;
9
+ type _DataParserCheckerUrl = (Kind<typeof checkerUrlKind.definition> & DataParserChecker<DataParserCheckerDefinitionUrl, string>);
10
10
  export interface DataParserCheckerUrl extends _DataParserCheckerUrl {
11
11
  }
12
12
  export declare function checkerUrl(definition?: Partial<DataParserCheckerDefinitionUrl>): DataParserCheckerUrl;
@@ -3,10 +3,10 @@ import { SymbolDataParserErrorIssue } from '../../../error.mjs';
3
3
  import { string } from '../index.mjs';
4
4
  import { createDataParserKind } from '../../../kind.mjs';
5
5
 
6
- const dataParserCheckerUrlKind = createDataParserKind("checker-string-url");
6
+ const checkerUrlKind = createDataParserKind("checker-string-url");
7
7
  const regexRemoveDote = /:$/;
8
8
  function checkerUrl(definition = {}) {
9
- return dataParserCheckerInit(dataParserCheckerUrlKind, {
9
+ return dataParserCheckerInit(checkerUrlKind, {
10
10
  definition: definition,
11
11
  }, (input, self) => {
12
12
  try {
@@ -41,4 +41,4 @@ function url(definition) {
41
41
  });
42
42
  }
43
43
 
44
- export { checkerUrl, dataParserCheckerUrlKind, url };
44
+ export { checkerUrl, checkerUrlKind, url };
@@ -1,9 +1,13 @@
1
- import { type NeverCoalescing, type Kind } from "../../../common";
2
- import { type DataParserDefinition, type DataParser } from "../../base";
1
+ import { type NeverCoalescing, type Kind, type FixDeepFunctionInfer } from "../../../common";
2
+ import { type DataParserDefinition, type DataParser, type DataParserChecker } from "../../base";
3
3
  import { type AddCheckersToDefinition, type MergeDefinition } from "../../../dataParser/types";
4
4
  import { type DataParserCheckerUrl, type DataParserCheckerEmail, type DataParserCheckerStringMin, type DataParserCheckerStringMax, type DataParserCheckerStringRegex } from "./checkers";
5
+ import { type CheckerRefineImplementation } from "../refine";
6
+ import { type GetPropsWithValueExtends } from "../../../object";
5
7
  export * from "./checkers";
6
- export type DataParserStringCheckers = (DataParserCheckerUrl | DataParserCheckerEmail | DataParserCheckerStringMin | DataParserCheckerStringMax | DataParserCheckerStringRegex);
8
+ export interface DataParserStringCheckerCustom {
9
+ }
10
+ export type DataParserStringCheckers = (DataParserStringCheckerCustom[GetPropsWithValueExtends<DataParserStringCheckerCustom, DataParserChecker>] | DataParserCheckerUrl | DataParserCheckerEmail | DataParserCheckerStringMin | DataParserCheckerStringMax | DataParserCheckerStringRegex | CheckerRefineImplementation<string>);
7
11
  export interface DataParserDefinitionString extends DataParserDefinition<DataParserStringCheckers> {
8
12
  readonly coerce: boolean;
9
13
  }
@@ -13,6 +17,9 @@ export interface DataParserString<GenericDefinition extends DataParserDefinition
13
17
  addChecker<GenericChecker extends readonly [
14
18
  DataParserStringCheckers,
15
19
  ...DataParserStringCheckers[]
16
- ]>(...args: GenericChecker): DataParserString<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
20
+ ]>(...args: FixDeepFunctionInfer<readonly [
21
+ DataParserStringCheckers,
22
+ ...DataParserStringCheckers[]
23
+ ], GenericChecker>): DataParserString<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
17
24
  }
18
25
  export declare function string<const GenericDefinition extends Partial<DataParserDefinitionString> = never>(definition?: GenericDefinition): DataParserString<MergeDefinition<DataParserDefinitionString, NeverCoalescing<GenericDefinition, {}>>>;
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ var escapeRegExp = require('../../../common/escapeRegExp.cjs');
4
+ var pipe = require('../../../common/pipe.cjs');
5
+ var innerPipe = require('../../../common/innerPipe.cjs');
6
+ var when$1 = require('../../../common/when.cjs');
7
+ var isType = require('../../../common/isType.cjs');
8
+ var or = require('../../../common/or.cjs');
9
+ var justReturn = require('../../../common/justReturn.cjs');
10
+ var find = require('../../../array/find.cjs');
11
+ var to = require('../../../object/to.cjs');
12
+ var map = require('../../../array/map.cjs');
13
+ var join = require('../../../array/join.cjs');
14
+ require('../../../common/globalStore.cjs');
15
+ require('../../../common/builder.cjs');
16
+ var index = require('./index.cjs');
17
+ require('../../../pattern/result.cjs');
18
+ var exhaustive = require('../../../pattern/exhaustive.cjs');
19
+ var when = require('../../../pattern/when.cjs');
20
+ var replace = require('../../../string/replace.cjs');
21
+ var index$3 = require('../number/index.cjs');
22
+ var index$2 = require('../bigint/index.cjs');
23
+ var boolean = require('../boolean.cjs');
24
+ var nil = require('../nil.cjs');
25
+ var empty = require('../empty.cjs');
26
+ var literal = require('../literal.cjs');
27
+ var index$1 = require('../string/index.cjs');
28
+ var union = require('../union.cjs');
29
+ var regex = require('../string/checkers/regex.cjs');
30
+ var max = require('../string/checkers/max.cjs');
31
+ var min = require('../string/checkers/min.cjs');
32
+ var email = require('../string/checkers/email.cjs');
33
+ var int = require('../number/checkers/int.cjs');
34
+
35
+ function createTemplateLiteralPattern(templatePart) {
36
+ return pipe.pipe(templatePart, map.map(innerPipe.innerPipe(when.when(or.or([
37
+ isType.isType("string"),
38
+ isType.isType("boolean"),
39
+ isType.isType("bigint"),
40
+ isType.isType("null"),
41
+ isType.isType("undefined"),
42
+ isType.isType("number"),
43
+ ]), innerPipe.innerPipe(when$1.when(isType.isType("bigint"), (value) => `${value}n`), String, escapeRegExp.escapeRegExp, (value) => `(?:${value})`)), when.when(index$3.numberKind.has, (dataParser) => pipe.pipe(dataParser.definition.checkers, to.to({
44
+ int: innerPipe.innerPipe(find.find(int.checkerIntKind.has), when$1.when(int.checkerIntKind.has, justReturn.justReturn(true))),
45
+ }), ({ int }) => {
46
+ if (int) {
47
+ return "(?:[0-9]+)";
48
+ }
49
+ return "(?:[0-9]+(\\.[0-9]+)?)";
50
+ })), when.when(index$2.bigIntKind.has, () => "(?:[0-9]+n)"), when.when(boolean.booleanKind.has, () => "(?:true|false)"), when.when(nil.nilKind.has, () => "(?:null)"), when.when(empty.emptyKind.has, () => "(?:undefined)"), when.when(literal.literalKind.has, (dataParser) => pipe.pipe(dataParser.definition.value, map.map((element) => createTemplateLiteralPattern([element])), join.join("|"), (pattern) => `(?:${pattern})`)), when.when(index$1.stringKind.has, (dataParser) => pipe.pipe(dataParser.definition.checkers, to.to({
51
+ email: innerPipe.innerPipe(find.find(email.checkerEmailKind.has), when$1.when(email.checkerEmailKind.has, (checker) => pipe.pipe(checker.definition.pattern.source, replace.replace(/^\^/, ""), replace.replace(/\$$/, "")))),
52
+ min: innerPipe.innerPipe(find.find(min.checkerStringMinKind.has), when$1.when(min.checkerStringMinKind.has, (checker) => checker.definition.min)),
53
+ max: innerPipe.innerPipe(find.find(max.checkerStringMaxKind.has), when$1.when(max.checkerStringMaxKind.has, (checker) => checker.definition.max)),
54
+ regex: innerPipe.innerPipe(find.find(regex.checkerStringRegexKind.has), when$1.when(regex.checkerStringRegexKind.has, (checker) => pipe.pipe(checker.definition.regex.source, replace.replace(/^\^/, ""), replace.replace(/\$$/, "")))),
55
+ }), ({ email, regex, max, min }) => {
56
+ if (email) {
57
+ return email;
58
+ }
59
+ else if (regex) {
60
+ return regex;
61
+ }
62
+ else if (max !== undefined && min !== undefined) {
63
+ return `(?:[^]{${min},${max}})`;
64
+ }
65
+ else if (max !== undefined) {
66
+ return `(?:[^]{0,${max}})`;
67
+ }
68
+ else if (min !== undefined) {
69
+ return `(?:[^]{${min},})`;
70
+ }
71
+ return "(?:[^]*)";
72
+ })), innerPipe.innerPipe(when.when(index.templateLiteralKind.has, (dataParser) => pipe.pipe(dataParser.definition.pattern.source, replace.replace(/^\^/, ""), replace.replace(/\$$/, ""), (pattern) => `(?:${pattern})`)), when.when(union.unionKind.has, (dataParser) => pipe.pipe(dataParser.definition.options, map.map((option) => createTemplateLiteralPattern([option])), join.join("|"), (pattern) => `(?:${pattern})`)), exhaustive.exhaustive))), join.join(""));
73
+ }
74
+
75
+ exports.createTemplateLiteralPattern = createTemplateLiteralPattern;
@@ -0,0 +1,2 @@
1
+ import { type TemplateLiteralParts } from ".";
2
+ export declare function createTemplateLiteralPattern(templatePart: readonly TemplateLiteralParts[]): string;
@@ -0,0 +1,73 @@
1
+ import { escapeRegExp } from '../../../common/escapeRegExp.mjs';
2
+ import { pipe } from '../../../common/pipe.mjs';
3
+ import { innerPipe } from '../../../common/innerPipe.mjs';
4
+ import { when as when$1 } from '../../../common/when.mjs';
5
+ import { isType } from '../../../common/isType.mjs';
6
+ import { or } from '../../../common/or.mjs';
7
+ import { justReturn } from '../../../common/justReturn.mjs';
8
+ import { find } from '../../../array/find.mjs';
9
+ import { to } from '../../../object/to.mjs';
10
+ import { map } from '../../../array/map.mjs';
11
+ import { join } from '../../../array/join.mjs';
12
+ import '../../../common/globalStore.mjs';
13
+ import '../../../common/builder.mjs';
14
+ import { templateLiteralKind } from './index.mjs';
15
+ import '../../../pattern/result.mjs';
16
+ import { exhaustive } from '../../../pattern/exhaustive.mjs';
17
+ import { when } from '../../../pattern/when.mjs';
18
+ import { replace } from '../../../string/replace.mjs';
19
+ import { numberKind } from '../number/index.mjs';
20
+ import { bigIntKind } from '../bigint/index.mjs';
21
+ import { booleanKind } from '../boolean.mjs';
22
+ import { nilKind } from '../nil.mjs';
23
+ import { emptyKind } from '../empty.mjs';
24
+ import { literalKind } from '../literal.mjs';
25
+ import { stringKind } from '../string/index.mjs';
26
+ import { unionKind } from '../union.mjs';
27
+ import { checkerStringRegexKind } from '../string/checkers/regex.mjs';
28
+ import { checkerStringMaxKind } from '../string/checkers/max.mjs';
29
+ import { checkerStringMinKind } from '../string/checkers/min.mjs';
30
+ import { checkerEmailKind } from '../string/checkers/email.mjs';
31
+ import { checkerIntKind } from '../number/checkers/int.mjs';
32
+
33
+ function createTemplateLiteralPattern(templatePart) {
34
+ return pipe(templatePart, map(innerPipe(when(or([
35
+ isType("string"),
36
+ isType("boolean"),
37
+ isType("bigint"),
38
+ isType("null"),
39
+ isType("undefined"),
40
+ isType("number"),
41
+ ]), innerPipe(when$1(isType("bigint"), (value) => `${value}n`), String, escapeRegExp, (value) => `(?:${value})`)), when(numberKind.has, (dataParser) => pipe(dataParser.definition.checkers, to({
42
+ int: innerPipe(find(checkerIntKind.has), when$1(checkerIntKind.has, justReturn(true))),
43
+ }), ({ int }) => {
44
+ if (int) {
45
+ return "(?:[0-9]+)";
46
+ }
47
+ return "(?:[0-9]+(\\.[0-9]+)?)";
48
+ })), when(bigIntKind.has, () => "(?:[0-9]+n)"), when(booleanKind.has, () => "(?:true|false)"), when(nilKind.has, () => "(?:null)"), when(emptyKind.has, () => "(?:undefined)"), when(literalKind.has, (dataParser) => pipe(dataParser.definition.value, map((element) => createTemplateLiteralPattern([element])), join("|"), (pattern) => `(?:${pattern})`)), when(stringKind.has, (dataParser) => pipe(dataParser.definition.checkers, to({
49
+ email: innerPipe(find(checkerEmailKind.has), when$1(checkerEmailKind.has, (checker) => pipe(checker.definition.pattern.source, replace(/^\^/, ""), replace(/\$$/, "")))),
50
+ min: innerPipe(find(checkerStringMinKind.has), when$1(checkerStringMinKind.has, (checker) => checker.definition.min)),
51
+ max: innerPipe(find(checkerStringMaxKind.has), when$1(checkerStringMaxKind.has, (checker) => checker.definition.max)),
52
+ regex: innerPipe(find(checkerStringRegexKind.has), when$1(checkerStringRegexKind.has, (checker) => pipe(checker.definition.regex.source, replace(/^\^/, ""), replace(/\$$/, "")))),
53
+ }), ({ email, regex, max, min }) => {
54
+ if (email) {
55
+ return email;
56
+ }
57
+ else if (regex) {
58
+ return regex;
59
+ }
60
+ else if (max !== undefined && min !== undefined) {
61
+ return `(?:[^]{${min},${max}})`;
62
+ }
63
+ else if (max !== undefined) {
64
+ return `(?:[^]{0,${max}})`;
65
+ }
66
+ else if (min !== undefined) {
67
+ return `(?:[^]{${min},})`;
68
+ }
69
+ return "(?:[^]*)";
70
+ })), innerPipe(when(templateLiteralKind.has, (dataParser) => pipe(dataParser.definition.pattern.source, replace(/^\^/, ""), replace(/\$$/, ""), (pattern) => `(?:${pattern})`)), when(unionKind.has, (dataParser) => pipe(dataParser.definition.options, map((option) => createTemplateLiteralPattern([option])), join("|"), (pattern) => `(?:${pattern})`)), exhaustive))), join(""));
71
+ }
72
+
73
+ export { createTemplateLiteralPattern };
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var pipe = require('../../../common/pipe.cjs');
4
+ require('../../../common/globalStore.cjs');
5
+ require('../../../common/builder.cjs');
6
+ var base = require('../../base.cjs');
7
+ var error = require('../../error.cjs');
8
+ var kind = require('../../kind.cjs');
9
+ var createTemplateLiteralPattern = require('./createTemplateLiteralPattern.cjs');
10
+
11
+ const templateLiteralKind = kind.createDataParserKind("template-literal");
12
+ function templateLiteral(template, definition) {
13
+ const pattern = pipe.pipe(createTemplateLiteralPattern.createTemplateLiteralPattern(template), (result) => new RegExp(`^${result}$`));
14
+ return base.dataParserInit(templateLiteralKind, {
15
+ definition: {
16
+ errorMessage: definition?.errorMessage,
17
+ checkers: definition?.checkers ?? [],
18
+ template,
19
+ pattern,
20
+ },
21
+ }, (data, _error, self) => {
22
+ if (typeof data === "string" && self.definition.pattern.test(data)) {
23
+ return data;
24
+ }
25
+ return error.SymbolDataParserErrorIssue;
26
+ });
27
+ }
28
+
29
+ exports.createTemplateLiteralPattern = createTemplateLiteralPattern.createTemplateLiteralPattern;
30
+ exports.templateLiteral = templateLiteral;
31
+ exports.templateLiteralKind = templateLiteralKind;
@@ -0,0 +1,66 @@
1
+ import { type Adaptor, type AnyTuple, type FixDeepFunctionInfer, type Kind, type NeverCoalescing } from "../../../common";
2
+ import { type DataParserDefinition, type DataParser, type Output, type Input, type DataParserChecker } from "../../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../../../dataParser/types";
4
+ import { type DataParserCheckerStringMax, type DataParserCheckerStringMin, type DataParserCheckerStringRegex, type DataParserCheckerEmail, type DataParserDefinitionString, type DataParserString } from "../string";
5
+ import { type DataParserCheckerInt, type DataParserDefinitionNumber, type DataParserNumber } from "../number";
6
+ import { type DataParserDefinitionBigInt, type DataParserBigInt } from "../bigint";
7
+ import { type DataParserDefinitionLiteral, type DataParserLiteral } from "../literal";
8
+ import { type DataParserDefinitionEmpty, type DataParserEmpty } from "../empty";
9
+ import { type DataParserDefinitionNil, type DataParserNil } from "../nil";
10
+ import { type DataParserDefinitionBoolean, type DataParserBoolean } from "../boolean";
11
+ import { type CheckerRefineImplementation } from "../refine";
12
+ import { type DataParserDefinitionUnion, type DataParserUnion } from "../union";
13
+ import { type GetPropsWithValueExtends } from "../../../object";
14
+ export * from "./createTemplateLiteralPattern";
15
+ export type TemplateLiteralPrimitiveParts = (string | number | null | undefined | bigint | boolean);
16
+ export type TemplateLiteralParts = (TemplateLiteralPrimitiveParts | DataParserString<Omit<DataParserDefinitionString, "checkers"> & {
17
+ readonly checkers: readonly (DataParserCheckerEmail | DataParserCheckerStringMax | DataParserCheckerStringMin | DataParserCheckerStringRegex)[];
18
+ }> | DataParserNumber<Omit<DataParserDefinitionNumber, "checkers"> & {
19
+ readonly checkers: readonly DataParserCheckerInt[];
20
+ }> | DataParserBigInt<Omit<DataParserDefinitionBigInt, "checkers"> & {
21
+ readonly checkers: readonly [];
22
+ }> | DataParserBoolean<Omit<DataParserDefinitionBoolean, "checkers"> & {
23
+ readonly checkers: readonly [];
24
+ }> | DataParserLiteral<Omit<DataParserDefinitionLiteral, "checkers"> & {
25
+ readonly checkers: readonly [];
26
+ }> | DataParserEmpty<Omit<DataParserDefinitionEmpty, "checkers"> & {
27
+ readonly checkers: readonly [];
28
+ }> | DataParserNil<Omit<DataParserDefinitionNil, "checkers"> & {
29
+ readonly checkers: readonly [];
30
+ }> | DataParserTemplateLiteral<Omit<DataParserDefinitionTemplateLiteral, "checkers"> & {
31
+ readonly checkers: readonly [];
32
+ }> | DataParserUnion<Omit<DataParserDefinitionUnion, "checkers" | "options"> & {
33
+ readonly options: AnyTuple<Exclude<TemplateLiteralParts, TemplateLiteralPrimitiveParts>>;
34
+ readonly checkers: readonly [];
35
+ }>);
36
+ export type TemplateLiteralShape = readonly [TemplateLiteralParts, ...TemplateLiteralParts[]];
37
+ type EligibleTemplateLiteral = string | number | bigint | boolean | null | undefined;
38
+ export type TemplateLiteralShapeOutput<GenericTemplate extends TemplateLiteralShape, GenericLastResult extends string = ""> = GenericTemplate extends readonly [
39
+ infer InferredFirst extends TemplateLiteralParts,
40
+ ...infer InferredRest extends TemplateLiteralParts[]
41
+ ] ? (`${GenericLastResult}${InferredFirst extends TemplateLiteralPrimitiveParts ? InferredFirst extends bigint ? `${InferredFirst}n` : InferredFirst : Adaptor<Output<Exclude<InferredFirst, TemplateLiteralPrimitiveParts>>, EligibleTemplateLiteral>}`) extends infer InferredResult extends string ? InferredRest extends readonly [] ? InferredResult : InferredRest extends TemplateLiteralShape ? TemplateLiteralShapeOutput<InferredRest, InferredResult> : TemplateLiteralShapeOutput<[InferredRest[number]], InferredResult> : never : never;
42
+ export type TemplateLiteralShapeInput<GenericTemplate extends TemplateLiteralShape, GenericLastResult extends string = ""> = GenericTemplate extends readonly [
43
+ infer InferredFirst extends TemplateLiteralParts,
44
+ ...infer InferredRest extends TemplateLiteralParts[]
45
+ ] ? (`${GenericLastResult}${InferredFirst extends TemplateLiteralPrimitiveParts ? InferredFirst extends bigint ? `${InferredFirst}n` : InferredFirst : Adaptor<Input<Exclude<InferredFirst, TemplateLiteralPrimitiveParts>>, EligibleTemplateLiteral>}`) extends infer InferredResult extends string ? InferredRest extends readonly [] ? InferredResult : InferredRest extends TemplateLiteralShape ? TemplateLiteralShapeInput<InferredRest, InferredResult> : TemplateLiteralShapeInput<[InferredRest[number]], InferredResult> : never : never;
46
+ export interface DataParserTemplateLiteralCheckerCustom<GenericInput extends string = string> {
47
+ }
48
+ export type DataParserTemplateLiteralCheckers<GenericInput extends string = string> = (DataParserTemplateLiteralCheckerCustom<GenericInput>[GetPropsWithValueExtends<DataParserTemplateLiteralCheckerCustom<GenericInput>, DataParserChecker>] | CheckerRefineImplementation<GenericInput>);
49
+ export interface DataParserDefinitionTemplateLiteral extends DataParserDefinition<DataParserTemplateLiteralCheckers> {
50
+ readonly template: TemplateLiteralShape;
51
+ readonly pattern: RegExp;
52
+ }
53
+ export declare const templateLiteralKind: import("../../../common").KindHandler<import("../../../common").KindDefinition<"@DuplojsUtilsDataParser/template-literal", unknown>>;
54
+ type _DataParserTemplateLiteral<GenericDefinition extends DataParserDefinitionTemplateLiteral> = (DataParser<GenericDefinition, TemplateLiteralShapeOutput<GenericDefinition["template"]>, TemplateLiteralShapeInput<GenericDefinition["template"]>> & Kind<typeof templateLiteralKind.definition>);
55
+ export interface DataParserTemplateLiteral<GenericDefinition extends DataParserDefinitionTemplateLiteral = DataParserDefinitionTemplateLiteral> extends _DataParserTemplateLiteral<GenericDefinition> {
56
+ addChecker<GenericChecker extends readonly [
57
+ DataParserTemplateLiteralCheckers<Output<this>>,
58
+ ...DataParserTemplateLiteralCheckers<Output<this>>[]
59
+ ]>(...args: FixDeepFunctionInfer<readonly [
60
+ DataParserTemplateLiteralCheckers<Output<this>>,
61
+ ...DataParserTemplateLiteralCheckers<Output<this>>[]
62
+ ], GenericChecker>): DataParserTemplateLiteral<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
63
+ }
64
+ export declare function templateLiteral<const GenericTemplate extends TemplateLiteralShape, const GenericDefinition extends Partial<Omit<DataParserDefinitionTemplateLiteral, "template" | "pattern">> = never>(template: GenericTemplate, definition?: GenericDefinition): DataParserTemplateLiteral<MergeDefinition<DataParserDefinitionTemplateLiteral, NeverCoalescing<GenericDefinition, {}> & {
65
+ template: GenericTemplate;
66
+ }>>;
@@ -0,0 +1,27 @@
1
+ import { pipe } from '../../../common/pipe.mjs';
2
+ import '../../../common/globalStore.mjs';
3
+ import '../../../common/builder.mjs';
4
+ import { dataParserInit } from '../../base.mjs';
5
+ import { SymbolDataParserErrorIssue } from '../../error.mjs';
6
+ import { createDataParserKind } from '../../kind.mjs';
7
+ import { createTemplateLiteralPattern } from './createTemplateLiteralPattern.mjs';
8
+
9
+ const templateLiteralKind = createDataParserKind("template-literal");
10
+ function templateLiteral(template, definition) {
11
+ const pattern = pipe(createTemplateLiteralPattern(template), (result) => new RegExp(`^${result}$`));
12
+ return dataParserInit(templateLiteralKind, {
13
+ definition: {
14
+ errorMessage: definition?.errorMessage,
15
+ checkers: definition?.checkers ?? [],
16
+ template,
17
+ pattern,
18
+ },
19
+ }, (data, _error, self) => {
20
+ if (typeof data === "string" && self.definition.pattern.test(data)) {
21
+ return data;
22
+ }
23
+ return SymbolDataParserErrorIssue;
24
+ });
25
+ }
26
+
27
+ export { createTemplateLiteralPattern, templateLiteral, templateLiteralKind };
@@ -1,14 +1,26 @@
1
- import { type Kind, type NeverCoalescing } from "../../common";
2
- import { type DataParserDefinition, type DataParser, type Input, type Output, SymbolDataParserError } from "../base";
3
- import { type MergeDefinition } from "../../dataParser/types";
1
+ import { type FixDeepFunctionInfer, type Kind, type NeverCoalescing } from "../../common";
2
+ import { type DataParserDefinition, type DataParser, type Input, type Output, SymbolDataParserError, type DataParserChecker } from "../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../../dataParser/types";
4
4
  import { type DataParserError, type SymbolDataParserErrorIssue, SymbolDataParserErrorPromiseIssue } from "../../dataParser/error";
5
- export interface DataParserDefinitionTransform extends DataParserDefinition<never> {
5
+ import { type CheckerRefineImplementation } from "./refine";
6
+ import { type GetPropsWithValueExtends } from "../../object";
7
+ export interface DataParserTransformCheckerCustom<GenericInput extends unknown = unknown> {
8
+ }
9
+ export type DataParserTransformCheckers<GenericInput extends unknown = unknown> = (DataParserTransformCheckerCustom<GenericInput>[GetPropsWithValueExtends<DataParserTransformCheckerCustom<GenericInput>, DataParserChecker>] | CheckerRefineImplementation<GenericInput>);
10
+ export interface DataParserDefinitionTransform extends DataParserDefinition<DataParserTransformCheckers> {
6
11
  readonly inner: DataParser;
7
12
  theFunction(input: any, error: DataParserError): unknown;
8
13
  }
9
14
  export declare const transformKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsDataParser/transform", unknown>>;
10
15
  type _DataParserTransform<GenericDefinition extends DataParserDefinitionTransform> = (DataParser<GenericDefinition, Exclude<Awaited<ReturnType<GenericDefinition["theFunction"]>>, SymbolDataParserError | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue>, Input<GenericDefinition["inner"]>> & Kind<typeof transformKind.definition>);
11
16
  export interface DataParserTransform<GenericDefinition extends DataParserDefinitionTransform = DataParserDefinitionTransform> extends _DataParserTransform<GenericDefinition> {
17
+ addChecker<GenericChecker extends readonly [
18
+ DataParserTransformCheckers<Output<this>>,
19
+ ...DataParserTransformCheckers<Output<this>>[]
20
+ ]>(...args: FixDeepFunctionInfer<readonly [
21
+ DataParserTransformCheckers<Output<this>>,
22
+ ...DataParserTransformCheckers<Output<this>>[]
23
+ ], GenericChecker>): DataParserTransform<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
12
24
  }
13
25
  export declare function transform<GenericDataParser extends DataParser, GenericOutput extends unknown, const GenericDefinition extends Partial<Omit<DataParserDefinitionTransform, "inner" | "theFunction">> = never>(inner: GenericDataParser, theFunction: (input: Output<GenericDataParser>, error: DataParserError) => GenericOutput, definition?: GenericDefinition): DataParserTransform<MergeDefinition<DataParserDefinitionTransform, NeverCoalescing<GenericDefinition, {}> & {
14
26
  inner: GenericDataParser;