@sparted/shared-library 1.1.2 → 1.1.3

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 (369) hide show
  1. package/.circleci/config.yml +40 -0
  2. package/.eslintignore +1 -0
  3. package/.eslintrc.json +25 -0
  4. package/.gitignore +37 -0
  5. package/.idea/.gitignore +8 -0
  6. package/.idea/codeStyles/Project.xml +35 -0
  7. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  8. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  9. package/.idea/jsLinters/eslint.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/shared-library.iml +11 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.idea/workspace.xml +105 -0
  15. package/.prettierrc.json +6 -0
  16. package/CHANGELOG.md +112 -0
  17. package/README.md +26 -0
  18. package/dist/package.json +65 -0
  19. package/global.d.ts +2 -0
  20. package/package.json +1 -1
  21. package/rollup.config.ts +19 -0
  22. package/src/array/__tests__/array-to-map.test.ts +50 -0
  23. package/src/array/__tests__/get-values-from-keys.test.ts +14 -0
  24. package/src/array/__tests__/inner-join.test.ts +55 -0
  25. package/src/array/__tests__/left-outter-join.test.ts +55 -0
  26. package/src/array/array-to-map.ts +32 -0
  27. package/src/array/get-values-from-keys.ts +3 -0
  28. package/src/array/index.ts +4 -0
  29. package/src/array/inner-join.ts +10 -0
  30. package/src/array/left-outter-join.ts +10 -0
  31. package/src/business/picture-spot/index.ts +3 -0
  32. package/src/business/types/content.ts +135 -0
  33. package/src/business/types/index.ts +4 -0
  34. package/src/business/types/media.ts +18 -0
  35. package/src/business/types/multilingual.ts +42 -0
  36. package/src/business/types/thematic.ts +10 -0
  37. package/src/cdn/__tests__/cdn.factory.test.ts +150 -0
  38. package/src/cdn/__tests__/utils.test.ts +528 -0
  39. package/src/cdn/cdn.factory.ts +70 -0
  40. package/src/cdn/index.ts +2 -0
  41. package/src/cdn/types/cdn-factory.type.ts +49 -0
  42. package/src/cdn/types/index.ts +1 -0
  43. package/src/cdn/utils/extract-info-from-url.util.ts +25 -0
  44. package/src/cdn/utils/get-cdn-from-s3-url.util.ts +20 -0
  45. package/src/cdn/utils/get-cdn-url.util.ts +31 -0
  46. package/src/cdn/utils/twicpics-transformations.util.ts +9 -0
  47. package/src/color/__tests__/get-contrast-color.test.ts +22 -0
  48. package/src/color/get-contrast-color.ts +18 -0
  49. package/src/color/index.ts +1 -0
  50. package/src/formatting/__tests__/format-number.test.ts +11 -0
  51. package/src/formatting/format-number.ts +14 -0
  52. package/src/formatting/index.ts +1 -0
  53. package/src/fp/__tests__/run-while.test.ts +29 -0
  54. package/src/fp/index.ts +1 -0
  55. package/src/fp/run-while.ts +54 -0
  56. package/src/http/__tests__/build-search-params.test.ts +17 -0
  57. package/src/http/__tests__/encode-search-object.test.ts +34 -0
  58. package/src/http/__tests__/fetch-with-timeout.test.ts +50 -0
  59. package/src/http/build-search-params.ts +18 -0
  60. package/src/http/encode-search-object.ts +39 -0
  61. package/src/http/fetch-with-timeout.ts +24 -0
  62. package/src/http/index.ts +3 -0
  63. package/src/index.ts +15 -0
  64. package/src/linked-list/__tests__/apply-diff-linked-list.test.ts +103 -0
  65. package/src/linked-list/__tests__/create-linked-list.test.ts +204 -0
  66. package/src/linked-list/__tests__/find-linked-list.test.ts +40 -0
  67. package/src/linked-list/__tests__/get-linked-list.test.ts +28 -0
  68. package/src/linked-list/__tests__/insert-linked-list.test.ts +186 -0
  69. package/src/linked-list/__tests__/linked-list-utils.test.ts +252 -0
  70. package/src/linked-list/__tests__/reduce-linked-list.test.ts +31 -0
  71. package/src/linked-list/__tests__/remove-linked-list.test.ts +129 -0
  72. package/src/linked-list/__tests__/update-linked-list.test.ts +53 -0
  73. package/src/linked-list/__tests__/while-linked-list.test.ts +58 -0
  74. package/src/linked-list/apply-diff-linked-list.ts +35 -0
  75. package/src/linked-list/create-linked-list.ts +79 -0
  76. package/src/linked-list/find-linked-list.ts +26 -0
  77. package/src/linked-list/get-linked-list.ts +9 -0
  78. package/src/linked-list/index.ts +2 -0
  79. package/src/linked-list/insert-linked-list.ts +50 -0
  80. package/src/linked-list/linked-list-utils.ts +143 -0
  81. package/src/linked-list/reduce-linked-list.ts +18 -0
  82. package/src/linked-list/remove-linked-list.ts +36 -0
  83. package/src/linked-list/type.ts +38 -0
  84. package/src/linked-list/update-linked-list.ts +30 -0
  85. package/src/linked-list/while-linked-list.ts +33 -0
  86. package/src/math/__tests__/clamp-number.test.ts +30 -0
  87. package/src/math/__tests__/interpolate.test.ts +28 -0
  88. package/src/math/__tests__/median.test.ts +27 -0
  89. package/src/math/__tests__/number-range.test.ts +59 -0
  90. package/src/math/__tests__/random-number.test.ts +11 -0
  91. package/src/math/clamp-number.ts +8 -0
  92. package/src/math/index.ts +5 -0
  93. package/src/math/interpolate.ts +18 -0
  94. package/src/math/median.ts +21 -0
  95. package/src/math/number-range.ts +16 -0
  96. package/src/math/random-number.ts +10 -0
  97. package/src/object/__tests__/merge-deep.test.ts +56 -0
  98. package/src/object/__tests__/strip-properties-from-object.test.ts +65 -0
  99. package/src/object/index.ts +2 -0
  100. package/src/object/merge-deep.ts +26 -0
  101. package/src/object/strip-properties-from-object.ts +26 -0
  102. package/src/parsing/__tests__/parse-boolean.test.ts +15 -0
  103. package/src/parsing/__tests__/parse-enum.test.ts +19 -0
  104. package/src/parsing/__tests__/parse-number.test.ts +20 -0
  105. package/src/parsing/index.ts +3 -0
  106. package/src/parsing/parse-boolean.ts +10 -0
  107. package/src/parsing/parse-enum.ts +16 -0
  108. package/src/parsing/parse-number.ts +12 -0
  109. package/src/predicates/__tests__/is-function.test.ts +11 -0
  110. package/src/predicates/__tests__/is-null.test.ts +11 -0
  111. package/src/predicates/__tests__/is-object.test.ts +11 -0
  112. package/src/predicates/__tests__/is-primitive.test.ts +42 -0
  113. package/src/predicates/__tests__/is-undefined.test.ts +11 -0
  114. package/src/predicates/__tests__/is-uuid.test.ts +13 -0
  115. package/src/predicates/index.ts +5 -0
  116. package/src/predicates/is-function.ts +3 -0
  117. package/src/predicates/is-null.ts +1 -0
  118. package/src/predicates/is-object.ts +3 -0
  119. package/src/predicates/is-primitive.ts +19 -0
  120. package/src/predicates/is-undefined.ts +3 -0
  121. package/src/predicates/is-uuid.ts +3 -0
  122. package/src/promise/__tests__/delay.test.ts +13 -0
  123. package/src/promise/__tests__/execute-or-resolve-default.test.ts +25 -0
  124. package/src/promise/__tests__/execute-with-delay.test.ts +24 -0
  125. package/src/promise/delay.ts +3 -0
  126. package/src/promise/execute-or-resolve-default.ts +14 -0
  127. package/src/promise/execute-with-delay.ts +6 -0
  128. package/src/promise/index.ts +3 -0
  129. package/src/string/__tests__/is-string-length-within-range.test.ts +23 -0
  130. package/src/string/__tests__/replace-in-template.test.ts +52 -0
  131. package/src/string/index.ts +2 -0
  132. package/src/string/is-string-length-within-range.ts +10 -0
  133. package/src/string/replace-in-template.ts +45 -0
  134. package/src/time/__tests__/convert.test.ts +14 -0
  135. package/src/time/__tests__/format-minutes.test.ts +10 -0
  136. package/src/time/__tests__/get-time-diff-as-string.test.ts +128 -0
  137. package/src/time/constants.ts +4 -0
  138. package/src/time/convert.ts +5 -0
  139. package/src/time/format-minutes.ts +9 -0
  140. package/src/time/get-time-diff-as-string.ts +196 -0
  141. package/src/time/index.ts +4 -0
  142. package/src/types/function.ts +1 -0
  143. package/src/types/general.ts +15 -0
  144. package/src/types/index.ts +4 -0
  145. package/src/types/object.ts +33 -0
  146. package/src/types/search.ts +29 -0
  147. package/tsconfig.json +25 -0
  148. package/yarn.lock +4040 -0
  149. /package/{_virtual → dist/_virtual}/_tslib.js +0 -0
  150. /package/{_virtual → dist/_virtual}/_tslib.js.map +0 -0
  151. /package/{array → dist/array}/array-to-map.d.ts +0 -0
  152. /package/{array → dist/array}/array-to-map.js +0 -0
  153. /package/{array → dist/array}/array-to-map.js.map +0 -0
  154. /package/{array → dist/array}/get-values-from-keys.d.ts +0 -0
  155. /package/{array → dist/array}/get-values-from-keys.js +0 -0
  156. /package/{array → dist/array}/get-values-from-keys.js.map +0 -0
  157. /package/{array → dist/array}/index.d.ts +0 -0
  158. /package/{array → dist/array}/index.js +0 -0
  159. /package/{array → dist/array}/index.js.map +0 -0
  160. /package/{array → dist/array}/inner-join.d.ts +0 -0
  161. /package/{array → dist/array}/inner-join.js +0 -0
  162. /package/{array → dist/array}/inner-join.js.map +0 -0
  163. /package/{array → dist/array}/left-outter-join.d.ts +0 -0
  164. /package/{array → dist/array}/left-outter-join.js +0 -0
  165. /package/{array → dist/array}/left-outter-join.js.map +0 -0
  166. /package/{business → dist/business}/picture-spot/index.d.ts +0 -0
  167. /package/{business → dist/business}/picture-spot/index.js +0 -0
  168. /package/{business → dist/business}/picture-spot/index.js.map +0 -0
  169. /package/{business → dist/business}/types/content.d.ts +0 -0
  170. /package/{business → dist/business}/types/content.js +0 -0
  171. /package/{business → dist/business}/types/content.js.map +0 -0
  172. /package/{business → dist/business}/types/index.d.ts +0 -0
  173. /package/{business → dist/business}/types/index.js +0 -0
  174. /package/{business → dist/business}/types/index.js.map +0 -0
  175. /package/{business → dist/business}/types/media.d.ts +0 -0
  176. /package/{business → dist/business}/types/multilingual.d.ts +0 -0
  177. /package/{business → dist/business}/types/multilingual.js +0 -0
  178. /package/{business → dist/business}/types/multilingual.js.map +0 -0
  179. /package/{business → dist/business}/types/thematic.d.ts +0 -0
  180. /package/{cdn → dist/cdn}/cdn.factory.d.ts +0 -0
  181. /package/{cdn → dist/cdn}/cdn.factory.js +0 -0
  182. /package/{cdn → dist/cdn}/cdn.factory.js.map +0 -0
  183. /package/{cdn → dist/cdn}/index.d.ts +0 -0
  184. /package/{cdn → dist/cdn}/index.js +0 -0
  185. /package/{cdn → dist/cdn}/index.js.map +0 -0
  186. /package/{cdn → dist/cdn}/types/cdn-factory.type.d.ts +0 -0
  187. /package/{cdn → dist/cdn}/types/index.d.ts +0 -0
  188. /package/{cdn → dist/cdn}/types/index.js +0 -0
  189. /package/{cdn → dist/cdn}/types/index.js.map +0 -0
  190. /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.d.ts +0 -0
  191. /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.js +0 -0
  192. /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.js.map +0 -0
  193. /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.d.ts +0 -0
  194. /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.js +0 -0
  195. /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.js.map +0 -0
  196. /package/{cdn → dist/cdn}/utils/get-cdn-url.util.d.ts +0 -0
  197. /package/{cdn → dist/cdn}/utils/get-cdn-url.util.js +0 -0
  198. /package/{cdn → dist/cdn}/utils/get-cdn-url.util.js.map +0 -0
  199. /package/{cdn → dist/cdn}/utils/twicpics-transformations.util.d.ts +0 -0
  200. /package/{cdn → dist/cdn}/utils/twicpics-transformations.util.js +0 -0
  201. /package/{cdn → dist/cdn}/utils/twicpics-transformations.util.js.map +0 -0
  202. /package/{color → dist/color}/get-contrast-color.d.ts +0 -0
  203. /package/{color → dist/color}/get-contrast-color.js +0 -0
  204. /package/{color → dist/color}/get-contrast-color.js.map +0 -0
  205. /package/{color → dist/color}/index.d.ts +0 -0
  206. /package/{color → dist/color}/index.js +0 -0
  207. /package/{color → dist/color}/index.js.map +0 -0
  208. /package/{formatting → dist/formatting}/format-number.d.ts +0 -0
  209. /package/{formatting → dist/formatting}/format-number.js +0 -0
  210. /package/{formatting → dist/formatting}/format-number.js.map +0 -0
  211. /package/{formatting → dist/formatting}/index.d.ts +0 -0
  212. /package/{formatting → dist/formatting}/index.js +0 -0
  213. /package/{formatting → dist/formatting}/index.js.map +0 -0
  214. /package/{fp → dist/fp}/index.d.ts +0 -0
  215. /package/{fp → dist/fp}/index.js +0 -0
  216. /package/{fp → dist/fp}/index.js.map +0 -0
  217. /package/{fp → dist/fp}/run-while.d.ts +0 -0
  218. /package/{fp → dist/fp}/run-while.js +0 -0
  219. /package/{fp → dist/fp}/run-while.js.map +0 -0
  220. /package/{http → dist/http}/build-search-params.d.ts +0 -0
  221. /package/{http → dist/http}/build-search-params.js +0 -0
  222. /package/{http → dist/http}/build-search-params.js.map +0 -0
  223. /package/{http → dist/http}/encode-search-object.d.ts +0 -0
  224. /package/{http → dist/http}/encode-search-object.js +0 -0
  225. /package/{http → dist/http}/encode-search-object.js.map +0 -0
  226. /package/{http → dist/http}/fetch-with-timeout.d.ts +0 -0
  227. /package/{http → dist/http}/fetch-with-timeout.js +0 -0
  228. /package/{http → dist/http}/fetch-with-timeout.js.map +0 -0
  229. /package/{http → dist/http}/index.d.ts +0 -0
  230. /package/{http → dist/http}/index.js +0 -0
  231. /package/{http → dist/http}/index.js.map +0 -0
  232. /package/{index.d.ts → dist/index.d.ts} +0 -0
  233. /package/{index.js → dist/index.js} +0 -0
  234. /package/{index.js.map → dist/index.js.map} +0 -0
  235. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.d.ts +0 -0
  236. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.js +0 -0
  237. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.js.map +0 -0
  238. /package/{linked-list → dist/linked-list}/create-linked-list.d.ts +0 -0
  239. /package/{linked-list → dist/linked-list}/create-linked-list.js +0 -0
  240. /package/{linked-list → dist/linked-list}/create-linked-list.js.map +0 -0
  241. /package/{linked-list → dist/linked-list}/find-linked-list.d.ts +0 -0
  242. /package/{linked-list → dist/linked-list}/find-linked-list.js +0 -0
  243. /package/{linked-list → dist/linked-list}/find-linked-list.js.map +0 -0
  244. /package/{linked-list → dist/linked-list}/get-linked-list.d.ts +0 -0
  245. /package/{linked-list → dist/linked-list}/get-linked-list.js +0 -0
  246. /package/{linked-list → dist/linked-list}/get-linked-list.js.map +0 -0
  247. /package/{linked-list → dist/linked-list}/index.d.ts +0 -0
  248. /package/{linked-list → dist/linked-list}/index.js +0 -0
  249. /package/{linked-list → dist/linked-list}/index.js.map +0 -0
  250. /package/{linked-list → dist/linked-list}/insert-linked-list.d.ts +0 -0
  251. /package/{linked-list → dist/linked-list}/insert-linked-list.js +0 -0
  252. /package/{linked-list → dist/linked-list}/insert-linked-list.js.map +0 -0
  253. /package/{linked-list → dist/linked-list}/linked-list-utils.d.ts +0 -0
  254. /package/{linked-list → dist/linked-list}/linked-list-utils.js +0 -0
  255. /package/{linked-list → dist/linked-list}/linked-list-utils.js.map +0 -0
  256. /package/{linked-list → dist/linked-list}/reduce-linked-list.d.ts +0 -0
  257. /package/{linked-list → dist/linked-list}/reduce-linked-list.js +0 -0
  258. /package/{linked-list → dist/linked-list}/reduce-linked-list.js.map +0 -0
  259. /package/{linked-list → dist/linked-list}/remove-linked-list.d.ts +0 -0
  260. /package/{linked-list → dist/linked-list}/remove-linked-list.js +0 -0
  261. /package/{linked-list → dist/linked-list}/remove-linked-list.js.map +0 -0
  262. /package/{linked-list → dist/linked-list}/type.d.ts +0 -0
  263. /package/{linked-list → dist/linked-list}/update-linked-list.d.ts +0 -0
  264. /package/{linked-list → dist/linked-list}/update-linked-list.js +0 -0
  265. /package/{linked-list → dist/linked-list}/update-linked-list.js.map +0 -0
  266. /package/{linked-list → dist/linked-list}/while-linked-list.d.ts +0 -0
  267. /package/{linked-list → dist/linked-list}/while-linked-list.js +0 -0
  268. /package/{linked-list → dist/linked-list}/while-linked-list.js.map +0 -0
  269. /package/{math → dist/math}/clamp-number.d.ts +0 -0
  270. /package/{math → dist/math}/clamp-number.js +0 -0
  271. /package/{math → dist/math}/clamp-number.js.map +0 -0
  272. /package/{math → dist/math}/index.d.ts +0 -0
  273. /package/{math → dist/math}/index.js +0 -0
  274. /package/{math → dist/math}/index.js.map +0 -0
  275. /package/{math → dist/math}/interpolate.d.ts +0 -0
  276. /package/{math → dist/math}/interpolate.js +0 -0
  277. /package/{math → dist/math}/interpolate.js.map +0 -0
  278. /package/{math → dist/math}/median.d.ts +0 -0
  279. /package/{math → dist/math}/median.js +0 -0
  280. /package/{math → dist/math}/median.js.map +0 -0
  281. /package/{math → dist/math}/number-range.d.ts +0 -0
  282. /package/{math → dist/math}/number-range.js +0 -0
  283. /package/{math → dist/math}/number-range.js.map +0 -0
  284. /package/{math → dist/math}/random-number.d.ts +0 -0
  285. /package/{math → dist/math}/random-number.js +0 -0
  286. /package/{math → dist/math}/random-number.js.map +0 -0
  287. /package/{object → dist/object}/index.d.ts +0 -0
  288. /package/{object → dist/object}/index.js +0 -0
  289. /package/{object → dist/object}/index.js.map +0 -0
  290. /package/{object → dist/object}/merge-deep.d.ts +0 -0
  291. /package/{object → dist/object}/merge-deep.js +0 -0
  292. /package/{object → dist/object}/merge-deep.js.map +0 -0
  293. /package/{object → dist/object}/strip-properties-from-object.d.ts +0 -0
  294. /package/{object → dist/object}/strip-properties-from-object.js +0 -0
  295. /package/{object → dist/object}/strip-properties-from-object.js.map +0 -0
  296. /package/{parsing → dist/parsing}/index.d.ts +0 -0
  297. /package/{parsing → dist/parsing}/index.js +0 -0
  298. /package/{parsing → dist/parsing}/index.js.map +0 -0
  299. /package/{parsing → dist/parsing}/parse-boolean.d.ts +0 -0
  300. /package/{parsing → dist/parsing}/parse-boolean.js +0 -0
  301. /package/{parsing → dist/parsing}/parse-boolean.js.map +0 -0
  302. /package/{parsing → dist/parsing}/parse-enum.d.ts +0 -0
  303. /package/{parsing → dist/parsing}/parse-enum.js +0 -0
  304. /package/{parsing → dist/parsing}/parse-enum.js.map +0 -0
  305. /package/{parsing → dist/parsing}/parse-number.d.ts +0 -0
  306. /package/{parsing → dist/parsing}/parse-number.js +0 -0
  307. /package/{parsing → dist/parsing}/parse-number.js.map +0 -0
  308. /package/{predicates → dist/predicates}/index.d.ts +0 -0
  309. /package/{predicates → dist/predicates}/index.js +0 -0
  310. /package/{predicates → dist/predicates}/index.js.map +0 -0
  311. /package/{predicates → dist/predicates}/is-function.d.ts +0 -0
  312. /package/{predicates → dist/predicates}/is-function.js +0 -0
  313. /package/{predicates → dist/predicates}/is-function.js.map +0 -0
  314. /package/{predicates → dist/predicates}/is-null.d.ts +0 -0
  315. /package/{predicates → dist/predicates}/is-null.js +0 -0
  316. /package/{predicates → dist/predicates}/is-null.js.map +0 -0
  317. /package/{predicates → dist/predicates}/is-object.d.ts +0 -0
  318. /package/{predicates → dist/predicates}/is-object.js +0 -0
  319. /package/{predicates → dist/predicates}/is-object.js.map +0 -0
  320. /package/{predicates → dist/predicates}/is-primitive.d.ts +0 -0
  321. /package/{predicates → dist/predicates}/is-primitive.js +0 -0
  322. /package/{predicates → dist/predicates}/is-primitive.js.map +0 -0
  323. /package/{predicates → dist/predicates}/is-undefined.d.ts +0 -0
  324. /package/{predicates → dist/predicates}/is-undefined.js +0 -0
  325. /package/{predicates → dist/predicates}/is-undefined.js.map +0 -0
  326. /package/{predicates → dist/predicates}/is-uuid.d.ts +0 -0
  327. /package/{promise → dist/promise}/delay.d.ts +0 -0
  328. /package/{promise → dist/promise}/delay.js +0 -0
  329. /package/{promise → dist/promise}/delay.js.map +0 -0
  330. /package/{promise → dist/promise}/execute-or-resolve-default.d.ts +0 -0
  331. /package/{promise → dist/promise}/execute-or-resolve-default.js +0 -0
  332. /package/{promise → dist/promise}/execute-or-resolve-default.js.map +0 -0
  333. /package/{promise → dist/promise}/execute-with-delay.d.ts +0 -0
  334. /package/{promise → dist/promise}/execute-with-delay.js +0 -0
  335. /package/{promise → dist/promise}/execute-with-delay.js.map +0 -0
  336. /package/{promise → dist/promise}/index.d.ts +0 -0
  337. /package/{promise → dist/promise}/index.js +0 -0
  338. /package/{promise → dist/promise}/index.js.map +0 -0
  339. /package/{string → dist/string}/index.d.ts +0 -0
  340. /package/{string → dist/string}/index.js +0 -0
  341. /package/{string → dist/string}/index.js.map +0 -0
  342. /package/{string → dist/string}/is-string-length-within-range.d.ts +0 -0
  343. /package/{string → dist/string}/is-string-length-within-range.js +0 -0
  344. /package/{string → dist/string}/is-string-length-within-range.js.map +0 -0
  345. /package/{string → dist/string}/replace-in-template.d.ts +0 -0
  346. /package/{string → dist/string}/replace-in-template.js +0 -0
  347. /package/{string → dist/string}/replace-in-template.js.map +0 -0
  348. /package/{time → dist/time}/constants.d.ts +0 -0
  349. /package/{time → dist/time}/constants.js +0 -0
  350. /package/{time → dist/time}/constants.js.map +0 -0
  351. /package/{time → dist/time}/convert.d.ts +0 -0
  352. /package/{time → dist/time}/convert.js +0 -0
  353. /package/{time → dist/time}/convert.js.map +0 -0
  354. /package/{time → dist/time}/format-minutes.d.ts +0 -0
  355. /package/{time → dist/time}/format-minutes.js +0 -0
  356. /package/{time → dist/time}/format-minutes.js.map +0 -0
  357. /package/{time → dist/time}/get-time-diff-as-string.d.ts +0 -0
  358. /package/{time → dist/time}/get-time-diff-as-string.js +0 -0
  359. /package/{time → dist/time}/get-time-diff-as-string.js.map +0 -0
  360. /package/{time → dist/time}/index.d.ts +0 -0
  361. /package/{time → dist/time}/index.js +0 -0
  362. /package/{time → dist/time}/index.js.map +0 -0
  363. /package/{types → dist/types}/function.d.ts +0 -0
  364. /package/{types → dist/types}/general.d.ts +0 -0
  365. /package/{types → dist/types}/index.d.ts +0 -0
  366. /package/{types → dist/types}/index.js +0 -0
  367. /package/{types → dist/types}/index.js.map +0 -0
  368. /package/{types → dist/types}/object.d.ts +0 -0
  369. /package/{types → dist/types}/search.d.ts +0 -0
