@kalisio/kdk 2.4.0 → 2.5.1

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 (647) hide show
  1. package/core/api/application.js +12 -12
  2. package/core/api/authentication.js +51 -7
  3. package/core/api/hooks/hooks.authentication.js +1 -59
  4. package/core/api/hooks/hooks.authorisations.js +8 -102
  5. package/core/api/hooks/hooks.model.js +4 -0
  6. package/core/api/hooks/hooks.push.js +18 -14
  7. package/core/api/hooks/hooks.users.js +0 -91
  8. package/core/api/hooks/index.js +0 -2
  9. package/core/api/services/account/account.service.js +1 -1
  10. package/core/api/services/authorisations/authorisations.service.js +28 -29
  11. package/core/api/services/index.js +38 -50
  12. package/core/api/services/messages/messages.hooks.js +4 -3
  13. package/core/api/services/users/users.service.js +5 -0
  14. package/core/client/api.js +182 -71
  15. package/core/client/broadcaster.js +20 -0
  16. package/core/client/capabilities.js +17 -7
  17. package/core/client/components/KActivity.vue +29 -34
  18. package/core/client/components/KAvatar.vue +0 -6
  19. package/core/client/components/KChip.vue +142 -39
  20. package/core/client/components/KContent.vue +13 -32
  21. package/core/client/components/KDialog.vue +29 -8
  22. package/core/client/components/KEditor.vue +120 -0
  23. package/core/client/components/KFollower.vue +75 -0
  24. package/core/client/components/KLogo.vue +2 -3
  25. package/core/client/components/KModal.vue +30 -10
  26. package/core/client/components/KSponsor.vue +1 -1
  27. package/core/client/components/KTextArea.vue +2 -5
  28. package/core/client/components/account/KDeleteAccountManager.vue +1 -1
  29. package/core/client/components/account/KProfile.vue +52 -14
  30. package/core/client/components/account/KSubscription.vue +19 -9
  31. package/core/client/components/account/KSubscriptionsManager.vue +10 -11
  32. package/core/client/components/action/KAction.vue +44 -24
  33. package/core/client/components/action/KBugReportAction.vue +4 -5
  34. package/core/client/components/action/KToggleStickyVisibility.vue +41 -0
  35. package/core/client/components/action/KToggleWidgetVisibility.vue +41 -0
  36. package/core/client/components/app/KPlatform.vue +122 -35
  37. package/core/client/components/app/KRequestProgressBar.vue +59 -0
  38. package/core/client/components/app/KSettings.vue +13 -2
  39. package/core/client/components/app/KTour.vue +2 -2
  40. package/core/client/components/chart/KTimeSeriesChart.vue +11 -3
  41. package/core/client/components/collection/KCard.vue +27 -33
  42. package/core/client/components/collection/KCardSection.vue +3 -23
  43. package/core/client/components/collection/KColumn.vue +0 -5
  44. package/core/client/components/collection/KDescriptionCardSection.vue +10 -5
  45. package/core/client/components/collection/KFilterView.vue +15 -0
  46. package/core/client/components/collection/KGrid.vue +4 -9
  47. package/core/client/components/collection/KHistory.vue +0 -5
  48. package/core/client/components/collection/KHistoryEntry.vue +0 -2
  49. package/core/client/components/collection/KItem.vue +1 -2
  50. package/core/client/components/collection/KSearchFilterControl.vue +139 -0
  51. package/core/client/components/collection/KTable.vue +1 -4
  52. package/core/client/components/collection/KTagsFilterControl.vue +70 -0
  53. package/core/client/components/collection/KTagsFilterView.vue +61 -0
  54. package/core/client/components/collection/KTimeFilterControl.vue +40 -0
  55. package/core/client/components/collection/KTimeFilterView.vue +106 -0
  56. package/core/client/components/collection/KTimeLine.vue +18 -11
  57. package/core/client/components/document/KBrowser.vue +283 -0
  58. package/core/client/components/document/KCsv.vue +52 -0
  59. package/core/client/components/document/KDocument.vue +19 -5
  60. package/core/client/components/document/KImage.vue +50 -19
  61. package/core/client/components/document/KMarkdown.vue +10 -2
  62. package/core/client/components/document/KUploader.vue +126 -0
  63. package/core/client/components/document/KVideo.vue +39 -0
  64. package/core/client/components/form/KDateField.vue +70 -0
  65. package/core/client/components/form/KDateTimeRangeField.vue +6 -17
  66. package/core/client/components/form/KDatetimeField.vue +6 -13
  67. package/core/client/components/form/KForm.vue +8 -8
  68. package/core/client/components/form/KOptionsField.vue +2 -0
  69. package/core/client/components/form/KResolutionField.vue +54 -52
  70. package/core/client/components/form/KSelectField.vue +27 -13
  71. package/core/client/components/form/KTextareaField.vue +23 -5
  72. package/core/client/components/graphics/KIcon.vue +64 -0
  73. package/core/client/components/index.js +1 -3
  74. package/core/client/components/input/KColorPicker.vue +70 -0
  75. package/core/client/components/input/KIconPicker.vue +188 -0
  76. package/core/client/components/input/KShapePicker.vue +81 -0
  77. package/core/client/components/input/index.js +7 -1
  78. package/core/client/components/layout/KFab.vue +1 -1
  79. package/core/client/components/layout/KLayout.vue +14 -2
  80. package/core/client/components/layout/KOpener.vue +9 -11
  81. package/core/client/components/layout/KPage.vue +31 -17
  82. package/core/client/components/layout/KWindow.vue +34 -18
  83. package/core/client/components/menu/KMenu.vue +52 -36
  84. package/core/client/components/menu/KSubMenu.vue +105 -0
  85. package/core/client/components/messages/KMessageCard.vue +207 -0
  86. package/core/client/components/messages/KMessageComposer.vue +199 -0
  87. package/core/client/components/messages/KMessagesTimeLine.vue +137 -0
  88. package/core/client/components/messages/index.js +7 -0
  89. package/core/client/components/screen/KErrorScreen.vue +2 -3
  90. package/core/client/components/screen/KLogoutScreen.vue +3 -1
  91. package/core/client/components/screen/KOAuthLoginScreen.vue +15 -0
  92. package/core/client/components/screen/KOAuthLogoutScreen.vue +33 -0
  93. package/core/client/components/screen/KUnauthorizedScreen.vue +16 -0
  94. package/core/client/components/time/KAbsoluteTimeRange.vue +7 -14
  95. package/core/client/components/time/KDate.vue +56 -26
  96. package/core/client/components/time/KDateTime.vue +93 -37
  97. package/core/client/components/time/KDateTimeRange.vue +197 -52
  98. package/core/client/components/time/KTime.vue +56 -26
  99. package/core/client/composables/activity.js +40 -30
  100. package/core/client/composables/{counter.js → collection-counter.js} +2 -4
  101. package/core/client/composables/collection-filter.js +111 -0
  102. package/core/client/composables/collection-timerange.js +56 -0
  103. package/core/client/composables/collection.js +13 -11
  104. package/core/client/composables/context.js +92 -0
  105. package/core/client/composables/errors.js +83 -0
  106. package/core/client/composables/index.js +5 -1
  107. package/core/client/composables/layout.js +14 -11
  108. package/core/client/composables/messages.js +4 -4
  109. package/core/client/composables/pwa.js +20 -27
  110. package/core/client/composables/schema.js +1 -1
  111. package/core/client/composables/screen.js +21 -9
  112. package/core/client/composables/selection.js +16 -4
  113. package/core/client/composables/session.js +13 -7
  114. package/core/client/composables/store.js +2 -1
  115. package/core/client/context.js +38 -0
  116. package/core/client/directives/v-hover.js +7 -4
  117. package/core/client/document.js +43 -15
  118. package/core/client/events.js +2 -2
  119. package/core/client/exporter.js +5 -4
  120. package/core/client/filter.js +1 -8
  121. package/core/client/guards.js +3 -3
  122. package/core/client/hooks/hooks.logger.js +1 -1
  123. package/core/client/hooks/hooks.offline.js +32 -0
  124. package/core/client/hooks/index.js +2 -1
  125. package/core/client/i18n/core_en.json +95 -268
  126. package/core/client/i18n/core_fr.json +181 -353
  127. package/core/client/index.js +22 -8
  128. package/core/client/layout.js +64 -25
  129. package/core/client/local-cache.js +67 -0
  130. package/core/client/local-storage.js +6 -2
  131. package/core/client/mixins/index.js +0 -1
  132. package/core/client/mixins/mixin.base-activity.js +22 -10
  133. package/core/client/mixins/mixin.base-editor.js +1 -1
  134. package/core/client/mixins/mixin.base-field.js +10 -1
  135. package/core/client/mixins/mixin.base-item.js +14 -11
  136. package/core/client/mixins/mixin.service.js +1 -5
  137. package/core/client/platform.js +44 -0
  138. package/core/client/readers/reader.blob.js +3 -3
  139. package/core/client/readers/reader.csv.js +2 -2
  140. package/core/client/readers/reader.json.js +2 -2
  141. package/core/client/services/index.js +7 -11
  142. package/core/client/storage.js +43 -8
  143. package/core/client/template-context.js +14 -14
  144. package/core/client/time.js +3 -3
  145. package/core/client/units.js +7 -4
  146. package/core/client/utils/index.js +6 -5
  147. package/core/client/utils/utils.collection.js +71 -0
  148. package/core/client/utils/utils.colors.js +29 -8
  149. package/core/client/utils/utils.content.js +14 -14
  150. package/core/client/utils/utils.files.js +17 -0
  151. package/core/client/utils/utils.items.js +4 -0
  152. package/core/client/utils/utils.math.js +18 -1
  153. package/core/client/utils/utils.push.js +22 -13
  154. package/core/client/utils/utils.screen.js +6 -2
  155. package/core/client/utils/utils.services.js +42 -0
  156. package/core/client/utils/utils.session.js +48 -12
  157. package/core/client/utils/utils.shapes.js +15 -11
  158. package/core/common/permissions.js +3 -108
  159. package/core/common/schemas/messages.update.json +16 -0
  160. package/core/common/schemas/settings.update.json +27 -8
  161. package/core/common/utils.js +2 -0
  162. package/core/common/utils.offline.js +38 -0
  163. package/coverage/core/api/application.js.html +296 -296
  164. package/coverage/core/api/authentication.js.html +206 -74
  165. package/coverage/core/api/db.js.html +61 -61
  166. package/coverage/core/api/hooks/hooks.authentication.js.html +15 -189
  167. package/coverage/core/api/hooks/hooks.authorisations.js.html +180 -462
  168. package/coverage/core/api/hooks/hooks.groups.js.html +1 -1
  169. package/coverage/core/api/hooks/hooks.logger.js.html +16 -16
  170. package/coverage/core/api/hooks/hooks.model.js.html +69 -57
  171. package/coverage/core/api/hooks/hooks.organisations.js.html +1 -1
  172. package/coverage/core/api/hooks/hooks.push.js.html +58 -46
  173. package/coverage/core/api/hooks/hooks.query.js.html +142 -142
  174. package/coverage/core/api/hooks/hooks.schemas.js.html +1 -1
  175. package/coverage/core/api/hooks/hooks.service.js.html +1 -1
  176. package/coverage/core/api/hooks/hooks.storage.js.html +1 -1
  177. package/coverage/core/api/hooks/hooks.users.js.html +54 -327
  178. package/coverage/core/api/hooks/index.html +64 -94
  179. package/coverage/core/api/hooks/index.js.html +4 -10
  180. package/coverage/core/api/index.html +41 -56
  181. package/coverage/core/api/index.js.html +1 -1
  182. package/coverage/core/api/marshall.js.html +9 -9
  183. package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
  184. package/coverage/core/api/models/index.html +13 -58
  185. package/coverage/core/api/models/messages.model.mongodb.js.html +35 -35
  186. package/coverage/core/api/models/organisations.model.mongodb.js.html +3 -3
  187. package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
  188. package/coverage/core/api/models/users.model.mongodb.js.html +1 -1
  189. package/coverage/core/api/services/account/account.hooks.js.html +1 -1
  190. package/coverage/core/api/services/account/account.service.js.html +67 -67
  191. package/coverage/core/api/services/account/index.html +16 -16
  192. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  193. package/coverage/core/api/services/authorisations/authorisations.service.js.html +141 -144
  194. package/coverage/core/api/services/authorisations/index.html +19 -19
  195. package/coverage/core/api/services/databases/databases.hooks.js.html +82 -82
  196. package/coverage/core/api/services/databases/databases.service.js.html +20 -20
  197. package/coverage/core/api/services/databases/index.html +32 -32
  198. package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
  199. package/coverage/core/api/services/groups/index.html +1 -1
  200. package/coverage/core/api/services/import-export/import-export.hooks.js.html +1 -1
  201. package/coverage/core/api/services/import-export/import-export.service.js.html +1 -1
  202. package/coverage/core/api/services/import-export/index.html +1 -1
  203. package/coverage/core/api/services/index.html +21 -21
  204. package/coverage/core/api/services/index.js.html +118 -154
  205. package/coverage/core/api/services/mailer/index.html +1 -1
  206. package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
  207. package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
  208. package/coverage/core/api/services/messages/index.html +21 -21
  209. package/coverage/core/api/services/messages/messages.hooks.js.html +89 -86
  210. package/coverage/core/api/services/organisations/index.html +1 -1
  211. package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
  212. package/coverage/core/api/services/organisations/organisations.service.js.html +23 -23
  213. package/coverage/core/api/services/push/index.html +1 -1
  214. package/coverage/core/api/services/push/push.hooks.js.html +1 -1
  215. package/coverage/core/api/services/push/push.service.js.html +1 -1
  216. package/coverage/core/api/services/storage/index.html +5 -5
  217. package/coverage/core/api/services/storage/storage.hooks.js.html +1 -1
  218. package/coverage/core/api/services/storage/storage.service.js.html +27 -27
  219. package/coverage/core/api/services/tags/index.html +1 -1
  220. package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
  221. package/coverage/core/api/services/users/index.html +23 -8
  222. package/coverage/core/api/services/users/users.hooks.js.html +1 -1
  223. package/coverage/core/api/services/users/users.service.js.html +100 -0
  224. package/coverage/core/api/utils.js.html +1 -1
  225. package/coverage/core/common/errors.js.html +1 -1
  226. package/coverage/core/common/index.html +42 -27
  227. package/coverage/core/common/index.js.html +1 -1
  228. package/coverage/core/common/permissions.js.html +195 -510
  229. package/coverage/core/common/schema.js.html +1 -1
  230. package/coverage/core/common/utils.js.html +12 -6
  231. package/coverage/core/common/utils.offline.js.html +199 -0
  232. package/coverage/index.html +142 -172
  233. package/coverage/lcov-report/core/api/application.js.html +296 -296
  234. package/coverage/lcov-report/core/api/authentication.js.html +206 -74
  235. package/coverage/lcov-report/core/api/db.js.html +61 -61
  236. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +15 -189
  237. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +180 -462
  238. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +1 -1
  239. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +16 -16
  240. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +69 -57
  241. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +1 -1
  242. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +58 -46
  243. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +142 -142
  244. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +1 -1
  245. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +1 -1
  246. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +1 -1
  247. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +54 -327
  248. package/coverage/lcov-report/core/api/hooks/index.html +64 -94
  249. package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
  250. package/coverage/lcov-report/core/api/index.html +41 -56
  251. package/coverage/lcov-report/core/api/index.js.html +1 -1
  252. package/coverage/lcov-report/core/api/marshall.js.html +9 -9
  253. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
  254. package/coverage/lcov-report/core/api/models/index.html +13 -58
  255. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +35 -35
  256. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +3 -3
  257. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
  258. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +1 -1
  259. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +1 -1
  260. package/coverage/lcov-report/core/api/services/account/account.service.js.html +67 -67
  261. package/coverage/lcov-report/core/api/services/account/index.html +16 -16
  262. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  263. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +141 -144
  264. package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
  265. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +82 -82
  266. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +20 -20
  267. package/coverage/lcov-report/core/api/services/databases/index.html +32 -32
  268. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
  269. package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
  270. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +1 -1
  271. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +1 -1
  272. package/coverage/lcov-report/core/api/services/import-export/index.html +1 -1
  273. package/coverage/lcov-report/core/api/services/index.html +21 -21
  274. package/coverage/lcov-report/core/api/services/index.js.html +118 -154
  275. package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
  276. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
  277. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
  278. package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
  279. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +89 -86
  280. package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
  281. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
  282. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +23 -23
  283. package/coverage/lcov-report/core/api/services/push/index.html +1 -1
  284. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +1 -1
  285. package/coverage/lcov-report/core/api/services/push/push.service.js.html +1 -1
  286. package/coverage/lcov-report/core/api/services/storage/index.html +5 -5
  287. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +1 -1
  288. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +27 -27
  289. package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
  290. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
  291. package/coverage/lcov-report/core/api/services/users/index.html +23 -8
  292. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +1 -1
  293. package/coverage/lcov-report/core/api/services/users/users.service.js.html +100 -0
  294. package/coverage/lcov-report/core/api/utils.js.html +1 -1
  295. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  296. package/coverage/lcov-report/core/common/index.html +42 -27
  297. package/coverage/lcov-report/core/common/index.js.html +1 -1
  298. package/coverage/lcov-report/core/common/permissions.js.html +195 -510
  299. package/coverage/lcov-report/core/common/schema.js.html +1 -1
  300. package/coverage/lcov-report/core/common/utils.js.html +12 -6
  301. package/coverage/lcov-report/core/common/utils.offline.js.html +199 -0
  302. package/coverage/lcov-report/index.html +142 -172
  303. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +125 -29
  304. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
  305. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +20 -44
  306. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  307. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  308. package/coverage/lcov-report/map/api/index.html +1 -1
  309. package/coverage/lcov-report/map/api/index.js.html +1 -1
  310. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  311. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  312. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +49 -7
  313. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  314. package/coverage/lcov-report/map/api/models/index.html +22 -7
  315. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
  316. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +112 -0
  317. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  318. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  319. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  320. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +29 -11
  321. package/coverage/lcov-report/map/api/services/catalog/index.html +5 -5
  322. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  323. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  324. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +78 -9
  325. package/coverage/lcov-report/map/api/services/features/features.service.js.html +307 -4
  326. package/coverage/lcov-report/map/api/services/features/index.html +7 -7
  327. package/coverage/lcov-report/map/api/services/index.html +5 -5
  328. package/coverage/lcov-report/map/api/services/index.js.html +287 -50
  329. package/coverage/lcov-report/map/api/services/projects/index.html +1 -1
  330. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +1 -1
  331. package/coverage/lcov-report/map/api/services/styles/index.html +116 -0
  332. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +196 -0
  333. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  334. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  335. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +8 -5
  336. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  337. package/coverage/lcov-report/map/common/index.html +7 -7
  338. package/coverage/lcov-report/map/common/index.js.html +1 -1
  339. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  340. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  341. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  342. package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
  343. package/coverage/lcov-report/map/common/permissions.js.html +10 -4
  344. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  345. package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
  346. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
  347. package/coverage/lcov-report/map/common/wcs-utils.js.html +9 -9
  348. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
  349. package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
  350. package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
  351. package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
  352. package/coverage/lcov.info +2581 -3278
  353. package/coverage/map/api/hooks/hooks.catalog.js.html +125 -29
  354. package/coverage/map/api/hooks/hooks.features.js.html +1 -1
  355. package/coverage/map/api/hooks/hooks.query.js.html +20 -44
  356. package/coverage/map/api/hooks/index.html +7 -7
  357. package/coverage/map/api/hooks/index.js.html +1 -1
  358. package/coverage/map/api/index.html +1 -1
  359. package/coverage/map/api/index.js.html +1 -1
  360. package/coverage/map/api/marshall.js.html +1 -1
  361. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  362. package/coverage/map/api/models/catalog.model.mongodb.js.html +49 -7
  363. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  364. package/coverage/map/api/models/index.html +22 -7
  365. package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
  366. package/coverage/map/api/models/styles.model.mongodb.js.html +112 -0
  367. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  368. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  369. package/coverage/map/api/services/alerts/index.html +1 -1
  370. package/coverage/map/api/services/catalog/catalog.hooks.js.html +29 -11
  371. package/coverage/map/api/services/catalog/index.html +5 -5
  372. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  373. package/coverage/map/api/services/daptiles/index.html +1 -1
  374. package/coverage/map/api/services/features/features.hooks.js.html +78 -9
  375. package/coverage/map/api/services/features/features.service.js.html +307 -4
  376. package/coverage/map/api/services/features/index.html +7 -7
  377. package/coverage/map/api/services/index.html +5 -5
  378. package/coverage/map/api/services/index.js.html +287 -50
  379. package/coverage/map/api/services/projects/index.html +1 -1
  380. package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
  381. package/coverage/map/api/services/styles/index.html +116 -0
  382. package/coverage/map/api/services/styles/styles.hooks.js.html +196 -0
  383. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  384. package/coverage/map/common/errors.js.html +1 -1
  385. package/coverage/map/common/geotiff-grid-source.js.html +8 -5
  386. package/coverage/map/common/grid.js.html +1 -1
  387. package/coverage/map/common/index.html +7 -7
  388. package/coverage/map/common/index.js.html +1 -1
  389. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  390. package/coverage/map/common/moment-utils.js.html +1 -1
  391. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  392. package/coverage/map/common/opendap-utils.js.html +1 -1
  393. package/coverage/map/common/permissions.js.html +10 -4
  394. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  395. package/coverage/map/common/tms-utils.js.html +6 -6
  396. package/coverage/map/common/wcs-grid-source.js.html +3 -3
  397. package/coverage/map/common/wcs-utils.js.html +9 -9
  398. package/coverage/map/common/weacast-grid-source.js.html +1 -1
  399. package/coverage/map/common/wfs-utils.js.html +11 -11
  400. package/coverage/map/common/wms-utils.js.html +8 -8
  401. package/coverage/map/common/wmts-utils.js.html +7 -7
  402. package/coverage/tmp/coverage-323534-1747828879483-0.json +1 -0
  403. package/coverage/tmp/coverage-323546-1747828879453-0.json +1 -0
  404. package/coverage/tmp/coverage-323557-1747828879439-0.json +1 -0
  405. package/coverage/tmp/coverage-323569-1747828879416-0.json +1 -0
  406. package/coverage/tmp/coverage-323576-1747828879390-0.json +1 -0
  407. package/extras/configs/helpers.js +78 -0
  408. package/extras/configs/panes.left.js +118 -0
  409. package/extras/configs/panes.top.js +222 -0
  410. package/extras/configs/stickies.js +57 -0
  411. package/extras/configs/widgets.left.js +23 -0
  412. package/extras/configs/widgets.top.js +73 -0
  413. package/extras/css/core.variables.scss +8 -0
  414. package/extras/images/north.svg +3 -0
  415. package/extras/tours/map/side-nav.js +3 -3
  416. package/map/api/hooks/hooks.catalog.js +56 -23
  417. package/map/api/hooks/hooks.query.js +16 -24
  418. package/map/api/models/catalog.model.mongodb.js +16 -2
  419. package/{core/api/models/groups.model.mongodb.js → map/api/models/styles.model.mongodb.js} +2 -1
  420. package/map/api/services/catalog/catalog.hooks.js +13 -7
  421. package/map/api/services/features/features.hooks.js +28 -5
  422. package/map/api/services/features/features.service.js +101 -0
  423. package/map/api/services/index.js +125 -46
  424. package/map/api/services/styles/styles.hooks.js +37 -0
  425. package/map/client/cesium/utils/index.js +1 -0
  426. package/map/client/cesium/utils/utils.cesium.js +397 -0
  427. package/map/client/cesium/utils/utils.features.js +8 -0
  428. package/map/client/cesium/utils/utils.geojson.js +59 -0
  429. package/map/client/cesium/utils/utils.style.js +134 -17
  430. package/map/client/components/KEditLayerData.vue +17 -79
  431. package/map/client/components/KFeatureEditor.vue +2 -7
  432. package/map/client/components/KFeaturesChart.vue +2 -6
  433. package/map/client/components/KFeaturesFilterEditor.vue +300 -0
  434. package/map/client/components/KFeaturesFilterManager.vue +196 -0
  435. package/map/client/components/KFeaturesTable.vue +0 -5
  436. package/map/client/components/KFilterCondition.vue +303 -0
  437. package/map/client/components/KLayerEditionToolbar.vue +4 -3
  438. package/map/client/components/KLayerEditor.vue +451 -36
  439. package/map/client/components/KMeasureTool.vue +36 -9
  440. package/map/client/components/KProjectMenu.vue +14 -8
  441. package/map/client/components/catalog/KAddLayer.vue +0 -4
  442. package/map/client/components/catalog/KBaseLayersSelector.vue +42 -46
  443. package/map/client/components/catalog/KConnectLayer.vue +295 -291
  444. package/map/client/components/catalog/KCreateLayer.vue +141 -146
  445. package/map/client/components/catalog/KCreateOfflineView.vue +100 -0
  446. package/map/client/components/catalog/KCreateView.vue +2 -8
  447. package/map/client/components/catalog/KFilteredLayerItem.vue +72 -25
  448. package/map/client/components/catalog/KImportLayer.vue +121 -129
  449. package/map/client/components/catalog/KLayerItem.vue +44 -32
  450. package/map/client/components/catalog/KLayersPanel.vue +45 -17
  451. package/map/client/components/catalog/KLayersSelector.vue +51 -50
  452. package/map/client/components/catalog/KProjectManager.vue +4 -8
  453. package/map/client/components/catalog/KProjectSelector.vue +33 -2
  454. package/map/client/components/catalog/KProjectsPanel.vue +84 -106
  455. package/map/client/components/catalog/KSelectLayers.vue +56 -69
  456. package/map/client/components/catalog/KSelectViews.vue +56 -69
  457. package/map/client/components/catalog/KViewSelector.vue +32 -2
  458. package/map/client/components/catalog/KViewsPanel.vue +178 -110
  459. package/map/client/components/catalog/KWeatherLayersSelector.vue +77 -85
  460. package/map/client/components/form/KLocationField.vue +21 -2
  461. package/map/client/components/form/KOwsLayerField.vue +1 -1
  462. package/map/client/components/form/KOwsServiceField.vue +102 -63
  463. package/map/client/components/form/KSelectLayersField.vue +1 -1
  464. package/map/client/components/form/KSelectViewsField.vue +1 -1
  465. package/map/client/components/form/KTimezoneField.vue +0 -1
  466. package/map/client/components/legend/KLegend.vue +4 -4
  467. package/map/client/components/location/KLocationCardSection.vue +16 -0
  468. package/map/client/components/location/KLocationMap.vue +3 -2
  469. package/map/client/components/location/KLocationSearch.vue +46 -8
  470. package/map/client/components/location/KLocationTimeLineCard.vue +25 -3
  471. package/map/client/components/location/KLocationTip.vue +57 -10
  472. package/map/client/components/selection/KFeaturesSelection.vue +71 -0
  473. package/map/client/components/selection/KSelectedLayerFeatures.vue +343 -0
  474. package/map/client/components/{KAttribution.vue → stickies/KAttribution.vue} +39 -33
  475. package/map/client/components/stickies/KLevelSlider.vue +114 -0
  476. package/map/client/components/stickies/KNorthArrow.vue +26 -0
  477. package/map/client/components/stickies/KPosition.vue +103 -0
  478. package/map/client/components/stickies/KTarget.vue +34 -0
  479. package/map/client/components/styles/KLayerStyleAction.vue +58 -0
  480. package/map/client/components/styles/KStyleEditor.vue +273 -0
  481. package/map/client/components/styles/KStyleEditorSection.vue +79 -0
  482. package/map/client/components/styles/KStyleManager.vue +183 -0
  483. package/map/client/components/styles/KStylePreview.vue +64 -0
  484. package/map/client/components/styles/KStylePreviewItem.vue +68 -0
  485. package/map/client/components/styles/KStylePropertiesGroup.vue +76 -0
  486. package/map/client/components/styles/KStyleProperty.vue +136 -0
  487. package/map/client/components/styles/KStyleTip.vue +118 -0
  488. package/map/client/components/tools/KGeolocateTool.vue +3 -2
  489. package/map/client/components/tools/KSearchTool.vue +34 -6
  490. package/map/client/components/widget/KMapillaryViewer.vue +1 -1
  491. package/map/client/components/widget/KStackableTimeSeries.vue +8 -5
  492. package/map/client/composables/activity.js +29 -43
  493. package/map/client/composables/catalog.js +1 -1
  494. package/map/client/composables/highlight.js +117 -57
  495. package/map/client/composables/location.js +33 -14
  496. package/map/client/composables/project.js +9 -10
  497. package/map/client/composables/selection.js +136 -23
  498. package/map/client/geocoder.js +104 -0
  499. package/map/client/geolocation.js +1 -1
  500. package/map/client/globe.js +3 -0
  501. package/map/client/hooks/hooks.offline.js +95 -0
  502. package/map/client/hooks/index.js +1 -0
  503. package/map/client/i18n/map_en.json +159 -94
  504. package/map/client/i18n/map_fr.json +186 -127
  505. package/map/client/index.js +3 -0
  506. package/map/client/init.js +44 -8
  507. package/map/client/leaflet/BoxSelection.js +2 -2
  508. package/map/client/leaflet/GradientPath.js +84 -4
  509. package/map/client/leaflet/TiledFeatureLayer.js +2 -3
  510. package/map/client/leaflet/WindBarb.js +323 -0
  511. package/map/client/leaflet/utils/index.js +1 -0
  512. package/map/client/leaflet/utils/utils.events.js +8 -3
  513. package/map/client/leaflet/utils/utils.geojson.js +221 -0
  514. package/map/client/leaflet/utils/utils.style.js +10 -9
  515. package/map/client/map.js +3 -0
  516. package/map/client/mixins/globe/mixin.base-globe.js +151 -19
  517. package/map/client/mixins/globe/mixin.geojson-layers.js +208 -86
  518. package/map/client/mixins/globe/mixin.popup.js +3 -2
  519. package/map/client/mixins/globe/mixin.style.js +3 -1
  520. package/map/client/mixins/globe/mixin.tooltip.js +3 -2
  521. package/map/client/mixins/map/index.js +1 -3
  522. package/map/client/mixins/map/mixin.base-map.js +267 -79
  523. package/map/client/mixins/map/mixin.canvas-layers.js +44 -10
  524. package/map/client/mixins/map/mixin.edit-layers.js +142 -57
  525. package/map/client/mixins/map/mixin.geojson-layers.js +129 -205
  526. package/map/client/mixins/map/mixin.pmtiles-layers.js +24 -11
  527. package/map/client/mixins/map/mixin.tiled-mesh-layers.js +1 -2
  528. package/map/client/mixins/map/mixin.tiled-wind-layers.js +2 -1
  529. package/map/client/mixins/mixin.activity.js +61 -41
  530. package/map/client/mixins/mixin.context.js +19 -14
  531. package/map/client/mixins/mixin.feature-selection.js +0 -1
  532. package/map/client/mixins/mixin.feature-service.js +41 -59
  533. package/map/client/mixins/mixin.weacast.js +1 -1
  534. package/map/client/navigator.js +38 -0
  535. package/map/client/pixi-utils.js +1 -1
  536. package/map/client/planets.js +1 -1
  537. package/map/client/readers/reader.kml.js +57 -1
  538. package/map/client/utils/index.js +1 -0
  539. package/map/client/utils/utils.capture.js +10 -7
  540. package/map/client/utils/utils.catalog.js +2 -2
  541. package/map/client/utils/utils.features.js +193 -39
  542. package/map/client/utils/utils.js +8 -19
  543. package/map/client/utils/utils.layers.js +381 -4
  544. package/map/client/utils/utils.location.js +39 -74
  545. package/map/client/utils/utils.offline.js +89 -0
  546. package/map/client/utils/utils.style.js +133 -80
  547. package/map/client/utils/utils.time-series.js +99 -25
  548. package/map/common/geotiff-grid-source.js +2 -1
  549. package/map/common/permissions.js +2 -0
  550. package/map/common/schemas/capture.create.json +4 -4
  551. package/map/common/schemas/catalog.update.json +18 -2
  552. package/map/common/schemas/projects.create.json +2 -2
  553. package/map/common/schemas/projects.update.json +2 -2
  554. package/map/common/tms-utils.js +5 -5
  555. package/map/common/wcs-grid-source.js +2 -2
  556. package/map/common/wcs-utils.js +8 -8
  557. package/map/common/wfs-utils.js +10 -10
  558. package/map/common/wms-utils.js +7 -7
  559. package/map/common/wmts-utils.js +6 -6
  560. package/package.json +7 -4
  561. package/test/api/core/account.test.js +0 -72
  562. package/test/api/core/authentication.test.js +184 -0
  563. package/test/api/core/config/default.cjs +1 -3
  564. package/test/api/core/index.test.js +33 -96
  565. package/test/api/core/offline.test.js +55 -0
  566. package/test/api/core/push.test.js +3 -3
  567. package/test/api/core/{test-log-2024-06-06.log → test-log-2025-02-05.log} +3 -3
  568. package/test/api/core/{test-log-2024-11-15.log → test-log-2025-05-21.log} +1 -9
  569. package/test/api/map/alerts.test.js +1 -1
  570. package/test/api/map/config/default.cjs +2 -1
  571. package/test/api/map/data/vigicrues.observations.Q.json +47042 -0
  572. package/test/api/map/index.test.js +113 -9
  573. package/test/api/map/style.test.js +62 -0
  574. package/test/client/core/layout.js +2 -2
  575. package/test/client/core/runner.js +1 -1
  576. package/test/client/core/utils.js +52 -0
  577. package/test/client/map/catalog.js +1 -0
  578. package/core/api/hooks/hooks.groups.js +0 -48
  579. package/core/api/hooks/hooks.organisations.js +0 -152
  580. package/core/api/models/organisations.model.mongodb.js +0 -3
  581. package/core/api/models/tags.model.mongodb.js +0 -10
  582. package/core/api/services/groups/groups.hooks.js +0 -31
  583. package/core/api/services/organisations/organisations.hooks.js +0 -31
  584. package/core/api/services/organisations/organisations.service.js +0 -86
  585. package/core/api/services/tags/tags.hooks.js +0 -31
  586. package/core/api/utils.js +0 -11
  587. package/core/client/components/KChipsPane.vue +0 -103
  588. package/core/client/components/document/index.js +0 -9
  589. package/core/client/components/team/KAddMember.vue +0 -378
  590. package/core/client/components/team/KAddTag.vue +0 -121
  591. package/core/client/components/team/KChangeRole.vue +0 -118
  592. package/core/client/components/team/KGroupCard.vue +0 -110
  593. package/core/client/components/team/KGroupsActivity.vue +0 -78
  594. package/core/client/components/team/KJoinGroup.vue +0 -132
  595. package/core/client/components/team/KMemberCard.vue +0 -328
  596. package/core/client/components/team/KMemberFilter.vue +0 -49
  597. package/core/client/components/team/KMembersActivity.vue +0 -136
  598. package/core/client/components/team/KOrganisationsActivity.vue +0 -51
  599. package/core/client/components/team/KTagCard.vue +0 -72
  600. package/core/client/components/team/KTagsActivity.vue +0 -73
  601. package/core/client/components/team/index.js +0 -9
  602. package/core/client/mixins/mixin.base-context.js +0 -54
  603. package/core/client/utils/utils.platform.js +0 -12
  604. package/core/common/schemas/groups.create.json +0 -28
  605. package/core/common/schemas/groups.update.json +0 -28
  606. package/core/common/schemas/organisations.create.json +0 -28
  607. package/core/common/schemas/organisations.update.json +0 -49
  608. package/core/common/schemas/tags.create.json +0 -35
  609. package/core/common/schemas/tags.update.json +0 -35
  610. package/coverage/tmp/coverage-280506-1731704745613-0.json +0 -1
  611. package/coverage/tmp/coverage-280518-1731704745599-0.json +0 -1
  612. package/coverage/tmp/coverage-280529-1731704745588-0.json +0 -1
  613. package/coverage/tmp/coverage-280541-1731704745574-0.json +0 -1
  614. package/coverage/tmp/coverage-280548-1731704745545-0.json +0 -1
  615. package/map/client/components/KFeaturesFilter.vue +0 -259
  616. package/map/client/components/KLayerStyleEditor.vue +0 -118
  617. package/map/client/components/KLayerStyleForm.vue +0 -740
  618. package/map/client/components/KLevelSlider.vue +0 -100
  619. package/map/client/components/KNorth.vue +0 -31
  620. package/map/client/components/KPositionIndicator.vue +0 -83
  621. package/map/client/components/catalog/KCreateProject.vue +0 -100
  622. package/map/client/mixins/map/mixin.forecast-layers.js +0 -81
  623. package/map/client/mixins/map/mixin.georaster-layers.js +0 -107
  624. package/test/api/core/team.test.js +0 -670
  625. package/test/api/core/test-log-2023-12-19.log +0 -7
  626. package/test/api/core/test-log-2024-01-04.log +0 -14
  627. package/test/api/core/test-log-2024-05-14.log +0 -6
  628. package/test/api/core/test-log-2024-06-26.log +0 -25
  629. package/test/api/core/test-log-2024-06-28.log +0 -2
  630. package/test/api/core/test-log-2024-07-09.log +0 -0
  631. package/test/api/core/test-log-2024-08-13.log +0 -69
  632. package/test/api/core/test-log-2024-10-28.log +0 -53
  633. package/test/api/core/test-log-2024-11-05.log +0 -30
  634. package/test/api/map/test-log-2023-11-24.log +0 -121
  635. package/test/api/map/test-log-2023-12-12.log +0 -29
  636. package/test/api/map/test-log-2023-12-13.log +0 -5
  637. package/test/api/map/test-log-2024-01-04.log +0 -2
  638. package/test/api/map/test-log-2024-01-11.log +0 -1
  639. package/test/api/map/test-log-2024-01-25.log +0 -19
  640. package/test/api/map/test-log-2024-06-06.log +0 -39
  641. package/test/api/map/test-log-2024-08-13.log +0 -13
  642. package/test/api/map/test-log-2024-08-20.log +0 -55
  643. package/test/api/map/test-log-2024-09-09.log +0 -92
  644. package/test/api/map/test-log-2024-10-28.log +0 -11
  645. /package/extras/{logos → images}/kalisio.png +0 -0
  646. /package/extras/{icons → images}/target.svg +0 -0
  647. /package/test/api/map/data/{vigicrues.observations.json → vigicrues.observations.H.json} +0 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">73.51% </span>
