@duplojs/utils 1.0.6 → 1.1.7

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 (324) hide show
  1. package/dist/array/coalescing.cjs +9 -0
  2. package/dist/array/coalescing.d.ts +3 -0
  3. package/dist/array/coalescing.mjs +7 -0
  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/map.cjs +1 -1
  8. package/dist/array/map.d.ts +2 -2
  9. package/dist/array/map.mjs +1 -1
  10. package/dist/array/reduce.cjs +1 -1
  11. package/dist/array/reduce.mjs +1 -1
  12. package/dist/array/types/ArrayCoalescing.d.ts +1 -0
  13. package/dist/array/types/index.d.ts +1 -0
  14. package/dist/common/escapeRegExp.cjs +2 -2
  15. package/dist/common/escapeRegExp.d.ts +1 -1
  16. package/dist/common/escapeRegExp.mjs +2 -2
  17. package/dist/common/index.d.ts +4 -0
  18. package/dist/common/instanceOf.cjs +20 -0
  19. package/dist/common/instanceOf.d.ts +3 -0
  20. package/dist/common/instanceOf.mjs +18 -0
  21. package/dist/common/justReturn.cjs +12 -0
  22. package/dist/common/justReturn.d.ts +3 -0
  23. package/dist/common/justReturn.mjs +10 -0
  24. package/dist/common/kind.cjs +38 -1
  25. package/dist/common/kind.d.ts +22 -4
  26. package/dist/common/kind.mjs +38 -2
  27. package/dist/common/memo.cjs +16 -0
  28. package/dist/common/memo.d.ts +5 -0
  29. package/dist/common/memo.mjs +14 -0
  30. package/dist/common/simpleClone.cjs +2 -2
  31. package/dist/common/simpleClone.mjs +2 -2
  32. package/dist/common/types/anyConstructor.d.ts +1 -0
  33. package/dist/common/types/anyPredicate.d.ts +1 -0
  34. package/dist/common/types/index.d.ts +2 -0
  35. package/dist/common/types/objectEntry.d.ts +1 -1
  36. package/dist/common/types/predicate.d.ts +1 -0
  37. package/dist/common/types/unionContain.d.ts +1 -1
  38. package/dist/common/when.d.ts +2 -2
  39. package/dist/common/whenElse.cjs +17 -0
  40. package/dist/common/whenElse.d.ts +5 -0
  41. package/dist/common/whenElse.mjs +15 -0
  42. package/dist/common/whenNot.d.ts +2 -2
  43. package/dist/dataParser/base.cjs +116 -0
  44. package/dist/dataParser/base.d.ts +44 -0
  45. package/dist/dataParser/base.mjs +109 -0
  46. package/dist/dataParser/baseExtended.cjs +55 -0
  47. package/dist/dataParser/baseExtended.d.ts +45 -0
  48. package/dist/dataParser/baseExtended.mjs +52 -0
  49. package/dist/dataParser/error.cjs +54 -0
  50. package/dist/dataParser/error.d.ts +31 -0
  51. package/dist/dataParser/error.mjs +41 -0
  52. package/dist/dataParser/extended/array.cjs +20 -0
  53. package/dist/dataParser/extended/array.d.ts +21 -0
  54. package/dist/dataParser/extended/array.mjs +18 -0
  55. package/dist/dataParser/extended/bigint.cjs +20 -0
  56. package/dist/dataParser/extended/bigint.d.ts +19 -0
  57. package/dist/dataParser/extended/bigint.mjs +18 -0
  58. package/dist/dataParser/extended/boolean.cjs +11 -0
  59. package/dist/dataParser/extended/boolean.d.ts +9 -0
  60. package/dist/dataParser/extended/boolean.mjs +9 -0
  61. package/dist/dataParser/extended/coerce/bigint.cjs +13 -0
  62. package/dist/dataParser/extended/coerce/bigint.d.ts +7 -0
  63. package/dist/dataParser/extended/coerce/bigint.mjs +11 -0
  64. package/dist/dataParser/extended/coerce/boolean.cjs +13 -0
  65. package/dist/dataParser/extended/coerce/boolean.d.ts +7 -0
  66. package/dist/dataParser/extended/coerce/boolean.mjs +11 -0
  67. package/dist/dataParser/extended/coerce/empty.cjs +13 -0
  68. package/dist/dataParser/extended/coerce/empty.d.ts +7 -0
  69. package/dist/dataParser/extended/coerce/empty.mjs +11 -0
  70. package/dist/dataParser/extended/coerce/index.cjs +17 -0
  71. package/dist/dataParser/extended/coerce/index.d.ts +6 -0
  72. package/dist/dataParser/extended/coerce/index.mjs +6 -0
  73. package/dist/dataParser/extended/coerce/nil.cjs +13 -0
  74. package/dist/dataParser/extended/coerce/nil.d.ts +7 -0
  75. package/dist/dataParser/extended/coerce/nil.mjs +11 -0
  76. package/dist/dataParser/extended/coerce/number.cjs +13 -0
  77. package/dist/dataParser/extended/coerce/number.d.ts +7 -0
  78. package/dist/dataParser/extended/coerce/number.mjs +11 -0
  79. package/dist/dataParser/extended/coerce/string.cjs +13 -0
  80. package/dist/dataParser/extended/coerce/string.d.ts +7 -0
  81. package/dist/dataParser/extended/coerce/string.mjs +11 -0
  82. package/dist/dataParser/extended/empty.cjs +11 -0
  83. package/dist/dataParser/extended/empty.d.ts +9 -0
  84. package/dist/dataParser/extended/empty.mjs +9 -0
  85. package/dist/dataParser/extended/index.cjs +48 -0
  86. package/dist/dataParser/extended/index.d.ts +22 -0
  87. package/dist/dataParser/extended/index.mjs +21 -0
  88. package/dist/dataParser/extended/lazy.cjs +11 -0
  89. package/dist/dataParser/extended/lazy.d.ts +11 -0
  90. package/dist/dataParser/extended/lazy.mjs +9 -0
  91. package/dist/dataParser/extended/literal.cjs +11 -0
  92. package/dist/dataParser/extended/literal.d.ts +11 -0
  93. package/dist/dataParser/extended/literal.mjs +9 -0
  94. package/dist/dataParser/extended/nil.cjs +11 -0
  95. package/dist/dataParser/extended/nil.d.ts +9 -0
  96. package/dist/dataParser/extended/nil.mjs +9 -0
  97. package/dist/dataParser/extended/nullable.cjs +11 -0
  98. package/dist/dataParser/extended/nullable.d.ts +11 -0
  99. package/dist/dataParser/extended/nullable.mjs +9 -0
  100. package/dist/dataParser/extended/number.cjs +27 -0
  101. package/dist/dataParser/extended/number.d.ts +24 -0
  102. package/dist/dataParser/extended/number.mjs +24 -0
  103. package/dist/dataParser/extended/object.cjs +11 -0
  104. package/dist/dataParser/extended/object.d.ts +11 -0
  105. package/dist/dataParser/extended/object.mjs +9 -0
  106. package/dist/dataParser/extended/optional.cjs +11 -0
  107. package/dist/dataParser/extended/optional.d.ts +11 -0
  108. package/dist/dataParser/extended/optional.mjs +9 -0
  109. package/dist/dataParser/extended/pipe.cjs +11 -0
  110. package/dist/dataParser/extended/pipe.d.ts +12 -0
  111. package/dist/dataParser/extended/pipe.mjs +9 -0
  112. package/dist/dataParser/extended/record.cjs +11 -0
  113. package/dist/dataParser/extended/record.d.ts +12 -0
  114. package/dist/dataParser/extended/record.mjs +9 -0
  115. package/dist/dataParser/extended/string.cjs +38 -0
  116. package/dist/dataParser/extended/string.d.ts +32 -0
  117. package/dist/dataParser/extended/string.mjs +34 -0
  118. package/dist/dataParser/extended/templateLiteral.cjs +10 -0
  119. package/dist/dataParser/extended/templateLiteral.d.ts +11 -0
  120. package/dist/dataParser/extended/templateLiteral.mjs +8 -0
  121. package/dist/dataParser/extended/transform.cjs +11 -0
  122. package/dist/dataParser/extended/transform.d.ts +14 -0
  123. package/dist/dataParser/extended/transform.mjs +9 -0
  124. package/dist/dataParser/extended/tuple.cjs +11 -0
  125. package/dist/dataParser/extended/tuple.d.ts +11 -0
  126. package/dist/dataParser/extended/tuple.mjs +9 -0
  127. package/dist/dataParser/extended/union.cjs +11 -0
  128. package/dist/dataParser/extended/union.d.ts +11 -0
  129. package/dist/dataParser/extended/union.mjs +9 -0
  130. package/dist/dataParser/extended/unknown.cjs +11 -0
  131. package/dist/dataParser/extended/unknown.d.ts +9 -0
  132. package/dist/dataParser/extended/unknown.mjs +9 -0
  133. package/dist/dataParser/index.cjs +128 -0
  134. package/dist/dataParser/index.d.ts +6 -0
  135. package/dist/dataParser/index.mjs +38 -0
  136. package/dist/dataParser/parsers/array/checkers/index.d.ts +2 -0
  137. package/dist/dataParser/parsers/array/checkers/max.cjs +23 -0
  138. package/dist/dataParser/parsers/array/checkers/max.d.ts +11 -0
  139. package/dist/dataParser/parsers/array/checkers/max.mjs +20 -0
  140. package/dist/dataParser/parsers/array/checkers/min.cjs +23 -0
  141. package/dist/dataParser/parsers/array/checkers/min.d.ts +11 -0
  142. package/dist/dataParser/parsers/array/checkers/min.mjs +20 -0
  143. package/dist/dataParser/parsers/array/index.cjs +64 -0
  144. package/dist/dataParser/parsers/array/index.d.ts +20 -0
  145. package/dist/dataParser/parsers/array/index.mjs +61 -0
  146. package/dist/dataParser/parsers/bigint/checkers/index.d.ts +2 -0
  147. package/dist/dataParser/parsers/bigint/checkers/max.cjs +23 -0
  148. package/dist/dataParser/parsers/bigint/checkers/max.d.ts +11 -0
  149. package/dist/dataParser/parsers/bigint/checkers/max.mjs +20 -0
  150. package/dist/dataParser/parsers/bigint/checkers/min.cjs +23 -0
  151. package/dist/dataParser/parsers/bigint/checkers/min.d.ts +11 -0
  152. package/dist/dataParser/parsers/bigint/checkers/min.mjs +20 -0
  153. package/dist/dataParser/parsers/bigint/index.cjs +31 -0
  154. package/dist/dataParser/parsers/bigint/index.d.ts +18 -0
  155. package/dist/dataParser/parsers/bigint/index.mjs +28 -0
  156. package/dist/dataParser/parsers/boolean.cjs +40 -0
  157. package/dist/dataParser/parsers/boolean.d.ts +12 -0
  158. package/dist/dataParser/parsers/boolean.mjs +37 -0
  159. package/dist/dataParser/parsers/coerce/bigint.cjs +13 -0
  160. package/dist/dataParser/parsers/coerce/bigint.d.ts +6 -0
  161. package/dist/dataParser/parsers/coerce/bigint.mjs +11 -0
  162. package/dist/dataParser/parsers/coerce/boolean.cjs +13 -0
  163. package/dist/dataParser/parsers/coerce/boolean.d.ts +6 -0
  164. package/dist/dataParser/parsers/coerce/boolean.mjs +11 -0
  165. package/dist/dataParser/parsers/coerce/empty.cjs +13 -0
  166. package/dist/dataParser/parsers/coerce/empty.d.ts +6 -0
  167. package/dist/dataParser/parsers/coerce/empty.mjs +11 -0
  168. package/dist/dataParser/parsers/coerce/index.cjs +17 -0
  169. package/dist/dataParser/parsers/coerce/index.d.ts +6 -0
  170. package/dist/dataParser/parsers/coerce/index.mjs +6 -0
  171. package/dist/dataParser/parsers/coerce/nil.cjs +13 -0
  172. package/dist/dataParser/parsers/coerce/nil.d.ts +6 -0
  173. package/dist/dataParser/parsers/coerce/nil.mjs +11 -0
  174. package/dist/dataParser/parsers/coerce/number.cjs +13 -0
  175. package/dist/dataParser/parsers/coerce/number.d.ts +6 -0
  176. package/dist/dataParser/parsers/coerce/number.mjs +11 -0
  177. package/dist/dataParser/parsers/coerce/string.cjs +13 -0
  178. package/dist/dataParser/parsers/coerce/string.d.ts +6 -0
  179. package/dist/dataParser/parsers/coerce/string.mjs +11 -0
  180. package/dist/dataParser/parsers/empty.cjs +27 -0
  181. package/dist/dataParser/parsers/empty.d.ts +12 -0
  182. package/dist/dataParser/parsers/empty.mjs +24 -0
  183. package/dist/dataParser/parsers/index.d.ts +20 -0
  184. package/dist/dataParser/parsers/lazy.cjs +21 -0
  185. package/dist/dataParser/parsers/lazy.d.ts +14 -0
  186. package/dist/dataParser/parsers/lazy.mjs +18 -0
  187. package/dist/dataParser/parsers/literal.cjs +25 -0
  188. package/dist/dataParser/parsers/literal.d.ts +15 -0
  189. package/dist/dataParser/parsers/literal.mjs +22 -0
  190. package/dist/dataParser/parsers/nil.cjs +27 -0
  191. package/dist/dataParser/parsers/nil.d.ts +12 -0
  192. package/dist/dataParser/parsers/nil.mjs +24 -0
  193. package/dist/dataParser/parsers/nullable.cjs +31 -0
  194. package/dist/dataParser/parsers/nullable.d.ts +14 -0
  195. package/dist/dataParser/parsers/nullable.mjs +28 -0
  196. package/dist/dataParser/parsers/number/checkers/index.d.ts +3 -0
  197. package/dist/dataParser/parsers/number/checkers/int.cjs +27 -0
  198. package/dist/dataParser/parsers/number/checkers/int.d.ts +15 -0
  199. package/dist/dataParser/parsers/number/checkers/int.mjs +23 -0
  200. package/dist/dataParser/parsers/number/checkers/max.cjs +18 -0
  201. package/dist/dataParser/parsers/number/checkers/max.d.ts +11 -0
  202. package/dist/dataParser/parsers/number/checkers/max.mjs +15 -0
  203. package/dist/dataParser/parsers/number/checkers/min.cjs +18 -0
  204. package/dist/dataParser/parsers/number/checkers/min.d.ts +11 -0
  205. package/dist/dataParser/parsers/number/checkers/min.mjs +15 -0
  206. package/dist/dataParser/parsers/number/index.cjs +31 -0
  207. package/dist/dataParser/parsers/number/index.d.ts +18 -0
  208. package/dist/dataParser/parsers/number/index.mjs +28 -0
  209. package/dist/dataParser/parsers/object.cjs +74 -0
  210. package/dist/dataParser/parsers/object.d.ts +26 -0
  211. package/dist/dataParser/parsers/object.mjs +71 -0
  212. package/dist/dataParser/parsers/optional.cjs +31 -0
  213. package/dist/dataParser/parsers/optional.d.ts +14 -0
  214. package/dist/dataParser/parsers/optional.mjs +28 -0
  215. package/dist/dataParser/parsers/pipe.cjs +34 -0
  216. package/dist/dataParser/parsers/pipe.d.ts +16 -0
  217. package/dist/dataParser/parsers/pipe.mjs +31 -0
  218. package/dist/dataParser/parsers/record.cjs +83 -0
  219. package/dist/dataParser/parsers/record.d.ts +30 -0
  220. package/dist/dataParser/parsers/record.mjs +80 -0
  221. package/dist/dataParser/parsers/string/checkers/email.cjs +31 -0
  222. package/dist/dataParser/parsers/string/checkers/email.d.ts +17 -0
  223. package/dist/dataParser/parsers/string/checkers/email.mjs +27 -0
  224. package/dist/dataParser/parsers/string/checkers/index.d.ts +5 -0
  225. package/dist/dataParser/parsers/string/checkers/max.cjs +18 -0
  226. package/dist/dataParser/parsers/string/checkers/max.d.ts +11 -0
  227. package/dist/dataParser/parsers/string/checkers/max.mjs +15 -0
  228. package/dist/dataParser/parsers/string/checkers/min.cjs +18 -0
  229. package/dist/dataParser/parsers/string/checkers/min.d.ts +11 -0
  230. package/dist/dataParser/parsers/string/checkers/min.mjs +15 -0
  231. package/dist/dataParser/parsers/string/checkers/regex.cjs +20 -0
  232. package/dist/dataParser/parsers/string/checkers/regex.d.ts +11 -0
  233. package/dist/dataParser/parsers/string/checkers/regex.mjs +17 -0
  234. package/dist/dataParser/parsers/string/checkers/url.cjs +48 -0
  235. package/dist/dataParser/parsers/string/checkers/url.d.ts +18 -0
  236. package/dist/dataParser/parsers/string/checkers/url.mjs +44 -0
  237. package/dist/dataParser/parsers/string/index.cjs +31 -0
  238. package/dist/dataParser/parsers/string/index.d.ts +18 -0
  239. package/dist/dataParser/parsers/string/index.mjs +28 -0
  240. package/dist/dataParser/parsers/templateLiteral.cjs +45 -0
  241. package/dist/dataParser/parsers/templateLiteral.d.ts +49 -0
  242. package/dist/dataParser/parsers/templateLiteral.mjs +42 -0
  243. package/dist/dataParser/parsers/transform.cjs +43 -0
  244. package/dist/dataParser/parsers/transform.d.ts +17 -0
  245. package/dist/dataParser/parsers/transform.mjs +40 -0
  246. package/dist/dataParser/parsers/tuple.cjs +83 -0
  247. package/dist/dataParser/parsers/tuple.d.ts +33 -0
  248. package/dist/dataParser/parsers/tuple.mjs +80 -0
  249. package/dist/dataParser/parsers/union.cjs +38 -0
  250. package/dist/dataParser/parsers/union.d.ts +15 -0
  251. package/dist/dataParser/parsers/union.mjs +35 -0
  252. package/dist/dataParser/parsers/unknown.cjs +17 -0
  253. package/dist/dataParser/parsers/unknown.d.ts +11 -0
  254. package/dist/dataParser/parsers/unknown.mjs +14 -0
  255. package/dist/dataParser/types/addCheckersToDefinition.d.ts +5 -0
  256. package/dist/dataParser/types/checkers.d.ts +3 -0
  257. package/dist/dataParser/types/dataParsers.d.ts +5 -0
  258. package/dist/dataParser/types/index.d.ts +4 -0
  259. package/dist/dataParser/types/mergeDefinition.d.ts +5 -0
  260. package/dist/either/bool/falsy.cjs +1 -1
  261. package/dist/either/bool/falsy.d.ts +2 -2
  262. package/dist/either/bool/falsy.mjs +1 -1
  263. package/dist/either/bool/truthy.cjs +1 -1
  264. package/dist/either/bool/truthy.d.ts +2 -2
  265. package/dist/either/bool/truthy.mjs +1 -1
  266. package/dist/either/future/error.cjs +1 -1
  267. package/dist/either/future/error.mjs +1 -1
  268. package/dist/either/future/success.cjs +1 -1
  269. package/dist/either/future/success.mjs +1 -1
  270. package/dist/either/left/create.cjs +1 -1
  271. package/dist/either/left/create.mjs +1 -1
  272. package/dist/either/left/error.cjs +1 -1
  273. package/dist/either/left/error.mjs +1 -1
  274. package/dist/either/left/fail.cjs +1 -1
  275. package/dist/either/left/fail.mjs +1 -1
  276. package/dist/either/left/when.d.ts +2 -2
  277. package/dist/either/nullable/empty.cjs +1 -1
  278. package/dist/either/nullable/empty.d.ts +2 -2
  279. package/dist/either/nullable/empty.mjs +1 -1
  280. package/dist/either/nullable/filled.cjs +1 -1
  281. package/dist/either/nullable/filled.d.ts +2 -2
  282. package/dist/either/nullable/filled.mjs +1 -1
  283. package/dist/either/nullish/empty.cjs +1 -1
  284. package/dist/either/nullish/empty.d.ts +2 -2
  285. package/dist/either/nullish/empty.mjs +1 -1
  286. package/dist/either/nullish/filled.cjs +1 -1
  287. package/dist/either/nullish/filled.d.ts +2 -2
  288. package/dist/either/nullish/filled.mjs +1 -1
  289. package/dist/either/optional/empty.cjs +1 -1
  290. package/dist/either/optional/empty.d.ts +2 -2
  291. package/dist/either/optional/empty.mjs +1 -1
  292. package/dist/either/optional/filled.cjs +1 -1
  293. package/dist/either/optional/filled.d.ts +2 -2
  294. package/dist/either/optional/filled.mjs +1 -1
  295. package/dist/either/right/asyncPipe.d.ts +2 -2
  296. package/dist/either/right/create.cjs +1 -1
  297. package/dist/either/right/create.mjs +1 -1
  298. package/dist/either/right/ok.cjs +1 -1
  299. package/dist/either/right/ok.mjs +1 -1
  300. package/dist/either/right/success.cjs +1 -1
  301. package/dist/either/right/success.mjs +1 -1
  302. package/dist/either/right/when.d.ts +2 -2
  303. package/dist/either/whenHasInformation.d.ts +2 -2
  304. package/dist/generator/reduce.cjs +1 -1
  305. package/dist/generator/reduce.mjs +1 -1
  306. package/dist/index.cjs +18 -0
  307. package/dist/index.d.ts +6 -0
  308. package/dist/index.mjs +14 -1
  309. package/dist/object/entry.cjs +7 -0
  310. package/dist/object/entry.d.ts +2 -0
  311. package/dist/object/entry.mjs +5 -0
  312. package/dist/object/fromEntries.d.ts +1 -1
  313. package/dist/object/index.cjs +2 -0
  314. package/dist/object/index.d.ts +1 -0
  315. package/dist/object/index.mjs +1 -0
  316. package/dist/object/keys.cjs +4 -1
  317. package/dist/object/keys.d.ts +1 -1
  318. package/dist/object/keys.mjs +4 -1
  319. package/dist/object/types/getPropsWithValueExtends.d.ts +1 -1
  320. package/dist/pattern/result.cjs +1 -1
  321. package/dist/pattern/result.d.ts +1 -1
  322. package/dist/pattern/result.mjs +1 -1
  323. package/dist/pattern/when.d.ts +2 -2
  324. package/package.json +64 -3
