@sparted/shared-library 1.9.3 → 1.9.5

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 (479) 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/.prettierrc.json +6 -0
  6. package/CHANGELOG.md +457 -0
  7. package/README.md +26 -0
  8. package/{business → dist/business}/types/content.js +4 -4
  9. package/{business → dist/business}/types/content.js.map +1 -1
  10. package/{business → dist/business}/types/multilingual.d.ts +1 -0
  11. package/{business → dist/business}/types/multilingual.js +1 -0
  12. package/dist/business/types/multilingual.js.map +1 -0
  13. package/dist/package.json +25 -0
  14. package/global.d.ts +2 -0
  15. package/package.json +6 -3
  16. package/rollup.config.ts +19 -0
  17. package/sparted-shared-library-v1.7.93.tgz +0 -0
  18. package/src/array/__tests__/array-to-map.test.ts +50 -0
  19. package/src/array/__tests__/get-values-from-keys.test.ts +14 -0
  20. package/src/array/__tests__/inner-join.test.ts +55 -0
  21. package/src/array/__tests__/left-outter-join.test.ts +55 -0
  22. package/src/array/array-to-map.ts +32 -0
  23. package/src/array/get-values-from-keys.ts +3 -0
  24. package/src/array/index.ts +4 -0
  25. package/src/array/inner-join.ts +10 -0
  26. package/src/array/left-outter-join.ts +10 -0
  27. package/src/business/campaign/__tests__/compute-current-session.test.ts +189 -0
  28. package/src/business/campaign/__tests__/compute-intense-calendar.test.ts +134 -0
  29. package/src/business/campaign/__tests__/find-next-available-date.test.ts +82 -0
  30. package/src/business/campaign/__tests__/get-calendar-dession-dates-from-campaign.test.ts +123 -0
  31. package/src/business/campaign/index.ts +1 -0
  32. package/src/business/campaign/live-campaign.ts +133 -0
  33. package/src/business/course/index.ts +1 -0
  34. package/src/business/course/microknowledge-max-lengths.ts +12 -0
  35. package/src/business/index.ts +4 -0
  36. package/src/business/picture-spot/index.ts +3 -0
  37. package/src/business/types/achievement.ts +41 -0
  38. package/src/business/types/activity.ts +64 -0
  39. package/src/business/types/audience.ts +23 -0
  40. package/src/business/types/battle.ts +17 -0
  41. package/src/business/types/breaking-news.ts +43 -0
  42. package/src/business/types/campaign.ts +163 -0
  43. package/src/business/types/content.ts +261 -0
  44. package/src/business/types/document.ts +17 -0
  45. package/src/business/types/index.ts +14 -0
  46. package/src/business/types/media.ts +18 -0
  47. package/src/business/types/multilingual.ts +47 -0
  48. package/src/business/types/player.ts +28 -0
  49. package/src/business/types/score.ts +61 -0
  50. package/src/business/types/thematic.ts +12 -0
  51. package/src/business/types/user-engagement.ts +11 -0
  52. package/src/cdn/__tests__/cdn.factory.test.ts +150 -0
  53. package/src/cdn/__tests__/utils.test.ts +528 -0
  54. package/src/cdn/cdn.factory.ts +70 -0
  55. package/src/cdn/index.ts +2 -0
  56. package/src/cdn/types/cdn-factory.type.ts +49 -0
  57. package/src/cdn/types/index.ts +1 -0
  58. package/src/cdn/utils/extract-info-from-url.util.ts +25 -0
  59. package/src/cdn/utils/get-cdn-from-s3-url.util.ts +20 -0
  60. package/src/cdn/utils/get-cdn-url.util.ts +31 -0
  61. package/src/cdn/utils/twicpics-transformations.util.ts +9 -0
  62. package/src/chrono/get-approximated-session-time.ts +27 -0
  63. package/src/chrono/index.ts +1 -0
  64. package/src/color/__tests__/get-contrast-color.test.ts +22 -0
  65. package/src/color/get-contrast-color.ts +18 -0
  66. package/src/color/index.ts +1 -0
  67. package/src/crypto/__tests__/aes256.test.ts +23 -0
  68. package/src/crypto/aes256.ts +22 -0
  69. package/src/crypto/index.ts +1 -0
  70. package/src/date/__tests__/get-iso-day-number.test.ts +34 -0
  71. package/src/date/__tests__/get-remaining-time.test.ts +78 -0
  72. package/src/date/__tests__/get-start-of-day.test.ts +92 -0
  73. package/src/date/__tests__/is-same-date.test.ts +50 -0
  74. package/src/date/__tests__/shift-date-by.test.ts +76 -0
  75. package/src/date/__tests__/to-utc-date-string.test.ts +28 -0
  76. package/src/date/add-days.ts +5 -0
  77. package/src/date/difference-in-days.ts +6 -0
  78. package/src/date/get-iso-day-number.ts +1 -0
  79. package/src/date/get-next-day.ts +6 -0
  80. package/src/date/get-remaining-time.ts +24 -0
  81. package/src/date/get-start-of-day.ts +11 -0
  82. package/src/date/index.ts +10 -0
  83. package/src/date/is-same-date.ts +7 -0
  84. package/src/date/shift-date-by.ts +17 -0
  85. package/src/date/to-plain-date-string.ts +1 -0
  86. package/src/date/to-utc-date-string.ts +3 -0
  87. package/src/formatting/__tests__/format-number.test.ts +11 -0
  88. package/src/formatting/format-number.ts +14 -0
  89. package/src/formatting/index.ts +1 -0
  90. package/src/fp/__tests__/run-while.test.ts +29 -0
  91. package/src/fp/index.ts +1 -0
  92. package/src/fp/run-while.ts +54 -0
  93. package/src/http/__tests__/build-search-params.test.ts +17 -0
  94. package/src/http/__tests__/encode-search-object.test.ts +34 -0
  95. package/src/http/__tests__/fetch-with-timeout.test.ts +50 -0
  96. package/src/http/build-search-params.ts +16 -0
  97. package/src/http/encode-search-object.ts +42 -0
  98. package/src/http/fetch-with-timeout.ts +27 -0
  99. package/src/http/index.ts +3 -0
  100. package/src/index.ts +19 -0
  101. package/src/linked-list/__tests__/apply-diff-linked-list.test.ts +103 -0
  102. package/src/linked-list/__tests__/create-linked-list.test.ts +204 -0
  103. package/src/linked-list/__tests__/find-linked-list.test.ts +40 -0
  104. package/src/linked-list/__tests__/get-linked-list.test.ts +28 -0
  105. package/src/linked-list/__tests__/insert-linked-list.test.ts +186 -0
  106. package/src/linked-list/__tests__/linked-list-utils.test.ts +252 -0
  107. package/src/linked-list/__tests__/reduce-linked-list.test.ts +31 -0
  108. package/src/linked-list/__tests__/remove-linked-list.test.ts +129 -0
  109. package/src/linked-list/__tests__/update-linked-list.test.ts +53 -0
  110. package/src/linked-list/__tests__/while-linked-list.test.ts +58 -0
  111. package/src/linked-list/apply-diff-linked-list.ts +35 -0
  112. package/src/linked-list/create-linked-list.ts +79 -0
  113. package/src/linked-list/find-linked-list.ts +26 -0
  114. package/src/linked-list/get-linked-list.ts +9 -0
  115. package/src/linked-list/index.ts +2 -0
  116. package/src/linked-list/insert-linked-list.ts +50 -0
  117. package/src/linked-list/linked-list-utils.ts +143 -0
  118. package/src/linked-list/reduce-linked-list.ts +18 -0
  119. package/src/linked-list/remove-linked-list.ts +36 -0
  120. package/src/linked-list/type.ts +38 -0
  121. package/src/linked-list/update-linked-list.ts +30 -0
  122. package/src/linked-list/while-linked-list.ts +33 -0
  123. package/src/math/__tests__/clamp-number.test.ts +30 -0
  124. package/src/math/__tests__/interpolate.test.ts +28 -0
  125. package/src/math/__tests__/median.test.ts +27 -0
  126. package/src/math/__tests__/number-range.test.ts +59 -0
  127. package/src/math/__tests__/random-number.test.ts +11 -0
  128. package/src/math/clamp-number.ts +8 -0
  129. package/src/math/index.ts +5 -0
  130. package/src/math/interpolate.ts +18 -0
  131. package/src/math/median.ts +21 -0
  132. package/src/math/number-range.ts +16 -0
  133. package/src/math/random-number.ts +10 -0
  134. package/src/object/__tests__/merge-deep.test.ts +56 -0
  135. package/src/object/__tests__/strip-properties-from-object.test.ts +65 -0
  136. package/src/object/index.ts +2 -0
  137. package/src/object/merge-deep.ts +26 -0
  138. package/src/object/strip-properties-from-object.ts +26 -0
  139. package/src/parsing/__tests__/parse-boolean.test.ts +15 -0
  140. package/src/parsing/__tests__/parse-enum.test.ts +19 -0
  141. package/src/parsing/__tests__/parse-number.test.ts +20 -0
  142. package/src/parsing/index.ts +3 -0
  143. package/src/parsing/parse-boolean.ts +10 -0
  144. package/src/parsing/parse-enum.ts +16 -0
  145. package/src/parsing/parse-number.ts +12 -0
  146. package/src/predicates/__tests__/is-function.test.ts +11 -0
  147. package/src/predicates/__tests__/is-null.test.ts +11 -0
  148. package/src/predicates/__tests__/is-object.test.ts +11 -0
  149. package/src/predicates/__tests__/is-primitive.test.ts +42 -0
  150. package/src/predicates/__tests__/is-undefined.test.ts +11 -0
  151. package/src/predicates/__tests__/is-uuid.test.ts +13 -0
  152. package/src/predicates/index.ts +5 -0
  153. package/src/predicates/is-function.ts +3 -0
  154. package/src/predicates/is-null.ts +1 -0
  155. package/src/predicates/is-object.ts +3 -0
  156. package/src/predicates/is-primitive.ts +19 -0
  157. package/src/predicates/is-undefined.ts +3 -0
  158. package/src/predicates/is-uuid.ts +3 -0
  159. package/src/promise/__tests__/delay.test.ts +13 -0
  160. package/src/promise/__tests__/execute-or-resolve-default.test.ts +25 -0
  161. package/src/promise/__tests__/execute-with-delay.test.ts +24 -0
  162. package/src/promise/delay.ts +3 -0
  163. package/src/promise/execute-or-resolve-default.ts +14 -0
  164. package/src/promise/execute-with-delay.ts +6 -0
  165. package/src/promise/index.ts +3 -0
  166. package/src/string/__tests__/is-string-length-within-range.test.ts +23 -0
  167. package/src/string/__tests__/replace-in-template.test.ts +52 -0
  168. package/src/string/index.ts +2 -0
  169. package/src/string/is-string-length-within-range.ts +10 -0
  170. package/src/string/replace-in-template.ts +45 -0
  171. package/src/time/__tests__/convert.test.ts +14 -0
  172. package/src/time/__tests__/format-minutes.test.ts +10 -0
  173. package/src/time/__tests__/get-time-diff-as-string.test.ts +128 -0
  174. package/src/time/constants.ts +4 -0
  175. package/src/time/convert.ts +5 -0
  176. package/src/time/format-minutes.ts +9 -0
  177. package/src/time/get-time-diff-as-string.ts +196 -0
  178. package/src/time/index.ts +4 -0
  179. package/src/types/function.ts +1 -0
  180. package/src/types/general.ts +15 -0
  181. package/src/types/index.ts +4 -0
  182. package/src/types/object.ts +33 -0
  183. package/src/types/search.ts +36 -0
  184. package/tmp-lib.tgz +0 -0
  185. package/tsconfig.json +25 -0
  186. package/yarn.lock +4280 -0
  187. package/business/types/multilingual.js.map +0 -1
  188. /package/{_virtual → dist/_virtual}/_tslib.js +0 -0
  189. /package/{_virtual → dist/_virtual}/_tslib.js.map +0 -0
  190. /package/{array → dist/array}/array-to-map.d.ts +0 -0
  191. /package/{array → dist/array}/array-to-map.js +0 -0
  192. /package/{array → dist/array}/array-to-map.js.map +0 -0
  193. /package/{array → dist/array}/get-values-from-keys.d.ts +0 -0
  194. /package/{array → dist/array}/get-values-from-keys.js +0 -0
  195. /package/{array → dist/array}/get-values-from-keys.js.map +0 -0
  196. /package/{array → dist/array}/index.d.ts +0 -0
  197. /package/{array → dist/array}/index.js +0 -0
  198. /package/{array → dist/array}/index.js.map +0 -0
  199. /package/{array → dist/array}/inner-join.d.ts +0 -0
  200. /package/{array → dist/array}/inner-join.js +0 -0
  201. /package/{array → dist/array}/inner-join.js.map +0 -0
  202. /package/{array → dist/array}/left-outter-join.d.ts +0 -0
  203. /package/{array → dist/array}/left-outter-join.js +0 -0
  204. /package/{array → dist/array}/left-outter-join.js.map +0 -0
  205. /package/{business → dist/business}/campaign/index.d.ts +0 -0
  206. /package/{business → dist/business}/campaign/index.js +0 -0
  207. /package/{business → dist/business}/campaign/index.js.map +0 -0
  208. /package/{business → dist/business}/campaign/live-campaign.d.ts +0 -0
  209. /package/{business → dist/business}/campaign/live-campaign.js +0 -0
  210. /package/{business → dist/business}/campaign/live-campaign.js.map +0 -0
  211. /package/{business → dist/business}/course/index.d.ts +0 -0
  212. /package/{business → dist/business}/course/index.js +0 -0
  213. /package/{business → dist/business}/course/index.js.map +0 -0
  214. /package/{business → dist/business}/course/microknowledge-max-lengths.d.ts +0 -0
  215. /package/{business → dist/business}/course/microknowledge-max-lengths.js +0 -0
  216. /package/{business → dist/business}/course/microknowledge-max-lengths.js.map +0 -0
  217. /package/{business → dist/business}/index.d.ts +0 -0
  218. /package/{business → dist/business}/index.js +0 -0
  219. /package/{business → dist/business}/index.js.map +0 -0
  220. /package/{business → dist/business}/picture-spot/index.d.ts +0 -0
  221. /package/{business → dist/business}/picture-spot/index.js +0 -0
  222. /package/{business → dist/business}/picture-spot/index.js.map +0 -0
  223. /package/{business → dist/business}/types/achievement.d.ts +0 -0
  224. /package/{business → dist/business}/types/activity.d.ts +0 -0
  225. /package/{business → dist/business}/types/activity.js +0 -0
  226. /package/{business → dist/business}/types/activity.js.map +0 -0
  227. /package/{business → dist/business}/types/audience.d.ts +0 -0
  228. /package/{business → dist/business}/types/battle.d.ts +0 -0
  229. /package/{business → dist/business}/types/breaking-news.d.ts +0 -0
  230. /package/{business → dist/business}/types/campaign.d.ts +0 -0
  231. /package/{business → dist/business}/types/campaign.js +0 -0
  232. /package/{business → dist/business}/types/campaign.js.map +0 -0
  233. /package/{business → dist/business}/types/content.d.ts +0 -0
  234. /package/{business → dist/business}/types/document.d.ts +0 -0
  235. /package/{business → dist/business}/types/index.d.ts +0 -0
  236. /package/{business → dist/business}/types/index.js +0 -0
  237. /package/{business → dist/business}/types/index.js.map +0 -0
  238. /package/{business → dist/business}/types/media.d.ts +0 -0
  239. /package/{business → dist/business}/types/player.d.ts +0 -0
  240. /package/{business → dist/business}/types/score.d.ts +0 -0
  241. /package/{business → dist/business}/types/score.js +0 -0
  242. /package/{business → dist/business}/types/score.js.map +0 -0
  243. /package/{business → dist/business}/types/thematic.d.ts +0 -0
  244. /package/{business → dist/business}/types/user-engagement.d.ts +0 -0
  245. /package/{cdn → dist/cdn}/cdn.factory.d.ts +0 -0
  246. /package/{cdn → dist/cdn}/cdn.factory.js +0 -0
  247. /package/{cdn → dist/cdn}/cdn.factory.js.map +0 -0
  248. /package/{cdn → dist/cdn}/index.d.ts +0 -0
  249. /package/{cdn → dist/cdn}/index.js +0 -0
  250. /package/{cdn → dist/cdn}/index.js.map +0 -0
  251. /package/{cdn → dist/cdn}/types/cdn-factory.type.d.ts +0 -0
  252. /package/{cdn → dist/cdn}/types/index.d.ts +0 -0
  253. /package/{cdn → dist/cdn}/types/index.js +0 -0
  254. /package/{cdn → dist/cdn}/types/index.js.map +0 -0
  255. /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.d.ts +0 -0
  256. /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.js +0 -0
  257. /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.js.map +0 -0
  258. /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.d.ts +0 -0
  259. /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.js +0 -0
  260. /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.js.map +0 -0
  261. /package/{cdn → dist/cdn}/utils/get-cdn-url.util.d.ts +0 -0
  262. /package/{cdn → dist/cdn}/utils/get-cdn-url.util.js +0 -0
  263. /package/{cdn → dist/cdn}/utils/get-cdn-url.util.js.map +0 -0
  264. /package/{cdn → dist/cdn}/utils/twicpics-transformations.util.d.ts +0 -0
  265. /package/{cdn → dist/cdn}/utils/twicpics-transformations.util.js +0 -0
  266. /package/{cdn → dist/cdn}/utils/twicpics-transformations.util.js.map +0 -0
  267. /package/{chrono → dist/chrono}/get-approximated-session-time.d.ts +0 -0
  268. /package/{chrono → dist/chrono}/get-approximated-session-time.js +0 -0
  269. /package/{chrono → dist/chrono}/get-approximated-session-time.js.map +0 -0
  270. /package/{chrono → dist/chrono}/index.d.ts +0 -0
  271. /package/{chrono → dist/chrono}/index.js +0 -0
  272. /package/{chrono → dist/chrono}/index.js.map +0 -0
  273. /package/{color → dist/color}/get-contrast-color.d.ts +0 -0
  274. /package/{color → dist/color}/get-contrast-color.js +0 -0
  275. /package/{color → dist/color}/get-contrast-color.js.map +0 -0
  276. /package/{color → dist/color}/index.d.ts +0 -0
  277. /package/{color → dist/color}/index.js +0 -0
  278. /package/{color → dist/color}/index.js.map +0 -0
  279. /package/{crypto → dist/crypto}/aes256.d.ts +0 -0
  280. /package/{crypto → dist/crypto}/aes256.js +0 -0
  281. /package/{crypto → dist/crypto}/aes256.js.map +0 -0
  282. /package/{crypto → dist/crypto}/index.d.ts +0 -0
  283. /package/{crypto → dist/crypto}/index.js +0 -0
  284. /package/{crypto → dist/crypto}/index.js.map +0 -0
  285. /package/{date → dist/date}/add-days.d.ts +0 -0
  286. /package/{date → dist/date}/add-days.js +0 -0
  287. /package/{date → dist/date}/add-days.js.map +0 -0
  288. /package/{date → dist/date}/difference-in-days.d.ts +0 -0
  289. /package/{date → dist/date}/difference-in-days.js +0 -0
  290. /package/{date → dist/date}/difference-in-days.js.map +0 -0
  291. /package/{date → dist/date}/get-iso-day-number.d.ts +0 -0
  292. /package/{date → dist/date}/get-iso-day-number.js +0 -0
  293. /package/{date → dist/date}/get-iso-day-number.js.map +0 -0
  294. /package/{date → dist/date}/get-next-day.d.ts +0 -0
  295. /package/{date → dist/date}/get-next-day.js +0 -0
  296. /package/{date → dist/date}/get-next-day.js.map +0 -0
  297. /package/{date → dist/date}/get-remaining-time.d.ts +0 -0
  298. /package/{date → dist/date}/get-remaining-time.js +0 -0
  299. /package/{date → dist/date}/get-remaining-time.js.map +0 -0
  300. /package/{date → dist/date}/get-start-of-day.d.ts +0 -0
  301. /package/{date → dist/date}/get-start-of-day.js +0 -0
  302. /package/{date → dist/date}/get-start-of-day.js.map +0 -0
  303. /package/{date → dist/date}/index.d.ts +0 -0
  304. /package/{date → dist/date}/index.js +0 -0
  305. /package/{date → dist/date}/index.js.map +0 -0
  306. /package/{date → dist/date}/is-same-date.d.ts +0 -0
  307. /package/{date → dist/date}/is-same-date.js +0 -0
  308. /package/{date → dist/date}/is-same-date.js.map +0 -0
  309. /package/{date → dist/date}/shift-date-by.d.ts +0 -0
  310. /package/{date → dist/date}/shift-date-by.js +0 -0
  311. /package/{date → dist/date}/shift-date-by.js.map +0 -0
  312. /package/{date → dist/date}/to-plain-date-string.d.ts +0 -0
  313. /package/{date → dist/date}/to-plain-date-string.js +0 -0
  314. /package/{date → dist/date}/to-plain-date-string.js.map +0 -0
  315. /package/{date → dist/date}/to-utc-date-string.d.ts +0 -0
  316. /package/{date → dist/date}/to-utc-date-string.js +0 -0
  317. /package/{date → dist/date}/to-utc-date-string.js.map +0 -0
  318. /package/{formatting → dist/formatting}/format-number.d.ts +0 -0
  319. /package/{formatting → dist/formatting}/format-number.js +0 -0
  320. /package/{formatting → dist/formatting}/format-number.js.map +0 -0
  321. /package/{formatting → dist/formatting}/index.d.ts +0 -0
  322. /package/{formatting → dist/formatting}/index.js +0 -0
  323. /package/{formatting → dist/formatting}/index.js.map +0 -0
  324. /package/{fp → dist/fp}/index.d.ts +0 -0
  325. /package/{fp → dist/fp}/index.js +0 -0
  326. /package/{fp → dist/fp}/index.js.map +0 -0
  327. /package/{fp → dist/fp}/run-while.d.ts +0 -0
  328. /package/{fp → dist/fp}/run-while.js +0 -0
  329. /package/{fp → dist/fp}/run-while.js.map +0 -0
  330. /package/{http → dist/http}/build-search-params.d.ts +0 -0
  331. /package/{http → dist/http}/build-search-params.js +0 -0
  332. /package/{http → dist/http}/build-search-params.js.map +0 -0
  333. /package/{http → dist/http}/encode-search-object.d.ts +0 -0
  334. /package/{http → dist/http}/encode-search-object.js +0 -0
  335. /package/{http → dist/http}/encode-search-object.js.map +0 -0
  336. /package/{http → dist/http}/fetch-with-timeout.d.ts +0 -0
  337. /package/{http → dist/http}/fetch-with-timeout.js +0 -0
  338. /package/{http → dist/http}/fetch-with-timeout.js.map +0 -0
  339. /package/{http → dist/http}/index.d.ts +0 -0
  340. /package/{http → dist/http}/index.js +0 -0
  341. /package/{http → dist/http}/index.js.map +0 -0
  342. /package/{index.d.ts → dist/index.d.ts} +0 -0
  343. /package/{index.js → dist/index.js} +0 -0
  344. /package/{index.js.map → dist/index.js.map} +0 -0
  345. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.d.ts +0 -0
  346. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.js +0 -0
  347. /package/{linked-list → dist/linked-list}/apply-diff-linked-list.js.map +0 -0
  348. /package/{linked-list → dist/linked-list}/create-linked-list.d.ts +0 -0
  349. /package/{linked-list → dist/linked-list}/create-linked-list.js +0 -0
  350. /package/{linked-list → dist/linked-list}/create-linked-list.js.map +0 -0
  351. /package/{linked-list → dist/linked-list}/find-linked-list.d.ts +0 -0
  352. /package/{linked-list → dist/linked-list}/find-linked-list.js +0 -0
  353. /package/{linked-list → dist/linked-list}/find-linked-list.js.map +0 -0
  354. /package/{linked-list → dist/linked-list}/get-linked-list.d.ts +0 -0
  355. /package/{linked-list → dist/linked-list}/get-linked-list.js +0 -0
  356. /package/{linked-list → dist/linked-list}/get-linked-list.js.map +0 -0
  357. /package/{linked-list → dist/linked-list}/index.d.ts +0 -0
  358. /package/{linked-list → dist/linked-list}/index.js +0 -0
  359. /package/{linked-list → dist/linked-list}/index.js.map +0 -0
  360. /package/{linked-list → dist/linked-list}/insert-linked-list.d.ts +0 -0
  361. /package/{linked-list → dist/linked-list}/insert-linked-list.js +0 -0
  362. /package/{linked-list → dist/linked-list}/insert-linked-list.js.map +0 -0
  363. /package/{linked-list → dist/linked-list}/linked-list-utils.d.ts +0 -0
  364. /package/{linked-list → dist/linked-list}/linked-list-utils.js +0 -0
  365. /package/{linked-list → dist/linked-list}/linked-list-utils.js.map +0 -0
  366. /package/{linked-list → dist/linked-list}/reduce-linked-list.d.ts +0 -0
  367. /package/{linked-list → dist/linked-list}/reduce-linked-list.js +0 -0
  368. /package/{linked-list → dist/linked-list}/reduce-linked-list.js.map +0 -0
  369. /package/{linked-list → dist/linked-list}/remove-linked-list.d.ts +0 -0
  370. /package/{linked-list → dist/linked-list}/remove-linked-list.js +0 -0
  371. /package/{linked-list → dist/linked-list}/remove-linked-list.js.map +0 -0
  372. /package/{linked-list → dist/linked-list}/type.d.ts +0 -0
  373. /package/{linked-list → dist/linked-list}/update-linked-list.d.ts +0 -0
  374. /package/{linked-list → dist/linked-list}/update-linked-list.js +0 -0
  375. /package/{linked-list → dist/linked-list}/update-linked-list.js.map +0 -0
  376. /package/{linked-list → dist/linked-list}/while-linked-list.d.ts +0 -0
  377. /package/{linked-list → dist/linked-list}/while-linked-list.js +0 -0
  378. /package/{linked-list → dist/linked-list}/while-linked-list.js.map +0 -0
  379. /package/{math → dist/math}/clamp-number.d.ts +0 -0
  380. /package/{math → dist/math}/clamp-number.js +0 -0
  381. /package/{math → dist/math}/clamp-number.js.map +0 -0
  382. /package/{math → dist/math}/index.d.ts +0 -0
  383. /package/{math → dist/math}/index.js +0 -0
  384. /package/{math → dist/math}/index.js.map +0 -0
  385. /package/{math → dist/math}/interpolate.d.ts +0 -0
  386. /package/{math → dist/math}/interpolate.js +0 -0
  387. /package/{math → dist/math}/interpolate.js.map +0 -0
  388. /package/{math → dist/math}/median.d.ts +0 -0
  389. /package/{math → dist/math}/median.js +0 -0
  390. /package/{math → dist/math}/median.js.map +0 -0
  391. /package/{math → dist/math}/number-range.d.ts +0 -0
  392. /package/{math → dist/math}/number-range.js +0 -0
  393. /package/{math → dist/math}/number-range.js.map +0 -0
  394. /package/{math → dist/math}/random-number.d.ts +0 -0
  395. /package/{math → dist/math}/random-number.js +0 -0
  396. /package/{math → dist/math}/random-number.js.map +0 -0
  397. /package/{object → dist/object}/index.d.ts +0 -0
  398. /package/{object → dist/object}/index.js +0 -0
  399. /package/{object → dist/object}/index.js.map +0 -0
  400. /package/{object → dist/object}/merge-deep.d.ts +0 -0
  401. /package/{object → dist/object}/merge-deep.js +0 -0
  402. /package/{object → dist/object}/merge-deep.js.map +0 -0
  403. /package/{object → dist/object}/strip-properties-from-object.d.ts +0 -0
  404. /package/{object → dist/object}/strip-properties-from-object.js +0 -0
  405. /package/{object → dist/object}/strip-properties-from-object.js.map +0 -0
  406. /package/{parsing → dist/parsing}/index.d.ts +0 -0
  407. /package/{parsing → dist/parsing}/index.js +0 -0
  408. /package/{parsing → dist/parsing}/index.js.map +0 -0
  409. /package/{parsing → dist/parsing}/parse-boolean.d.ts +0 -0
  410. /package/{parsing → dist/parsing}/parse-boolean.js +0 -0
  411. /package/{parsing → dist/parsing}/parse-boolean.js.map +0 -0
  412. /package/{parsing → dist/parsing}/parse-enum.d.ts +0 -0
  413. /package/{parsing → dist/parsing}/parse-enum.js +0 -0
  414. /package/{parsing → dist/parsing}/parse-enum.js.map +0 -0
  415. /package/{parsing → dist/parsing}/parse-number.d.ts +0 -0
  416. /package/{parsing → dist/parsing}/parse-number.js +0 -0
  417. /package/{parsing → dist/parsing}/parse-number.js.map +0 -0
  418. /package/{predicates → dist/predicates}/index.d.ts +0 -0
  419. /package/{predicates → dist/predicates}/index.js +0 -0
  420. /package/{predicates → dist/predicates}/index.js.map +0 -0
  421. /package/{predicates → dist/predicates}/is-function.d.ts +0 -0
  422. /package/{predicates → dist/predicates}/is-function.js +0 -0
  423. /package/{predicates → dist/predicates}/is-function.js.map +0 -0
  424. /package/{predicates → dist/predicates}/is-null.d.ts +0 -0
  425. /package/{predicates → dist/predicates}/is-null.js +0 -0
  426. /package/{predicates → dist/predicates}/is-null.js.map +0 -0
  427. /package/{predicates → dist/predicates}/is-object.d.ts +0 -0
  428. /package/{predicates → dist/predicates}/is-object.js +0 -0
  429. /package/{predicates → dist/predicates}/is-object.js.map +0 -0
  430. /package/{predicates → dist/predicates}/is-primitive.d.ts +0 -0
  431. /package/{predicates → dist/predicates}/is-primitive.js +0 -0
  432. /package/{predicates → dist/predicates}/is-primitive.js.map +0 -0
  433. /package/{predicates → dist/predicates}/is-undefined.d.ts +0 -0
  434. /package/{predicates → dist/predicates}/is-undefined.js +0 -0
  435. /package/{predicates → dist/predicates}/is-undefined.js.map +0 -0
  436. /package/{predicates → dist/predicates}/is-uuid.d.ts +0 -0
  437. /package/{promise → dist/promise}/delay.d.ts +0 -0
  438. /package/{promise → dist/promise}/delay.js +0 -0
  439. /package/{promise → dist/promise}/delay.js.map +0 -0
  440. /package/{promise → dist/promise}/execute-or-resolve-default.d.ts +0 -0
  441. /package/{promise → dist/promise}/execute-or-resolve-default.js +0 -0
  442. /package/{promise → dist/promise}/execute-or-resolve-default.js.map +0 -0
  443. /package/{promise → dist/promise}/execute-with-delay.d.ts +0 -0
  444. /package/{promise → dist/promise}/execute-with-delay.js +0 -0
  445. /package/{promise → dist/promise}/execute-with-delay.js.map +0 -0
  446. /package/{promise → dist/promise}/index.d.ts +0 -0
  447. /package/{promise → dist/promise}/index.js +0 -0
  448. /package/{promise → dist/promise}/index.js.map +0 -0
  449. /package/{string → dist/string}/index.d.ts +0 -0
  450. /package/{string → dist/string}/index.js +0 -0
  451. /package/{string → dist/string}/index.js.map +0 -0
  452. /package/{string → dist/string}/is-string-length-within-range.d.ts +0 -0
  453. /package/{string → dist/string}/is-string-length-within-range.js +0 -0
  454. /package/{string → dist/string}/is-string-length-within-range.js.map +0 -0
  455. /package/{string → dist/string}/replace-in-template.d.ts +0 -0
  456. /package/{string → dist/string}/replace-in-template.js +0 -0
  457. /package/{string → dist/string}/replace-in-template.js.map +0 -0
  458. /package/{time → dist/time}/constants.d.ts +0 -0
  459. /package/{time → dist/time}/constants.js +0 -0
  460. /package/{time → dist/time}/constants.js.map +0 -0
  461. /package/{time → dist/time}/convert.d.ts +0 -0
  462. /package/{time → dist/time}/convert.js +0 -0
  463. /package/{time → dist/time}/convert.js.map +0 -0
  464. /package/{time → dist/time}/format-minutes.d.ts +0 -0
  465. /package/{time → dist/time}/format-minutes.js +0 -0
  466. /package/{time → dist/time}/format-minutes.js.map +0 -0
  467. /package/{time → dist/time}/get-time-diff-as-string.d.ts +0 -0
  468. /package/{time → dist/time}/get-time-diff-as-string.js +0 -0
  469. /package/{time → dist/time}/get-time-diff-as-string.js.map +0 -0
  470. /package/{time → dist/time}/index.d.ts +0 -0
  471. /package/{time → dist/time}/index.js +0 -0
  472. /package/{time → dist/time}/index.js.map +0 -0
  473. /package/{types → dist/types}/function.d.ts +0 -0
  474. /package/{types → dist/types}/general.d.ts +0 -0
  475. /package/{types → dist/types}/index.d.ts +0 -0
  476. /package/{types → dist/types}/index.js +0 -0
  477. /package/{types → dist/types}/index.js.map +0 -0
  478. /package/{types → dist/types}/object.d.ts +0 -0
  479. /package/{types → dist/types}/search.d.ts +0 -0