26
+ <span class="strong">71.1% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>161/219</span>
28
+ <span class='fraction'>187/263</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">52% </span>
33
+ <span class="strong">63.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>13/25</span>
35
+ <span class='fraction'>19/30</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">70% </span>
40
+ <span class="strong">63.63% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>7/10</span>
42
+ <span class='fraction'>7/11</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">73.51% </span>
47
+ <span class="strong">71.1% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>161/219</span>
49
+ <span class='fraction'>187/263</span>
50
50
  </div>
51
51
 
52
52
 
@@ -282,7 +282,51 @@
282
282
  <a name='L217'></a><a href='#L217'>217</a>
283
283
  <a name='L218'></a><a href='#L218'>218</a>
284
284
  <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
286
330
  <span class="cline-any cline-yes">1x</span>
287
331
  <span class="cline-any cline-yes">1x</span>
288
332
  <span class="cline-any cline-yes">1x</span>
@@ -303,16 +347,17 @@
303
347
  <span class="cline-any cline-yes">1x</span>
304
348
  <span class="cline-any cline-yes">1x</span>
305
349
  <span class="cline-any cline-yes">1x</span>
306
- <span class="cline-any cline-yes">6x</span>
307
- <span class="cline-any cline-yes">6x</span>
308
- <span class="cline-any cline-no">&nbsp;</span>
309
- <span class="cline-any cline-yes">6x</span>
310
- <span class="cline-any cline-no">&nbsp;</span>
350
+ <span class="cline-any cline-yes">1x</span>
351
+ <span class="cline-any cline-yes">9x</span>
352
+ <span class="cline-any cline-yes">9x</span>
311
353
  <span class="cline-any cline-no">&nbsp;</span>