@@ -0,0 +1,80 @@
1
+ import { createKind } from '../../common/kind.mjs';
2
+ import { dataParserInit, SymbolDataParserError } from '../base.mjs';
3
+ import { SymbolDataParserErrorIssue, setErrorPath, popErrorPath } from '../error.mjs';
4
+
5
+ const dataParserRecordKind = createKind("data-parser-record");
6
+ function record(key, value, definition) {
7
+ return dataParserInit(dataParserRecordKind, {
8
+ definition: {
9
+ errorMessage: definition?.errorMessage,
10
+ checkers: definition?.checkers ?? [],
11
+ key,
12
+ value,
13
+ },
14
+ }, {
15
+ sync: (data, error, self) => {
16
+ if (!data
17
+ || typeof data !== "object"
18
+ || data instanceof Array) {
19
+ return SymbolDataParserErrorIssue;
20
+ }
21
+ let output = {};
22
+ const currentIndexPath = error.currentPath.length;
23
+ for (const key in data) {
24
+ setErrorPath(error, key, currentIndexPath);
25
+ const resultKey = self
26
+ .definition
27
+ .key
28
+ .exec(key, error);
29
+ if (resultKey === SymbolDataParserError) {
30
+ output = SymbolDataParserError;
31
+ }
32
+ const resultValue = self
33
+ .definition
34
+ .value
35
+ .exec(data[key], error);
36
+ if (resultValue === SymbolDataParserError) {
37
+ output = SymbolDataParserError;
38
+ }
39
+ if (output !== SymbolDataParserError) {
40
+ output[resultKey] = resultValue;
41
+ }
42
+ }
43
+ popErrorPath(error);
44
+ return output;
45
+ },
46
+ async: async (data, error, self) => {
47
+ if (!data
48
+ || typeof data !== "object"
49
+ || data instanceof Array) {
50
+ return SymbolDataParserErrorIssue;
51
+ }
52
+ let output = {};
53
+ const currentIndexPath = error.currentPath.length;
54
+ for (const key in data) {
55
+ setErrorPath(error, key, currentIndexPath);
56
+ const resultKey = await self
57
+ .definition
58
+ .key
59
+ .asyncExec(key, error);
60
+ if (resultKey === SymbolDataParserError) {
61
+ output = SymbolDataParserError;
62
+ }
63
+ const resultValue = await self
64
+ .definition
65
+ .value
66
+ .asyncExec(data[key], error);
67
+ if (resultValue === SymbolDataParserError) {
68
+ output = SymbolDataParserError;
69
+ }
70
+ if (output !== SymbolDataParserError) {
71
+ output[resultKey] = resultValue;
72
+ }
73
+ }
74
+ popErrorPath(error);
75
+ return output;
76
+ },
77
+ });
78
+ }
79
+
80
+ export { dataParserRecordKind, record };
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../../../../common/kind.cjs');
4
+ var base = require('../../../base.cjs');
5
+ var error = require('../../../error.cjs');
6
+ var index = require('../index.cjs');
7
+
8
+ const dataParserCheckerEmailKind = kind.createKind("data-parser-checker-email");
9
+ const emailPattern = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9-]*\.)+[A-Za-z]{2,}$/;
10
+ function checkerEmail(definition = {}) {
11
+ return base.dataParserCheckerInit(dataParserCheckerEmailKind, {
12
+ definition: {
13
+ ...definition,
14
+ pattern: emailPattern,
15
+ },
16
+ }, (input, self) => {
17
+ if (!self.definition.pattern.test(input)) {
18
+ return error.SymbolDataParserErrorIssue;
19
+ }
20
+ return self.definition.normalize ? input.toLowerCase() : input;
21
+ });
22
+ }
23
+ function email(definition) {
24
+ return index.string({
25
+ checkers: [checkerEmail(definition)],
26
+ });
27
+ }
28
+
29
+ exports.checkerEmail = checkerEmail;
30
+ exports.dataParserCheckerEmailKind = dataParserCheckerEmailKind;
31
+ exports.email = email;
@@ -0,0 +1,17 @@
1
+ import { type Kind } from "../../../../common";
2
+ import { type DataParserChecker, type DataParserCheckerDefinition } from "../../../../dataParser/base";
3
+ export interface DataParserCheckerDefinitionEmail extends DataParserCheckerDefinition {
4
+ normalize?: boolean;
5
+ pattern: RegExp;
6
+ }
7
+ export declare const dataParserCheckerEmailKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"data-parser-checker-email", unknown>>;
8
+ type _DataParserCheckerEmail = (Kind<typeof dataParserCheckerEmailKind.definition> & DataParserChecker<DataParserCheckerDefinitionEmail, string>);
9
+ export interface DataParserCheckerEmail extends _DataParserCheckerEmail {
10
+ }
11
+ export declare function checkerEmail(definition?: Partial<DataParserCheckerDefinitionEmail>): DataParserCheckerEmail;
12
+ export declare function email(definition?: Partial<DataParserCheckerDefinitionEmail>): import("..").DataParserString<{
13
+ readonly checkers: readonly [DataParserCheckerEmail];
14
+ readonly errorMessage?: string | undefined;
15
+ readonly coerce: boolean;
16
+ }>;
17
+ export {};
@@ -0,0 +1,27 @@
1
+ import { createKind } from '../../../../common/kind.mjs';
2
+ import { dataParserCheckerInit } from '../../../base.mjs';
3
+ import { SymbolDataParserErrorIssue } from '../../../error.mjs';
4
+ import { string } from '../index.mjs';
5
+
6
+ const dataParserCheckerEmailKind = createKind("data-parser-checker-email");
7
+ const emailPattern = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9-]*\.)+[A-Za-z]{2,}$/;
8
+ function checkerEmail(definition = {}) {
9
+ return dataParserCheckerInit(dataParserCheckerEmailKind, {
10
+ definition: {
11
+ ...definition,
12
+ pattern: emailPattern,
13
+ },
14
+ }, (input, self) => {
15
+ if (!self.definition.pattern.test(input)) {
16
+ return SymbolDataParserErrorIssue;
17
+ }
18
+ return self.definition.normalize ? input.toLowerCase() : input;
19
+ });
20
+ }
21
+ function email(definition) {
22
+ return string({
23
+ checkers: [checkerEmail(definition)],
24
+ });
25
+ }
26
+
27
+ export { checkerEmail, dataParserCheckerEmailKind, email };
@@ -0,0 +1,5 @@
1
+ export * from "./url";
2
+ export * from "./email";
3
+ export * from "./max";
4
+ export * from "./min";
5
+ export * from "./regex";
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../../../../common/kind.cjs');
4
+ var base = require('../../../base.cjs');
5
+ var error = require('../../../error.cjs');
6
+
7
+ const dataParserCheckerStringMaxKind = kind.createKind("data-parser-checker-string-max");
8
+ function checkerStringMax(max, definition = {}) {
9
+ return base.dataParserCheckerInit(dataParserCheckerStringMaxKind, {
10
+ definition: {
11
+ ...definition,
12
+ max,
13
+ },
14
+ }, (value, self) => value.length <= self.definition.max ? value : error.SymbolDataParserErrorIssue);
15
+ }
16
+
17
+ exports.checkerStringMax = checkerStringMax;
18
+ exports.dataParserCheckerStringMaxKind = dataParserCheckerStringMaxKind;
@@ -0,0 +1,11 @@
1
+ import { type Kind } from "../../../../common";
2
+ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../../../dataParser/base";
3
+ export interface DataParserCheckerDefinitionStringMax extends DataParserCheckerDefinition {
4
+ max: number;
5
+ }
6
+ export declare const dataParserCheckerStringMaxKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"data-parser-checker-string-max", unknown>>;
7
+ type _DataParserCheckerStringMax = (Kind<typeof dataParserCheckerStringMaxKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringMax, string>);
8
+ export interface DataParserCheckerStringMax extends _DataParserCheckerStringMax {
9
+ }
10
+ export declare function checkerStringMax(max: number, definition?: Partial<Omit<DataParserCheckerDefinitionStringMax, "max">>): DataParserCheckerStringMax;
11
+ export {};
@@ -0,0 +1,15 @@
1
+ import { createKind } from '../../../../common/kind.mjs';
2
+ import { dataParserCheckerInit } from '../../../base.mjs';
3
+ import { SymbolDataParserErrorIssue } from '../../../error.mjs';
4
+
5
+ const dataParserCheckerStringMaxKind = createKind("data-parser-checker-string-max");
6
+ function checkerStringMax(max, definition = {}) {
7
+ return dataParserCheckerInit(dataParserCheckerStringMaxKind, {
8
+ definition: {
9
+ ...definition,
10
+ max,
11
+ },
12
+ }, (value, self) => value.length <= self.definition.max ? value : SymbolDataParserErrorIssue);
13
+ }
14
+
15
+ export { checkerStringMax, dataParserCheckerStringMaxKind };
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../../../../common/kind.cjs');
4
+ var base = require('../../../base.cjs');
5
+ var error = require('../../../error.cjs');
6
+
7
+ const dataParserCheckerStringMinKind = kind.createKind("data-parser-checker-string-min");
8
+ function checkerStringMin(min, definition = {}) {
9
+ return base.dataParserCheckerInit(dataParserCheckerStringMinKind, {
10
+ definition: {
11
+ ...definition,
12
+ min,
13
+ },
14
+ }, (value, self) => value.length >= self.definition.min ? value : error.SymbolDataParserErrorIssue);
15
+ }
16
+
17
+ exports.checkerStringMin = checkerStringMin;
18
+ exports.dataParserCheckerStringMinKind = dataParserCheckerStringMinKind;
@@ -0,0 +1,11 @@
1
+ import { type Kind } from "../../../../common";
2
+ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../../../dataParser/base";
3
+ export interface DataParserCheckerDefinitionStringMin extends DataParserCheckerDefinition {
4
+ min: number;
5
+ }
6
+ export declare const dataParserCheckerStringMinKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"data-parser-checker-string-min", unknown>>;
7
+ type _DataParserCheckerStringMin = (Kind<typeof dataParserCheckerStringMinKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringMin, string>);
8
+ export interface DataParserCheckerStringMin extends _DataParserCheckerStringMin {
9
+ }
10
+ export declare function checkerStringMin(min: number, definition?: Partial<Omit<DataParserCheckerDefinitionStringMin, "min">>): DataParserCheckerStringMin;
11
+ export {};
@@ -0,0 +1,15 @@
1
+ import { createKind } from '../../../../common/kind.mjs';
2
+ import { dataParserCheckerInit } from '../../../base.mjs';
3
+ import { SymbolDataParserErrorIssue } from '../../../error.mjs';
4
+
5
+ const dataParserCheckerStringMinKind = createKind("data-parser-checker-string-min");
6
+ function checkerStringMin(min, definition = {}) {
7
+ return dataParserCheckerInit(dataParserCheckerStringMinKind, {
8
+ definition: {
9
+ ...definition,
10
+ min,
11
+ },
12
+ }, (value, self) => value.length >= self.definition.min ? value : SymbolDataParserErrorIssue);
13
+ }
14
+
15
+ export { checkerStringMin, dataParserCheckerStringMinKind };
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../../../../common/kind.cjs');
4
+ var base = require('../../../base.cjs');
5
+ var error = require('../../../error.cjs');
6
+
7
+ const dataParserCheckerStringRegexKind = kind.createKind("data-parser-checker-string-regex");
8
+ function checkerStringRegex(regex, definition = {}) {
9
+ return base.dataParserCheckerInit(dataParserCheckerStringRegexKind, {
10
+ definition: {
11
+ ...definition,
12
+ regex,
13
+ },
14
+ }, (value, self) => self.definition.regex.test(value)
15
+ ? value
16
+ : error.SymbolDataParserErrorIssue);
17
+ }
18
+
19
+ exports.checkerStringRegex = checkerStringRegex;
20
+ exports.dataParserCheckerStringRegexKind = dataParserCheckerStringRegexKind;
@@ -0,0 +1,11 @@
1
+ import { type Kind } from "../../../../common";
2
+ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../../../dataParser/base";
3
+ export interface DataParserCheckerDefinitionStringRegex extends DataParserCheckerDefinition {
4
+ regex: RegExp;
5
+ }
6
+ export declare const dataParserCheckerStringRegexKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"data-parser-checker-string-regex", unknown>>;
7
+ type _DataParserCheckerStringRegex = (Kind<typeof dataParserCheckerStringRegexKind.definition> & DataParserChecker<DataParserCheckerDefinitionStringRegex, string>);
8
+ export interface DataParserCheckerStringRegex extends _DataParserCheckerStringRegex {
9
+ }
10
+ export declare function checkerStringRegex(regex: RegExp, definition?: Partial<Omit<DataParserCheckerDefinitionStringRegex, "regex">>): DataParserCheckerStringRegex;
11
+ export {};
@@ -0,0 +1,17 @@
1
+ import { createKind } from '../../../../common/kind.mjs';
2
+ import { dataParserCheckerInit } from '../../../base.mjs';
3
+ import { SymbolDataParserErrorIssue } from '../../../error.mjs';
4
+
5
+ const dataParserCheckerStringRegexKind = createKind("data-parser-checker-string-regex");
6
+ function checkerStringRegex(regex, definition = {}) {
7
+ return dataParserCheckerInit(dataParserCheckerStringRegexKind, {
8
+ definition: {
9
+ ...definition,
10
+ regex,
11
+ },
12
+ }, (value, self) => self.definition.regex.test(value)
13
+ ? value
14
+ : SymbolDataParserErrorIssue);
15
+ }
16
+
17
+ export { checkerStringRegex, dataParserCheckerStringRegexKind };
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../../../../common/kind.cjs');
4
+ var base = require('../../../base.cjs');
5
+ var error = require('../../../error.cjs');
6
+ var index = require('../index.cjs');
7
+
8
+ const dataParserCheckerUrlKind = kind.createKind("data-parser-checker-url");
9
+ const regexRemoveDote = /:$/;
10
+ function checkerUrl(definition = {}) {
11
+ return base.dataParserCheckerInit(dataParserCheckerUrlKind, {
12
+ definition: definition,
13
+ }, (input, self) => {
14
+ try {
15
+ const url = new URL(input);
16
+ if (self.definition.hostname) {
17
+ self.definition.hostname.lastIndex = 0;
18
+ if (!self.definition.hostname.test(url.hostname)) {
19
+ return error.SymbolDataParserErrorIssue;
20
+ }
21
+ }
22
+ if (self.definition.protocol) {
23
+ self.definition.protocol.lastIndex = 0;
24
+ if (!self.definition.protocol.test(url.protocol.replace(regexRemoveDote, ""))) {
25
+ return error.SymbolDataParserErrorIssue;
26
+ }
27
+ }
28
+ if (self.definition.normalize) {
29
+ return url.href;
30
+ }
31
+ else {
32
+ return input;
33
+ }
34
+ }
35
+ catch {
36
+ return error.SymbolDataParserErrorIssue;
37
+ }
38
+ });
39
+ }
40
+ function url(definition) {
41
+ return index.string({
42
+ checkers: [checkerUrl(definition)],
43
+ });
44
+ }
45
+
46
+ exports.checkerUrl = checkerUrl;
47
+ exports.dataParserCheckerUrlKind = dataParserCheckerUrlKind;
48
+ exports.url = url;
@@ -0,0 +1,18 @@
1
+ import { type Kind } from "../../../../common";
2
+ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../../../dataParser/base";
3
+ export interface DataParserCheckerDefinitionUrl extends DataParserCheckerDefinition {
4
+ hostname?: RegExp;
5
+ protocol?: RegExp;
6
+ normalize?: boolean;
7
+ }
8
+ export declare const dataParserCheckerUrlKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"data-parser-checker-url", unknown>>;
9
+ type _DataParserCheckerUrl = (Kind<typeof dataParserCheckerUrlKind.definition> & DataParserChecker<DataParserCheckerDefinitionUrl, string>);
10
+ export interface DataParserCheckerUrl extends _DataParserCheckerUrl {
11
+ }
12
+ export declare function checkerUrl(definition?: Partial<DataParserCheckerDefinitionUrl>): DataParserCheckerUrl;
13
+ export declare function url(definition?: Partial<DataParserCheckerDefinitionUrl>): import("..").DataParserString<{
14
+ readonly checkers: readonly [DataParserCheckerUrl];
15
+ readonly errorMessage?: string | undefined;
16
+ readonly coerce: boolean;
17
+ }>;
18
+ export {};
@@ -0,0 +1,44 @@
1
+ import { createKind } from '../../../../common/kind.mjs';
2
+ import { dataParserCheckerInit } from '../../../base.mjs';
3
+ import { SymbolDataParserErrorIssue } from '../../../error.mjs';
4
+ import { string } from '../index.mjs';
5
+
6
+ const dataParserCheckerUrlKind = createKind("data-parser-checker-url");
7
+ const regexRemoveDote = /:$/;
8
+ function checkerUrl(definition = {}) {
9
+ return dataParserCheckerInit(dataParserCheckerUrlKind, {
10
+ definition: definition,
11
+ }, (input, self) => {
12
+ try {
13
+ const url = new URL(input);
14
+ if (self.definition.hostname) {
15
+ self.definition.hostname.lastIndex = 0;
16
+ if (!self.definition.hostname.test(url.hostname)) {
17
+ return SymbolDataParserErrorIssue;
18
+ }
19
+ }
20
+ if (self.definition.protocol) {
21
+ self.definition.protocol.lastIndex = 0;
22
+ if (!self.definition.protocol.test(url.protocol.replace(regexRemoveDote, ""))) {
23
+ return SymbolDataParserErrorIssue;
24
+ }
25
+ }
26
+ if (self.definition.normalize) {
27
+ return url.href;
28
+ }
29
+ else {
30
+ return input;
31
+ }
32
+ }
33
+ catch {
34
+ return SymbolDataParserErrorIssue;
35
+ }
36
+ });
37
+ }
38
+ function url(definition) {
39
+ return string({
40
+ checkers: [checkerUrl(definition)],
41
+ });
42
+ }
43
+
44
+ export { checkerUrl, dataParserCheckerUrlKind, url };
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../../../common/kind.cjs');
4
+ var base = require('../../base.cjs');
5
+ var error = require('../../error.cjs');
6
+
7
+ const dataParserStringKind = kind.createKind("data-parser-string");
8
+ function string(definition) {
9
+ return base.dataParserInit(dataParserStringKind, {
10
+ definition: {
11
+ errorMessage: definition?.errorMessage,
12
+ checkers: definition?.checkers ?? [],
13
+ coerce: definition?.coerce ?? false,
14
+ },
15
+ }, (data, _error, self) => {
16
+ if (self.definition.coerce) {
17
+ try {
18
+ // eslint-disable-next-line no-param-reassign
19
+ data = String(data);
20
+ }
21
+ catch { }
22
+ }
23
+ if (typeof data === "string") {
24
+ return data;
25
+ }
26
+ return error.SymbolDataParserErrorIssue;
27
+ });
28
+ }
29
+
30
+ exports.dataParserStringKind = dataParserStringKind;
31
+ exports.string = string;
@@ -0,0 +1,18 @@
1
+ import { type NeverCoalescing, type Kind } from "../../../common";
2
+ import { type DataParserDefinition, type DataParser } from "../../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../../../dataParser/types";
4
+ import { type DataParserCheckerUrl, type DataParserCheckerEmail, type DataParserCheckerStringMin, type DataParserCheckerStringMax, type DataParserCheckerStringRegex } from "./checkers";
5
+ export * from "./checkers";
6
+ export type DataParserStringCheckers = (DataParserCheckerUrl | DataParserCheckerEmail | DataParserCheckerStringMin | DataParserCheckerStringMax | DataParserCheckerStringRegex);
7
+ export interface DataParserDefinitionString extends DataParserDefinition<DataParserStringCheckers> {
8
+ readonly coerce: boolean;
9
+ }
10
+ export declare const dataParserStringKind: import("../../../common").KindHandler<import("../../../common").KindDefinition<"data-parser-string", unknown>>;
11
+ type _DataParserString<GenericDefinition extends DataParserDefinitionString> = (DataParser<GenericDefinition, string, string> & Kind<typeof dataParserStringKind.definition>);
12
+ export interface DataParserString<GenericDefinition extends DataParserDefinitionString = DataParserDefinitionString> extends _DataParserString<GenericDefinition> {
13
+ addChecker<GenericChecker extends readonly [
14
+ DataParserStringCheckers,
15
+ ...DataParserStringCheckers[]
16
+ ]>(...args: GenericChecker): DataParserString<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
17
+ }
18
+ export declare function string<const GenericDefinition extends Partial<DataParserDefinitionString> = never>(definition?: GenericDefinition): DataParserString<MergeDefinition<DataParserDefinitionString, NeverCoalescing<GenericDefinition, {}>>>;
@@ -0,0 +1,28 @@
1
+ import { createKind } from '../../../common/kind.mjs';
2
+ import { dataParserInit } from '../../base.mjs';
3
+ import { SymbolDataParserErrorIssue } from '../../error.mjs';
4
+
5
+ const dataParserStringKind = createKind("data-parser-string");
6
+ function string(definition) {
7
+ return dataParserInit(dataParserStringKind, {
8
+ definition: {
9
+ errorMessage: definition?.errorMessage,
10
+ checkers: definition?.checkers ?? [],
11
+ coerce: definition?.coerce ?? false,
12
+ },
13
+ }, (data, _error, self) => {
14
+ if (self.definition.coerce) {
15
+ try {
16
+ // eslint-disable-next-line no-param-reassign
17
+ data = String(data);
18
+ }
19
+ catch { }
20
+ }
21
+ if (typeof data === "string") {
22
+ return data;
23
+ }
24
+ return SymbolDataParserErrorIssue;
25
+ });
26
+ }
27
+
28
+ export { dataParserStringKind, string };
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var escapeRegExp = require('../../common/escapeRegExp.cjs');
4
+ var kind = require('../../common/kind.cjs');
5
+ var pipe = require('../../common/pipe.cjs');
6
+ var innerPipe = require('../../common/innerPipe.cjs');
7
+ var when$1 = require('../../common/when.cjs');
8
+ var isType = require('../../common/isType.cjs');
9
+ var whenElse = require('../../common/whenElse.cjs');
10
+ var map = require('../../array/map.cjs');
11
+ var join = require('../../array/join.cjs');
12
+ var base = require('../base.cjs');
13
+ var error = require('../error.cjs');
14
+ require('../../pattern/result.cjs');
15
+ var exhaustive = require('../../pattern/exhaustive.cjs');
16
+ var when = require('../../pattern/when.cjs');
17
+ var replace = require('../../string/replace.cjs');
18
+ var index = require('./string/index.cjs');
19
+ var index$2 = require('./number/index.cjs');
20
+ var index$1 = require('./bigint/index.cjs');
21
+ var literal = require('./literal.cjs');
22
+ var empty = require('./empty.cjs');
23
+ var nil = require('./nil.cjs');
24
+ var boolean = require('./boolean.cjs');
25
+
26
+ const dataParserTemplateLiteralKind = kind.createKind("data-parser-template-literal");
27
+ function templateLiteral(template, definition) {
28
+ const pattern = pipe.pipe(template, map.map(innerPipe.innerPipe(when.when(isType.isType("string"), (value) => `(?:${escapeRegExp.escapeRegExp(value)})`), when.when(index$2.dataParserNumberKind.has, () => "(:?[0-9]+)"), when.when(index$1.dataParserBigIntKind.has, () => "(?:[0-9]+n)"), when.when(boolean.dataParserBooleanKind.has, () => "(?:true|false)"), when.when(nil.dataParserNilKind.has, () => "(?:null)"), when.when(empty.dataParserEmptyKind.has, () => "(?:undefined)"), when.when(literal.dataParserLiteralKind.has, (dataParser) => pipe.pipe(dataParser.definition.value, map.map(innerPipe.innerPipe(when$1.when(isType.isType("bigint"), (value) => `${value}n`), String, escapeRegExp.escapeRegExp)), join.join("|"), (pattern) => `(?:${pattern})`)), when.when(index.dataParserStringKind.has, innerPipe.innerPipe(whenElse.whenElse((dataParser) => !!dataParser.definition.checkers.length, (dataParser) => pipe.pipe(dataParser.definition.checkers, map.map((element) => pipe.pipe(element.definition.pattern.source, replace.replace(/^\^/, ""), replace.replace(/\$$/, ""))), join.join("")), () => "(?:[^]*)"))), when.when(dataParserTemplateLiteralKind.has, (dataParser) => pipe.pipe(dataParser.definition.pattern.source, replace.replace(/^\^/, ""), replace.replace(/\$$/, ""), (pattern) => `(?:${pattern})`)), exhaustive.exhaustive)), join.join(""), (pattern) => new RegExp(`^${pattern}$`));
29
+ return base.dataParserInit(dataParserTemplateLiteralKind, {
30
+ definition: {
31
+ errorMessage: definition?.errorMessage,
32
+ checkers: definition?.checkers ?? [],
33
+ template,
34
+ pattern,
35
+ },
36
+ }, (data, _error, self) => {
37
+ if (typeof data === "string" && self.definition.pattern.test(data)) {
38
+ return data;
39
+ }
40
+ return error.SymbolDataParserErrorIssue;
41
+ });
42
+ }
43
+
44
+ exports.dataParserTemplateLiteralKind = dataParserTemplateLiteralKind;
45
+ exports.templateLiteral = templateLiteral;
@@ -0,0 +1,49 @@
1
+ import { type Adaptor, type Kind, type NeverCoalescing } from "../../common";
2
+ import { type DataParserDefinition, type DataParser, type Output, type Input } from "../base";
3
+ import { type MergeDefinition } from "../../dataParser/types";
4
+ import { type DataParserCheckerEmail, type DataParserDefinitionString, type DataParserString } from "./string";
5
+ import { 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
+ export type DataParsersTemplateLiteral = (string | DataParserString<DataParserDefinitionString & {
12
+ readonly checkers: readonly (DataParserCheckerEmail)[];
13
+ }> | DataParserNumber<DataParserDefinitionNumber & {
14
+ readonly checkers: readonly [];
15
+ }> | DataParserBigInt<DataParserDefinitionBigInt & {
16
+ readonly checkers: readonly [];
17
+ }> | DataParserBoolean<DataParserDefinitionBoolean & {
18
+ readonly checkers: readonly [];
19
+ }> | DataParserLiteral<DataParserDefinitionLiteral & {
20
+ readonly checkers: readonly [];
21
+ }> | DataParserEmpty<DataParserDefinitionEmpty & {
22
+ readonly checkers: readonly [];
23
+ }> | DataParserNil<DataParserDefinitionNil & {
24
+ readonly checkers: readonly [];
25
+ }> | DataParserTemplateLiteral<DataParserDefinitionTemplateLiteral & {
26
+ readonly checkers: readonly [];
27
+ }>);
28
+ export type TemplateLiteralShape = readonly [DataParsersTemplateLiteral, ...DataParsersTemplateLiteral[]];
29
+ type EligibleTemplateLiteral = string | number | bigint | boolean | null | undefined;
30
+ export type TemplateLiteralShapeOutput<GenericTemplate extends TemplateLiteralShape, GenericLastResult extends string = ""> = GenericTemplate extends readonly [
31
+ infer InferredFirst extends DataParsersTemplateLiteral,
32
+ ...infer InferredRest extends DataParsersTemplateLiteral[]
33
+ ] ? (`${GenericLastResult}${InferredFirst extends string ? InferredFirst : Adaptor<Output<Exclude<InferredFirst, string>>, EligibleTemplateLiteral>}`) extends infer InferredResult extends string ? InferredRest extends readonly [] ? InferredResult : InferredRest extends TemplateLiteralShape ? TemplateLiteralShapeOutput<InferredRest, InferredResult> : TemplateLiteralShapeOutput<[InferredRest[number]], InferredResult> : never : never;
34
+ export type TemplateLiteralShapeInput<GenericTemplate extends TemplateLiteralShape, GenericLastResult extends string = ""> = GenericTemplate extends readonly [
35
+ infer InferredFirst extends DataParsersTemplateLiteral,
36
+ ...infer InferredRest extends DataParsersTemplateLiteral[]
37
+ ] ? (`${GenericLastResult}${InferredFirst extends string ? InferredFirst : Adaptor<Input<Exclude<InferredFirst, string>>, EligibleTemplateLiteral>}`) extends infer InferredResult extends string ? InferredRest extends readonly [] ? InferredResult : InferredRest extends TemplateLiteralShape ? TemplateLiteralShapeInput<InferredRest, InferredResult> : TemplateLiteralShapeInput<[InferredRest[number]], InferredResult> : never : never;
38
+ export interface DataParserDefinitionTemplateLiteral extends DataParserDefinition<never> {
39
+ readonly template: TemplateLiteralShape;
40
+ readonly pattern: RegExp;
41
+ }
42
+ export declare const dataParserTemplateLiteralKind: import("../../common").KindHandler<import("../../common").KindDefinition<"data-parser-template-literal", unknown>>;
43
+ type _DataParserTemplateLiteral<GenericDefinition extends DataParserDefinitionTemplateLiteral> = (DataParser<GenericDefinition, TemplateLiteralShapeOutput<GenericDefinition["template"]>, TemplateLiteralShapeInput<GenericDefinition["template"]>> & Kind<typeof dataParserTemplateLiteralKind.definition>);
44
+ export interface DataParserTemplateLiteral<GenericDefinition extends DataParserDefinitionTemplateLiteral = DataParserDefinitionTemplateLiteral> extends _DataParserTemplateLiteral<GenericDefinition> {
45
+ }
46
+ 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, {}> & {
47
+ template: GenericTemplate;
48
+ }>>;
49
+ export {};