@sparted/shared-library 1.0.0 → 1.0.1-O

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 (321) hide show
  1. package/.circleci/config.yml +40 -0
  2. package/.eslintignore +1 -0
  3. package/.eslintrc.js +17 -0
  4. package/.gitignore +37 -0
  5. package/CHANGELOG.md +43 -0
  6. package/README.md +26 -0
  7. package/{array → dist/array}/array-to-map.d.ts +1 -1
  8. package/{array → dist/array}/array-to-map.js +1 -1
  9. package/dist/array/array-to-map.js.map +1 -0
  10. package/{array → dist/array}/get-values-from-keys.js +1 -3
  11. package/dist/array/get-values-from-keys.js.map +1 -0
  12. package/dist/cdn/cdn.factory.d.ts +11 -0
  13. package/dist/cdn/cdn.factory.js +59 -0
  14. package/dist/cdn/cdn.factory.js.map +1 -0
  15. package/dist/cdn/index.d.ts +2 -0
  16. package/dist/cdn/index.js +10 -0
  17. package/dist/cdn/types/cdn-factory.type.d.ts +26 -0
  18. package/dist/cdn/types/index.d.ts +1 -0
  19. package/dist/cdn/utils/extract-info-from-url.util.d.ts +6 -0
  20. package/dist/cdn/utils/extract-info-from-url.util.js +20 -0
  21. package/dist/cdn/utils/extract-info-from-url.util.js.map +1 -0
  22. package/dist/cdn/utils/get-cdn-from-s3-url.util.d.ts +6 -0
  23. package/dist/cdn/utils/get-cdn-from-s3-url.util.js +20 -0
  24. package/dist/cdn/utils/get-cdn-from-s3-url.util.js.map +1 -0
  25. package/dist/cdn/utils/get-cdn-url.util.d.ts +8 -0
  26. package/dist/cdn/utils/get-cdn-url.util.js +13 -0
  27. package/dist/cdn/utils/get-cdn-url.util.js.map +1 -0
  28. package/dist/index.d.ts +14 -0
  29. package/{index.js → dist/index.js} +2 -0
  30. package/{index.js.map → dist/index.js.map} +1 -1
  31. package/dist/linked-list/apply-diff-linked-list.js.map +1 -0
  32. package/{linked-list → dist/linked-list}/create-linked-list.js +2 -2
  33. package/dist/linked-list/create-linked-list.js.map +1 -0
  34. package/dist/linked-list/find-linked-list.js +26 -0
  35. package/dist/linked-list/find-linked-list.js.map +1 -0
  36. package/{linked-list → dist/linked-list}/get-linked-list.js.map +1 -1
  37. package/{linked-list → dist/linked-list}/linked-list-utils.js +3 -3
  38. package/dist/linked-list/linked-list-utils.js.map +1 -0
  39. package/{linked-list → dist/linked-list}/reduce-linked-list.js +3 -5
  40. package/dist/linked-list/reduce-linked-list.js.map +1 -0
  41. package/{linked-list → dist/linked-list}/remove-linked-list.js +1 -1
  42. package/dist/linked-list/remove-linked-list.js.map +1 -0
  43. package/dist/linked-list/update-linked-list.js.map +1 -0
  44. package/dist/linked-list/while-linked-list.js.map +1 -0
  45. package/dist/math/clamp-number.js.map +1 -0
  46. package/dist/math/interpolate.js.map +1 -0
  47. package/dist/package.json +61 -0
  48. package/dist/parsing/parse-boolean.js.map +1 -0
  49. package/dist/parsing/parse-enum.js.map +1 -0
  50. package/dist/parsing/parse-number.js.map +1 -0
  51. package/{predicates → dist/predicates}/is-function.js +1 -3
  52. package/dist/predicates/is-function.js.map +1 -0
  53. package/{predicates → dist/predicates}/is-null.js +1 -3
  54. package/dist/predicates/is-null.js.map +1 -0
  55. package/{predicates → dist/predicates}/is-object.js +1 -3
  56. package/dist/predicates/is-object.js.map +1 -0
  57. package/{predicates → dist/predicates}/is-primitive.js +1 -3
  58. package/dist/predicates/is-primitive.js.map +1 -0
  59. package/{predicates → dist/predicates}/is-undefined.js +1 -3
  60. package/dist/predicates/is-undefined.js.map +1 -0
  61. package/dist/string/index.js.map +1 -0
  62. package/dist/time/constants.js.map +1 -0
  63. package/{time → dist/time}/convert.js.map +1 -1
  64. package/dist/time/get-time-diff-as-string.js.map +1 -0
  65. package/dist/types/index.js +3 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/global.d.ts +2 -0
  68. package/package.json +13 -2
  69. package/rollup.config.ts +15 -0
  70. package/src/array/__tests__/array-to-map.test.ts +50 -0
  71. package/src/array/__tests__/get-values-from-keys.test.ts +14 -0
  72. package/src/array/array-to-map.ts +32 -0
  73. package/src/array/get-values-from-keys.ts +3 -0
  74. package/src/array/index.ts +2 -0
  75. package/src/cdn/__tests__/cdn.factory.test.ts +126 -0
  76. package/src/cdn/__tests__/utils.test.ts +466 -0
  77. package/src/cdn/cdn.factory.ts +73 -0
  78. package/src/cdn/index.ts +2 -0
  79. package/src/cdn/types/cdn-factory.type.ts +39 -0
  80. package/src/cdn/types/index.ts +1 -0
  81. package/src/cdn/utils/extract-info-from-url.util.ts +25 -0
  82. package/src/cdn/utils/get-cdn-from-s3-url.util.ts +20 -0
  83. package/src/cdn/utils/get-cdn-url.util.ts +26 -0
  84. package/src/formatting/__tests__/format-number.test.ts +11 -0
  85. package/src/formatting/format-number.ts +14 -0
  86. package/src/formatting/index.ts +1 -0
  87. package/src/fp/__tests__/run-while.test.ts +29 -0
  88. package/src/fp/index.ts +1 -0
  89. package/src/fp/run-while.ts +54 -0
  90. package/src/http/__tests__/build-search-params.test.ts +17 -0
  91. package/src/http/__tests__/encode-search-object.test.ts +34 -0
  92. package/src/http/__tests__/fetch-with-timeout.test.ts +50 -0
  93. package/src/http/build-search-params.ts +18 -0
  94. package/src/http/encode-search-object.ts +39 -0
  95. package/src/http/fetch-with-timeout.ts +24 -0
  96. package/src/http/index.ts +3 -0
  97. package/{index.d.ts → src/index.ts} +14 -13
  98. package/src/linked-list/__tests__/apply-diff-linked-list.test.ts +103 -0
  99. package/src/linked-list/__tests__/create-linked-list.test.ts +204 -0
  100. package/src/linked-list/__tests__/find-linked-list.test.ts +40 -0
  101. package/src/linked-list/__tests__/get-linked-list.test.ts +28 -0
  102. package/src/linked-list/__tests__/insert-linked-list.test.ts +186 -0
  103. package/src/linked-list/__tests__/linked-list-utils.test.ts +252 -0
  104. package/src/linked-list/__tests__/reduce-linked-list.test.ts +31 -0
  105. package/src/linked-list/__tests__/remove-linked-list.test.ts +129 -0
  106. package/src/linked-list/__tests__/update-linked-list.test.ts +53 -0
  107. package/src/linked-list/__tests__/while-linked-list.test.ts +58 -0
  108. package/src/linked-list/apply-diff-linked-list.ts +35 -0
  109. package/src/linked-list/create-linked-list.ts +79 -0
  110. package/src/linked-list/find-linked-list.ts +26 -0
  111. package/src/linked-list/get-linked-list.ts +9 -0
  112. package/src/linked-list/index.ts +2 -0
  113. package/src/linked-list/insert-linked-list.ts +50 -0
  114. package/src/linked-list/linked-list-utils.ts +143 -0
  115. package/src/linked-list/reduce-linked-list.ts +18 -0
  116. package/src/linked-list/remove-linked-list.ts +36 -0
  117. package/src/linked-list/type.ts +38 -0
  118. package/src/linked-list/update-linked-list.ts +29 -0
  119. package/src/linked-list/while-linked-list.ts +33 -0
  120. package/src/math/__tests__/clamp-number.test.ts +30 -0
  121. package/src/math/__tests__/interpolate.test.ts +28 -0
  122. package/src/math/__tests__/number-range.test.ts +59 -0
  123. package/src/math/__tests__/random-number.test.ts +11 -0
  124. package/src/math/clamp-number.ts +8 -0
  125. package/src/math/index.ts +4 -0
  126. package/src/math/interpolate.ts +18 -0
  127. package/src/math/number-range.ts +16 -0
  128. package/src/math/random-number.ts +10 -0
  129. package/src/object/__tests__/merge-deep.test.ts +56 -0
  130. package/src/object/index.ts +1 -0
  131. package/src/object/merge-deep.ts +27 -0
  132. package/src/parsing/__tests__/parse-boolean.test.ts +15 -0
  133. package/src/parsing/__tests__/parse-enum.test.ts +19 -0
  134. package/src/parsing/__tests__/parse-number.test.ts +20 -0
  135. package/src/parsing/index.ts +3 -0
  136. package/src/parsing/parse-boolean.ts +10 -0
  137. package/src/parsing/parse-enum.ts +16 -0
  138. package/src/parsing/parse-number.ts +12 -0
  139. package/src/predicates/__tests__/is-function.test.ts +11 -0
  140. package/src/predicates/__tests__/is-null.test.ts +11 -0
  141. package/src/predicates/__tests__/is-object.test.ts +11 -0
  142. package/src/predicates/__tests__/is-primitive.test.ts +42 -0
  143. package/src/predicates/__tests__/is-undefined.test.ts +11 -0
  144. package/src/predicates/__tests__/is-uuid.test.ts +13 -0
  145. package/src/predicates/index.ts +5 -0
  146. package/src/predicates/is-function.ts +3 -0
  147. package/src/predicates/is-null.ts +3 -0
  148. package/src/predicates/is-object.ts +3 -0
  149. package/src/predicates/is-primitive.ts +19 -0
  150. package/src/predicates/is-undefined.ts +3 -0
  151. package/src/predicates/is-uuid.ts +3 -0
  152. package/src/promise/__tests__/delay.test.ts +13 -0
  153. package/src/promise/__tests__/execute-or-resolve-default.test.ts +25 -0
  154. package/src/promise/__tests__/execute-with-delay.test.ts +24 -0
  155. package/src/promise/delay.ts +3 -0
  156. package/src/promise/execute-or-resolve-default.ts +14 -0
  157. package/src/promise/execute-with-delay.ts +6 -0
  158. package/src/promise/index.ts +3 -0
  159. package/src/string/__tests__/replace-in-template.test.ts +52 -0
  160. package/src/string/index.ts +1 -0
  161. package/src/string/replace-in-template.ts +45 -0
  162. package/src/time/__tests__/convert.test.ts +14 -0
  163. package/src/time/__tests__/format-minutes.test.ts +10 -0
  164. package/src/time/__tests__/get-time-diff-as-string.test.ts +128 -0
  165. package/src/time/constants.ts +4 -0
  166. package/src/time/convert.ts +5 -0
  167. package/src/time/format-minutes.ts +9 -0
  168. package/src/time/get-time-diff-as-string.ts +196 -0
  169. package/src/time/index.ts +4 -0
  170. package/src/types/function.ts +1 -0
  171. package/src/types/general.ts +10 -0
  172. package/src/types/index.ts +4 -0
  173. package/src/types/object.ts +33 -0
  174. package/src/types/search.ts +29 -0
  175. package/tsconfig.eslint.json +8 -0
  176. package/tsconfig.json +25 -0
  177. package/yarn.lock +4028 -0
  178. package/array/array-to-map.js.map +0 -1
  179. package/array/get-values-from-keys.js.map +0 -1
  180. package/linked-list/apply-diff-linked-list.js.map +0 -1
  181. package/linked-list/create-linked-list.js.map +0 -1
  182. package/linked-list/find-linked-list.js +0 -28
  183. package/linked-list/find-linked-list.js.map +0 -1
  184. package/linked-list/linked-list-utils.js.map +0 -1
  185. package/linked-list/reduce-linked-list.js.map +0 -1
  186. package/linked-list/remove-linked-list.js.map +0 -1
  187. package/linked-list/update-linked-list.js.map +0 -1
  188. package/linked-list/while-linked-list.js.map +0 -1
  189. package/math/clamp-number.js.map +0 -1
  190. package/math/interpolate.js.map +0 -1
  191. package/parsing/parse-boolean.js.map +0 -1
  192. package/parsing/parse-enum.js.map +0 -1
  193. package/parsing/parse-number.js.map +0 -1
  194. package/predicates/is-function.js.map +0 -1
  195. package/predicates/is-null.js.map +0 -1
  196. package/predicates/is-object.js.map +0 -1
  197. package/predicates/is-primitive.js.map +0 -1
  198. package/predicates/is-undefined.js.map +0 -1
  199. package/time/constants.js.map +0 -1
  200. package/time/get-time-diff-as-string.js.map +0 -1
  201. /package/{_virtual → dist/_virtual}/_tslib.js +0 -0
  202. /package/{_virtual → dist/_virtual}/_tslib.js.map +0 -0
  203. /package/{array → dist/array}/get-values-from-keys.d.ts +0 -0
  204. /package/{array → dist/array}/index.d.ts +0 -0
  205. /package/{array → dist/array}/index.js +0 -0
  206. /package/{array → dist/array}/index.js.map +0 -0
  207. /package/{formatting → dist/cdn}/index.js.map +0 -0
  208. /package/{types → dist/cdn/types}/index.js +0 -0
  209. /package/{types → dist/cdn/types}/index.js.map +0 -0
  210. /package/{formatting → dist/formatting}/format-number.d.ts +0 -0
  211. /package/{formatting → dist/formatting}/format-number.js +0 -0
  212. /package/{formatting → dist/formatting}/format-number.js.map +0 -0
  213. /package/{formatting → dist/formatting}/index.d.ts +0 -0
  214. /package/{formatting → dist/formatting}/index.js +0 -0
  215. /package/{fp → dist/formatting}/index.js.map +0 -0
  216. /package/{fp → dist/fp}/index.d.ts +0 -0
  217. /package/{fp → dist/fp}/index.js +0 -0
  218. /package/{linked-list → dist/fp}/index.js.map +0 -0
  219. /package/{fp → dist/fp}/run-while.d.ts +0 -0
  220. /package/{fp → dist/fp}/run-while.js +0 -0
  221. /package/{fp → dist/fp}/run-while.js.map +0 -0
  222. /package/{http → dist/http}/encode-search-object.d.ts +0 -0
  223. /package/{http → dist/http}/encode-search-object.js +0 -0
  224. /package/{http → dist/http}/encode-search-object.js.map +0 -0
  225. /package/{http → dist/http}/fetch-with-timeout.d.ts +0 -0
  226. /package/{http → dist/http}/fetch-with-timeout.js +0 -0
  227. /package/{http → dist/http}/fetch-with-timeout.js.map +0 -0
  228. /package/{http → dist/http}/index.d.ts +0 -0
  229. /package/{http → dist/http}/index.js +0 -0
  230. /package/{http → dist/http}/index.js.map +0 -0
  231. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.d.ts +0 -0
  232. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.js +0 -0
  233. /package/{linked-list → dist/linked-list}/create-linked-list.d.ts +0 -0
  234. /package/{linked-list → dist/linked-list}/find-linked-list.d.ts +0 -0
  235. /package/{linked-list → dist/linked-list}/get-linked-list.d.ts +0 -0
  236. /package/{linked-list → dist/linked-list}/get-linked-list.js +0 -0
  237. /package/{linked-list → dist/linked-list}/index.d.ts +0 -0
  238. /package/{linked-list → dist/linked-list}/index.js +0 -0
  239. /package/{object → dist/linked-list}/index.js.map +0 -0
  240. /package/{linked-list → dist/linked-list}/insert-linked-list.d.ts +0 -0
  241. /package/{linked-list → dist/linked-list}/insert-linked-list.js +0 -0
  242. /package/{linked-list → dist/linked-list}/insert-linked-list.js.map +0 -0
  243. /package/{linked-list → dist/linked-list}/linked-list-utils.d.ts +0 -0
  244. /package/{linked-list → dist/linked-list}/reduce-linked-list.d.ts +0 -0
  245. /package/{linked-list → dist/linked-list}/remove-linked-list.d.ts +0 -0
  246. /package/{linked-list → dist/linked-list}/type.d.ts +0 -0
  247. /package/{linked-list → dist/linked-list}/update-linked-list.d.ts +0 -0
  248. /package/{linked-list → dist/linked-list}/update-linked-list.js +0 -0
  249. /package/{linked-list → dist/linked-list}/while-linked-list.d.ts +0 -0
  250. /package/{linked-list → dist/linked-list}/while-linked-list.js +0 -0
  251. /package/{math → dist/math}/clamp-number.d.ts +0 -0
  252. /package/{math → dist/math}/clamp-number.js +0 -0
  253. /package/{math → dist/math}/index.d.ts +0 -0
  254. /package/{math → dist/math}/index.js +0 -0
  255. /package/{math → dist/math}/index.js.map +0 -0
  256. /package/{math → dist/math}/interpolate.d.ts +0 -0
  257. /package/{math → dist/math}/interpolate.js +0 -0
  258. /package/{math → dist/math}/number-range.d.ts +0 -0
  259. /package/{math → dist/math}/number-range.js +0 -0
  260. /package/{math → dist/math}/number-range.js.map +0 -0
  261. /package/{math → dist/math}/random-number.d.ts +0 -0
  262. /package/{math → dist/math}/random-number.js +0 -0
  263. /package/{math → dist/math}/random-number.js.map +0 -0
  264. /package/{object → dist/object}/index.d.ts +0 -0
  265. /package/{object → dist/object}/index.js +0 -0
  266. /package/{string → dist/object}/index.js.map +0 -0
  267. /package/{object → dist/object}/merge-deep.d.ts +0 -0
  268. /package/{object → dist/object}/merge-deep.js +0 -0
  269. /package/{object → dist/object}/merge-deep.js.map +0 -0
  270. /package/{parsing → dist/parsing}/index.d.ts +0 -0
  271. /package/{parsing → dist/parsing}/index.js +0 -0
  272. /package/{parsing → dist/parsing}/index.js.map +0 -0
  273. /package/{parsing → dist/parsing}/parse-boolean.d.ts +0 -0
  274. /package/{parsing → dist/parsing}/parse-boolean.js +0 -0
  275. /package/{parsing → dist/parsing}/parse-enum.d.ts +0 -0
  276. /package/{parsing → dist/parsing}/parse-enum.js +0 -0
  277. /package/{parsing → dist/parsing}/parse-number.d.ts +0 -0
  278. /package/{parsing → dist/parsing}/parse-number.js +0 -0
  279. /package/{predicates → dist/predicates}/index.d.ts +0 -0
  280. /package/{predicates → dist/predicates}/index.js +0 -0
  281. /package/{predicates → dist/predicates}/index.js.map +0 -0
  282. /package/{predicates → dist/predicates}/is-function.d.ts +0 -0
  283. /package/{predicates → dist/predicates}/is-null.d.ts +0 -0
  284. /package/{predicates → dist/predicates}/is-object.d.ts +0 -0
  285. /package/{predicates → dist/predicates}/is-primitive.d.ts +0 -0
  286. /package/{predicates → dist/predicates}/is-undefined.d.ts +0 -0
  287. /package/{predicates → dist/predicates}/is-uuid.d.ts +0 -0
  288. /package/{promise → dist/promise}/delay.d.ts +0 -0
  289. /package/{promise → dist/promise}/delay.js +0 -0
  290. /package/{promise → dist/promise}/delay.js.map +0 -0
  291. /package/{promise → dist/promise}/execute-or-resolve-default.d.ts +0 -0
  292. /package/{promise → dist/promise}/execute-or-resolve-default.js +0 -0
  293. /package/{promise → dist/promise}/execute-or-resolve-default.js.map +0 -0
  294. /package/{promise → dist/promise}/execute-with-delay.d.ts +0 -0
  295. /package/{promise → dist/promise}/execute-with-delay.js +0 -0
  296. /package/{promise → dist/promise}/execute-with-delay.js.map +0 -0
  297. /package/{promise → dist/promise}/index.d.ts +0 -0
  298. /package/{promise → dist/promise}/index.js +0 -0
  299. /package/{promise → dist/promise}/index.js.map +0 -0
  300. /package/{string → dist/string}/index.d.ts +0 -0
  301. /package/{string → dist/string}/index.js +0 -0
  302. /package/{string → dist/string}/replace-in-template.d.ts +0 -0
  303. /package/{string → dist/string}/replace-in-template.js +0 -0
  304. /package/{string → dist/string}/replace-in-template.js.map +0 -0
  305. /package/{time → dist/time}/constants.d.ts +0 -0
  306. /package/{time → dist/time}/constants.js +0 -0
  307. /package/{time → dist/time}/convert.d.ts +0 -0
  308. /package/{time → dist/time}/convert.js +0 -0
  309. /package/{time → dist/time}/format-minutes.d.ts +0 -0
  310. /package/{time → dist/time}/format-minutes.js +0 -0
  311. /package/{time → dist/time}/format-minutes.js.map +0 -0
  312. /package/{time → dist/time}/get-time-diff-as-string.d.ts +0 -0
  313. /package/{time → dist/time}/get-time-diff-as-string.js +0 -0
  314. /package/{time → dist/time}/index.d.ts +0 -0
  315. /package/{time → dist/time}/index.js +0 -0
  316. /package/{time → dist/time}/index.js.map +0 -0
  317. /package/{types → dist/types}/function.d.ts +0 -0
  318. /package/{types → dist/types}/general.d.ts +0 -0
  319. /package/{types → dist/types}/index.d.ts +0 -0
  320. /package/{types → dist/types}/object.d.ts +0 -0
  321. /package/{types → dist/types}/search.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"array-to-map.js","sources":["../../src/array/array-to-map.ts"],"sourcesContent":["export type ArrayToMapOptions<InitialValue, ModifiedValue = InitialValue> = {\n /**\n * Function to return the key used in the map.\n */\n selectKey: (value: InitialValue) => string,\n /**\n * Transform the initial data into another value\n */\n dataModifier?: (value: InitialValue) => ModifiedValue;\n};\n\n/**\n * Transform an array to a map.\n */\nexport const arrayToMap = <InitialValue, ModifiedValue = InitialValue>(\n array: ReadonlyArray<InitialValue>,\n options: ArrayToMapOptions<InitialValue, ModifiedValue>,\n) => {\n const { selectKey } = options;\n\n return array.reduce<Record<string, ModifiedValue>>((acc, current) => {\n const key = selectKey(current);\n const value = options.dataModifier\n ? options.dataModifier(current)\n : current;\n\n return {\n ...acc,\n [key]: value as ModifiedValue,\n };\n }, {});\n};\n"],"names":[],"mappings":";;;;AAWA;;AAEG;MACU,UAAU,GAAG,CACxB,KAAkC,EAClC,OAAuD,KACrD;AACF,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,OAAO,KAAK,CAAC,MAAM,CAAgC,CAAC,GAAG,EAAE,OAAO,KAAI;AAClE,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/B,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY;AAChC,cAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;cAC7B,OAAO,CAAC;AAEZ,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,GAAG,CACN,EAAA,EAAA,CAAC,GAAG,GAAG,KAAsB,EAC7B,CAAA,CAAA;KACH,EAAE,EAAE,CAAC,CAAC;AACT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-values-from-keys.js","sources":["../../src/array/get-values-from-keys.ts"],"sourcesContent":["export const valuesFromKeys = <T>(keys: string[], map: Record<string, T>) => {\n return keys.map((key) => map[key]);\n};\n"],"names":[],"mappings":";;;;MAAa,cAAc,GAAG,CAAI,IAAc,EAAE,GAAsB,KAAI;AAC1E,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-diff-linked-list.js","sources":["../../src/linked-list/apply-diff-linked-list.ts"],"sourcesContent":["import { LinkedList, LinkedListItem, ManipulationConfig } from './type';\n\nexport const applyDiffLinkedList = <T extends LinkedListItem>(\n before: T | null,\n after: T | null,\n list: LinkedList<T>,\n) => {\n // Delete\n if (!after && before) {\n return list.remove(before.id);\n }\n\n // Insert\n if (!before && after) {\n return list.insert(after);\n }\n\n // For the following commands, none of the 2 items can be null\n // We dont use && because checks are already done above, but ts cannot infer that they cannot be null afterwards\n if (!before || !after) {\n throw new Error('Cannot have both before & after as null');\n }\n\n if (before.id !== after.id) {\n throw new Error('Cannot change id of a ListNode');\n }\n\n const listWithPotentialReorder = before.nextId === after.nextId\n ? list\n : list\n .remove(before.id)\n .insert(after);\n\n return listWithPotentialReorder.update(after);\n};"],"names":[],"mappings":";;;;AAEa,MAAA,mBAAmB,GAAG,CACjC,MAAgB,EAChB,KAAe,EACf,IAAmB,KACjB;;AAEF,IAAA,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/B,KAAA;;AAGD,IAAA,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAA;;;AAID,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AACrB,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC5D,KAAA;AAED,IAAA,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;AAC1B,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACnD,KAAA;IAED,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAC7D,UAAE,IAAI;AACN,UAAE,IAAI;AACH,aAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aACjB,MAAM,CAAC,KAAK,CAAC,CAAC;AAEnB,IAAA,OAAO,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-linked-list.js","sources":["../../src/linked-list/create-linked-list.ts"],"sourcesContent":["import { LinkedListItem, LinkedList, ManipulationConfig, LinkedListFormat } from './type';\n\nimport { reduceLinkedList } from './reduce-linked-list';\nimport { findLinkedList } from './find-linked-list';\nimport { whileLinkedList } from './while-linked-list';\nimport { walkListItemRecord } from './linked-list-utils';\nimport { removeLinkedList } from './remove-linked-list';\nimport { insertLinkedList } from './insert-linked-list';\nimport { getLinkedList } from './get-linked-list';\nimport { updateLinkedList } from './update-linked-list';\nimport { applyDiffLinkedList } from './apply-diff-linked-list';\n\ntype LinkedListValidation = {\n format: LinkedListFormat | null,\n previousId: null | string,\n count: number,\n}\n\nexport const createLinkedList = <T extends LinkedListItem>(headId: string | null, items: Record<string, T>): LinkedList<T> => {\n const head = headId ? items[headId] : null;\n\n if (head === undefined) {\n throw new Error('Cannot find the head.');\n }\n\n const list = { headId, items };\n\n const { format, count } = walkListItemRecord((acc, current) => {\n const newCount = acc.count + 1;\n const currentNodeFormat: LinkedListFormat = current.previousId !== undefined ? 'double' : 'single';\n const incompatibleFormats = acc.format !== null && acc.format !== currentNodeFormat;\n\n if (incompatibleFormats || (currentNodeFormat === 'double' && current.previousId !== acc.previousId)) {\n throw new Error('Invalid previous node in the linked list');\n }\n\n return {\n result: {\n previousId: current.id,\n format: currentNodeFormat,\n count: newCount,\n }\n }\n }, {\n initValue: {\n format: null,\n count: 0,\n previousId: null,\n } as LinkedListValidation,\n startId: headId,\n items,\n });\n\n const manipulationConfig: ManipulationConfig<T> = {\n factory: (list) => createLinkedList(list.headId, list.items),\n /**\n * At this point isDoubleLinked cannot be undefined\n */\n format,\n list,\n };\n\n const linkedList: LinkedList<T> = {\n head,\n items,\n format,\n size: count,\n reduce: (cb, initValue) => reduceLinkedList(cb, initValue, list),\n find: (predicate) => findLinkedList(predicate, list),\n while: (predicate, startId) => whileLinkedList(predicate, list, startId),\n remove: (id) => removeLinkedList(id, manipulationConfig),\n insert: (item) => insertLinkedList(item, manipulationConfig),\n get: (id) => getLinkedList(id, list),\n update: (item) => updateLinkedList(item, manipulationConfig),\n applyDiff: (before, after) => applyDiffLinkedList(before, after, linkedList),\n };\n\n return linkedList;\n};"],"names":["walkListItemRecord","reduceLinkedList","findLinkedList","whileLinkedList","removeLinkedList","insertLinkedList","getLinkedList","updateLinkedList","applyDiffLinkedList"],"mappings":";;;;;;;;;;;;;;MAkBa,gBAAgB,GAAG,CAA2B,MAAqB,EAAE,KAAwB,KAAmB;AAC3H,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAE3C,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC1C,KAAA;AAED,IAAA,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE/B,IAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAGA,kCAAkB,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAC5D,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,QAAA,MAAM,iBAAiB,GAAqB,OAAO,CAAC,UAAU,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACnG,QAAA,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,iBAAiB,CAAC;AAEpF,QAAA,IAAI,mBAAmB,KAAK,iBAAiB,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,CAAC,EAAE;AACpG,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC7D,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE;gBACN,UAAU,EAAE,OAAO,CAAC,EAAE;AACtB,gBAAA,MAAM,EAAE,iBAAiB;AACzB,gBAAA,KAAK,EAAE,QAAQ;AAChB,aAAA;SACF,CAAA;AACH,KAAC,EAAE;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,UAAU,EAAE,IAAI;AACO,SAAA;AACzB,QAAA,OAAO,EAAE,MAAM;QACf,KAAK;AACN,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,kBAAkB,GAA0B;AAChD,QAAA,OAAO,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;AAC5D;;AAEG;QACH,MAAM;QACN,IAAI;KACL,CAAC;AAEF,IAAA,MAAM,UAAU,GAAkB;QAChC,IAAI;QACJ,KAAK;QACL,MAAM;AACN,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,KAAKC,iCAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC;QAChE,IAAI,EAAE,CAAC,SAAS,KAAKC,6BAAc,CAAC,SAAS,EAAE,IAAI,CAAC;AACpD,QAAA,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,KAAKC,+BAAe,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC;QACxE,MAAM,EAAE,CAAC,EAAE,KAAKC,iCAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC;QACxD,MAAM,EAAE,CAAC,IAAI,KAAKC,iCAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAC5D,GAAG,EAAE,CAAC,EAAE,KAAKC,2BAAa,CAAC,EAAE,EAAE,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,IAAI,KAAKC,iCAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC;AAC5D,QAAA,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,KAAKC,uCAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;KAC7E,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC;AACpB;;;;"}
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var linkedListUtils = require('./linked-list-utils.js');
6
-
7
- const findLinkedList = (predicate, list) => {
8
- return linkedListUtils.walkListItemRecord((acc, item) => {
9
- if (predicate(item)) {
10
- return {
11
- result: item,
12
- control: {
13
- stop: true,
14
- },
15
- };
16
- }
17
- return {
18
- result: acc,
19
- };
20
- }, {
21
- initValue: null,
22
- items: list.items,
23
- startId: list.headId,
24
- });
25
- };
26
-
27
- exports.findLinkedList = findLinkedList;
28
- //# sourceMappingURL=find-linked-list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-linked-list.js","sources":["../../src/linked-list/find-linked-list.ts"],"sourcesContent":["import { LinkedListItem, ItemPredicate, SimpleLinkedList } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const findLinkedList = <Item extends LinkedListItem>(\n predicate: ItemPredicate<Item>,\n list: SimpleLinkedList<Item>,\n): Item | null => {\n const { headId } = list;\n\n return walkListItemRecord(\n (acc, item) => {\n if (predicate(item)) {\n return {\n result: item,\n control: {\n stop: true,\n },\n };\n };\n\n return {\n result: acc,\n };\n }, {\n initValue: null as Item | null,\n items: list.items,\n startId: list.headId,\n },\n );\n};\n"],"names":["walkListItemRecord"],"mappings":";;;;;;MAGa,cAAc,GAAG,CAC5B,SAA8B,EAC9B,IAA4B,KACb;AAGf,IAAA,OAAOA,kCAAkB,CACvB,CAAC,GAAG,EAAE,IAAI,KAAI;AACZ,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO;AACL,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;aACF,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE,GAAG;SACZ,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,SAAS,EAAE,IAAmB;QAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,MAAM;AACrB,KAAA,CACF,CAAC;AACJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"linked-list-utils.js","sources":["../../src/linked-list/linked-list-utils.ts"],"sourcesContent":["import { runWhile } from '../fp';\nimport { LinkedListFormat, LinkedListItem, SimpleLinkedList } from './type';\n\nexport type WalkConfig<T extends LinkedListItem, Result> = {\n startId: string | null,\n items: Record<string, T>,\n initValue: Result,\n}\n\ntype WalkCallbackResult<R> = {\n result: R,\n control?: {\n stop?: boolean,\n },\n};\n\nexport type WalkCallback<Item, Result> = (accumulator: Result, current: Item) => WalkCallbackResult<Result>;\n\ntype RunWhileValue<T> = {\n currentId: string | null,\n accumulator: T,\n control: WalkCallbackResult<any>['control'],\n}\n\nexport const walkListItemRecord = <T extends LinkedListItem, Result>(\n callback: WalkCallback<T, Result>,\n config: WalkConfig<T, Result>,\n) => {\n const { items, startId, initValue } = config;\n const visited = new Set();\n const totalNodes = Object.keys(items).length;\n\n const { result } = runWhile({\n iterationLimit: totalNodes + 1,\n initialValue: {\n currentId: startId, \n accumulator: initValue,\n control: {\n stop: false,\n },\n } as RunWhileValue<Result>,\n predicate: ({ control, currentId }) => {\n const stop = control?.stop;\n const forcedStop = stop === undefined ? false : stop;\n\n /**\n * Stop early or when the end is reached\n */\n return !forcedStop && currentId !== null;\n },\n callback: (current) => {\n if (visited.has(current.currentId)) {\n throw new Error('Infinite loop found');\n }\n\n visited.add(current.currentId);\n\n const currentItem = items[current.currentId!];\n\n if (!currentItem) {\n throw new Error('Cul de sac detected');\n }\n\n const { result, control } = callback(current.accumulator, currentItem);\n\n return {\n accumulator: result,\n currentId: currentItem.nextId,\n control: control,\n };\n },\n });\n\n return result.accumulator;\n};\n\nexport const findPreviousId = <T extends LinkedListItem>(id: string | null, list: SimpleLinkedList<T>) => {\n if (id === list.headId) {\n return null;\n }\n\n return walkListItemRecord(\n (acc, current) => {\n if (current.nextId === id) {\n return {\n result: current.id,\n control: {\n stop: true,\n },\n };\n }\n\n return {\n result: acc,\n }\n },\n {\n initValue: null as null | string,\n startId: list.headId,\n items: list.items,\n }\n )\n};\n\nexport const assertItemCompatibility = <T extends LinkedListItem>(item: T, format: LinkedListFormat | null) => {\n /**\n * An empty linked list won't have any format yet, it will be\n * determined by the first item inserted in the list.\n */\n if (format === null) {\n return;\n }\n\n const incompatibleWithDoubleLinks = item.previousId === undefined && format === 'double';\n const incompatibleWithSingleLink = item.previousId !== undefined && format === 'single';\n\n if (incompatibleWithDoubleLinks || incompatibleWithSingleLink) {\n throw new Error(`Node is incompatible with the list (id: ${item.id})`);\n }\n}\n\nexport const assertPresence = (id: string | null | undefined, items: Record<string, unknown>) => {\n if (id && !items[id]) {\n throw new Error(`Node not found in the list (id: ${id})`);\n }\n}\n\ntype PositionAssertionConfig = {\n previousId: string | null,\n list: SimpleLinkedList<LinkedListItem>,\n};\n\nexport const assertNewNodePosition = <T extends LinkedListItem>(item: T, config: PositionAssertionConfig) => {\n const { previousId, list } = config;\n\n const insertionMiddleError = previousId && list.items[previousId].nextId !== item.nextId;\n const insertionTailError = previousId && item.nextId === null && list.items[previousId].nextId !== null;\n const insertionHeadError = previousId === null && item.nextId !== list.headId;\n\n if (insertionMiddleError || insertionTailError || insertionHeadError) {\n throw new Error(`Invalid position for given node (id: ${item.id})`);\n }\n}"],"names":["runWhile"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reduce-linked-list.js","sources":["../../src/linked-list/reduce-linked-list.ts"],"sourcesContent":["import { ReduceCallback, LinkedListItem, SimpleLinkedList } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const reduceLinkedList = <Item extends LinkedListItem, Result>(\n cb: ReduceCallback<Item, Result>,\n initValue: Result,\n list: SimpleLinkedList<Item>,\n): Result => {\n const { items, headId } = list;\n\n return walkListItemRecord((acc, current) => {\n return {\n result: cb(acc, current),\n };\n }, {\n startId: headId,\n items,\n initValue,\n });\n};\n"],"names":["walkListItemRecord"],"mappings":";;;;;;AAGa,MAAA,gBAAgB,GAAG,CAC9B,EAAgC,EAChC,SAAiB,EACjB,IAA4B,KAClB;AACV,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AAE/B,IAAA,OAAOA,kCAAkB,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;QACzC,OAAO;AACL,YAAA,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;SACzB,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,OAAO,EAAE,MAAM;QACf,KAAK;QACL,SAAS;AACV,KAAA,CAAC,CAAC;AACL;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-linked-list.js","sources":["../../src/linked-list/remove-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\nimport { assertPresence, findPreviousId } from './linked-list-utils';\n\nexport const removeLinkedList = <T extends LinkedListItem>(id: string, config: ManipulationConfig<T>) => {\n const { format, list, factory } = config;\n const { [id]: itemToDelete, ...otherItems } = list.items;\n\n assertPresence(id, list.items);\n\n const isDoubleLinkList = format === 'double';\n const previousId = isDoubleLinkList\n ? itemToDelete.previousId!\n : findPreviousId(id, list);\n\n const newHeadId = previousId === null ? itemToDelete.nextId : list.headId;\n const newItems = {\n ...otherItems,\n ...(previousId ? {\n [previousId]: {\n ...otherItems[previousId],\n nextId: itemToDelete.nextId,\n },\n } : {}),\n ...(isDoubleLinkList && itemToDelete.nextId ? {\n [itemToDelete.nextId]: {\n ...otherItems[itemToDelete.nextId],\n ...(isDoubleLinkList ? { previousId } : {}),\n }\n } : {}),\n };\n\n return factory({\n headId: newHeadId,\n items: newItems,\n });\n};"],"names":["__rest","assertPresence","findPreviousId"],"mappings":";;;;;;;MAGa,gBAAgB,GAAG,CAA2B,EAAU,EAAE,MAA6B,KAAI;IACtG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AACzC,IAAA,MAA8C,EAAA,GAAA,IAAI,CAAC,KAAK,EAAhD,EAAC,GAAA,EAAG,EAAE,YAAY,SAAA,EAAK,UAAU,GAAnCA,aAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,KAAA,QAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CAAqC,CAAa,CAAC;AAEzD,IAAAC,8BAAc,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAE/B,IAAA,MAAM,gBAAgB,GAAG,MAAM,KAAK,QAAQ,CAAC;IAC7C,MAAM,UAAU,GAAG,gBAAgB;UAC/B,YAAY,CAAC,UAAW;AAC1B,UAAEC,8BAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAE7B,IAAA,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1E,MAAM,QAAQ,iDACT,UAAU,CAAA,GACT,UAAU,GAAG;AACf,QAAA,CAAC,UAAU,GACN,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,UAAU,CAAC,UAAU,CAAC,CAAA,EAAA,EACzB,MAAM,EAAE,YAAY,CAAC,MAAM,EAC5B,CAAA;AACF,KAAA,GAAG,EAAE,EACH,GAAC,gBAAgB,IAAI,YAAY,CAAC,MAAM,GAAG;QAC5C,CAAC,YAAY,CAAC,MAAM,GAAC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAChB,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA,GAC9B,gBAAgB,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAC3C;AACF,KAAA,GAAG,EAAE,EACP,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC;AACb,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC,CAAC;AACL;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-linked-list.js","sources":["../../src/linked-list/update-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\nimport { assertPresence } from './linked-list-utils';\n\nexport const updateLinkedList = <T extends LinkedListItem>(item: T, config: ManipulationConfig<T>) => {\n const { list, factory } = config;\n\n assertPresence(item.id, list.items);\n\n /**\n * This method should not update any ids.\n */\n const { nextId, previousId, id, ...updatedProperties } = item;\n const currentItem = list.items[item.id];\n\n const newItems = {\n ...list.items,\n [item.id]: {\n nextId: currentItem.nextId,\n previousId: currentItem.previousId,\n id: currentItem.id,\n ...updatedProperties,\n } as T,\n };\n\n return factory({\n headId: list.headId,\n items: newItems,\n });\n};\n"],"names":["assertPresence","__rest"],"mappings":";;;;;;;MAGa,gBAAgB,GAAG,CAA2B,IAAO,EAAG,MAA6B,KAAI;AACpG,IAAA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEjCA,8BAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAEpC;;AAEG;AACH,IAAA,MAAmC,iBAAiB,GAAKC,aAAA,CAAA,IAAI,EAAvD,CAAA,QAAA,EAAA,YAAA,EAAA,IAAA,CAAgD,EAAQ;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAExC,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,IAAI,CAAC,KAAK,CACb,EAAA,EAAA,CAAC,IAAI,CAAC,EAAE,GAAG,MACT,CAAA,MAAA,CAAA,EAAA,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAA,EACf,iBAAiB,CAChB,GACP,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC,CAAC;AACL;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"while-linked-list.js","sources":["../../src/linked-list/while-linked-list.ts"],"sourcesContent":["\n\nimport { LinkedListItem, ItemPredicate, SimpleLinkedList } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const whileLinkedList = <Item extends LinkedListItem>(\n predicate: ItemPredicate<Item>,\n list: SimpleLinkedList<Item>,\n startId?: string,\n): string[] => {\n if (startId && !list.items[startId]) {\n throw new Error('Cannot start from a node that does not exist');\n }\n\n return walkListItemRecord(\n (acc, item) => {\n const itemMatched = predicate(item);\n\n if (itemMatched) {\n return {\n result: [...acc, item.id],\n };\n }\n\n return {\n result: acc,\n control: {\n stop: true,\n },\n };\n }, {\n initValue: [] as string[],\n startId: startId || list.headId,\n items: list.items,\n },\n );\n};\n"],"names":["walkListItemRecord"],"mappings":";;;;;;AAKa,MAAA,eAAe,GAAG,CAC7B,SAA8B,EAC9B,IAA4B,EAC5B,OAAgB,KACJ;IACZ,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACjE,KAAA;AAED,IAAA,OAAOA,kCAAkB,CACvB,CAAC,GAAG,EAAE,IAAI,KAAI;AACZ,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,QAAA,IAAI,WAAW,EAAE;YACf,OAAO;gBACL,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;aAC1B,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA;SACF,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,SAAS,EAAE,EAAc;AACzB,QAAA,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,KAAA,CACF,CAAC;AACJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clamp-number.js","sources":["../../src/math/clamp-number.ts"],"sourcesContent":["import { assertNumberRange } from './number-range';\nimport type { NumberRange } from './number-range';\n\nexport const clampNumber = (num: number, { min, max }: NumberRange) => {\n assertNumberRange({ min, max });\n\n return Math.min(Math.max(num, min), max);\n};"],"names":["assertNumberRange"],"mappings":";;;;;;AAGO,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAe,KAAI;AACpE,IAAAA,6BAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAEhC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"interpolate.js","sources":["../../src/math/interpolate.ts"],"sourcesContent":["import { isNumberInRange } from './number-range';\n\nexport type RangeArray = [number, number];\n\nexport const interpolate = (num: number, inputRange: RangeArray, outputRange: RangeArray) => {\n const [x1, x2] = inputRange;\n const [y1, y2] = outputRange;\n\n if (x1 > x2) {\n throw new Error('interpolate: inputRange[0] should not be superior to inputRange[1]');\n }\n\n if (!isNumberInRange(num, { min: x1, max: x2 })) {\n throw new Error(`interpolate: input number {${num}} is not in range of {${x1}}-{${x2}}`);\n }\n\n return y1 + ((num - x1) / (x2 - x1)) * (y2 - y1);\n};"],"names":["isNumberInRange"],"mappings":";;;;;;AAIa,MAAA,WAAW,GAAG,CAAC,GAAW,EAAE,UAAsB,EAAE,WAAuB,KAAI;AAC1F,IAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC;AAC5B,IAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC;IAE7B,IAAI,EAAE,GAAG,EAAE,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACvF,KAAA;AAED,IAAA,IAAI,CAACA,2BAAe,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,CAA8B,2BAAA,EAAA,GAAG,CAAyB,sBAAA,EAAA,EAAE,CAAM,GAAA,EAAA,EAAE,CAAG,CAAA,CAAA,CAAC,CAAC;AAC1F,KAAA;IAED,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACnD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-boolean.js","sources":["../../src/parsing/parse-boolean.ts"],"sourcesContent":["/**\n * Parse a string to a boolean. Throw error if string is neither \"true\" nor \"false\"\n */\n export const parseBoolean = (value: string): boolean => {\n if (value !== 'true' && value !== 'false') {\n throw new Error('Cannot parse value');\n }\n\n return value === 'true';\n};\n"],"names":[],"mappings":";;;;AAAA;;AAEG;AACW,MAAA,YAAY,GAAG,CAAC,KAAa,KAAa;AACtD,IAAA,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE;AACzC,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACvC,KAAA;IAED,OAAO,KAAK,KAAK,MAAM,CAAC;AAC1B;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-enum.js","sources":["../../src/parsing/parse-enum.ts"],"sourcesContent":["import type { Primitive } from '../types';\n\n/**\n * Factory to build enum to parse a string to an enum. Throw error if string is not an enum value\n */\n export const createEnumParser = <E extends Record<string, Primitive>>(enumType: E) => (\n (value: string) => {\n const enumValues = Object.values(enumType);\n\n if (!enumValues.includes(value as any)) {\n throw new Error('Can\\'t parse this value');\n }\n\n return value as unknown as E;\n }\n);"],"names":[],"mappings":";;;;AAEA;;AAEG;AACK,MAAM,gBAAgB,GAAG,CAAsC,QAAW,MAChF,CAAC,KAAa,KAAI;IAChB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE3C,IAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAY,CAAC,EAAE;AACtC,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC5C,KAAA;AAED,IAAA,OAAO,KAAqB,CAAC;AAC/B,CAAC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-number.js","sources":["../../src/parsing/parse-number.ts"],"sourcesContent":["/**\n * Parse a string to a number. Throw error if string is NaN\n */\n export const parseNumber = (value: string): number => {\n const number = parseInt(value, 10);\n\n if (Number.isNaN(number)) {\n throw new Error('Cannot parse value');\n }\n\n return number;\n};"],"names":[],"mappings":";;;;AAAA;;AAEG;AACW,MAAA,WAAW,GAAG,CAAC,KAAa,KAAY;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAEnC,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACvC,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-function.js","sources":["../../src/predicates/is-function.ts"],"sourcesContent":["export const isFunction = (value: any): value is Function => {\n return typeof value === 'function';\n};\n"],"names":[],"mappings":";;;;AAAa,MAAA,UAAU,GAAG,CAAC,KAAU,KAAuB;AAC1D,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-null.js","sources":["../../src/predicates/is-null.ts"],"sourcesContent":["export const isNull = (value: any): value is null => {\n return value === null;\n};\n"],"names":[],"mappings":";;;;AAAa,MAAA,MAAM,GAAG,CAAC,KAAU,KAAmB;IAClD,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-object.js","sources":["../../src/predicates/is-object.ts"],"sourcesContent":["export const isObject = (value: any): value is Object => {\n return typeof value === 'object';\n};\n"],"names":[],"mappings":";;;;AAAa,MAAA,QAAQ,GAAG,CAAC,KAAU,KAAqB;AACtD,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-primitive.js","sources":["../../src/predicates/is-primitive.ts"],"sourcesContent":["import { Primitive } from '../types/general';\n\nconst PRIMITIVE_TYPES = [\n 'string',\n 'boolean',\n 'number',\n];\n\nexport const isPrimitive = (value: any): value is Primitive => {\n return PRIMITIVE_TYPES.includes(typeof value);\n};\n\nexport const isArrayOfPrimitive = (value: any): value is Array<Primitive> => {\n if (!Array.isArray(value)) {\n return false;\n }\n\n return value.every((arrayValue) => isPrimitive(arrayValue));\n};\n"],"names":[],"mappings":";;;;AAEA,MAAM,eAAe,GAAG;IACtB,QAAQ;IACR,SAAS;IACT,QAAQ;CACT,CAAC;AAEW,MAAA,WAAW,GAAG,CAAC,KAAU,KAAwB;AAC5D,IAAA,OAAO,eAAe,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAChD,EAAE;AAEW,MAAA,kBAAkB,GAAG,CAAC,KAAU,KAA+B;AAC1E,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAED,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9D;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-undefined.js","sources":["../../src/predicates/is-undefined.ts"],"sourcesContent":["export const isUndefined = (value: any): value is undefined => {\n return value === undefined;\n};\n"],"names":[],"mappings":";;;;AAAa,MAAA,WAAW,GAAG,CAAC,KAAU,KAAwB;IAC5D,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sources":["../../src/time/constants.ts"],"sourcesContent":["export const MS_SECOND = 1000;\nexport const MS_MINUTE = MS_SECOND * 60;\nexport const MS_HOUR = MS_MINUTE * 60;\nexport const MS_DAY = MS_HOUR * 24;"],"names":[],"mappings":";;;;AAAO,MAAM,SAAS,GAAG,KAAK;AACjB,MAAA,SAAS,GAAG,SAAS,GAAG,GAAG;AAC3B,MAAA,OAAO,GAAG,SAAS,GAAG,GAAG;AACzB,MAAA,MAAM,GAAG,OAAO,GAAG;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-time-diff-as-string.js","sources":["../../src/time/get-time-diff-as-string.ts"],"sourcesContent":["import { ReplaceConfig, replaceInTemplate } from '../string';\nimport { MS_HOUR, MS_DAY } from './constants';\nimport { msToMinute, msToHour } from './convert';\n\nexport type MonthLocaleLabels = [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n];\n\nexport type DiffTemplate = {\n /**\n * e.g.: (\"%time% %timelabel% blabla\")\n */\n timeTemplate: string,\n /**\n * e.g.: \"%date% blabla\"\n */\n monthLocaleLabels: MonthLocaleLabels,\n fullDateTemplate: string,\n timeLabel: {\n minute: {\n singular: string,\n plural: string,\n },\n hour: {\n singular: string,\n plural: string,\n },\n }\n};\n\nconst defaultLocaleLabels: MonthLocaleLabels = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nconst defaultEnglishTemplate: DiffTemplate = {\n timeTemplate: '%time% %timeLabel% ago',\n fullDateTemplate: 'on %date%',\n monthLocaleLabels: defaultLocaleLabels,\n timeLabel: {\n minute: {\n singular: 'min',\n plural: 'min',\n },\n hour: {\n singular: 'hour',\n plural: 'hours',\n },\n },\n};\n\nconst TEMPLATE_CONFIG: ReplaceConfig = {\n delimiter: {\n left: '%',\n right: '%',\n },\n};\n\ntype HourFormat = {\n time: string,\n period: 'am' | 'pm';\n}\n\ntype MinuteFormat = {\n time: string,\n};\n\ntype DateForTemplate = {\n old: Date,\n recent: Date,\n};\n\ntype ParamForTemplateConfig = {\n templateConfig: DiffTemplate,\n dates: DateForTemplate,\n}\n\nconst formatMinuteString = (minute: number): MinuteFormat => {\n const str = minute.toString();\n\n return {\n time: str.length === 2 ? str : `0${str}`,\n };\n}\n\nconst formatHourString = (hour: number): HourFormat => {\n const period = hour < 12 ? 'am' : 'pm';\n const twelveHourTime = hour > 12 ? hour - 12 : hour;\n\n return {\n time: twelveHourTime === 0 ? '12' : twelveHourTime.toString(),\n period,\n }\n};\n\nconst getTemplatingParameters = (msDiff: number, config: ParamForTemplateConfig) => {\n const { dates, templateConfig } = config;\n const { timeLabel, monthLocaleLabels, timeTemplate, fullDateTemplate } = templateConfig;\n\n if (msDiff < MS_HOUR) {\n const minuteDiff = msToMinute(msDiff);\n const minuteUnit = minuteDiff > 1\n ? timeLabel.minute.plural\n : timeLabel.minute.singular;\n\n return {\n template: timeTemplate,\n params: {\n time: String(minuteDiff || 1),\n timeLabel: minuteUnit,\n },\n };\n }\n\n if (msDiff < MS_DAY) {\n const hourDiff = msToHour(msDiff);\n const hourUnit = hourDiff > 1\n ? timeLabel.hour.plural\n : timeLabel.hour.singular;\n\n return {\n template: timeTemplate,\n params: {\n time: String(hourDiff),\n timeLabel: hourUnit,\n },\n };\n }\n\n const monthLabel = monthLocaleLabels[dates.old.getMonth()];\n\n const minute = formatMinuteString(dates.old.getMinutes());\n const hour = formatHourString(dates.old.getHours());\n\n const dayFormat = `${monthLabel} ${dates.old.getDate()}`;\n const timeFormat = `${hour.time}:${minute.time} ${hour.period}`;\n\n return {\n template: fullDateTemplate,\n params: {\n date: `${dayFormat}, ${timeFormat}`,\n },\n };\n}\n\n/**\n * The returned string follows the following rules:\n * - If diff < 60 minutes: '29 min ago'\n * - If diff >= 60 minutes & < 24 hours: '12 hours ago' | '1 hour ago'\n * - If diff > 24 hours: 'on March 15, 14:45 pm'\n *\n * @param olderDate - Date\n * @param recentDate - Date\n * @param template - DiffTemplate\n * @returns a preformated string to be inserted in a phrase.\n */\nexport const getTimeDiffAsString = (olderDate: Date, recentDate = new Date(), templateConfig = defaultEnglishTemplate): string => {\n const oldDateTime = olderDate.getTime();\n const recentDateTime = recentDate.getTime();\n\n if (oldDateTime > recentDateTime) {\n return '';\n }\n\n const msDiff = recentDateTime - oldDateTime;\n const { template, params } = getTemplatingParameters(msDiff, {\n dates: {\n old: olderDate,\n recent: recentDate,\n },\n templateConfig,\n });\n\n return replaceInTemplate(template, params, TEMPLATE_CONFIG);\n};\n"],"names":["MS_HOUR","msToMinute","MS_DAY","msToHour","replaceInTemplate"],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes