@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,9 @@
1
+ 'use strict';
2
+
3
+ function coalescing(value) {
4
+ return value instanceof Array
5
+ ? value
6
+ : [value];
7
+ }
8
+
9
+ exports.coalescing = coalescing;
@@ -0,0 +1,3 @@
1
+ import { type AnyValue } from "../common";
2
+ import { type ArrayCoalescing } from "./types";
3
+ export declare function coalescing<GenericValue extends AnyValue>(value: GenericValue): ArrayCoalescing<GenericValue>;
@@ -0,0 +1,7 @@
1
+ function coalescing(value) {
2
+ return value instanceof Array
3
+ ? value
4
+ : [value];
5
+ }
6
+
7
+ export { coalescing };
@@ -49,6 +49,7 @@ var insert$1 = require('./findAndSplice/insert.cjs');
49
49
  var replace$1 = require('./findAndSplice/replace.cjs');
50
50
  var sum = require('./sum.cjs');
51
51
  var length = require('./length.cjs');
52
+ var coalescing = require('./coalescing.cjs');
52
53
 
53
54
 
54
55
 
@@ -103,3 +104,4 @@ exports.findAndSpliceInsert = insert$1.findAndSpliceInsert;
103
104
  exports.findAndSpliceReplace = replace$1.findAndSpliceReplace;
104
105
  exports.sum = sum.sum;
105
106
  exports.length = length.length;
107
+ exports.coalescing = coalescing.coalescing;
@@ -39,3 +39,4 @@ export * from "./findAndReplace";
39
39
  export * from "./findAndSplice";
40
40
  export * from "./sum";
41
41
  export * from "./length";
42
+ export * from "./coalescing";
@@ -47,3 +47,4 @@ export { findAndSpliceInsert } from './findAndSplice/insert.mjs';
47
47
  export { findAndSpliceReplace } from './findAndSplice/replace.mjs';
48
48
  export { sum } from './sum.mjs';
49
49
  export { length } from './length.mjs';
50
+ export { coalescing } from './coalescing.mjs';
@@ -6,7 +6,7 @@ function map(...args) {
6
6
  return (array) => map(array, theFunction);
7
7
  }
8
8
  const [array, theFunction] = args;
9
- return array.map((item, index) => theFunction(item, { index }));
9
+ return array.map((element, index) => theFunction(element, { index }));
10
10
  }
11
11
 
12
12
  exports.map = map;
@@ -1,6 +1,6 @@
1
1
  interface ArrayMapParams {
2
2
  index: number;
3
3
  }
4
- export declare function map<GenericArray extends readonly unknown[], GenericOutput extends unknown>(theFunction: (item: GenericArray[number], params: ArrayMapParams) => GenericOutput): (array: GenericArray) => GenericOutput[];
5
- export declare function map<GenericElement extends unknown, GenericOutput extends unknown>(array: readonly GenericElement[], theFunction: (item: GenericElement, params: ArrayMapParams) => GenericOutput): GenericOutput[];
4
+ export declare function map<GenericArray extends readonly unknown[], GenericOutput extends unknown>(theFunction: (element: GenericArray[number], params: ArrayMapParams) => GenericOutput): (array: GenericArray) => GenericOutput[];
5
+ export declare function map<GenericElement extends unknown, GenericOutput extends unknown>(array: readonly GenericElement[], theFunction: (element: GenericElement, params: ArrayMapParams) => GenericOutput): GenericOutput[];
6
6
  export {};
@@ -4,7 +4,7 @@ function map(...args) {
4
4
  return (array) => map(array, theFunction);
5
5
  }
6
6
  const [array, theFunction] = args;
7
- return array.map((item, index) => theFunction(item, { index }));
7
+ return array.map((element, index) => theFunction(element, { index }));
8
8
  }
9
9
 
10
10
  export { map };
@@ -7,7 +7,7 @@ var override = require('../object/override.cjs');
7
7
 
8
8
  const arrayReduceFromKind = kind.createKind("array-reduce-from");