@@ -0,0 +1,55 @@
1
+ import { innerJoin } from '../inner-join';
2
+
3
+ describe('innerJoin', () => {
4
+ it('should return an inner join of simple arrays', () => {
5
+ const arr1 = [1, 2, 3];
6
+ const arr2 = [3, 4, 5];
7
+
8
+ const innerJoinedArr = innerJoin(
9
+ arr1,
10
+ arr2,
11
+ (item) => item,
12
+ (item) => item,
13
+ );
14
+
15
+ expect(innerJoinedArr).toEqual([3]);
16
+ });
17
+
18
+ it('should return an inner join of complex array', () => {
19
+ const arr1 = [
20
+ { id: 1, name: 'John' },
21
+ { id: 2, name: 'Doe' },
22
+ { id: 3, name: 'Jane' },
23
+ { id: 4, name: 'Jack' },
24
+ { id: 5, name: 'Jill' },
25
+ { id: 6, name: 'Maurice' },
26
+ ];
27
+ const arr2 = [
28
+ { id: 3, name: 'Jane' },
29
+ { id: 4, name: 'Jack' },
30
+ { id: 5, name: 'Jill' },
31
+ ];
32
+
33
+ const innerJoinedArr = innerJoin(
34
+ arr1,
35
+ arr2,
36
+ (item) => item.id,
37
+ (item) => item.id,
38
+ );
39
+
40
+ expect(innerJoinedArr).toEqual([
41
+ {
42
+ id: 3,
43
+ name: 'Jane',
44
+ },
45
+ {
46
+ id: 4,
47
+ name: 'Jack',
48
+ },
49
+ {
50
+ id: 5,
51
+ name: 'Jill',
52
+ },
53
+ ]);
54
+ });
55
+ });
@@ -0,0 +1,55 @@
1
+ import { leftOutterJoin } from '../left-outter-join';
2
+
3
+ describe('leftOutterJoin', () => {
4
+ it('should return left outter joined of simple arrays', () => {
5
+ const arr1 = [1, 2, 3];
6
+ const arr2 = [3, 4, 5];
7
+
8
+ const leftOutterJoinedArr = leftOutterJoin(
9
+ arr1,
10
+ arr2,
11
+ (item) => item,
12
+ (item) => item,
13
+ );
14
+
15
+ expect(leftOutterJoinedArr).toEqual([1, 2]);
16
+ });
17
+
18
+ it('should return left outter joined of complex array', () => {
19
+ const arr1 = [
20
+ { id: 1, name: 'John' },
21
+ { id: 2, name: 'Doe' },
22
+ { id: 3, name: 'Jane' },
23
+ { id: 4, name: 'Jack' },
24
+ { id: 5, name: 'Jill' },
25
+ { id: 6, name: 'Maurice' },
26
+ ];
27
+ const arr2 = [
28
+ { id: 3, name: 'Jane' },
29
+ { id: 4, name: 'Jack' },
30
+ { id: 5, name: 'Jill' },
31
+ ];
32
+
33
+ const leftOutterJoinedArr = leftOutterJoin(
34
+ arr1,
35
+ arr2,
36
+ (item) => item.id,
37
+ (item) => item.id,
38
+ );
39
+
40
+ expect(leftOutterJoinedArr).toEqual([
41
+ {
42
+ id: 1,
43
+ name: 'John',
44
+ },
45
+ {
46
+ id: 2,
47
+ name: 'Doe',
48
+ },
49
+ {
50
+ id: 6,
51
+ name: 'Maurice',
52
+ },
53
+ ]);
54
+ });
55
+ });
@@ -0,0 +1,32 @@
1
+ export type ArrayToMapOptions<InitialValue, ModifiedValue = InitialValue> = {
2
+ /**
3
+ * Function to return the key used in the map.
4
+ */
5
+ selectKey: (value: InitialValue) => string,
6
+ /**
7
+ * Transform the initial data into another value
8
+ */
9
+ dataModifier?: (value: InitialValue, map: Readonly<Record<string, ModifiedValue>>) => ModifiedValue;
10
+ };
11
+
12
+ /**
13
+ * Transform an array to a map.
14
+ */
15
+ export const arrayToMap = <InitialValue, ModifiedValue = InitialValue>(
16
+ array: ReadonlyArray<InitialValue>,
17
+ options: ArrayToMapOptions<InitialValue, ModifiedValue>,
18
+ ) => {
19
+ const { selectKey } = options;
20
+
21
+ return array.reduce<Record<string, ModifiedValue>>((acc, current) => {
22
+ const key = selectKey(current);
23
+ const value = options.dataModifier
24
+ ? options.dataModifier(current, acc)
25
+ : current;
26
+
27
+ return {
28
+ ...acc,
29
+ [key]: value as ModifiedValue,
30
+ };
31
+ }, {});
32
+ };
@@ -0,0 +1,3 @@
1
+ export const valuesFromKeys = <T>(keys: string[], map: Record<string, T>) => (
2
+ keys.map((key) => map[key])
3
+ );
@@ -0,0 +1,4 @@
1
+ export * from './array-to-map';
2
+ export * from './get-values-from-keys';
3
+ export * from './left-outter-join';
4
+ export * from './inner-join';
@@ -0,0 +1,10 @@
1
+ export const innerJoin = <T, U>(
2
+ arr1: T[],
3
+ arr2: U[],
4
+ selectKey1: (item: T) => string | number,
5
+ selectKey2: (item: U) => string | number,
6
+ ) => {
7
+ const arr2Set = new Set(arr2.map(selectKey2));
8
+
9
+ return arr1.filter((item) => arr2Set.has(selectKey1(item)));
10
+ };
@@ -0,0 +1,10 @@
1
+ export const leftOutterJoin = <T, U>(
2
+ arr1: T[],
3
+ arr2: U[],
4
+ selectKey1: (item: T) => string | number,
5
+ selectKey2: (item: U) => string | number,
6
+ ) => {
7
+ const arr2Set = new Set(arr2.map(selectKey2));
8
+
9
+ return arr1.filter((item) => !arr2Set.has(selectKey1(item)));
10
+ };
@@ -0,0 +1,3 @@
1
+ import { PictureSpot } from '../types';
2
+
3
+ export const getQuestions = (content: PictureSpot) => content.items?.map(({ question }) => question);
@@ -0,0 +1,135 @@
1
+ import { LanguageCode, MultilingualLabel } from './multilingual';
2
+ import { Image, Media } from './media';
3
+ import { Thematic } from './thematic';
4
+
5
+ export type ErrorText = {
6
+ type: 'error-text';
7
+ gameMedia?: Media;
8
+ explanationMedia?: Media;
9
+ explanation?: MultilingualLabel;
10
+ wrongText?: MultilingualLabel;
11
+ correctText?: MultilingualLabel;
12
+ };
13
+
14
+ export type MultipleChoiceQuestion = {
15
+ type: 'mcq';
16
+ gameMedia?: Media;
17
+ question?: MultilingualLabel;
18
+ explanation?: MultilingualLabel;
19
+ explanationMedia?: Media;
20
+ multiselect?: boolean;
21
+ choices?: {
22
+ correct: boolean;
23
+ text: MultilingualLabel;
24
+ }[];
25
+ };
26
+
27
+ export type NoInteraction = {
28
+ type: 'no-interaction';
29
+ firstMedia?: Media;
30
+ secondMedia?: Media;
31
+ title?: MultilingualLabel;
32
+ text?: MultilingualLabel;
33
+ };
34
+
35
+ export type OpenQuestion = {
36
+ type: 'open-question';
37
+ gameMedia?: Media;
38
+ question?: MultilingualLabel;
39
+ answer?: MultilingualLabel;
40
+ explanation?: MultilingualLabel;
41
+ explanationMedia?: Media;
42
+ levenshteinDistance?: number;
43
+ };
44
+
45
+ export type OrderingCards = {
46
+ type: 'ordering-cards';
47
+ explanation?: MultilingualLabel;
48
+ question?: MultilingualLabel;
49
+ topLabel?: MultilingualLabel;
50
+ bottomLabel?: MultilingualLabel;
51
+ cards: MultilingualLabel[];
52
+ };
53
+
54
+ export type PictureSpot = {
55
+ type: 'picture-spot';
56
+ image?: Image;
57
+ explanation?: MultilingualLabel;
58
+ items?: {
59
+ x: number;
60
+ y: number;
61
+ r: number;
62
+ question: MultilingualLabel;
63
+ description: MultilingualLabel;
64
+ }[];
65
+ };
66
+
67
+ export type SwipingCards = {
68
+ type: 'swiping-cards';
69
+ explanation?: MultilingualLabel;
70
+ question?: MultilingualLabel;
71
+ zones?: {
72
+ position: 'left' | 'right' | 'top' | 'bottom';
73
+ text: MultilingualLabel;
74
+ }[];
75
+ cards?: {
76
+ image?: Image;
77
+ text?: MultilingualLabel;
78
+ answer: 'left' | 'right' | 'top' | 'bottom';
79
+ }[];
80
+ };
81
+
82
+ export type Game =
83
+ | ErrorText
84
+ | MultipleChoiceQuestion
85
+ | NoInteraction
86
+ | OpenQuestion
87
+ | OrderingCards
88
+ | PictureSpot
89
+ | SwipingCards;
90
+
91
+ export type GameType =
92
+ | 'error-text'
93
+ | 'mcq'
94
+ | 'open-question'
95
+ | 'no-interaction'
96
+ | 'picture-spot'
97
+ | 'swiping-cards'
98
+ | 'ordering-cards';
99
+
100
+ export const GAME_TYPE: Record<string, GameType> = {
101
+ MCQ: 'mcq',
102
+ ERROR_TEXT: 'error-text',
103
+ OPEN_QUESTION: 'open-question',
104
+ NO_INTERACTION: 'no-interaction',
105
+ PICTURE_SPOT: 'picture-spot',
106
+ ORDERING_CARDS: 'ordering-cards',
107
+ SWIPING_CARDS: 'swiping-cards',
108
+ };
109
+
110
+ export type ContentStatuses = Partial<{
111
+ [languageCode in LanguageCode]: 'draft' | 'validated' | 'waiting-translation' | 'waiting-validation';
112
+ }>;
113
+
114
+ export type Content = {
115
+ archived: boolean;
116
+ id: number;
117
+ metadata: {
118
+ coverImage: Image;
119
+ identifier?: string;
120
+ name: MultilingualLabel;
121
+ thematic: Thematic;
122
+ explanation?: string;
123
+ knowMore?: string;
124
+ };
125
+ statuses: ContentStatuses;
126
+ game?: Game;
127
+ };
128
+
129
+ export const isGameMultipleChoiceQuestion = (game: Game): game is MultipleChoiceQuestion => game.type === GAME_TYPE.MCQ;
130
+ export const isGameErrorText = (game: Game): game is ErrorText => game.type === GAME_TYPE.ERROR_TEXT;
131
+ export const isGameOpenQuestion = (game: Game): game is OpenQuestion => game.type === GAME_TYPE.OPEN_QUESTION;
132
+ export const isGameNoInteraction = (game: Game): game is NoInteraction => game.type === GAME_TYPE.NO_INTERACTION;
133
+ export const isGamePictureSpot = (game: Game): game is PictureSpot => game.type === GAME_TYPE.PICTURE_SPOT;
134
+ export const isGameOrderingCards = (game: Game): game is OrderingCards => game.type === GAME_TYPE.ORDERING_CARDS;
135
+ export const isGameSwipingCards = (game: Game): game is SwipingCards => game.type === GAME_TYPE.SWIPING_CARDS;
@@ -0,0 +1,4 @@
1
+ export * from './content';
2
+ export * from './media';
3
+ export * from './thematic';
4
+ export * from './multilingual';
@@ -0,0 +1,18 @@
1
+ export type Image = {
2
+ id: number;
3
+ url: string;
4
+ filename: string;
5
+ width: number;
6
+ height: number;
7
+ };
8
+
9
+ export type Video = {
10
+ id: number;
11
+ url: string;
12
+ type: 'Youtube' | 'api.video' | 'Kumullus';
13
+ };
14
+
15
+ export type Media = {
16
+ image?: Image;
17
+ video?: Video;
18
+ };
@@ -0,0 +1,42 @@
1
+ export const Languages = {
2
+ 'en-US': 'us',
3
+ 'fr-FR': 'fr',
4
+ 'es-ES': 'es',
5
+ 'it-IT': 'it',
6
+ 'de-DE': 'de',
7
+ 'ru-RU': 'ru',
8
+ 'nl-NL': 'nl',
9
+ 'pt-BR': 'br',
10
+ 'zh-CN': 'cn',
11
+ 'he-IL': 'il',
12
+ 'cs-CZ': 'cz',
13
+ 'ko-KR': 'kr',
14
+ 'ja-JP': 'jp',
15
+ 'zh-TW': 'tw',
16
+ 'bg-BG': 'bg',
17
+ 'hr-HR': 'hr',
18
+ 'da-DK': 'dk',
19
+ 'fi-FI': 'fi',
20
+ 'el-GR': 'gr',
21
+ 'hu-HU': 'hu',
22
+ 'nb-NO': 'no',
23
+ 'pl-PL': 'pl',
24
+ 'pt-PT': 'pt',
25
+ 'ro-RO': 'ro',
26
+ 'sv-SE': 'se',
27
+ 'tr-TR': 'tr',
28
+ sk: 'sk',
29
+ sl: 'sl',
30
+ 'et-EE': 'ee',
31
+ 'id-ID': 'id',
32
+ ar: 'ar',
33
+ lt: 'lt',
34
+ 'lv-LV': 'lv',
35
+ 'th-TH': 'th',
36
+ };
37
+
38
+ export type LanguageCode = keyof typeof Languages;
39
+
40
+ export type MultilingualLabel = Partial<{
41
+ [languageCode in LanguageCode]: string;
42
+ }>;
@@ -0,0 +1,10 @@
1
+ import type { MultilingualLabel } from './multilingual';
2
+
3
+ export type Thematic = {
4
+ id: number;
5
+ name: string;
6
+ level: number;
7
+ label: MultilingualLabel;
8
+ icon?: string;
9
+ parentId?: number;
10
+ };
@@ -0,0 +1,150 @@
1
+ import {
2
+ createCdn,
3
+ imgixTransformationQueries,
4
+ twicpicsTransformationQueries,
5
+ } from '../cdn.factory';
6
+ import type { InstanceMapper } from '../types';
7
+ import { getCdnFromS3UrlFactory } from '../utils/get-cdn-from-s3-url.util';
8
+ import { getCdnUrlFactory } from '../utils/get-cdn-url.util';
9
+
10
+ describe('TransformationQueries', () => {
11
+ it('Imgix - should handle imgix transformation', () => {
12
+ expect(
13
+ imgixTransformationQueries({
14
+ fit: 'crop',
15
+ width: 1,
16
+ height: 1,
17
+ }),
18
+ ).toBe('auto=compress%2Cformat&fit=crop&h=1&w=1');
19
+
20
+ expect(imgixTransformationQueries({ fit: 'crop', width: 1 })).toBe(
21
+ 'auto=compress%2Cformat&fit=crop&w=1',
22
+ );
23
+
24
+ expect(imgixTransformationQueries({ fit: 'crop', height: 1 })).toBe(
25
+ 'auto=compress%2Cformat&fit=crop&h=1',
26
+ );
27
+
28
+ expect(imgixTransformationQueries({ width: 1 })).toBe(
29
+ 'auto=compress%2Cformat&w=1',
30
+ );
31
+
32
+ expect(imgixTransformationQueries({ height: 1 })).toBe(
33
+ 'auto=compress%2Cformat&h=1',
34
+ );
35
+
36
+ expect(imgixTransformationQueries({ width: 1, height: 1 })).toBe(
37
+ 'auto=compress%2Cformat&h=1&w=1',
38
+ );
39
+
40
+ expect(imgixTransformationQueries({ devicePixelRatio: 2 })).toBe(
41
+ 'auto=compress%2Cformat&dpr=2',
42
+ );
43
+
44
+ expect(imgixTransformationQueries({ quality: 75 })).toBe(
45
+ 'auto=compress%2Cformat&q=75',
46
+ );
47
+
48
+ expect(imgixTransformationQueries({ quality: 75, compress: false })).toBe(
49
+ 'q=75',
50
+ );
51
+
52
+ expect(imgixTransformationQueries({ compress: false })).toStrictEqual('');
53
+ });
54
+
55
+ it('should handle twicpics transformation', () => {
56
+ const crop = twicpicsTransformationQueries({
57
+ fit: 'crop',
58
+ width: 1,
59
+ height: 1,
60
+ });
61
+
62
+ expect(crop).toBe('twic=v1/quality=90/crop=1x1');
63
+
64
+ const contain = twicpicsTransformationQueries({
65
+ fit: 'contain',
66
+ width: 1,
67
+ height: 1,
68
+ });
69
+
70
+ expect(contain).toBe('twic=v1/quality=90/contain=1x1');
71
+
72
+ const coverOnlyWidth = twicpicsTransformationQueries({ width: 1 });
73
+
74
+ expect(coverOnlyWidth).toBe('twic=v1/quality=90/cover=1x-');
75
+
76
+ const coverOnlyHeight = twicpicsTransformationQueries({ height: 1 });
77
+
78
+ expect(coverOnlyHeight).toBe('twic=v1/quality=90/cover=-x1');
79
+
80
+ const noSize = twicpicsTransformationQueries({
81
+ fit: 'contain',
82
+ });
83
+
84
+ expect(noSize).toBe('twic=v1/quality=90');
85
+
86
+ const quality = twicpicsTransformationQueries({
87
+ quality: 75,
88
+ });
89
+
90
+ expect(quality).toBe('twic=v1/quality=75');
91
+
92
+ const devicePixelRatio = twicpicsTransformationQueries({
93
+ height: 100,
94
+ width: 45,
95
+ devicePixelRatio: 2,
96
+ });
97
+
98
+ expect(devicePixelRatio).toBe('twic=v1/quality=90/cover=90x200');
99
+ });
100
+ });
101
+
102
+ describe('cdnFactory', () => {
103
+ it('Imgix - should instanciate the right cdn', () => {
104
+ const domain = 'https://sparted.imgix.fr';
105
+ const instanceMapper: InstanceMapper = (instanceId) => `/prod/${instanceId}`;
106
+ const getCdnUrl = getCdnUrlFactory({
107
+ domain,
108
+ instanceMapper,
109
+ transformationQueries: imgixTransformationQueries,
110
+ });
111
+
112
+ const getCdnFromS3Url = getCdnFromS3UrlFactory({
113
+ getCdnUrl,
114
+ });
115
+
116
+ const cdn = createCdn({
117
+ type: 'imgix',
118
+ domain: 'https://sparted.imgix.fr/',
119
+ instanceMapper,
120
+ });
121
+
122
+ expect(cdn.getCdnUrl.toString()).toBe(getCdnUrl.toString());
123
+
124
+ expect(cdn.getCdnFromS3Url.toString()).toBe(getCdnFromS3Url.toString());
125
+ });
126
+
127
+ it('Twicpics - should instanciate the right cdn', () => {
128
+ const domain = 'https://sparted.twicpics.fr';
129
+ const instanceMapper: InstanceMapper = (instanceId) => `/prod/${instanceId}`;
130
+ const getCdnUrl = getCdnUrlFactory({
131
+ domain,
132
+ instanceMapper,
133
+ transformationQueries: twicpicsTransformationQueries,
134
+ });
135
+
136
+ const getCdnFromS3Url = getCdnFromS3UrlFactory({
137
+ getCdnUrl,
138
+ });
139
+
140
+ const cdn = createCdn({
141
+ type: 'twicpics',
142
+ domain: 'https://sparted.twicpics.fr/',
143
+ instanceMapper: (instanceId) => instanceId,
144
+ });
145
+
146
+ expect(cdn.getCdnUrl.toString()).toBe(getCdnUrl.toString());
147
+
148
+ expect(cdn.getCdnFromS3Url.toString()).toBe(getCdnFromS3Url.toString());
149
+ });
150
+ });