312
- <span class="cline-any cline-yes">6x</span>
313
- <span class="cline-any cline-yes">6x</span>
314
- <span class="cline-any cline-yes">6x</span>
315
- <span class="cline-any cline-yes">6x</span>
354
+ <span class="cline-any cline-yes">9x</span>
355
+ <span class="cline-any cline-yes">4x</span>
356
+ <span class="cline-any cline-yes">4x</span>
357
+ <span class="cline-any cline-yes">9x</span>
358
+ <span class="cline-any cline-yes">5x</span>
359
+ <span class="cline-any cline-yes">5x</span>
360
+ <span class="cline-any cline-yes">9x</span>
316
361
  <span class="cline-any cline-yes">1x</span>
317
362
  <span class="cline-any cline-yes">1x</span>
318
363
  <span class="cline-any cline-yes">1x</span>
@@ -346,8 +391,30 @@
346
391
  <span class="cline-any cline-no">&nbsp;</span>
347
392
  <span class="cline-any cline-no">&nbsp;</span>
348
393
  <span class="cline-any cline-no">&nbsp;</span>
394
+ <span class="cline-any cline-no">&nbsp;</span>
395
+ <span class="cline-any cline-no">&nbsp;</span>
396
+ <span class="cline-any cline-no">&nbsp;</span>
349
397
  <span class="cline-any cline-yes">1x</span>