@@ -0,0 +1,40 @@
1
+ # Javascript Node CircleCI 2.0 configuration file
2
+ #
3
+ # Check https://circleci.com/docs/2.0/language-javascript/ for more details
4
+ #
5
+ version: 2.1
6
+ jobs:
7
+ test:
8
+ docker:
9
+ - image: cimg/node:18.10.0
10
+
11
+ steps:
12
+ - checkout
13
+
14
+ - run:
15
+ name: Set npm token
16
+ command: 'echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc'
17
+
18
+ - run:
19
+ name: Install node modules
20
+ command: yarn
21
+
22
+ - run:
23
+ name: Check lint
24
+ command: yarn lint
25
+
26
+ - run:
27
+ name: Run tests
28
+ # Limit resources as the default parameters overload the CPU of the machine and makes tests hang
29
+ command: yarn test --maxWorkers=50%
30
+
31
+ - run:
32
+ name: Build
33
+ command: yarn build
34
+
35
+ workflows:
36
+ version: 2
37
+
38
+ autodeploy:
39
+ jobs:
40
+ - test
package/.eslintignore ADDED
@@ -0,0 +1 @@
1
+ dist/
package/.eslintrc.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "env": {
3
+ "es2021": true,
4
+ "node": true
5
+ },
6
+ "plugins": [
7
+ "@typescript-eslint",
8
+ "prettier",
9
+ "import"
10
+ ],
11
+ "extends": [
12
+ "eslint:recommended",
13
+ "plugin:@typescript-eslint/recommended",
14
+ "plugin:import/recommended",
15
+ "plugin:import/typescript",
16
+ "prettier"
17
+ ],
18
+ "parser": "@typescript-eslint/parser",
19
+ "rules": {
20
+ "prettier/prettier": "warn",
21
+ "@typescript-eslint/no-explicit-any": "warn",
22
+ "@typescript-eslint/ban-types": "warn",
23
+ "@typescript-eslint/ban-ts-comment": "warn"
24
+ }
25
+ }
package/.gitignore ADDED
@@ -0,0 +1,37 @@
1
+ *.dat
2
+ *.iml
3
+ *.log
4
+ *.out
5
+ *.pid
6
+ *.seed
7
+ *.sublime-*
8
+ *.swo
9
+ *.swp
10
+ *.tgz
11
+ *.xml
12
+ .tmp
13
+ .env
14
+ doc/*.json
15
+
16
+ # Mac Related files
17
+ .DS_Store
18
+
19
+ # IDE Related Files
20
+ .idea
21
+ .project
22
+
23
+ # eslint
24
+ .eslintcache
25
+
26
+ # jest
27
+ jest-stare
28
+
29
+ # JS Related files
30
+ bower_components
31
+ npm-debug.log
32
+ node_modules
33
+ nestjs/node_modules
34
+ .npmrc
35
+
36
+ # Build
37
+ dist
@@ -0,0 +1,6 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": true,
4
+ "trailingComma": "all",
5
+ "printWidth": 120
6
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,457 @@
1
+ ## [NEXT]
2
+
3
+ ## 1.9.5
4
+ - add: Vietnamese (vi-VN) language code
5
+
6
+ ## 1.9.4
7
+ - Fix: Extract images issue on no interaction gameplay
8
+
9
+ ## 1.9.3
10
+ - mod: update WikiCard with stars
11
+
12
+ ## 1.9.2
13
+ - mod: update LiveCampaignPoints.adaptive type
14
+
15
+ ## 1.9.1
16
+ - fix: date function export
17
+
18
+ ## 1.9.0
19
+ - add: getStartOfDayLocal and getIsoDayNumber in date functions
20
+
21
+ ## 1.8.1
22
+ - mod: lastPlayedAt type in LiveCampaignAchievement
23
+
24
+ ## 1.8.0
25
+ - mod: include adaptive points to achievement
26
+
27
+ ## 1.7.93
28
+ - add: Microknowledge max lengths
29
+
30
+ ## 1.7.92
31
+ - add: `SearchQueryValue` type string[]
32
+
33
+ ## 1.7.91
34
+ - mod: change `audienceGroups` to `audienceGroupNames` key in `BoActivityCard` type
35
+
36
+ ## 1.7.90
37
+ - mod: add `audienceGroups` key to `BoActivityCard` type
38
+
39
+ ## 1.7.89
40
+ - mod: add back `sessionInsights` to `LiveCampaign` to avoid breaking change
41
+
42
+ ## 1.7.88
43
+ - Add: `getAverageSessionTime` session time calculation utility
44
+
45
+ ## 1.7.87
46
+ - Mod: No more insights in `LiveCampaign` type
47
+
48
+ ## 1.7.86
49
+ - Add: `translation-unvalidated` in ContributionType
50
+
51
+ ## 1.7.85
52
+ - Add: playedSessions in LiveCampaignAchievement
53
+ - Add: playedSessionsCount in LiveCampaignAchievement
54
+
55
+ ## 1.7.84
56
+ - Add: streaksCountHistory in LiveCampaignAchievement
57
+
58
+ ## 1.7.83
59
+ - Fix: nullable streaks in LiveCampaignAchievement
60
+
61
+ ## 1.7.82
62
+ - Fix: nullable streakSessions
63
+
64
+ ## 1.7.81
65
+ - Feat: Add streaks utils and types
66
+
67
+ ## 1.7.80
68
+ - Mod: `computeCurrentSession` min return in case of flexible with forceComputeCalendar
69
+
70
+ ## 1.7.79
71
+ - Fix: `getCalendarSessionDatesFromCampaign` getDay
72
+
73
+ ## 1.7.78
74
+ - Mod: `computeCurrentSession` add forceComputeCalendar
75
+
76
+ ## 1.7.77
77
+ - Mod: `getCalendarSessionDatesFromCampaign` add extra days
78
+
79
+ ## 1.7.76
80
+ - Fix: `getCalendarSessionDatesFromCampaign` remove endDate
81
+
82
+ ## 1.7.75
83
+ - Fix: `getCalendarSessionDatesFromCampaign` type (2)
84
+
85
+ ## 1.7.74
86
+ - Fix: `getCalendarSessionDatesFromCampaign` type
87
+
88
+ ## 1.7.73
89
+ - Add: `getCalendarSessionDatesFromCampaign` and refactoring live-campaign utils
90
+
91
+ ## 1.7.72
92
+ - Fix: Team ranking type, add ambassador information
93
+
94
+ ## 1.7.71
95
+ - Add: Team ranking type in achievements
96
+
97
+ ## 1.7.69
98
+ - Add: date utils to compute remaining time or add time
99
+
100
+ ## 1.7.68
101
+ - Add: `campaignContentId` in `WikiContentCardDetails`
102
+
103
+ ## 1.7.67
104
+ - Mod: remove `campaignContentId` from `BaseScore`
105
+ - Add: `campaignContentId` in `CampaignScore` and `WikiScore`
106
+
107
+ ## 1.7.66
108
+ - Mod: remove optional for `campaignContentId` in `WithCampaignContentId`
109
+
110
+ ## 1.7.65
111
+ - Add: optional `campaignContentId` to score and generic type
112
+
113
+ ## 1.7.64
114
+ - Add: `leaderPlayer` to `LiveCampaign`
115
+
116
+ ## 1.7.63
117
+ - Add: `audience` to `AudienceType`
118
+
119
+ ## 1.7.62
120
+ - Mod: add event summary & rename audience info
121
+
122
+ ## 1.7.61
123
+ - Add: declare audience module
124
+
125
+ ## 1.7.60
126
+ - Add: bo activity card business entity
127
+
128
+ ## 1.7.59
129
+ - Mod: add 'archived' and 'unarchived' in ContributionType
130
+
131
+ ## 1.7.58
132
+ - Mod: explanation should be optionnal in wiki content card
133
+
134
+ ## 1.7.57
135
+ - Mod: add explanation text to wiki content card
136
+
137
+ ## 1.7.56
138
+ - Add: battle types
139
+
140
+ ## 1.7.55
141
+ - Mod: add favorite info about opponent
142
+
143
+ ## 1.7.54
144
+ - Add: opponent type
145
+
146
+ ## 1.7.53
147
+ - Add: WikiScore type
148
+
149
+ ## 1.7.52
150
+ - Add: isRandom to campaigns
151
+
152
+ ## 1.7.51
153
+ - Fix: date format in compute campaign current session
154
+
155
+ ## 1.7.50
156
+ - Fix: type of earch query param
157
+
158
+ ## 1.7.49
159
+ - Add: search query param
160
+
161
+ ## 1.7.48
162
+ - Mod: send back wiki content played ids
163
+
164
+ ## 1.7.47
165
+ - Add: status to base campaign card
166
+
167
+ ## 1.7.46
168
+ - Mod: add celebration to activity status
169
+
170
+ ## 1.7.45
171
+ - Add: function to extract images from a game
172
+
173
+ ## 1.7.44
174
+ - Fix: function to check if wiki card
175
+
176
+ ## 1.7.43
177
+ - Add: campaign details entities
178
+ - Add: function to check if two dates are the same
179
+
180
+ ## 1.7.42
181
+ - add: user engagement entity
182
+ - add: breaking news card entity
183
+
184
+ ## 1.7.41
185
+ - Mod: add disclaimer to live campaign entity
186
+
187
+ ## 1.7.40
188
+ - Add: function to compute intense calendar
189
+
190
+ ## 1.7.39
191
+ - Mod: add last played at
192
+ - Add: function to check if today playable
193
+
194
+ ## 1.7.38
195
+ - Add stars to campaign achievement
196
+
197
+ ## 1.7.37
198
+ - Mod: add content count to base card details
199
+
200
+ ## 1.7.36
201
+ - Mod: more resilient campaign card
202
+ - Add: function to compute current session
203
+
204
+ ## 1.7.35
205
+ - Mod: add game types to session insight
206
+
207
+ ## 1.7.34
208
+ - Mod: move wiki types into campaign
209
+ - Add: live campaign card types
210
+ - Add: function to get approximated session time
211
+
212
+ ## 1.7.33
213
+ - Add: `playerId` attr to base score
214
+
215
+ ## 1.7.32
216
+ - Add: extract game explanation
217
+
218
+ ## 1.7.31
219
+ - Fix: no more brightcove
220
+
221
+ ## 1.7.30
222
+ - Fix: multilingual label should have an id
223
+
224
+ ## 1.7.29
225
+ - Fix: add `children` and `parent` attr to `Thematic` entity
226
+
227
+ ## 1.7.28
228
+ - Add: bo content card
229
+ - Mod: complete content entity
230
+
231
+ ## 1.7.27
232
+ - Add: Wiki content card entity
233
+
234
+ ## 1.7.26
235
+ - Add: function to check if object is wiki card
236
+
237
+ ## 1.7.25
238
+ - Mod: Declare pagination options entity
239
+ - Add: Business entity linked to the wiki card
240
+
241
+ ## 1.7.23
242
+ - Fix: activity campaign validator
243
+
244
+ ## 1.7.22
245
+ - Mod: add `favorite` attr to ranking entity
246
+
247
+ ## 1.7.21
248
+ - Mod: offset & limit should be optional + remove readonly
249
+
250
+ ## 1.7.20
251
+ - Add: Function to extract explanation
252
+
253
+ ## 1.7.19
254
+ - Mod: Add draft into activity type
255
+
256
+ ## 1.7.18
257
+ - Mod: no player id returned by api when fetching scores
258
+
259
+ ## 1.7.17
260
+ - Mod: score id should be partial
261
+
262
+ ## 1.7.16
263
+ - Mod: update score types
264
+
265
+ ## 1.7.15
266
+ - Add: activity status as const
267
+
268
+ ## 1.7.14
269
+ - Add: Brightcove video type
270
+
271
+ ## 1.7.13
272
+ - Add: `getNextDay` function
273
+
274
+ ## 1.7.12
275
+ - Add: `toPlainDateString` function
276
+
277
+ ## 1.7.11
278
+ - Add: `PlayerProfile` and `CampaignRanking` types
279
+
280
+ ## [1.7.10]
281
+ - Fix: activity type + typeguards
282
+
283
+ ## [1.7.9]
284
+ - Add: breaking news type to index
285
+
286
+ ## [1.7.8]
287
+ - Add: `Breaking news` activity type
288
+
289
+ ## 1.7.7
290
+ - Mod: `Campaign` type iso backend
291
+
292
+ ## 1.7.6
293
+ - Mod: add `activity` to `Score` type
294
+
295
+ ## 1.7.5
296
+ - Fix: `Score` not part of the build
297
+
298
+ ## 1.7.4
299
+ - Add: `Score` type
300
+
301
+ ## 1.7.3
302
+ - Add: Type in contents metadata
303
+
304
+ ## 1.6.0
305
+ - Fix: dolphin content types ISO backend
306
+
307
+ ## 1.5.0
308
+ - Add sessions to campaign type
309
+
310
+ ## 1.4.0
311
+ - Add document category type
312
+
313
+ ## 1.3.0
314
+ - Add document type
315
+
316
+ ## 1.2.4
317
+ - Fix: add missing scheduling in campaign types
318
+
319
+ ## 1.2.3
320
+ - Fix: optional campaigns metadata
321
+
322
+ ## 1.2.2
323
+ - Fix: split content metadata type
324
+
325
+ ## 1.2.1
326
+ - Fix missing campaign type
327
+
328
+ ## 1.2.0
329
+ - Add campaign type
330
+
331
+ ## 1.1.8
332
+ - Add swiping cards direction type
333
+
334
+ ## 1.1.7
335
+ - Change default quality in cdn
336
+
337
+ ## 1.1.6
338
+ - Add Partial Gameplay typeguards
339
+
340
+ ## 1.1.5
341
+ - Add isLanguageCode typeguard
342
+
343
+ ## 1.1.4
344
+ - Fix: bad publication
345
+
346
+ ## 1.1.3
347
+ - Fix multilingual type adding partial
348
+
349
+ ## 1.1.2
350
+ - Add Gameplay type guards
351
+
352
+ ## 1.1.1
353
+ - Fix publication issue
354
+
355
+ ## 1.1.0
356
+ - Add business entities types
357
+
358
+ ## 1.0.29
359
+ - Add `getContrastColor` function
360
+
361
+ ## 1.0.28
362
+ - Fix `twicpicsTransformationQueries` function to have integer values
363
+
364
+ ## 1.0.27
365
+ - Add `isStringLengthWithinRange` function
366
+
367
+ ## 1.0.26
368
+ - Add `innerJoin` to `index.ts`
369
+
370
+ ## 1.0.25
371
+ - Add `innerJoin` function for arrays
372
+ - Modify `leftOutterJoin` function implementation
373
+
374
+ ## 1.0.24
375
+ - Add `leftOutterJoin` function for arrays
376
+
377
+ ## 1.0.23
378
+ - Add ability to define constructor params in `ClassType`
379
+
380
+ ## 1.0.22
381
+ - Fix `stripPropertiesFromObject` issue with null values
382
+
383
+ ## 1.0.21
384
+ - Fix exports from `object` directory
385
+
386
+ ## 1.0.20
387
+ - Add `stripPropertiesFromObject` function
388
+
389
+ ## 1.0.19
390
+ - Fix export `median` function
391
+
392
+ ## 1.0.18
393
+ - Add math `median` function
394
+
395
+ ## 1.0.17
396
+ - Handle device pixel ratio (DPR) in Twicpics transformations
397
+
398
+ ## 1.0.16
399
+ - Set twicpics image quality to 90
400
+
401
+ ## 1.0.15
402
+ - Handle only width or only height in twicpics transformations
403
+
404
+ ## 1.0.14
405
+ - Fix: bad tarball published
406
+
407
+ ## 1.0.13
408
+ - Add output format query param
409
+
410
+ ## 1.0.12
411
+ - Add cache version query param
412
+
413
+ ## 1.0.11
414
+ - Add valueOf type
415
+
416
+ ## 1.0.10
417
+
418
+ ## 1.0.9
419
+ - Add option to remove image compression
420
+
421
+ ## 1.0.8
422
+ - Fix crash when passing undefined to extractInfoFromUrl function
423
+
424
+ ## 1.0.7
425
+ - Fix Twicpics resizing
426
+
427
+ ## 1.0.6
428
+ - Add current map to `dataModifier` function on `arrayToMap`
429
+
430
+ ## 1.0.5
431
+ - CDN abstraction for Imgix and Twicpics
432
+
433
+ ## 1.0.0
434
+ - Breaking change: rename date folder into time
435
+ - Export convertion functions from time
436
+
437
+ ## 0.0.18
438
+ - Change update behavior to fully replace updated items
439
+
440
+ ## 0.0.17
441
+ - Remove error thrown when not every items have been visisted
442
+
443
+ ## 0.0.16
444
+ - Fix an issue when initializing an empty linked list
445
+
446
+ ## 0.0.15
447
+ - Rollback target version, change output format
448
+
449
+ ## 0.0.14
450
+ - Bump target version in tsconfig
451
+
452
+ ## 0.0.13
453
+ - Bring most utilities from the back-office, mobile-app and nest to this package (#32q6ude)
454
+
455
+ ## 0.0.1
456
+ - Library initialisation (#2ykhvcg)
457
+ - Fix files taken as packaged
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # Shared-library
2
+
3
+ Regroup low levels utils to share across Sparted's projects. Nothing should be platform specific and it should ideally not depend on any external library.
4
+
5
+ # Publishing
6
+
7
+ Since we want to be able to do the following sub imports when using the library:
8
+
9
+ ```ts
10
+ import { function1, function2 } from '@sparted/shared-library/array';
11
+ import { function3, function4 } from '@sparted/shared-library/strings';
12
+ ```
13
+
14
+ While also being able to import everything from the root.
15
+
16
+ We'll need to do some rollup/npm trickery to keep everything tree-shakable and intuitive.
17
+
18
+ To do so, we copy the package.json inside the generated dist folder when building the library. Then we run `npm publish` from inside the dist folder.
19
+
20
+ What this do, is take everything inside the dist folder and publish as its standalone package. This enables us to import directly from `@sparted/shared-library/array` without adding `dist` since `dist/array` becomes a root folder. If we do not do this and instead run `npm publish` in the root directory, the package would keep the folder structure and we would need to add `dist` in imports. eg: `@sparted/shared-library/dist/array`.
21
+
22
+ ## How to publish
23
+
24
+ 1. Update the `package.json` version
25
+ 2. Run `yarn build-and-publish` (this command assumes the `package.json` version was not already published)
26
+ 3. The new version should be commited and pushed
@@ -35,7 +35,7 @@ const extractExplanation = (content) => {
35
35
  return extractGameExplanation(content.game);
36
36
  };
37
37
  const extractImages = (game) => {
38
- var _a, _b, _c, _d;
38
+ var _a, _b, _c, _d, _e;
39
39
  if (isGameOrderingCards(game)) {
40
40
  return [];
41
41
  }
@@ -44,7 +44,7 @@ const extractImages = (game) => {
44
44
  if ((_a = game.firstMedia.image) === null || _a === void 0 ? void 0 : _a.url) {
45
45
  images.push(game.firstMedia.image.url);
46
46
  }
47
- if ((_b = game.secondMedia.image) === null || _b === void 0 ? void 0 : _b.url) {
47
+ if ((_c = (_b = game.secondMedia) === null || _b === void 0 ? void 0 : _b.image) === null || _c === void 0 ? void 0 : _c.url) {
48
48
  images.push(game.secondMedia.image.url);
49
49
  }
50
50
  return images;
@@ -62,10 +62,10 @@ const extractImages = (game) => {
62
62
  }, []);
63
63
  }
64
64
  const images = [];
65
- if ((_c = game.gameMedia.image) === null || _c === void 0 ? void 0 : _c.url) {
65
+ if ((_d = game.gameMedia.image) === null || _d === void 0 ? void 0 : _d.url) {
66
66
  images.push(game.gameMedia.image.url);
67
67
  }
68
- if ((_d = game.explanationMedia.image) === null || _d === void 0 ? void 0 : _d.url) {
68
+ if ((_e = game.explanationMedia.image) === null || _e === void 0 ? void 0 : _e.url) {
69
69
  images.push(game.explanationMedia.image.url);
70
70
  }
71
71
  return images;
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sources":["../../../src/business/types/content.ts"],"sourcesContent":["import { DeepPartial } from 'ts-essentials';\n\nimport { Image, Media } from './media';\nimport { LanguageCode, MultilingualLabel } from './multilingual';\nimport { Thematic } from './thematic';\nimport { PlayerProfile } from './player';\n\nexport type ContentStatuses = Partial<{\n [languageCode in LanguageCode]: 'draft' | 'validated' | 'waiting-translation' | 'waiting-validation';\n}>;\n\nexport type BOContentCard = {\n id: number;\n customId: string;\n coverImage?: Image;\n title: MultilingualLabel;\n statuses: ContentStatuses;\n};\n\nexport type ErrorText = {\n id: number;\n type: 'error-text';\n gameMedia: Media;\n wrongText: MultilingualLabel;\n correctText: MultilingualLabel;\n explanationMedia: Media;\n explanation: MultilingualLabel;\n};\n\nexport type ChoiceQuestion = {\n text: MultilingualLabel;\n correct: boolean;\n};\n\nexport type MultipleChoiceQuestion = {\n id: number;\n type: 'mcq';\n gameMedia: Media;\n question: MultilingualLabel;\n choices: ChoiceQuestion[];\n explanationMedia: Media;\n explanation: MultilingualLabel;\n};\n\nexport type NoInteraction = {\n id: number;\n type: 'no-interaction';\n firstMedia: Media;\n title: MultilingualLabel;\n text: MultilingualLabel;\n secondMedia: Media;\n};\n\nexport type OpenQuestion = {\n id: number;\n type: 'open-question';\n gameMedia: Media;\n question: MultilingualLabel;\n answer: MultilingualLabel;\n levenshteinDistance: number;\n explanationMedia: Media;\n explanation: MultilingualLabel;\n};\n\nexport type OrderingCards = {\n id: number;\n type: 'ordering-cards';\n question: MultilingualLabel;\n topLabel: MultilingualLabel;\n cards: MultilingualLabel[];\n bottomLabel: MultilingualLabel;\n explanation: MultilingualLabel;\n};\n\nexport type Spot = {\n id: number;\n x: number;\n y: number;\n r: number;\n question: MultilingualLabel;\n description: MultilingualLabel;\n};\n\nexport type PictureSpot = {\n id: number;\n type: 'picture-spot';\n image: Image;\n items: Spot[];\n explanation: MultilingualLabel;\n};\n\nexport type SwipingCardPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport type SwipingCardZone = {\n position: SwipingCardPosition;\n text: MultilingualLabel;\n};\n\nexport type SwipingCard = {\n image?: Image;\n text?: MultilingualLabel;\n answer: SwipingCardPosition;\n};\n\nexport type SwipingCards = {\n id: number;\n type: 'swiping-cards';\n question: MultilingualLabel;\n zones: SwipingCardZone[];\n cards: SwipingCard[];\n explanation: MultilingualLabel;\n};\n\nexport type Game =\n | ErrorText\n | MultipleChoiceQuestion\n | NoInteraction\n | OpenQuestion\n | OrderingCards\n | PictureSpot\n | SwipingCards;\n\nexport type GameType =\n | 'error-text'\n | 'mcq'\n | 'open-question'\n | 'no-interaction'\n | 'picture-spot'\n | 'swiping-cards'\n | 'ordering-cards';\n\nexport const GAME_TYPE: Record<string, GameType> = {\n MCQ: 'mcq',\n ERROR_TEXT: 'error-text',\n OPEN_QUESTION: 'open-question',\n NO_INTERACTION: 'no-interaction',\n PICTURE_SPOT: 'picture-spot',\n ORDERING_CARDS: 'ordering-cards',\n SWIPING_CARDS: 'swiping-cards',\n};\n\nexport type ContentMetadata = {\n identifier: string;\n coverImage?: Image;\n name: MultilingualLabel;\n knowMore: MultilingualLabel;\n thematic: Thematic;\n type: GameType;\n};\n\nexport type ContributionType =\n | 'validated'\n | 'created'\n | 'edited'\n | 'deleted'\n | 'translation-requested'\n | 'translation-validated'\n | 'translation-unvalidated'\n | 'validation-requested'\n | 'archived'\n | 'unarchived';\n\nexport type ContentContribution = {\n id: number;\n contributor: PlayerProfile;\n type: ContributionType;\n date: Date;\n};\n\nexport type Content = {\n id: number;\n legacyKnowledgeId: number;\n legacyContentIds: number[];\n metadata: ContentMetadata;\n game?: Game;\n statuses: ContentStatuses;\n contributions: ContentContribution[];\n archived: boolean;\n};\n\nexport const isGameMultipleChoiceQuestion = (game: Game): game is MultipleChoiceQuestion => game.type === GAME_TYPE.MCQ;\nexport const isGameErrorText = (game: Game): game is ErrorText => game.type === GAME_TYPE.ERROR_TEXT;\nexport const isGameOpenQuestion = (game: Game): game is OpenQuestion => game.type === GAME_TYPE.OPEN_QUESTION;\nexport const isGameNoInteraction = (game: Game): game is NoInteraction => game.type === GAME_TYPE.NO_INTERACTION;\nexport const isGamePictureSpot = (game: Game): game is PictureSpot => game.type === GAME_TYPE.PICTURE_SPOT;\nexport const isGameOrderingCards = (game: Game): game is OrderingCards => game.type === GAME_TYPE.ORDERING_CARDS;\nexport const isGameSwipingCards = (game: Game): game is SwipingCards => game.type === GAME_TYPE.SWIPING_CARDS;\n\nexport const isPartialGameMultipleChoiceQuestion = (\n game: DeepPartial<Game>,\n): game is DeepPartial<MultipleChoiceQuestion> => game.type === GAME_TYPE.MCQ;\nexport const isPartialGameErrorText = (game: DeepPartial<Game>): game is DeepPartial<ErrorText> =>\n game.type === GAME_TYPE.ERROR_TEXT;\nexport const isPartialGameOpenQuestion = (game: DeepPartial<Game>): game is DeepPartial<OpenQuestion> =>\n game.type === GAME_TYPE.OPEN_QUESTION;\nexport const isPartialGameNoInteraction = (game: DeepPartial<Game>): game is DeepPartial<NoInteraction> =>\n game.type === GAME_TYPE.NO_INTERACTION;\nexport const isPartialGamePictureSpot = (game: DeepPartial<Game>): game is DeepPartial<PictureSpot> =>\n game.type === GAME_TYPE.PICTURE_SPOT;\nexport const isPartialGameOrderingCards = (game: DeepPartial<Game>): game is DeepPartial<OrderingCards> =>\n game.type === GAME_TYPE.ORDERING_CARDS;\nexport const isPartialGameSwipingCards = (game: DeepPartial<Game>): game is DeepPartial<SwipingCards> =>\n game.type === GAME_TYPE.SWIPING_CARDS;\n\nexport const extractGameExplanation = (game?: Game) => {\n if (!game || game.type === 'no-interaction') {\n return undefined;\n }\n\n return game.explanation;\n};\n\nexport const extractExplanation = (content: Content) => {\n return extractGameExplanation(content.game);\n};\n\nexport const extractImages = (game: Game) => {\n if (isGameOrderingCards(game)) {\n return [];\n }\n\n if (isGameNoInteraction(game)) {\n const images = [];\n\n if (game.firstMedia.image?.url) {\n images.push(game.firstMedia.image.url);\n }\n\n if (game.secondMedia.image?.url) {\n images.push(game.secondMedia.image.url);\n }\n\n return images;\n }\n\n if (isGamePictureSpot(game)) {\n return [game.image.url];\n }\n\n if (isGameSwipingCards(game)) {\n return game.cards.reduce<string[]>((acc, card) => {\n if (card.image?.url) {\n acc.push(card.image.url);\n }\n\n return acc;\n }, []);\n }\n\n const images = [];\n\n if (game.gameMedia.image?.url) {\n images.push(game.gameMedia.image.url);\n }\n\n if (game.explanationMedia.image?.url) {\n images.push(game.explanationMedia.image.url);\n }\n\n return images;\n};\n"],"names":[],"mappings":";;;;AAmIa,MAAA,SAAS,GAA6B;AACjD,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,aAAa,EAAE,eAAe;EAC9B;AAyCW,MAAA,4BAA4B,GAAG,CAAC,IAAU,KAAqC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;AAC3G,MAAA,eAAe,GAAG,CAAC,IAAU,KAAwB,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW;AACxF,MAAA,kBAAkB,GAAG,CAAC,IAAU,KAA2B,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc;AACjG,MAAA,mBAAmB,GAAG,CAAC,IAAU,KAA4B,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;AACpG,MAAA,iBAAiB,GAAG,CAAC,IAAU,KAA0B,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa;AAC9F,MAAA,mBAAmB,GAAG,CAAC,IAAU,KAA4B,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;AACpG,MAAA,kBAAkB,GAAG,CAAC,IAAU,KAA2B,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc;AAEjG,MAAA,mCAAmC,GAAG,CACjD,IAAuB,KACyB,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;AACjE,MAAA,sBAAsB,GAAG,CAAC,IAAuB,KAC5D,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW;AACxB,MAAA,yBAAyB,GAAG,CAAC,IAAuB,KAC/D,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc;AAC3B,MAAA,0BAA0B,GAAG,CAAC,IAAuB,KAChE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;AAC5B,MAAA,wBAAwB,GAAG,CAAC,IAAuB,KAC9D,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa;AAC1B,MAAA,0BAA0B,GAAG,CAAC,IAAuB,KAChE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;AAC5B,MAAA,yBAAyB,GAAG,CAAC,IAAuB,KAC/D,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc;AAE3B,MAAA,sBAAsB,GAAG,CAAC,IAAW,KAAI;IACpD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;AAC3C,QAAA,OAAO,SAAS,CAAC;AAClB,KAAA;IAED,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,EAAE;AAEW,MAAA,kBAAkB,GAAG,CAAC,OAAgB,KAAI;AACrD,IAAA,OAAO,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,EAAE;AAEW,MAAA,aAAa,GAAG,CAAC,IAAU,KAAI;;AAC1C,IAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AAED,IAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,SAAA;QAED,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;AACf,KAAA;AAED,IAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;AAC3B,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,KAAA;AAED,IAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAW,CAAC,GAAG,EAAE,IAAI,KAAI;;AAC/C,YAAA,IAAI,MAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,EAAE;gBACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1B,aAAA;AAED,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;AACR,KAAA;IAED,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,KAAA;IAED,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"content.js","sources":["../../../src/business/types/content.ts"],"sourcesContent":["import { DeepPartial } from 'ts-essentials';\n\nimport { Image, Media } from './media';\nimport { LanguageCode, MultilingualLabel } from './multilingual';\nimport { Thematic } from './thematic';\nimport { PlayerProfile } from './player';\n\nexport type ContentStatuses = Partial<{\n [languageCode in LanguageCode]: 'draft' | 'validated' | 'waiting-translation' | 'waiting-validation';\n}>;\n\nexport type BOContentCard = {\n id: number;\n customId: string;\n coverImage?: Image;\n title: MultilingualLabel;\n statuses: ContentStatuses;\n};\n\nexport type ErrorText = {\n id: number;\n type: 'error-text';\n gameMedia: Media;\n wrongText: MultilingualLabel;\n correctText: MultilingualLabel;\n explanationMedia: Media;\n explanation: MultilingualLabel;\n};\n\nexport type ChoiceQuestion = {\n text: MultilingualLabel;\n correct: boolean;\n};\n\nexport type MultipleChoiceQuestion = {\n id: number;\n type: 'mcq';\n gameMedia: Media;\n question: MultilingualLabel;\n choices: ChoiceQuestion[];\n explanationMedia: Media;\n explanation: MultilingualLabel;\n};\n\nexport type NoInteraction = {\n id: number;\n type: 'no-interaction';\n firstMedia: Media;\n title: MultilingualLabel;\n text: MultilingualLabel;\n secondMedia: Media;\n};\n\nexport type OpenQuestion = {\n id: number;\n type: 'open-question';\n gameMedia: Media;\n question: MultilingualLabel;\n answer: MultilingualLabel;\n levenshteinDistance: number;\n explanationMedia: Media;\n explanation: MultilingualLabel;\n};\n\nexport type OrderingCards = {\n id: number;\n type: 'ordering-cards';\n question: MultilingualLabel;\n topLabel: MultilingualLabel;\n cards: MultilingualLabel[];\n bottomLabel: MultilingualLabel;\n explanation: MultilingualLabel;\n};\n\nexport type Spot = {\n id: number;\n x: number;\n y: number;\n r: number;\n question: MultilingualLabel;\n description: MultilingualLabel;\n};\n\nexport type PictureSpot = {\n id: number;\n type: 'picture-spot';\n image: Image;\n items: Spot[];\n explanation: MultilingualLabel;\n};\n\nexport type SwipingCardPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport type SwipingCardZone = {\n position: SwipingCardPosition;\n text: MultilingualLabel;\n};\n\nexport type SwipingCard = {\n image?: Image;\n text?: MultilingualLabel;\n answer: SwipingCardPosition;\n};\n\nexport type SwipingCards = {\n id: number;\n type: 'swiping-cards';\n question: MultilingualLabel;\n zones: SwipingCardZone[];\n cards: SwipingCard[];\n explanation: MultilingualLabel;\n};\n\nexport type Game =\n | ErrorText\n | MultipleChoiceQuestion\n | NoInteraction\n | OpenQuestion\n | OrderingCards\n | PictureSpot\n | SwipingCards;\n\nexport type GameType =\n | 'error-text'\n | 'mcq'\n | 'open-question'\n | 'no-interaction'\n | 'picture-spot'\n | 'swiping-cards'\n | 'ordering-cards';\n\nexport const GAME_TYPE: Record<string, GameType> = {\n MCQ: 'mcq',\n ERROR_TEXT: 'error-text',\n OPEN_QUESTION: 'open-question',\n NO_INTERACTION: 'no-interaction',\n PICTURE_SPOT: 'picture-spot',\n ORDERING_CARDS: 'ordering-cards',\n SWIPING_CARDS: 'swiping-cards',\n};\n\nexport type ContentMetadata = {\n identifier: string;\n coverImage?: Image;\n name: MultilingualLabel;\n knowMore: MultilingualLabel;\n thematic: Thematic;\n type: GameType;\n};\n\nexport type ContributionType =\n | 'validated'\n | 'created'\n | 'edited'\n | 'deleted'\n | 'translation-requested'\n | 'translation-validated'\n | 'translation-unvalidated'\n | 'validation-requested'\n | 'archived'\n | 'unarchived';\n\nexport type ContentContribution = {\n id: number;\n contributor: PlayerProfile;\n type: ContributionType;\n date: Date;\n};\n\nexport type Content = {\n id: number;\n legacyKnowledgeId: number;\n legacyContentIds: number[];\n metadata: ContentMetadata;\n game?: Game;\n statuses: ContentStatuses;\n contributions: ContentContribution[];\n archived: boolean;\n};\n\nexport const isGameMultipleChoiceQuestion = (game: Game): game is MultipleChoiceQuestion => game.type === GAME_TYPE.MCQ;\nexport const isGameErrorText = (game: Game): game is ErrorText => game.type === GAME_TYPE.ERROR_TEXT;\nexport const isGameOpenQuestion = (game: Game): game is OpenQuestion => game.type === GAME_TYPE.OPEN_QUESTION;\nexport const isGameNoInteraction = (game: Game): game is NoInteraction => game.type === GAME_TYPE.NO_INTERACTION;\nexport const isGamePictureSpot = (game: Game): game is PictureSpot => game.type === GAME_TYPE.PICTURE_SPOT;\nexport const isGameOrderingCards = (game: Game): game is OrderingCards => game.type === GAME_TYPE.ORDERING_CARDS;\nexport const isGameSwipingCards = (game: Game): game is SwipingCards => game.type === GAME_TYPE.SWIPING_CARDS;\n\nexport const isPartialGameMultipleChoiceQuestion = (\n game: DeepPartial<Game>,\n): game is DeepPartial<MultipleChoiceQuestion> => game.type === GAME_TYPE.MCQ;\nexport const isPartialGameErrorText = (game: DeepPartial<Game>): game is DeepPartial<ErrorText> =>\n game.type === GAME_TYPE.ERROR_TEXT;\nexport const isPartialGameOpenQuestion = (game: DeepPartial<Game>): game is DeepPartial<OpenQuestion> =>\n game.type === GAME_TYPE.OPEN_QUESTION;\nexport const isPartialGameNoInteraction = (game: DeepPartial<Game>): game is DeepPartial<NoInteraction> =>\n game.type === GAME_TYPE.NO_INTERACTION;\nexport const isPartialGamePictureSpot = (game: DeepPartial<Game>): game is DeepPartial<PictureSpot> =>\n game.type === GAME_TYPE.PICTURE_SPOT;\nexport const isPartialGameOrderingCards = (game: DeepPartial<Game>): game is DeepPartial<OrderingCards> =>\n game.type === GAME_TYPE.ORDERING_CARDS;\nexport const isPartialGameSwipingCards = (game: DeepPartial<Game>): game is DeepPartial<SwipingCards> =>\n game.type === GAME_TYPE.SWIPING_CARDS;\n\nexport const extractGameExplanation = (game?: Game) => {\n if (!game || game.type === 'no-interaction') {\n return undefined;\n }\n\n return game.explanation;\n};\n\nexport const extractExplanation = (content: Content) => {\n return extractGameExplanation(content.game);\n};\n\nexport const extractImages = (game: Game) => {\n if (isGameOrderingCards(game)) {\n return [];\n }\n\n if (isGameNoInteraction(game)) {\n const images = [];\n\n if (game.firstMedia.image?.url) {\n images.push(game.firstMedia.image.url);\n }\n\n if (game.secondMedia?.image?.url) {\n images.push(game.secondMedia.image.url);\n }\n\n return images;\n }\n\n if (isGamePictureSpot(game)) {\n return [game.image.url];\n }\n\n if (isGameSwipingCards(game)) {\n return game.cards.reduce<string[]>((acc, card) => {\n if (card.image?.url) {\n acc.push(card.image.url);\n }\n\n return acc;\n }, []);\n }\n\n const images = [];\n\n if (game.gameMedia.image?.url) {\n images.push(game.gameMedia.image.url);\n }\n\n if (game.explanationMedia.image?.url) {\n images.push(game.explanationMedia.image.url);\n }\n\n return images;\n};\n"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ export declare const Languages: {
33
33
  lt: string;
34
34
  'lv-LV': string;
35
35
  'th-TH': string;
36
+ 'vi-VN': string;
36
37
  };
37
38
  export type LanguageCode = keyof typeof Languages;
38
39
  export type MultilingualLabel = {
@@ -37,6 +37,7 @@ const Languages = {
37
37
  lt: 'lt',
38
38
  'lv-LV': 'lv',
39
39
  'th-TH': 'th',
40
+ 'vi-VN': 'vn',
40
41
  };
41
42
  function isLanguageCode(lang) {
42
43
  return !!Object.keys(Languages).includes(lang);