9
9
  function reduceFrom(value) {
10
- return arrayReduceFromKind.addTo(wrapValue.wrapValue(value));
10
+ return arrayReduceFromKind.setTo(wrapValue.wrapValue(value));
11
11
  }
12
12
  function reduce(...args) {
13
13
  if (args.length === 2) {
@@ -5,7 +5,7 @@ import { override } from '../object/override.mjs';
5
5
 
6
6
  const arrayReduceFromKind = createKind("array-reduce-from");
7
7
  function reduceFrom(value) {
8
- return arrayReduceFromKind.addTo(wrapValue(value));
8
+ return arrayReduceFromKind.setTo(wrapValue(value));
9
9
  }
10
10
  function reduce(...args) {
11
11
  if (args.length === 2) {
@@ -0,0 +1 @@
1
+ export type ArrayCoalescing<GenericValue extends unknown> = GenericValue extends readonly any[] ? GenericValue : [GenericValue];
@@ -7,3 +7,4 @@ export * from "./mergeUnionTuple";
7
7
  export * from "./extractTuple";
8
8
  export * from "./excludeTuple";
9
9
  export * from "./createTuple";
10
+ export * from "./ArrayCoalescing";
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- function escapeRegExp(text) {
4
- return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
3
+ function escapeRegExp(input) {
4
+ return input.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
5
5
  }
6
6
 
7
7
  exports.escapeRegExp = escapeRegExp;
@@ -1 +1 @@
1
- export declare function escapeRegExp(text: string): string;
1
+ export declare function escapeRegExp<GenericInput extends string>(input: GenericInput): string;
@@ -1,5 +1,5 @@
1
- function escapeRegExp(text) {
2
- return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
1
+ function escapeRegExp(input) {
2
+ return input.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
3
3
  }
4
4
 
5
5
  export { escapeRegExp };
@@ -32,3 +32,7 @@ export * from "./not";
32
32
  export * from "./isType";
33
33
  export * from "./and";
34
34
  export * from "./or";
35
+ export * from "./whenElse";
36
+ export * from "./justReturn";
37
+ export * from "./memo";
38
+ export * from "./instanceOf";
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var coalescing = require('../array/coalescing.cjs');
4
+
5
+ function instanceOf(...args) {
6
+ if (args.length === 1) {
7
+ const [constructor] = args;
8
+ return (input) => instanceOf(input, constructor);
9
+ }
10
+ const [input, constructor] = args;
11
+ const formattedConstructor = coalescing.coalescing(constructor);
12
+ for (const constructor of formattedConstructor) {
13
+ if (input instanceof constructor) {
14
+ return true;
15
+ }
16
+ }
17
+ return false;
18
+ }
19
+
20
+ exports.instanceOf = instanceOf;
@@ -0,0 +1,3 @@
1
+ import { type AnyConstructor } from "./types";
2
+ export declare function instanceOf<GenericInput extends unknown, GenericConstructor extends AnyConstructor>(constructor: GenericConstructor | GenericConstructor[]): (input: GenericInput) => input is Extract<GenericInput, InstanceType<GenericConstructor>>;
3
+ export declare function instanceOf<GenericInput extends unknown, GenericConstructor extends AnyConstructor>(input: GenericInput, constructor: GenericConstructor | GenericConstructor[]): input is Extract<GenericInput, InstanceType<GenericConstructor>>;
@@ -0,0 +1,18 @@
1
+ import { coalescing } from '../array/coalescing.mjs';
2
+
3
+ function instanceOf(...args) {
4
+ if (args.length === 1) {
5
+ const [constructor] = args;
6
+ return (input) => instanceOf(input, constructor);
7
+ }
8
+ const [input, constructor] = args;
9
+ const formattedConstructor = coalescing(constructor);
10
+ for (const constructor of formattedConstructor) {
11
+ if (input instanceof constructor) {
12
+ return true;
13
+ }
14
+ }
15
+ return false;
16
+ }
17
+
18
+ export { instanceOf };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ function justReturn(...args) {
4
+ if (args.length === 1) {
5
+ const [value] = args;
6
+ return () => justReturn(undefined, value);
7
+ }
8
+ const [, value] = args;
9
+ return value;
10
+ }
11
+
12
+ exports.justReturn = justReturn;
@@ -0,0 +1,3 @@
1
+ import { type AnyValue } from "./types";
2
+ export declare function justReturn<GenericValue extends AnyValue>(value: GenericValue): (input: unknown) => GenericValue;
3
+ export declare function justReturn<GenericValue extends AnyValue>(input: unknown, value: GenericValue): GenericValue;
@@ -0,0 +1,10 @@
1
+ function justReturn(...args) {
2
+ if (args.length === 1) {
3
+ const [value] = args;
4
+ return () => justReturn(undefined, value);
5
+ }
6
+ const [, value] = args;
7
+ return value;
8
+ }
9
+
10
+ export { justReturn };
@@ -6,7 +6,10 @@ const keyKindPrefix = `${wrapValue.keyWrappedValue}/kind/`;
6
6
  function createKind(name) {
7
7
  const runTimeKey = `${keyKindPrefix}${name}`;
8
8
  return {
9
- definition: undefined,
9
+ definition: {
10
+ name,
11
+ value: null,
12
+ },
10
13
  runTimeKey,
11
14
  addTo(input, value = null) {
12
15
  return {
@@ -14,6 +17,10 @@ function createKind(name) {
14
17
  [runTimeKey]: value,
15
18
  };
16
19
  },
20
+ setTo(input, value = null) {
21
+ input[runTimeKey] = value;
22
+ return input;
23
+ },
17
24
  has(input) {
18
25
  return input
19
26
  && typeof input === "object"
@@ -24,6 +31,36 @@ function createKind(name) {
24
31
  },
25
32
  };
26
33
  }
34
+ function kindHeritage(uniqueName, kind) {
35
+ const uniqueKind = createKind(uniqueName);
36
+ const kinds = kind instanceof Array
37
+ ? kind
38
+ : [kind];
39
+ const ParentKindClass = (function ParentKindClass(params = {}) {
40
+ for (const kind of kinds) {
41
+ this[kind.runTimeKey] = params[kind.definition.name] ?? null;
42
+ }
43
+ });
44
+ kinds.forEach((value) => {
45
+ ParentKindClass.prototype[value.runTimeKey] = null;
46
+ });
47
+ ParentKindClass.prototype[uniqueKind.runTimeKey] = null;
48
+ Object.defineProperty(ParentKindClass, Symbol.hasInstance, {
49
+ value: (value) => {
50
+ if (!uniqueKind.has(value)) {
51
+ return false;
52
+ }
53
+ for (const kind of kinds) {
54
+ if (!kind.has(value)) {
55
+ return false;
56
+ }
57
+ }
58
+ return true;
59
+ },
60
+ });
61
+ return ParentKindClass;
62
+ }
27
63
 
28
64
  exports.createKind = createKind;
29
65
  exports.keyKindPrefix = keyKindPrefix;
66
+ exports.kindHeritage = kindHeritage;
@@ -1,5 +1,6 @@
1
- import { type Or, type IsEqual } from "./types";
2
- export interface KindHandler<GenericKindDefinition extends KindDefinition> {
1
+ import { type Or, type IsEqual, type BreakGenericLink, type Adaptor, type UnionToIntersection } from "./types";
2
+ import { type GetPropsWithValue, type PartialKeys } from "../object";
3
+ export interface KindHandler<GenericKindDefinition extends KindDefinition = KindDefinition> {
3
4
  definition: GenericKindDefinition;
4
5
  runTimeKey: string;
5
6
  has<GenericInput extends unknown>(input: GenericInput): input is Extract<GenericInput, Kind<GenericKindDefinition, GenericKindDefinition["value"]>>;
@@ -7,7 +8,15 @@ export interface KindHandler<GenericKindDefinition extends KindDefinition> {
7
8
  IsEqual<GenericValue, never>,
8
9
  IsEqual<GenericValue, unknown>,
9
10
  IsEqual<GenericValue, any>
10
- ]> extends true ? [input: GenericInput, value?: GenericValue] : [input: GenericInput, value: GenericValue]): Kind<GenericKindDefinition, GenericValue> & GenericInput;
11
+ ]> extends true ? [input: GenericInput, value?: GenericValue] : [input: GenericInput, value: GenericValue]): Kind<GenericKindDefinition, GenericValue> & BreakGenericLink<GenericInput>;
12
+ /**
13
+ * @deprecated This method make mutation.
14
+ */
15
+ setTo<GenericInput extends {}, GenericValue extends GenericKindDefinition["value"] = GenericKindDefinition["value"]>(...args: Or<[
16
+ IsEqual<GenericValue, never>,
17
+ IsEqual<GenericValue, unknown>,
18
+ IsEqual<GenericValue, any>
19
+ ]> extends true ? [input: GenericInput, value?: GenericValue] : [input: GenericInput, value: GenericValue]): Kind<GenericKindDefinition, GenericValue> & BreakGenericLink<GenericInput>;
11
20
  getValue<GenericKind extends Kind<GenericKindDefinition, GenericKindDefinition["value"]>>(input: GenericKind): GenericKind[SymbolKind][GenericKindDefinition["name"]];
12
21
  }
13
22
  export interface KindDefinition<GenericName extends string = string, GenericValue extends unknown = unknown> {
@@ -16,11 +25,20 @@ export interface KindDefinition<GenericName extends string = string, GenericValu
16
25
  }
17
26
  declare const SymbolKind: unique symbol;
18
27
  type SymbolKind = typeof SymbolKind;
19
- export interface Kind<GenericKindDefinition extends KindDefinition, GenericValue extends KindDefinition["value"] = KindDefinition["value"]> {
28
+ export interface Kind<GenericKindDefinition extends KindDefinition, GenericValue extends GenericKindDefinition["value"] = GenericKindDefinition["value"]> {
20
29
  [SymbolKind]: {
21
30
  [Prop in GenericKindDefinition["name"]]: GenericValue;
22
31
  };
23
32
  }
33
+ export type RemoveKind<GenericObject extends Kind<any>> = Omit<GenericObject, SymbolKind>;
34
+ export type GetKindValue<GenericKindHandler extends KindHandler, GenericObject extends Kind<any>> = GenericObject[SymbolKind][GenericKindHandler["definition"]["name"]];
35
+ export type GetKindHandler<GenericObject extends Kind<any>> = {
36
+ [Prop in keyof GenericObject[SymbolKind]]: KindHandler<KindDefinition<Adaptor<Prop, string>, GenericObject[SymbolKind][Prop]>>;
37
+ }[keyof GenericObject[SymbolKind]];
24
38
  export declare const keyKindPrefix = "@duplojs/utils/value/kind/";
25
39
  export declare function createKind<GenericName extends string, GenericKindValue extends unknown = unknown>(name: GenericName): KindHandler<KindDefinition<GenericName, GenericKindValue>>;
40
+ export type KindHeritageConstructorParams<GenericKindHandler extends KindHandler> = {
41
+ [KindHandler in GenericKindHandler as KindHandler["definition"]["name"]]: KindHandler["definition"]["value"];
42
+ } extends infer InferredResult extends object ? PartialKeys<InferredResult, GetPropsWithValue<InferredResult, unknown>> : never;
43
+ export declare function kindHeritage<GenericUniqueName extends string, GenericKindHandler extends KindHandler>(uniqueName: GenericUniqueName, kind: GenericKindHandler | GenericKindHandler[]): new (...args: IsEqual<GenericKindHandler extends KindHandler ? IsEqual<GenericKindHandler["definition"]["value"], unknown> : never, true> extends true ? [params?: KindHeritageConstructorParams<GenericKindHandler>] : [params: KindHeritageConstructorParams<GenericKindHandler>]) => UnionToIntersection<(GenericKindHandler extends KindHandler ? Kind<GenericKindHandler["definition"]> : never) | Kind<KindDefinition<GenericUniqueName, unknown>>>;
26
44
  export {};
@@ -4,7 +4,10 @@ const keyKindPrefix = `${keyWrappedValue}/kind/`;
4
4
  function createKind(name) {
5
5
  const runTimeKey = `${keyKindPrefix}${name}`;
6
6
  return {
7
- definition: undefined,
7
+ definition: {
8
+ name,
9
+ value: null,
10
+ },
8
11
  runTimeKey,
9
12
  addTo(input, value = null) {
10
13
  return {
@@ -12,6 +15,10 @@ function createKind(name) {
12
15
  [runTimeKey]: value,
13
16
  };
14
17
  },
18
+ setTo(input, value = null) {
19
+ input[runTimeKey] = value;
20
+ return input;
21
+ },
15
22
  has(input) {
16
23
  return input
17
24
  && typeof input === "object"
@@ -22,5 +29,34 @@ function createKind(name) {
22
29
  },
23
30
  };
24
31
  }
32
+ function kindHeritage(uniqueName, kind) {
33
+ const uniqueKind = createKind(uniqueName);
34
+ const kinds = kind instanceof Array
35
+ ? kind
36
+ : [kind];
37
+ const ParentKindClass = (function ParentKindClass(params = {}) {
38
+ for (const kind of kinds) {
39
+ this[kind.runTimeKey] = params[kind.definition.name] ?? null;
40
+ }
41
+ });
42
+ kinds.forEach((value) => {
43
+ ParentKindClass.prototype[value.runTimeKey] = null;
44
+ });
45
+ ParentKindClass.prototype[uniqueKind.runTimeKey] = null;
46
+ Object.defineProperty(ParentKindClass, Symbol.hasInstance, {
47
+ value: (value) => {
48
+ if (!uniqueKind.has(value)) {
49
+ return false;
50
+ }
51
+ for (const kind of kinds) {
52
+ if (!kind.has(value)) {
53
+ return false;
54
+ }
55
+ }
56
+ return true;
57
+ },
58
+ });
59
+ return ParentKindClass;
60
+ }
25
61
 
26
- export { createKind, keyKindPrefix };
62
+ export { createKind, keyKindPrefix, kindHeritage };
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ function memo(theFunction) {
4
+ const payload = {
5
+ get value() {
6
+ const value = theFunction();
7
+ Object.defineProperty(payload, "value", {
8
+ value,
9
+ });
10
+ return value;
11
+ },
12
+ };
13
+ return payload;
14
+ }
15
+
16
+ exports.memo = memo;
@@ -0,0 +1,5 @@
1
+ import { type AnyValue } from "./types";
2
+ export interface Memoized<GenericValue extends unknown> {
3
+ readonly value: GenericValue;
4
+ }
5
+ export declare function memo<GenericOutput extends AnyValue>(theFunction: () => GenericOutput): Memoized<GenericOutput>;
@@ -0,0 +1,14 @@
1
+ function memo(theFunction) {
2
+ const payload = {
3
+ get value() {
4
+ const value = theFunction();
5
+ Object.defineProperty(payload, "value", {
6
+ value,
7
+ });
8
+ return value;
9
+ },
10
+ };
11
+ return payload;
12
+ }
13
+
14
+ export { memo };
@@ -7,8 +7,8 @@ function simpleClone(unknownValue) {
7
7
  else if (typeof unknownValue !== "object") {
8
8
  return unknownValue;
9
9
  }
10
- else if (unknownValue.constructor?.name === "Object"
11
- || unknownValue.constructor === undefined) {
10
+ else if (unknownValue.constructor === undefined
11
+ || unknownValue.constructor.name === "Object") {
12
12
  return Object.entries(unknownValue).reduce((pv, [key, value]) => {
13
13
  pv[key] = simpleClone(value);
14
14
  return pv;
@@ -5,8 +5,8 @@ function simpleClone(unknownValue) {
5
5
  else if (typeof unknownValue !== "object") {
6
6
  return unknownValue;
7
7
  }
8
- else if (unknownValue.constructor?.name === "Object"
9
- || unknownValue.constructor === undefined) {
8
+ else if (unknownValue.constructor === undefined
9
+ || unknownValue.constructor.name === "Object") {
10
10
  return Object.entries(unknownValue).reduce((pv, [key, value]) => {
11
11
  pv[key] = simpleClone(value);
12
12
  return pv;
@@ -0,0 +1 @@
1
+ export type AnyConstructor<GenericArgs extends any[] = any[], GenericInstance extends any = any> = new (...args: GenericArgs) => GenericInstance;
@@ -0,0 +1 @@
1
+ export type AnyPredicate<GenericInput extends any = any, GenericArgs extends any[] = any[], GenericPredicate extends GenericInput = any> = (input: GenericInput, ...args: GenericArgs) => input is GenericPredicate;
@@ -35,3 +35,5 @@ export * from "./lastUnionElement";
35
35
  export * from "./removeDuplicateInUnion";
36
36
  export * from "./isStringLIteral";
37
37
  export * from "./maybeWrapped";
38
+ export * from "./anyConstructor";
39
+ export * from "./anyPredicate";
@@ -1,2 +1,2 @@
1
1
  import { type ObjectKey } from "./objectKey";
2
- export type ObjectEntry = [ObjectKey, any];
2
+ export type ObjectEntry = readonly [ObjectKey, any];
@@ -0,0 +1 @@
1
+ export type Predicate<GenericFunction extends (input: any, ...args: any[]) => input is any> = GenericFunction extends (input: any, ...args: any[]) => input is infer InferredPredicate ? InferredPredicate : never;
@@ -1,2 +1,2 @@
1
1
  import { type IsEqual } from "./isEqual";
2
- export type UnionContain<GenericUnion extends unknown, GenericValue extends unknown> = IsEqual<GenericUnion extends any ? IsEqual<GenericUnion, GenericValue> : never, boolean>;
2
+ export type UnionContain<GenericUnion extends unknown, GenericValue extends unknown> = IsEqual<(GenericUnion extends any ? IsEqual<GenericUnion, GenericValue> : never) | false, boolean>;
@@ -1,5 +1,5 @@
1
- import { type EscapeVoid, type AnyValue } from "./types";
2
- export declare function when<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput extends AnyValue | EscapeVoid>(ifFunction: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: GenericPredicatedInput) => GenericOutput): (input: GenericInput) => GenericOutput | Exclude<GenericInput, GenericPredicatedInput>;
1
+ import { type EscapeVoid, type AnyValue, type BreakGenericLink } from "./types";
2
+ export declare function when<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput extends AnyValue | EscapeVoid>(ifFunction: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: GenericPredicatedInput) => GenericOutput): (input: GenericInput) => GenericOutput | Exclude<BreakGenericLink<GenericInput>, GenericPredicatedInput>;
3
3
  export declare function when<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput extends AnyValue | EscapeVoid>(input: GenericInput, ifFunction: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: GenericPredicatedInput) => GenericOutput): GenericOutput | Exclude<GenericInput, GenericPredicatedInput>;
4
4
  export declare function when<GenericInput extends AnyValue, GenericOutput extends AnyValue | EscapeVoid>(ifFunction: (input: GenericInput) => boolean, theFunction: (predicatedInput: GenericInput) => GenericOutput): (input: GenericInput) => GenericOutput | GenericInput;
5
5
  export declare function when<GenericInput extends AnyValue, GenericOutput extends AnyValue | EscapeVoid>(input: GenericInput, ifFunction: (input: GenericInput) => boolean, theFunction: (predicatedInput: GenericInput) => GenericOutput): GenericOutput | GenericInput;
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ function whenElse(...args) {
4
+ if (args.length === 3) {
5
+ const [ifFunction, theFunction, elseFunction] = args;
6
+ return (input) => whenElse(input, ifFunction, theFunction, elseFunction);
7
+ }
8
+ const [input, ifFunction, theFunction, elseFunction] = args;
9
+ if (ifFunction(input)) {
10
+ return theFunction(input);
11
+ }
12
+ else {
13
+ return elseFunction(input);
14
+ }
15
+ }
16
+
17
+ exports.whenElse = whenElse;
@@ -0,0 +1,5 @@
1
+ import { type EscapeVoid, type AnyValue, type BreakGenericLink } from "./types";
2
+ export declare function whenElse<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput1 extends AnyValue | EscapeVoid, GenericOutput2 extends AnyValue | EscapeVoid>(predicate: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: GenericPredicatedInput) => GenericOutput1, elseFunction: (predicatedInput: Exclude<GenericInput, GenericPredicatedInput>) => GenericOutput2): (input: GenericInput) => BreakGenericLink<GenericOutput1> | BreakGenericLink<GenericOutput2>;
3
+ export declare function whenElse<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput1 extends AnyValue | EscapeVoid, GenericOutput2 extends AnyValue | EscapeVoid>(input: GenericInput, predicate: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: GenericPredicatedInput) => GenericOutput1, elseFunction: (predicatedInput: Exclude<GenericInput, GenericPredicatedInput>) => GenericOutput2): GenericOutput1 | GenericOutput2;
4
+ export declare function whenElse<GenericInput extends AnyValue, GenericOutput1 extends AnyValue | EscapeVoid, GenericOutput2 extends AnyValue | EscapeVoid>(predicate: (input: GenericInput) => boolean, theFunction: (predicatedInput: GenericInput) => GenericOutput1, elseFunction: (predicatedInput: GenericInput) => GenericOutput2): (input: GenericInput) => GenericOutput1 | GenericOutput2;
5
+ export declare function whenElse<GenericInput extends AnyValue, GenericOutput1 extends AnyValue | EscapeVoid, GenericOutput2 extends AnyValue | EscapeVoid>(input: GenericInput, predicate: (input: GenericInput) => boolean, theFunction: (predicatedInput: GenericInput) => GenericOutput1, elseFunction: (predicatedInput: GenericInput) => GenericOutput2): BreakGenericLink<GenericOutput1> | BreakGenericLink<GenericOutput2>;
@@ -0,0 +1,15 @@
1
+ function whenElse(...args) {
2
+ if (args.length === 3) {
3
+ const [ifFunction, theFunction, elseFunction] = args;
4
+ return (input) => whenElse(input, ifFunction, theFunction, elseFunction);
5
+ }
6
+ const [input, ifFunction, theFunction, elseFunction] = args;
7
+ if (ifFunction(input)) {
8
+ return theFunction(input);
9
+ }
10
+ else {
11
+ return elseFunction(input);
12
+ }
13
+ }
14
+
15
+ export { whenElse };
@@ -1,5 +1,5 @@
1
- import { type EscapeVoid, type AnyValue } from "./types";
2
- export declare function whenNot<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput extends AnyValue | EscapeVoid>(ifFunction: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: Exclude<GenericInput, GenericPredicatedInput>) => GenericOutput): (input: GenericInput) => GenericOutput | GenericPredicatedInput;
1
+ import { type EscapeVoid, type AnyValue, type BreakGenericLink } from "./types";
2
+ export declare function whenNot<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput extends AnyValue | EscapeVoid>(ifFunction: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: Exclude<GenericInput, GenericPredicatedInput>) => GenericOutput): (input: GenericInput) => GenericOutput | BreakGenericLink<GenericPredicatedInput>;
3
3
  export declare function whenNot<GenericInput extends AnyValue, GenericPredicatedInput extends GenericInput, GenericOutput extends AnyValue | EscapeVoid>(input: GenericInput, ifFunction: (input: GenericInput) => input is GenericPredicatedInput, theFunction: (predicatedInput: Exclude<GenericInput, GenericPredicatedInput>) => GenericOutput): GenericOutput | GenericPredicatedInput;
4
4
  export declare function whenNot<GenericInput extends AnyValue, GenericOutput extends AnyValue | EscapeVoid>(ifFunction: (input: GenericInput) => boolean, theFunction: (predicatedInput: GenericInput) => GenericOutput): (input: GenericInput) => GenericOutput | GenericInput;
5
5
  export declare function whenNot<GenericInput extends AnyValue, GenericOutput extends AnyValue | EscapeVoid>(input: GenericInput, ifFunction: (input: GenericInput) => boolean, theFunction: (predicatedInput: GenericInput) => GenericOutput): GenericOutput | GenericInput;