350
398
  <span class="cline-any cline-yes">1x</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-no">&nbsp;</span>
401
+ <span class="cline-any cline-no">&nbsp;</span>
402
+ <span class="cline-any cline-no">&nbsp;</span>
403
+ <span class="cline-any cline-no">&nbsp;</span>
404
+ <span class="cline-any cline-no">&nbsp;</span>
405
+ <span class="cline-any cline-no">&nbsp;</span>
406
+ <span class="cline-any cline-no">&nbsp;</span>
407
+ <span class="cline-any cline-no">&nbsp;</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
409
+ <span class="cline-any cline-no">&nbsp;</span>
410
+ <span class="cline-any cline-no">&nbsp;</span>
411
+ <span class="cline-any cline-no">&nbsp;</span>
412
+ <span class="cline-any cline-no">&nbsp;</span>
413
+ <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
416
+ <span class="cline-any cline-no">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
351
418
  <span class="cline-any cline-yes">1x</span>
352
419
  <span class="cline-any cline-yes">1x</span>
353
420
  <span class="cline-any cline-yes">1x</span>
@@ -359,58 +426,79 @@
359
426
  <span class="cline-any cline-yes">1x</span>
360
427
  <span class="cline-any cline-yes">1x</span>
361
428
  <span class="cline-any cline-yes">1x</span>
362
- <span class="cline-any cline-yes">6x</span>
363
- <span class="cline-any cline-yes">6x</span>
364
- <span class="cline-any cline-yes">6x</span>
365
- <span class="cline-any cline-yes">6x</span>
366
- <span class="cline-any cline-yes">6x</span>
429
+ <span class="cline-any cline-yes">1x</span>
430
+ <span class="cline-any cline-yes">1x</span>
431
+ <span class="cline-any cline-yes">18x</span>
432
+ <span class="cline-any cline-yes">18x</span>
433
+ <span class="cline-any cline-yes">18x</span>
434
+ <span class="cline-any cline-yes">18x</span>
435
+ <span class="cline-any cline-yes">18x</span>
436
+ <span class="cline-any cline-yes">18x</span>
437
+ <span class="cline-any cline-yes">18x</span>
367
438
  <span class="cline-any cline-no">&nbsp;</span>
368
439
  <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-yes">18x</span>
441
+ <span class="cline-any cline-yes">18x</span>
442
+ <span class="cline-any cline-yes">18x</span>
443
+ <span class="cline-any cline-yes">18x</span>
444
+ <span class="cline-any cline-yes">18x</span>
445
+ <span class="cline-any cline-yes">18x</span>
446
+ <span class="cline-any cline-yes">18x</span>
447
+ <span class="cline-any cline-yes">18x</span>
448
+ <span class="cline-any cline-yes">18x</span>
449
+ <span class="cline-any cline-yes">18x</span>
450
+ <span class="cline-any cline-yes">18x</span>
451
+ <span class="cline-any cline-yes">18x</span>
452
+ <span class="cline-any cline-yes">18x</span>
453
+ <span class="cline-any cline-yes">18x</span>
454
+ <span class="cline-any cline-yes">18x</span>
455
+ <span class="cline-any cline-yes">18x</span>
456
+ <span class="cline-any cline-yes">18x</span>
457
+ <span class="cline-any cline-yes">18x</span>
458
+ <span class="cline-any cline-yes">18x</span>
459
+ <span class="cline-any cline-yes">18x</span>
460
+ <span class="cline-any cline-yes">9x</span>
461
+ <span class="cline-any cline-yes">9x</span>
462
+ <span class="cline-any cline-yes">9x</span>
463
+ <span class="cline-any cline-yes">9x</span>
464
+ <span class="cline-any cline-yes">9x</span>
465
+ <span class="cline-any cline-yes">9x</span>
466
+ <span class="cline-any cline-yes">9x</span>
467
+ <span class="cline-any cline-yes">9x</span>
468
+ <span class="cline-any cline-yes">9x</span>
469
+ <span class="cline-any cline-yes">9x</span>
470
+ <span class="cline-any cline-yes">9x</span>
471
+ <span class="cline-any cline-yes">9x</span>
472
+ <span class="cline-any cline-yes">9x</span>
473
+ <span class="cline-any cline-yes">9x</span>
474
+ <span class="cline-any cline-yes">9x</span>
475
+ <span class="cline-any cline-yes">9x</span>
476
+ <span class="cline-any cline-yes">9x</span>
369
477
  <span class="cline-any cline-yes">6x</span>
370
478
  <span class="cline-any cline-yes">6x</span>
371
479
  <span class="cline-any cline-yes">6x</span>
372
480
  <span class="cline-any cline-yes">6x</span>
373
481
  <span class="cline-any cline-yes">6x</span>
482
+ <span class="cline-any cline-yes">9x</span>
483
+ <span class="cline-any cline-yes">18x</span>
484
+ <span class="cline-any cline-yes">3x</span>
485
+ <span class="cline-any cline-yes">3x</span>
486
+ <span class="cline-any cline-yes">18x</span>
487
+ <span class="cline-any cline-yes">1x</span>
488
+ <span class="cline-any cline-yes">1x</span>
489
+ <span class="cline-any cline-yes">25x</span>
490
+ <span class="cline-any cline-yes">25x</span>
374
491
  <span class="cline-any cline-yes">6x</span>
375
492
  <span class="cline-any cline-yes">6x</span>
376
493
  <span class="cline-any cline-yes">6x</span>
377
494
  <span class="cline-any cline-yes">6x</span>
378
495
  <span class="cline-any cline-yes">6x</span>
379
496
  <span class="cline-any cline-yes">6x</span>
380
- <span class="cline-any cline-yes">6x</span>
381
- <span class="cline-any cline-yes">6x</span>
382
- <span class="cline-any cline-yes">6x</span>
383
- <span class="cline-any cline-yes">6x</span>
384
- <span class="cline-any cline-yes">6x</span>
385
- <span class="cline-any cline-yes">6x</span>
386
- <span class="cline-any cline-yes">6x</span>
387
- <span class="cline-any cline-yes">6x</span>
388
- <span class="cline-any cline-yes">6x</span>
389
- <span class="cline-any cline-yes">6x</span>
390
- <span class="cline-any cline-yes">6x</span>
391
- <span class="cline-any cline-yes">6x</span>
392
- <span class="cline-any cline-yes">6x</span>
393
- <span class="cline-any cline-yes">6x</span>
394
- <span class="cline-any cline-yes">6x</span>
395
- <span class="cline-any cline-yes">6x</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-no">&nbsp;</span>
398
- <span class="cline-any cline-yes">6x</span>
399
- <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-yes">1x</span>
401
- <span class="cline-any cline-yes">13x</span>
402
- <span class="cline-any cline-yes">13x</span>
403
- <span class="cline-any cline-yes">2x</span>
404
- <span class="cline-any cline-yes">2x</span>
405
- <span class="cline-any cline-yes">2x</span>
406
- <span class="cline-any cline-yes">2x</span>
407
- <span class="cline-any cline-yes">2x</span>
408
- <span class="cline-any cline-yes">2x</span>
409
- <span class="cline-any cline-yes">13x</span>
410
- <span class="cline-any cline-yes">11x</span>
411
- <span class="cline-any cline-yes">11x</span>
412
- <span class="cline-any cline-yes">11x</span>
413
- <span class="cline-any cline-yes">13x</span>
497
+ <span class="cline-any cline-yes">25x</span>
498
+ <span class="cline-any cline-yes">19x</span>
499
+ <span class="cline-any cline-yes">19x</span>
500
+ <span class="cline-any cline-yes">19x</span>
501
+ <span class="cline-any cline-yes">25x</span>
414
502
  <span class="cline-any cline-yes">1x</span>
415
503
  <span class="cline-any cline-yes">1x</span>
416
504
  <span class="cline-any cline-yes">1x</span>
@@ -475,8 +563,8 @@
475
563
  <span class="cline-any cline-yes">9x</span>
476
564
  <span class="cline-any cline-yes">9x</span>
477
565
  <span class="cline-any cline-yes">9x</span>
478
- <span class="cline-any cline-yes">16x</span>
479
- <span class="cline-any cline-yes">16x</span>
566
+ <span class="cline-any cline-yes">15x</span>
567
+ <span class="cline-any cline-yes">15x</span>
480
568
  <span class="cline-any cline-yes">4x</span>
481
569
  <span class="cline-any cline-yes">4x</span>
482
570
  <span class="cline-any cline-yes">4x</span>
@@ -486,7 +574,7 @@
486
574
  <span class="cline-any cline-yes">4x</span>
487
575
  <span class="cline-any cline-yes">4x</span>
488
576
  <span class="cline-any cline-yes">4x</span>
489
- <span class="cline-any cline-yes">16x</span>
577
+ <span class="cline-any cline-yes">15x</span>
490
578
  <span class="cline-any cline-yes">4x</span>
491
579
  <span class="cline-any cline-yes">4x</span>
492
580
  <span class="cline-any cline-yes">4x</span>
@@ -498,11 +586,12 @@
498
586
  <span class="cline-any cline-yes">4x</span>
499
587
  <span class="cline-any cline-yes">4x</span>
500
588
  <span class="cline-any cline-yes">4x</span>
501
- <span class="cline-any cline-yes">16x</span>
589
+ <span class="cline-any cline-yes">15x</span>
502
590
  <span class="cline-any cline-yes">9x</span>
503
591
  <span class="cline-any cline-yes">9x</span>
504
592
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import makeDebug from 'debug'
505
593
  import _ from 'lodash'
594
+ import qs from 'qs'
506
595
  import 'winston-daily-rotate-file'
507
596
  // import { RateLimiter } from 'limiter'
508
597
  import HttpLimiter from 'express-rate-limit'
@@ -525,9 +614,9 @@ export class Authentication extends AuthenticationService {
525
614
  // Params can override defaults
526
615
  if (params.payload) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
527
616
  <span class="cstat-no" title="statement not covered" > return params.payload</span>
528
- } else if (authResult.authentication &amp;&amp; authResult.authentication.payload) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
529
- <span class="cstat-no" title="statement not covered" > // Avoid conflicting with default token options added when generating a new token</span>
530
- <span class="cstat-no" title="statement not covered" > return _.omit(authResult.authentication.payload, ['aud', 'iss', 'exp', 'sub', 'iat', 'jti', 'nbf'])</span>
617
+ } else if (authResult.authentication &amp;&amp; authResult.authentication.payload) {
618
+ // Avoid conflicting with default token options added when generating a new token
619
+ return _.omit(authResult.authentication.payload, ['aud', 'iss', 'exp', 'sub', 'iat', 'jti', 'nbf'])
531
620
  } else {
532
621
  return {}
533
622
  }
@@ -535,6 +624,23 @@ export class Authentication extends AuthenticationService {
535
624
  }
536
625
  &nbsp;
537
626
  export class AuthenticationProviderStrategy extends OAuthStrategy {
627
+ <span class="fstat-no" title="function not covered" > setAuthentication (auth) {</span>
628
+ <span class="cstat-no" title="statement not covered" > super.setAuthentication(auth)</span>
629
+ <span class="cstat-no" title="statement not covered" > const authConfig = this.authentication.configuration</span>
630
+ <span class="cstat-no" title="statement not covered" > const { oauth } = authConfig</span>
631
+ <span class="cstat-no" title="statement not covered" > // Single logout supported ?</span>
632
+ <span class="cstat-no" title="statement not covered" > const { logout_url: logoutUrl, post_logout_url: postLogoutUrl, key } = this.configuration</span>
633
+ <span class="cstat-no" title="statement not covered" > if (logoutUrl &amp;&amp; key) {</span>
634
+ <span class="cstat-no" title="statement not covered" > // Cannot use oauth/:provider/logout route as oauth/:provider is already intercepted by feathers and this causes an error</span>
635
+ <span class="cstat-no" title="statement not covered" > this.app.get(`/oauth-logout/${this.name}`, (req, res) =&gt; {</span>
636
+ <span class="cstat-no" title="statement not covered" > return res.redirect(logoutUrl + '?' + qs.stringify({</span>
637
+ <span class="cstat-no" title="statement not covered" > post_logout_redirect_uri: postLogoutUrl || oauth.redirect,</span>
638
+ <span class="cstat-no" title="statement not covered" > client_id: key</span>
639
+ <span class="cstat-no" title="statement not covered" > }))</span>
640
+ <span class="cstat-no" title="statement not covered" > })</span>
641
+ <span class="cstat-no" title="statement not covered" > }</span>
642
+ <span class="cstat-no" title="statement not covered" > }</span>
643
+ &nbsp;
538
644
  <span class="fstat-no" title="function not covered" > async getEntityData (profile, entity) {</span>
539
645
  <span class="cstat-no" title="statement not covered" > const createEntity = _.isNil(entity)</span>
540
646
  <span class="cstat-no" title="statement not covered" > // Add provider Id</span>
@@ -553,6 +659,13 @@ export class AuthenticationProviderStrategy extends OAuthStrategy {
553
659
  <span class="cstat-no" title="statement not covered" > }</span>
554
660
  &nbsp;
555
661
  <span class="fstat-no" title="function not covered" > async getEntityQuery (profile) {</span>
662
+ <span class="cstat-no" title="statement not covered" > // Ensure the profile is right before requesting based on it</span>
663
+ <span class="cstat-no" title="statement not covered" > // as when an error is raised the profile will not contain any ID or email</span>
664
+ <span class="cstat-no" title="statement not covered" > // and we might build a request retrieving any user</span>
665
+ <span class="cstat-no" title="statement not covered" > if (!_.has(profile, 'id') &amp;&amp; !_.has(profile, 'sub') &amp;&amp; !_.has(profile, this.emailFieldInProfile || 'email')) {</span>
666
+ <span class="cstat-no" title="statement not covered" > // This ensure no user will be retrieved</span>
667
+ <span class="cstat-no" title="statement not covered" > return { $limit: 0 }</span>
668
+ <span class="cstat-no" title="statement not covered" > }</span>
556
669
  <span class="cstat-no" title="statement not covered" > const query = {</span>
557
670
  <span class="cstat-no" title="statement not covered" > $or: [</span>
558
671
  <span class="cstat-no" title="statement not covered" > { [`${this.name}Id`]: profile.id || profile.sub },</span>
@@ -579,6 +692,8 @@ export class AuthenticationProviderStrategy extends OAuthStrategy {
579
692
  export class JWTAuthenticationStrategy extends JWTStrategy {
580
693
  async authenticate (authentication, params) {
581
694
  const { accessToken } = authentication
695
+ const authConfig = this.authentication.configuration
696
+ const { identityFields } = authConfig
582
697
  const { entity } = this.configuration
583
698
  const renewJwt = _.get(this.configuration, 'renewJwt', true)
584
699
  &nbsp;
@@ -602,18 +717,35 @@ export class JWTAuthenticationStrategy extends JWTStrategy {
602
717
  // Second key trick
603
718
  // Return user attached to the token if any
604
719
  // Return basic information for a stateless token otherwise
605
- // As we only target MongoDB now, check for a valid ID otherwise assume a stateless token as well
606
- if (payload.sub &amp;&amp; ObjectID.isValid(payload.sub)) {
607
- const entityId = await this.getEntityId(result, params)
608
- const value = await this.getEntity(entityId, params)
720
+ if (payload.sub) {
721
+ // Check for a valid MongoDB ID
722
+ if (ObjectID.isValid(payload.sub)) {
723
+ const entityId = await this.getEntityId(result, params)
724
+ const value = await this.getEntity(entityId, params)
609
725
  &nbsp;
610
- return {
611
- ...result,
612
- [entity]: value
726
+ return {
727
+ ...result,
728
+ [entity]: value
729
+ }
730
+ } else if (identityFields) {
731
+ // Otherwise use others fields to identify the user if defined
732
+ const query = {
733
+ $or: _.reduce(identityFields, (or, field) =&gt; or.concat([{ [field]: payload.sub }]), []),
734
+ $limit: 1
735
+ }
736
+ const response = await this.entityService.find({ ...params, query })
737
+ const [value = null] = response.data ? response.data <span class="branch-0 cbranch-no" title="branch not covered" >: response</span>
738
+ // Otherwise assume a stateless token
739
+ if (value) {
740
+ return {
741
+ ...result,
742
+ [entity]: value
743
+ }
744
+ }
613
745
  }
614
746
  }
615
- <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
616
- <span class="cstat-no" title="statement not covered" > return result</span>
747
+ &nbsp;
748
+ return result
617
749
  }
618
750
  &nbsp;
619
751
  async parse (req) {
@@ -727,7 +859,7 @@ export default function auth (app) {
727
859
  <div class='footer quiet pad2 space-top1 center small'>
728
860
  Code coverage generated by
729
861
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
730
- at 2024-11-15T21:05:45.936Z
862
+ at 2025-05-21T12:01:19.833Z
731
863
  </div>
732
864
  <script src="../../prettify.js"></script>
733
865
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">83.89% </span>
26
+ <span class="strong">80.08% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>198/236</span>
28
+ <span class='fraction'>189/236</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">69.35% </span>
33
+ <span class="strong">64.15% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>43/62</span>
35
+ <span class='fraction'>34/53</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">80.95% </span>
40
+ <span class="strong">71.42% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>17/21</span>
42
+ <span class='fraction'>15/21</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.89% </span>
47
+ <span class="strong">80.08% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>198/236</span>
49
+ <span class='fraction'>189/236</span>
50
50
  </div>
51
51
 
52
52
 
@@ -318,12 +318,12 @@
318
318
  <span class="cline-any cline-yes">6x</span>
319
319
  <span class="cline-any cline-yes">1x</span>
320
320
  <span class="cline-any cline-yes">1x</span>
321
- <span class="cline-any cline-yes">16x</span>
322
- <span class="cline-any cline-yes">16x</span>
323
- <span class="cline-any cline-yes">16x</span>
324
- <span class="cline-any cline-yes">16x</span>
325
- <span class="cline-any cline-yes">16x</span>
326
- <span class="cline-any cline-yes">16x</span>
321
+ <span class="cline-any cline-no">&nbsp;</span>
322
+ <span class="cline-any cline-no">&nbsp;</span>
323
+ <span class="cline-any cline-no">&nbsp;</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
326
+ <span class="cline-any cline-no">&nbsp;</span>
327
327
  <span class="cline-any cline-yes">1x</span>
328
328
  <span class="cline-any cline-yes">1x</span>
329
329
  <span class="cline-any cline-yes">6x</span>
@@ -342,37 +342,37 @@
342
342
  <span class="cline-any cline-yes">1x</span>
343
343
  <span class="cline-any cline-yes">1x</span>
344
344
  <span class="cline-any cline-yes">1x</span>
345
- <span class="cline-any cline-yes">488x</span>
346
- <span class="cline-any cline-yes">488x</span>
347
- <span class="cline-any cline-yes">173x</span>
348
- <span class="cline-any cline-yes">265x</span>
349
- <span class="cline-any cline-yes">265x</span>
350
- <span class="cline-any cline-yes">265x</span>
351
- <span class="cline-any cline-yes">38x</span>
345
+ <span class="cline-any cline-yes">14x</span>
346
+ <span class="cline-any cline-yes">14x</span>
347
+ <span class="cline-any cline-yes">6x</span>
348
+ <span class="cline-any cline-yes">14x</span>
349
+ <span class="cline-any cline-yes">14x</span>
350
+ <span class="cline-any cline-yes">14x</span>
351
+ <span class="cline-any cline-yes">4x</span>
352
+ <span class="cline-any cline-yes">2x</span>
352
353
  <span class="cline-any cline-yes">2x</span>
353
354
  <span class="cline-any cline-yes">2x</span>
354
355
  <span class="cline-any cline-yes">2x</span>
355
356
  <span class="cline-any cline-yes">2x</span>
356
357
  <span class="cline-any cline-yes">2x</span>
357
- <span class="cline-any cline-yes">38x</span>
358
358
  <span class="cline-any cline-no">&nbsp;</span>
359
359
  <span class="cline-any cline-no">&nbsp;</span>
360
- <span class="cline-any cline-yes">36x</span>
361
- <span class="cline-any cline-yes">265x</span>
362
360
  <span class="cline-any cline-yes">2x</span>
361
+ <span class="cline-any cline-yes">14x</span>
363
362
  <span class="cline-any cline-yes">2x</span>
364
363
  <span class="cline-any cline-yes">2x</span>
365
364
  <span class="cline-any cline-yes">2x</span>
366
- <span class="cline-any cline-yes">227x</span>
367
- <span class="cline-any cline-yes">12x</span>
368
- <span class="cline-any cline-yes">225x</span>
369
- <span class="cline-any cline-yes">213x</span>
370
- <span class="cline-any cline-yes">22x</span>
371
- <span class="cline-any cline-yes">213x</span>
372
- <span class="cline-any cline-yes">173x</span>
373
- <span class="cline-any cline-yes">173x</span>
374
- <span class="cline-any cline-yes">488x</span>
375
- <span class="cline-any cline-yes">488x</span>
365
+ <span class="cline-any cline-yes">2x</span>
366
+ <span class="cline-any cline-yes">10x</span>
367
+ <span class="cline-any cline-no">&nbsp;</span>
368
+ <span class="cline-any cline-yes">8x</span>
369
+ <span class="cline-any cline-yes">8x</span>
370
+ <span class="cline-any cline-yes">2x</span>
371
+ <span class="cline-any cline-yes">8x</span>
372
+ <span class="cline-any cline-yes">6x</span>
373
+ <span class="cline-any cline-yes">6x</span>
374
+ <span class="cline-any cline-yes">14x</span>
375
+ <span class="cline-any cline-yes">14x</span>
376
376
  <span class="cline-any cline-yes">1x</span>
377
377
  <span class="cline-any cline-yes">1x</span>
378
378
  <span class="cline-any cline-yes">1x</span>
@@ -400,8 +400,8 @@
400
400
  <span class="cline-any cline-yes">9x</span>
401
401
  <span class="cline-any cline-yes">1x</span>
402
402
  <span class="cline-any cline-yes">1x</span>
403
- <span class="cline-any cline-yes">114x</span>
404
- <span class="cline-any cline-yes">114x</span>
403
+ <span class="cline-any cline-yes">79x</span>
404
+ <span class="cline-any cline-yes">79x</span>
405
405
  <span class="cline-any cline-yes">1x</span>
406
406
  <span class="cline-any cline-yes">1x</span>
407
407
  <span class="cline-any cline-no">&nbsp;</span>
@@ -516,24 +516,24 @@
516
516
  <span class="cline-any cline-yes">1x</span>
517
517
  <span class="cline-any cline-yes">1x</span>
518
518
  <span class="cline-any cline-yes">1x</span>
519
- <span class="cline-any cline-yes">9x</span>
520
- <span class="cline-any cline-yes">9x</span>
521
- <span class="cline-any cline-yes">1x</span>
522
- <span class="cline-any cline-yes">1x</span>
523
- <span class="cline-any cline-yes">22x</span>
524
- <span class="cline-any cline-yes">22x</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
525
521
  <span class="cline-any cline-yes">1x</span>
526
522
  <span class="cline-any cline-yes">1x</span>
527
523
  <span class="cline-any cline-yes">15x</span>
528
524
  <span class="cline-any cline-yes">15x</span>
529
525
  <span class="cline-any cline-yes">1x</span>
530
526
  <span class="cline-any cline-yes">1x</span>
531
- <span class="cline-any cline-yes">15x</span>
532
- <span class="cline-any cline-yes">15x</span>
533
- <span class="cline-any cline-yes">15x</span>
534
- <span class="cline-any cline-yes">15x</span>
535
- <span class="cline-any cline-yes">15x</span>
536
- <span class="cline-any cline-yes">15x</span>
527
+ <span class="cline-any cline-yes">8x</span>
528
+ <span class="cline-any cline-yes">8x</span>
529
+ <span class="cline-any cline-yes">1x</span>
530
+ <span class="cline-any cline-yes">1x</span>
531
+ <span class="cline-any cline-yes">8x</span>
532
+ <span class="cline-any cline-yes">8x</span>
533
+ <span class="cline-any cline-yes">8x</span>
534
+ <span class="cline-any cline-yes">8x</span>
535
+ <span class="cline-any cline-yes">8x</span>
536
+ <span class="cline-any cline-yes">8x</span>
537
537
  <span class="cline-any cline-yes">1x</span>
538
538
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
539
539
  import moment from 'moment'
@@ -553,13 +553,13 @@ export function isObjectID (id) {
553
553
  return id &amp;&amp; (typeof id.toHexString === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >&amp;&amp; (typeof id.getTimestamp === 'function')</span>
554
554
  }
555
555
  &nbsp;
556
- export function idToString (id) {
557
- return (typeof id === 'object'
558
- ? (ObjectID.isValid(id)
559
- ? id.toString()
560
- : idToString(id._id))
561
- <span class="branch-0 cbranch-no" title="branch not covered" > : id)</span>
562
- }
556
+ export <span class="fstat-no" title="function not covered" >function idToString (id) {</span>
557
+ <span class="cstat-no" title="statement not covered" > return (typeof id === 'object'</span>
558
+ <span class="cstat-no" title="statement not covered" > ? (ObjectID.isValid(id)</span>
559
+ <span class="cstat-no" title="statement not covered" > ? id.toString()</span>
560
+ <span class="cstat-no" title="statement not covered" > : idToString(id._id))</span>
561
+ <span class="cstat-no" title="statement not covered" > : id)</span>
562
+ <span class="cstat-no" title="statement not covered" >}</span>
563
563
  &nbsp;
564
564
  export function createObjectID (id) {
565
565
  // This ensure it works even if id is already an ObjectID
@@ -599,8 +599,8 @@ export function objectifyIDs (object) {
599
599
  const ids = value.map(id =&gt; createObjectID(id)).filter(id =&gt; id)
600
600
  // Take care that $in/$nin can be used for others types than Object IDs so conversion might fail
601
601
  if (ids.length &gt; 0) object[key] = ids
602
- } else if ((key === '$or') || (key === '$and')) {
603
- value.forEach(entry =&gt; objectifyIDs(entry))
602
+ } else if ((key === '$or') || (key === '$and')) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
603
+ <span class="cstat-no" title="statement not covered" > value.forEach(entry =&gt; objectifyIDs(entry))</span>
604
604
  } else {
605
605
  if (!Array.isArray(value)) objectifyIDs(value)
606
606
  else value.forEach(entry =&gt; objectifyIDs(entry))
@@ -751,9 +751,9 @@ export class MongoDatabase extends Database {
751
751
  <span class="cstat-no" title="statement not covered" > }</span>
752
752
  }
753
753
  &nbsp;
754
- get client () {
755
- return this._client
756
- }
754
+ <span class="fstat-no" title="function not covered" > get client () {</span>
755
+ <span class="cstat-no" title="statement not covered" > return this._client</span>
756
+ <span class="cstat-no" title="statement not covered" > }</span>
757
757
  &nbsp;
758
758
  get instance () {
759
759
  return this._db
@@ -778,7 +778,7 @@ export class MongoDatabase extends Database {
778
778
  <div class='footer quiet pad2 space-top1 center small'>
779
779
  Code coverage generated by
780
780
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
781
- at 2024-11-15T21:05:45.936Z
781
+ at 2025-05-21T12:01:19.833Z
782
782
  </div>
783
783
  <script src="../../prettify.js"></script>
784
784
  <script>