@kalisio/kdk 2.5.3 → 2.6.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 (541) hide show
  1. package/.github/workflows/main.yaml +35 -6
  2. package/.vscode/settings.json +5 -0
  3. package/client.globe.js +8 -0
  4. package/client.js +8 -0
  5. package/client.map.js +8 -0
  6. package/core/api/hooks/hooks.push.js +3 -2
  7. package/core/api/hooks/hooks.tags.js +56 -0
  8. package/core/api/models/tags.model.mongodb.js +8 -0
  9. package/core/api/services/index.js +33 -2
  10. package/core/api/services/tags/tags.hooks.js +47 -0
  11. package/core/client/api.js +5 -5
  12. package/core/client/components/KActivity.vue +3 -2
  13. package/core/client/components/KChip.vue +2 -2
  14. package/core/client/components/KEditor.vue +3 -1
  15. package/core/client/components/KFollower.vue +4 -4
  16. package/core/client/components/KStore.vue +1 -1
  17. package/core/client/components/KTab.vue +20 -7
  18. package/core/client/components/account/KProfile.vue +9 -25
  19. package/core/client/components/action/KAction.vue +10 -10
  20. package/core/client/components/action/KToggleFullscreenAction.vue +2 -11
  21. package/core/client/components/app/KHome.vue +3 -2
  22. package/core/client/components/collection/KFilter.vue +5 -4
  23. package/core/client/components/collection/KGrid.vue +5 -1
  24. package/core/client/components/collection/KItemsFilter.vue +47 -0
  25. package/core/client/components/collection/KItemsSorter.vue +42 -0
  26. package/core/client/components/collection/KScrollDown.vue +2 -2
  27. package/core/client/components/collection/KSearchFilterControl.vue +3 -2
  28. package/core/client/components/collection/KSorter.vue +33 -37
  29. package/core/client/components/collection/KTagsFilterControl.vue +14 -40
  30. package/core/client/components/collection/KTagsFilterView.vue +10 -45
  31. package/core/client/components/collection/KTimeFilterControl.vue +6 -7
  32. package/core/client/components/collection/KTimeFilterView.vue +13 -22
  33. package/core/client/components/collection/KTimeLine.vue +18 -9
  34. package/core/client/components/form/KColorField.vue +13 -6
  35. package/core/client/components/form/KColorScaleField.vue +7 -12
  36. package/core/client/components/form/KFileField.vue +118 -89
  37. package/core/client/components/form/KForm.vue +30 -18
  38. package/core/client/components/form/KIconField.vue +4 -1
  39. package/core/client/components/form/KNumberField.vue +9 -2
  40. package/core/client/components/form/KSelectField.vue +1 -4
  41. package/core/client/components/form/KTagField.vue +229 -0
  42. package/core/client/components/form/KTextField.vue +4 -0
  43. package/core/client/components/form/KTextareaField.vue +3 -1
  44. package/core/client/components/input/KShapePicker.vue +3 -3
  45. package/core/client/components/layout/KFab.vue +32 -20
  46. package/core/client/components/layout/KPage.vue +11 -6
  47. package/core/client/components/layout/KWindow.vue +6 -1
  48. package/core/client/components/media/index.js +2 -6
  49. package/core/client/components/menu/KMenu.vue +12 -10
  50. package/core/client/components/menu/KSubMenu.vue +12 -12
  51. package/core/client/components/messages/KMessageCard.vue +13 -12
  52. package/core/client/components/messages/KMessageComposer.vue +13 -9
  53. package/core/client/components/messages/KMessagesTimeLine.vue +16 -8
  54. package/core/client/components/tags/KTagFilter.vue +99 -0
  55. package/core/client/components/tags/KTagItem.vue +65 -0
  56. package/core/client/components/tags/KTagManager.vue +198 -0
  57. package/core/client/components/tags/KTagSelection.vue +82 -0
  58. package/core/client/components/time/KDate.vue +3 -17
  59. package/core/client/components/time/KDateTime.vue +1 -1
  60. package/core/client/components/time/KTime.vue +0 -4
  61. package/core/client/composables/collection-filter.js +41 -2
  62. package/core/client/composables/collection.js +3 -3
  63. package/core/client/composables/index.js +1 -0
  64. package/core/client/composables/pwa.js +13 -0
  65. package/core/client/composables/session.js +7 -8
  66. package/core/client/composables/user.js +36 -0
  67. package/core/client/directives/index.js +1 -0
  68. package/core/client/directives/v-drop-file.js +174 -0
  69. package/core/client/document.js +2 -1
  70. package/core/client/exporter.js +17 -3
  71. package/core/client/i18n/core_en.json +34 -7
  72. package/core/client/i18n/core_fr.json +36 -9
  73. package/core/client/i18n.js +26 -11
  74. package/core/client/layout.js +5 -5
  75. package/core/client/mixins/mixin.base-activity.js +8 -5
  76. package/core/client/mixins/mixin.base-editor.js +2 -1
  77. package/core/client/mixins/mixin.base-field.js +3 -2
  78. package/core/client/mixins/mixin.base-item.js +12 -10
  79. package/core/client/mixins/mixin.service.js +3 -1
  80. package/core/client/platform.js +0 -3
  81. package/core/client/readers/reader.json.js +2 -2
  82. package/core/client/utils/index.js +2 -0
  83. package/core/client/utils/utils.collection.js +6 -6
  84. package/core/client/utils/utils.colors.js +473 -173
  85. package/core/client/utils/utils.files.js +19 -0
  86. package/core/client/utils/utils.locale.js +13 -17
  87. package/core/client/utils/utils.services.js +27 -0
  88. package/core/client/utils/utils.shapes.js +2 -2
  89. package/core/client/utils/utils.tags.js +17 -0
  90. package/core/client/utils/utils.tours.js +31 -0
  91. package/core/common/permissions.js +3 -0
  92. package/core/common/schemas/tags.update.json +35 -0
  93. package/core/common/schemas/users.update-profile.json +1 -1
  94. package/core/common/utils.js +5 -5
  95. package/coverage/core/api/application.js.html +464 -464
  96. package/coverage/core/api/authentication.js.html +219 -351
  97. package/coverage/core/api/db.js.html +194 -209
  98. package/coverage/core/api/hooks/hooks.authentication.js.html +208 -34
  99. package/coverage/core/api/hooks/hooks.authorisations.js.html +717 -432
  100. package/coverage/core/api/hooks/hooks.groups.js.html +52 -52
  101. package/coverage/core/api/hooks/hooks.logger.js.html +43 -43
  102. package/coverage/core/api/hooks/hooks.model.js.html +300 -312
  103. package/coverage/core/api/hooks/hooks.organisations.js.html +264 -264
  104. package/coverage/core/api/hooks/hooks.push.js.html +107 -119
  105. package/coverage/core/api/hooks/hooks.query.js.html +279 -279
  106. package/coverage/core/api/hooks/hooks.schemas.js.html +135 -135
  107. package/coverage/core/api/hooks/hooks.service.js.html +28 -28
  108. package/coverage/core/api/hooks/hooks.storage.js.html +7 -7
  109. package/coverage/core/api/hooks/hooks.users.js.html +478 -205
  110. package/coverage/core/api/hooks/index.html +132 -102
  111. package/coverage/core/api/hooks/index.js.html +19 -13
  112. package/coverage/core/api/index.html +69 -54
  113. package/coverage/core/api/index.js.html +25 -25
  114. package/coverage/core/api/marshall.js.html +127 -127
  115. package/coverage/core/api/models/groups.model.mongodb.js.html +26 -26
  116. package/coverage/core/api/models/index.html +66 -21
  117. package/coverage/core/api/models/messages.model.mongodb.js.html +27 -39
  118. package/coverage/core/api/models/organisations.model.mongodb.js.html +16 -16
  119. package/coverage/core/api/models/tags.model.mongodb.js.html +30 -30
  120. package/coverage/core/api/models/users.model.mongodb.js.html +11 -11
  121. package/coverage/core/api/services/account/account.hooks.js.html +46 -46
  122. package/coverage/core/api/services/account/account.service.js.html +139 -139
  123. package/coverage/core/api/services/account/index.html +22 -22
  124. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  125. package/coverage/core/api/services/authorisations/authorisations.service.js.html +230 -221
  126. package/coverage/core/api/services/authorisations/index.html +20 -20
  127. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  128. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  129. package/coverage/core/api/services/databases/index.html +1 -1
  130. package/coverage/core/api/services/groups/groups.hooks.js.html +72 -72
  131. package/coverage/core/api/services/groups/index.html +21 -21
  132. package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
  133. package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
  134. package/coverage/core/api/services/import-export/index.html +32 -32
  135. package/coverage/core/api/services/index.html +21 -21
  136. package/coverage/core/api/services/index.js.html +195 -171
  137. package/coverage/core/api/services/mailer/index.html +32 -32
  138. package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
  139. package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
  140. package/coverage/core/api/services/messages/index.html +21 -21
  141. package/coverage/core/api/services/messages/messages.hooks.js.html +76 -94
  142. package/coverage/core/api/services/organisations/index.html +32 -32
  143. package/coverage/core/api/services/organisations/organisations.hooks.js.html +72 -72
  144. package/coverage/core/api/services/organisations/organisations.service.js.html +163 -163
  145. package/coverage/core/api/services/push/index.html +32 -32
  146. package/coverage/core/api/services/push/push.hooks.js.html +80 -80
  147. package/coverage/core/api/services/push/push.service.js.html +34 -34
  148. package/coverage/core/api/services/storage/index.html +29 -29
  149. package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
  150. package/coverage/core/api/services/storage/storage.service.js.html +37 -37
  151. package/coverage/core/api/services/tags/index.html +21 -21
  152. package/coverage/core/api/services/tags/tags.hooks.js.html +72 -72
  153. package/coverage/core/api/services/users/index.html +12 -27
  154. package/coverage/core/api/services/users/users.hooks.js.html +84 -87
  155. package/coverage/core/api/utils.js.html +1 -1
  156. package/coverage/core/common/errors.js.html +2 -2
  157. package/coverage/core/common/index.html +32 -47
  158. package/coverage/core/common/index.js.html +11 -11
  159. package/coverage/core/common/permissions.js.html +579 -264
  160. package/coverage/core/common/schema.js.html +26 -26
  161. package/coverage/core/common/utils.js.html +59 -65
  162. package/coverage/index.html +286 -256
  163. package/coverage/lcov-report/core/api/application.js.html +464 -464
  164. package/coverage/lcov-report/core/api/authentication.js.html +219 -351
  165. package/coverage/lcov-report/core/api/db.js.html +194 -209
  166. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +208 -34
  167. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +717 -432
  168. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +52 -52
  169. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +43 -43
  170. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +300 -312
  171. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +264 -264
  172. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +107 -119
  173. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +279 -279
  174. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +135 -135
  175. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +28 -28
  176. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +7 -7
  177. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +478 -205
  178. package/coverage/lcov-report/core/api/hooks/index.html +132 -102
  179. package/coverage/lcov-report/core/api/hooks/index.js.html +19 -13
  180. package/coverage/lcov-report/core/api/index.html +69 -54
  181. package/coverage/lcov-report/core/api/index.js.html +25 -25
  182. package/coverage/lcov-report/core/api/marshall.js.html +127 -127
  183. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +26 -26
  184. package/coverage/lcov-report/core/api/models/index.html +66 -21
  185. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +27 -39
  186. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +16 -16
  187. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +30 -30
  188. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +11 -11
  189. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +46 -46
  190. package/coverage/lcov-report/core/api/services/account/account.service.js.html +139 -139
  191. package/coverage/lcov-report/core/api/services/account/index.html +22 -22
  192. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  193. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +230 -221
  194. package/coverage/lcov-report/core/api/services/authorisations/index.html +20 -20
  195. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  196. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  197. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  198. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +72 -72
  199. package/coverage/lcov-report/core/api/services/groups/index.html +21 -21
  200. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
  201. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
  202. package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
  203. package/coverage/lcov-report/core/api/services/index.html +21 -21
  204. package/coverage/lcov-report/core/api/services/index.js.html +195 -171
  205. package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
  206. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
  207. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
  208. package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
  209. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +76 -94
  210. package/coverage/lcov-report/core/api/services/organisations/index.html +32 -32
  211. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +72 -72
  212. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +163 -163
  213. package/coverage/lcov-report/core/api/services/push/index.html +32 -32
  214. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
  215. package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
  216. package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
  217. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
  218. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +37 -37
  219. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  220. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +72 -72
  221. package/coverage/lcov-report/core/api/services/users/index.html +12 -27
  222. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +84 -87
  223. package/coverage/lcov-report/core/api/utils.js.html +1 -1
  224. package/coverage/lcov-report/core/common/errors.js.html +2 -2
  225. package/coverage/lcov-report/core/common/index.html +32 -47
  226. package/coverage/lcov-report/core/common/index.js.html +11 -11
  227. package/coverage/lcov-report/core/common/permissions.js.html +579 -264
  228. package/coverage/lcov-report/core/common/schema.js.html +26 -26
  229. package/coverage/lcov-report/core/common/utils.js.html +59 -65
  230. package/coverage/lcov-report/index.html +286 -256
  231. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +257 -353
  232. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +218 -218
  233. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +810 -795
  234. package/coverage/lcov-report/map/api/hooks/index.html +54 -54
  235. package/coverage/lcov-report/map/api/hooks/index.js.html +16 -16
  236. package/coverage/lcov-report/map/api/index.html +32 -32
  237. package/coverage/lcov-report/map/api/index.js.html +46 -46
  238. package/coverage/lcov-report/map/api/marshall.js.html +72 -72
  239. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +24 -24
  240. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +27 -69
  241. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +80 -80
  242. package/coverage/lcov-report/map/api/models/index.html +54 -69
  243. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +26 -26
  244. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +136 -136
  245. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +343 -343
  246. package/coverage/lcov-report/map/api/services/alerts/index.html +32 -32
  247. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +160 -178
  248. package/coverage/lcov-report/map/api/services/catalog/index.html +21 -21
  249. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  250. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  251. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +114 -183
  252. package/coverage/lcov-report/map/api/services/features/features.service.js.html +56 -359
  253. package/coverage/lcov-report/map/api/services/features/index.html +31 -31
  254. package/coverage/lcov-report/map/api/services/index.html +21 -21
  255. package/coverage/lcov-report/map/api/services/index.js.html +258 -495
  256. package/coverage/lcov-report/map/api/services/projects/index.html +21 -21
  257. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +237 -237
  258. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  259. package/coverage/lcov-report/map/common/errors.js.html +16 -16
  260. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +267 -270
  261. package/coverage/lcov-report/map/common/grid.js.html +554 -554
  262. package/coverage/lcov-report/map/common/index.html +158 -158
  263. package/coverage/lcov-report/map/common/index.js.html +68 -68
  264. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +73 -73
  265. package/coverage/lcov-report/map/common/moment-utils.js.html +18 -18
  266. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +484 -484
  267. package/coverage/lcov-report/map/common/opendap-utils.js.html +353 -353
  268. package/coverage/lcov-report/map/common/permissions.js.html +36 -42
  269. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +59 -59
  270. package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
  271. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +190 -190
  272. package/coverage/lcov-report/map/common/wcs-utils.js.html +339 -339
  273. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +345 -345
  274. package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
  275. package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
  276. package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
  277. package/coverage/lcov.info +7793 -8564
  278. package/coverage/map/api/hooks/hooks.catalog.js.html +257 -353
  279. package/coverage/map/api/hooks/hooks.features.js.html +218 -218
  280. package/coverage/map/api/hooks/hooks.query.js.html +810 -795
  281. package/coverage/map/api/hooks/index.html +54 -54
  282. package/coverage/map/api/hooks/index.js.html +16 -16
  283. package/coverage/map/api/index.html +32 -32
  284. package/coverage/map/api/index.js.html +46 -46
  285. package/coverage/map/api/marshall.js.html +72 -72
  286. package/coverage/map/api/models/alerts.model.mongodb.js.html +24 -24
  287. package/coverage/map/api/models/catalog.model.mongodb.js.html +27 -69
  288. package/coverage/map/api/models/features.model.mongodb.js.html +80 -80
  289. package/coverage/map/api/models/index.html +54 -69
  290. package/coverage/map/api/models/projects.model.mongodb.js.html +26 -26
  291. package/coverage/map/api/services/alerts/alerts.hooks.js.html +136 -136
  292. package/coverage/map/api/services/alerts/alerts.service.js.html +343 -343
  293. package/coverage/map/api/services/alerts/index.html +32 -32
  294. package/coverage/map/api/services/catalog/catalog.hooks.js.html +160 -178
  295. package/coverage/map/api/services/catalog/index.html +21 -21
  296. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  297. package/coverage/map/api/services/daptiles/index.html +1 -1
  298. package/coverage/map/api/services/features/features.hooks.js.html +114 -183
  299. package/coverage/map/api/services/features/features.service.js.html +56 -359
  300. package/coverage/map/api/services/features/index.html +31 -31
  301. package/coverage/map/api/services/index.html +21 -21
  302. package/coverage/map/api/services/index.js.html +258 -495
  303. package/coverage/map/api/services/projects/index.html +21 -21
  304. package/coverage/map/api/services/projects/projects.hooks.js.html +237 -237
  305. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  306. package/coverage/map/common/errors.js.html +16 -16
  307. package/coverage/map/common/geotiff-grid-source.js.html +267 -270
  308. package/coverage/map/common/grid.js.html +554 -554
  309. package/coverage/map/common/index.html +158 -158
  310. package/coverage/map/common/index.js.html +68 -68
  311. package/coverage/map/common/meteo-model-grid-source.js.html +73 -73
  312. package/coverage/map/common/moment-utils.js.html +18 -18
  313. package/coverage/map/common/opendap-grid-source.js.html +484 -484
  314. package/coverage/map/common/opendap-utils.js.html +353 -353
  315. package/coverage/map/common/permissions.js.html +36 -42
  316. package/coverage/map/common/time-based-grid-source.js.html +59 -59
  317. package/coverage/map/common/tms-utils.js.html +6 -6
  318. package/coverage/map/common/wcs-grid-source.js.html +190 -190
  319. package/coverage/map/common/wcs-utils.js.html +339 -339
  320. package/coverage/map/common/weacast-grid-source.js.html +345 -345
  321. package/coverage/map/common/wfs-utils.js.html +11 -11
  322. package/coverage/map/common/wms-utils.js.html +8 -8
  323. package/coverage/map/common/wmts-utils.js.html +7 -7
  324. package/coverage/tmp/coverage-151166-1723543324307-0.json +1 -0
  325. package/coverage/tmp/coverage-151178-1723543324283-0.json +1 -0
  326. package/coverage/tmp/coverage-151189-1723543324271-0.json +1 -0
  327. package/coverage/tmp/coverage-151201-1723543324248-0.json +1 -0
  328. package/coverage/tmp/coverage-151208-1723543324227-0.json +1 -0
  329. package/extras/configs/panes.top.js +33 -11
  330. package/extras/configs/stickies.js +26 -16
  331. package/extras/configs/widgets.left.js +13 -1
  332. package/extras/libs/jsts.min.js +8 -0
  333. package/{test/client/core/account.js → extras/tests/core/account.mjs} +4 -4
  334. package/extras/tests/core/api.mjs +114 -0
  335. package/{test/client/core/collection.js → extras/tests/core/collection.mjs} +8 -8
  336. package/{test/client/core/dialogs.js → extras/tests/core/dialogs.mjs} +1 -1
  337. package/extras/tests/core/index.mjs +9 -0
  338. package/{test/client/core/layout.js → extras/tests/core/layout.mjs} +7 -3
  339. package/{test/client/core/runner.js → extras/tests/core/runner.mjs} +3 -3
  340. package/{test/client/core/screens.js → extras/tests/core/screens.mjs} +1 -1
  341. package/{test/client/core/utils.js → extras/tests/core/utils.mjs} +79 -26
  342. package/extras/tests/index.mjs +4 -0
  343. package/{test/client/map/api.js → extras/tests/map/api.mjs} +1 -1
  344. package/{test/client/map/catalog.js → extras/tests/map/catalog.mjs} +18 -18
  345. package/{test/client/map/controls.js → extras/tests/map/controls.mjs} +3 -3
  346. package/extras/tests/map/index.mjs +5 -0
  347. package/{test/client/map/time.js → extras/tests/map/time.mjs} +3 -3
  348. package/{test/client/map/utils.js → extras/tests/map/utils.mjs} +6 -5
  349. package/extras/tours/fab.js +36 -0
  350. package/extras/tours/layout.js +49 -0
  351. package/extras/tours/pane.left.js +78 -0
  352. package/extras/tours/pane.right.js +145 -0
  353. package/extras/tours/pane.top.js +239 -0
  354. package/map/api/config/layers.cjs +28 -13
  355. package/map/api/hooks/hooks.query.js +12 -7
  356. package/map/api/models/catalog.model.mongodb.js +17 -6
  357. package/map/api/services/catalog/catalog.hooks.js +1 -1
  358. package/map/api/services/index.js +18 -1
  359. package/map/client/cesium/utils/utils.cesium.js +25 -65
  360. package/map/client/cesium/utils/utils.features.js +1 -0
  361. package/map/client/cesium/utils/utils.geojson.js +1 -0
  362. package/map/client/cesium/utils/utils.style.js +7 -6
  363. package/map/client/components/KFeatureEditor.vue +3 -3
  364. package/map/client/components/KFeaturesChart.vue +4 -4
  365. package/map/client/components/KFeaturesFilterEditor.vue +19 -13
  366. package/map/client/components/KFeaturesFilterManager.vue +7 -4
  367. package/map/client/components/KFeaturesTable.vue +2 -2
  368. package/map/client/components/KLayerEditor.vue +6 -6
  369. package/map/client/components/KMeasureTool.vue +2 -1
  370. package/map/client/components/catalog/KBaseLayersSelector.vue +1 -1
  371. package/map/client/components/catalog/KCategoryItem.vue +15 -1
  372. package/map/client/components/catalog/KConnectLayer.vue +2 -2
  373. package/map/client/components/catalog/KCreateView.vue +3 -2
  374. package/map/client/components/catalog/KFilteredLayerItem.vue +26 -6
  375. package/map/client/components/catalog/KImportLayer.vue +6 -3
  376. package/map/client/components/catalog/KLayerCategories.vue +6 -6
  377. package/map/client/components/catalog/KLayerItem.vue +12 -2
  378. package/map/client/components/catalog/KLayersList.vue +180 -0
  379. package/map/client/components/catalog/KLayersPanel.vue +146 -36
  380. package/map/client/components/catalog/KLayersSelector.vue +96 -48
  381. package/map/client/components/catalog/KProjectEditor.vue +0 -9
  382. package/map/client/components/catalog/KProjectSelector.vue +3 -2
  383. package/map/client/components/catalog/KProjectsPanel.vue +23 -8
  384. package/map/client/components/catalog/KViewsPanel.vue +18 -8
  385. package/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  386. package/map/client/components/form/KDirectionField.vue +3 -6
  387. package/map/client/components/form/KLayerCategoryField.vue +2 -2
  388. package/map/client/components/form/KOwsServiceField.vue +25 -24
  389. package/map/client/components/form/KSelectLayersField.vue +4 -4
  390. package/map/client/components/form/KSelectViewsField.vue +4 -4
  391. package/map/client/components/legend/KLayerLegend.vue +11 -2
  392. package/map/client/components/legend/KLegend.vue +44 -51
  393. package/map/client/components/location/KLocationCardSection.vue +6 -7
  394. package/map/client/components/location/KLocationMap.vue +23 -13
  395. package/map/client/components/stickies/KPosition.vue +5 -0
  396. package/map/client/components/stickies/KZoomControl.vue +70 -0
  397. package/map/client/components/styles/KLayerStyleAction.vue +59 -12
  398. package/map/client/components/styles/KStyleEditor.vue +71 -8
  399. package/map/client/components/styles/KStyleEditorSection.vue +82 -33
  400. package/map/client/components/styles/KStyleManager.vue +119 -59
  401. package/map/client/components/styles/KStylePreview.vue +9 -25
  402. package/map/client/components/styles/KStylePreviewItem.vue +22 -1
  403. package/map/client/components/tools/KSearchTool.vue +1 -1
  404. package/map/client/components/widget/KElevationProfile.vue +20 -17
  405. package/map/client/components/widget/KInformationBox.vue +5 -5
  406. package/map/client/components/widget/KMapillaryViewer.vue +2 -1
  407. package/map/client/components/widget/KTimeSeries.vue +11 -9
  408. package/map/client/globe.js +2 -0
  409. package/map/client/i18n/map_en.json +30 -7
  410. package/map/client/i18n/map_fr.json +30 -7
  411. package/map/client/leaflet/GradientPath.js +61 -24
  412. package/map/client/leaflet/ShapeMarker.js +12 -5
  413. package/map/client/leaflet/TiledMeshLayer.js +3 -3
  414. package/map/client/leaflet/utils/utils.geojson.js +66 -8
  415. package/map/client/leaflet/utils/utils.style.js +14 -15
  416. package/map/client/mixins/globe/mixin.base-globe.js +190 -34
  417. package/map/client/mixins/globe/mixin.file-layers.js +3 -0
  418. package/map/client/mixins/globe/mixin.geojson-layers.js +179 -31
  419. package/map/client/mixins/globe/mixin.opendap-layers.js +2 -1
  420. package/map/client/mixins/globe/mixin.style.js +23 -1
  421. package/map/client/mixins/globe/mixin.tooltip.js +14 -2
  422. package/map/client/mixins/map/mixin.base-map.js +156 -58
  423. package/map/client/mixins/map/mixin.edit-layers.js +18 -15
  424. package/map/client/mixins/map/mixin.geojson-layers.js +181 -106
  425. package/map/client/mixins/map/mixin.heatmap-layers.js +3 -2
  426. package/map/client/mixins/map/mixin.map-activity.js +6 -1
  427. package/map/client/mixins/map/mixin.mapillary-layers.js +2 -1
  428. package/map/client/mixins/map/mixin.pmtiles-layers.js +3 -3
  429. package/map/client/mixins/map/mixin.tiled-mesh-layers.js +3 -2
  430. package/map/client/mixins/map/mixin.tiled-wind-layers.js +3 -2
  431. package/map/client/mixins/mixin.activity.js +199 -55
  432. package/map/client/mixins/mixin.context.js +11 -11
  433. package/map/client/mixins/mixin.feature-service.js +11 -9
  434. package/map/client/mixins/mixin.weacast.js +5 -3
  435. package/map/client/readers/reader.geojson.js +3 -1
  436. package/map/client/utils/utils.capture.js +3 -3
  437. package/map/client/utils/utils.catalog.js +9 -5
  438. package/map/client/utils/utils.features.js +120 -54
  439. package/map/client/utils/utils.js +25 -10
  440. package/map/client/utils/utils.layers.js +148 -24
  441. package/map/client/utils/utils.location.js +26 -9
  442. package/map/client/utils/utils.schema.js +2 -1
  443. package/map/client/utils/utils.style.js +53 -9
  444. package/map/common/geotiff-grid-source.js +1 -3
  445. package/map/common/opendap-utils.js +0 -1
  446. package/map/common/tms-utils.js +0 -1
  447. package/map/common/wcs-utils.js +0 -1
  448. package/map/common/wfs-utils.js +0 -1
  449. package/map/common/wms-utils.js +7 -1
  450. package/map/common/wmts-utils.js +0 -1
  451. package/package.json +12 -12
  452. package/scripts/init_runner.sh +3 -3
  453. package/scripts/kash/CHANGELOG.md +27 -0
  454. package/scripts/kash/kash.sh +556 -237
  455. package/scripts/kash/scripts/run_tests.sh +44 -5
  456. package/scripts/setup_workspace.sh +23 -13
  457. package/test/api/core/config/default.cjs +2 -1
  458. package/test/api/core/tags.test.js +62 -0
  459. package/test/api/core/test-log-2024-04-22.log +84 -0
  460. package/test/api/core/{test-log-2025-02-05.log → test-log-2024-04-23.log} +3 -3
  461. package/test/api/core/test-log-2024-08-13.log +3 -0
  462. package/test/api/map/config/default.cjs +2 -1
  463. package/test/api/map/config/layers.json +9 -0
  464. package/test/api/map/data/openradiation.json +13811 -0
  465. package/test/api/map/grid-sources.test.js +1 -3
  466. package/test/api/map/index.test.js +60 -1
  467. package/test/api/map/style.test.js +30 -1
  468. package/test/api/map/test-log-2025-03-08.log +0 -0
  469. package/test.api.js +1 -1
  470. package/vite/App.vue +18 -0
  471. package/vite/AppWithGlobe.vue +84 -0
  472. package/vite/GlobeActivity.vue +58 -0
  473. package/vite/MapActivity.vue +63 -0
  474. package/vite/MapActivityWithGlobe.vue +63 -0
  475. package/vite/README.md +169 -0
  476. package/vite/config.js +221 -0
  477. package/vite/index_with_globe.html +50 -0
  478. package/vite/index_with_map.html +50 -0
  479. package/vite/package.json +173 -0
  480. package/vite/quasar.variables.scss +17 -0
  481. package/vite/vite.config.js +166 -0
  482. package/vite/yarn.lock +11641 -0
  483. package/core/client/components/media/KImageViewer.vue +0 -68
  484. package/core/client/components/media/KMarkdownViewer.vue +0 -55
  485. package/core/client/components/media/KMediaBrowser.vue +0 -301
  486. package/coverage/core/api/services/users/users.service.js.html +0 -100
  487. package/coverage/core/common/utils.offline.js.html +0 -199
  488. package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
  489. package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
  490. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +0 -112
  491. package/coverage/lcov-report/map/api/services/styles/index.html +0 -116
  492. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +0 -196
  493. package/coverage/map/api/models/styles.model.mongodb.js.html +0 -112
  494. package/coverage/map/api/services/styles/index.html +0 -116
  495. package/coverage/map/api/services/styles/styles.hooks.js.html +0 -196
  496. package/coverage/tmp/coverage-151198-1753351220086-0.json +0 -1
  497. package/coverage/tmp/coverage-151210-1753351220070-0.json +0 -1
  498. package/coverage/tmp/coverage-151221-1753351129816-0.json +0 -1
  499. package/coverage/tmp/coverage-151233-1753351129803-0.json +0 -1
  500. package/coverage/tmp/coverage-151240-1753351129770-0.json +0 -1
  501. package/coverage/tmp/coverage-151307-1753351220058-0.json +0 -1
  502. package/coverage/tmp/coverage-151319-1753351220044-0.json +0 -1
  503. package/coverage/tmp/coverage-151326-1753351220010-0.json +0 -1
  504. package/extras/tours/core/account-profile.js +0 -32
  505. package/extras/tours/core/account.js +0 -143
  506. package/extras/tours/core/add-member.js +0 -75
  507. package/extras/tours/core/add-tag.js +0 -13
  508. package/extras/tours/core/create-group.js +0 -19
  509. package/extras/tours/core/create-organisation.js +0 -19
  510. package/extras/tours/core/create-tag.js +0 -26
  511. package/extras/tours/core/edit-member-role.js +0 -13
  512. package/extras/tours/core/groups.js +0 -65
  513. package/extras/tours/core/join-group.js +0 -13
  514. package/extras/tours/core/login.js +0 -41
  515. package/extras/tours/core/members.js +0 -108
  516. package/extras/tours/core/register.js +0 -61
  517. package/extras/tours/core/send-reset-password.js +0 -14
  518. package/extras/tours/core/tags.js +0 -65
  519. package/extras/tours/map/catalog-panel.js +0 -112
  520. package/extras/tours/map/fab.js +0 -26
  521. package/extras/tours/map/navigation-bar.js +0 -187
  522. package/extras/tours/map/side-nav.js +0 -36
  523. package/test/api/core/test-log-2025-05-21.log +0 -15
  524. package/test/api/core/test-log-2025-06-25.log +0 -9
  525. package/test/api/core/test-log-2025-07-24.log +0 -44
  526. package/test/api/map/test-log-2025-05-27.log +0 -13
  527. package/test/api/map/test-log-2025-06-23.log +0 -7
  528. package/test/api/map/test-log-2025-07-24.log +0 -11
  529. package/test/client/core/api.js +0 -361
  530. package/test/client/core/index.js +0 -9
  531. package/test/client/index.js +0 -4
  532. package/test/client/map/index.js +0 -5
  533. package/test.client.js +0 -1
  534. /package/{test/client/core/time.js → extras/tests/core/time.mjs} +0 -0
  535. /package/extras/tours/{map/add-layer.js → add-layer.js} +0 -0
  536. /package/extras/tours/{map/catalog-categories.js → catalog-categories.js} +0 -0
  537. /package/extras/tours/{map/connect-layer.js → connect-layer.js} +0 -0
  538. /package/extras/tours/{map/create-layer.js → create-layer.js} +0 -0
  539. /package/extras/tours/{map/create-view.js → create-view.js} +0 -0
  540. /package/extras/tours/{map/import-layer.js → import-layer.js} +0 -0
  541. /package/extras/tours/{map/timeline.js → pane.bottom.js} +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">71.1% </span>
26
+ <span class="strong">45.2% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>187/263</span>
28
+ <span class='fraction'>99/219</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.66% </span>
33
+ <span class="strong">30% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>22/33</span>
35
+ <span class='fraction'>3/10</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">63.63% </span>
40
+ <span class="strong">20% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>7/11</span>
42
+ <span class='fraction'>2/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">71.1% </span>
47
+ <span class="strong">45.2% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>187/263</span>
49
+ <span class='fraction'>99/219</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -282,86 +282,28 @@
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>
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">2x</span>
330
- <span class="cline-any cline-yes">2x</span>
331
- <span class="cline-any cline-yes">2x</span>
332
- <span class="cline-any cline-yes">2x</span>
333
- <span class="cline-any cline-yes">2x</span>
334
- <span class="cline-any cline-yes">2x</span>
335
- <span class="cline-any cline-yes">2x</span>
336
- <span class="cline-any cline-yes">2x</span>
337
- <span class="cline-any cline-yes">2x</span>
338
- <span class="cline-any cline-yes">2x</span>
339
- <span class="cline-any cline-yes">2x</span>
340
- <span class="cline-any cline-yes">2x</span>
341
- <span class="cline-any cline-yes">2x</span>
342
- <span class="cline-any cline-yes">2x</span>
343
- <span class="cline-any cline-yes">2x</span>
344
- <span class="cline-any cline-yes">2x</span>
345
- <span class="cline-any cline-yes">2x</span>
346
- <span class="cline-any cline-yes">2x</span>
347
- <span class="cline-any cline-yes">2x</span>
348
- <span class="cline-any cline-yes">2x</span>
349
- <span class="cline-any cline-yes">2x</span>
350
- <span class="cline-any cline-yes">2x</span>
351
- <span class="cline-any cline-yes">9x</span>
352
- <span class="cline-any cline-yes">9x</span>
285
+ <a name='L220'></a><a href='#L220'>220</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
286
+ <span class="cline-any cline-yes">1x</span>
287
+ <span class="cline-any cline-yes">1x</span>
288
+ <span class="cline-any cline-yes">1x</span>
289
+ <span class="cline-any cline-yes">1x</span>
290
+ <span class="cline-any cline-yes">1x</span>
291
+ <span class="cline-any cline-yes">1x</span>
292
+ <span class="cline-any cline-yes">1x</span>
293
+ <span class="cline-any cline-yes">1x</span>
294
+ <span class="cline-any cline-yes">1x</span>
295
+ <span class="cline-any cline-yes">1x</span>
296
+ <span class="cline-any cline-yes">1x</span>
297
+ <span class="cline-any cline-yes">1x</span>
298
+ <span class="cline-any cline-yes">1x</span>
299
+ <span class="cline-any cline-yes">1x</span>
300
+ <span class="cline-any cline-yes">1x</span>
301
+ <span class="cline-any cline-yes">1x</span>
302
+ <span class="cline-any cline-yes">1x</span>
303
+ <span class="cline-any cline-yes">1x</span>
304
+ <span class="cline-any cline-yes">1x</span>
305
+ <span class="cline-any cline-yes">1x</span>
353
306
  <span class="cline-any cline-no">&nbsp;</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>
361
- <span class="cline-any cline-yes">2x</span>
362
- <span class="cline-any cline-yes">2x</span>
363
- <span class="cline-any cline-yes">2x</span>
364
- <span class="cline-any cline-yes">2x</span>
365
307
  <span class="cline-any cline-no">&nbsp;</span>
366
308
  <span class="cline-any cline-no">&nbsp;</span>
367
309
  <span class="cline-any cline-no">&nbsp;</span>
@@ -371,14 +313,16 @@
371
313
  <span class="cline-any cline-no">&nbsp;</span>
372
314
  <span class="cline-any cline-no">&nbsp;</span>
373
315
  <span class="cline-any cline-no">&nbsp;</span>
316
+ <span class="cline-any cline-yes">1x</span>
317
+ <span class="cline-any cline-yes">1x</span>
318
+ <span class="cline-any cline-yes">1x</span>
319
+ <span class="cline-any cline-yes">1x</span>
374
320
  <span class="cline-any cline-no">&nbsp;</span>
375
321
  <span class="cline-any cline-no">&nbsp;</span>
376
322
  <span class="cline-any cline-no">&nbsp;</span>
377
323
  <span class="cline-any cline-no">&nbsp;</span>
378
324
  <span class="cline-any cline-no">&nbsp;</span>
379
325
  <span class="cline-any cline-no">&nbsp;</span>
380
- <span class="cline-any cline-yes">2x</span>
381
- <span class="cline-any cline-yes">2x</span>
382
326
  <span class="cline-any cline-no">&nbsp;</span>
383
327
  <span class="cline-any cline-no">&nbsp;</span>
384
328
  <span class="cline-any cline-no">&nbsp;</span>
@@ -388,20 +332,33 @@
388
332
  <span class="cline-any cline-no">&nbsp;</span>
389
333
  <span class="cline-any cline-no">&nbsp;</span>
390
334
  <span class="cline-any cline-no">&nbsp;</span>
335
+ <span class="cline-any cline-yes">1x</span>
336
+ <span class="cline-any cline-yes">1x</span>
391
337
  <span class="cline-any cline-no">&nbsp;</span>
392
338
  <span class="cline-any cline-no">&nbsp;</span>
393
339
  <span class="cline-any cline-no">&nbsp;</span>
394
340
  <span class="cline-any cline-no">&nbsp;</span>
395
341
  <span class="cline-any cline-no">&nbsp;</span>
396
342
  <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-yes">2x</span>
398
- <span class="cline-any cline-yes">2x</span>
399
343
  <span class="cline-any cline-no">&nbsp;</span>
400
344
  <span class="cline-any cline-no">&nbsp;</span>
401
345
  <span class="cline-any cline-no">&nbsp;</span>
402
346
  <span class="cline-any cline-no">&nbsp;</span>
403
347
  <span class="cline-any cline-no">&nbsp;</span>
404
348
  <span class="cline-any cline-no">&nbsp;</span>
349
+ <span class="cline-any cline-yes">1x</span>
350
+ <span class="cline-any cline-yes">1x</span>
351
+ <span class="cline-any cline-yes">1x</span>
352
+ <span class="cline-any cline-yes">1x</span>
353
+ <span class="cline-any cline-yes">1x</span>
354
+ <span class="cline-any cline-yes">1x</span>
355
+ <span class="cline-any cline-yes">1x</span>
356
+ <span class="cline-any cline-yes">1x</span>
357
+ <span class="cline-any cline-yes">1x</span>
358
+ <span class="cline-any cline-yes">1x</span>
359
+ <span class="cline-any cline-yes">1x</span>
360
+ <span class="cline-any cline-yes">1x</span>
361
+ <span class="cline-any cline-yes">1x</span>
405
362
  <span class="cline-any cline-no">&nbsp;</span>
406
363
  <span class="cline-any cline-no">&nbsp;</span>
407
364
  <span class="cline-any cline-no">&nbsp;</span>
@@ -415,93 +372,8 @@
415
372
  <span class="cline-any cline-no">&nbsp;</span>
416
373
  <span class="cline-any cline-no">&nbsp;</span>
417
374
  <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-yes">2x</span>
419
- <span class="cline-any cline-yes">2x</span>
420
- <span class="cline-any cline-yes">2x</span>
421
- <span class="cline-any cline-yes">2x</span>
422
- <span class="cline-any cline-yes">2x</span>
423
- <span class="cline-any cline-yes">2x</span>
424
- <span class="cline-any cline-yes">2x</span>
425
- <span class="cline-any cline-yes">2x</span>
426
- <span class="cline-any cline-yes">2x</span>
427
- <span class="cline-any cline-yes">2x</span>
428
- <span class="cline-any cline-yes">2x</span>
429
- <span class="cline-any cline-yes">2x</span>
430
- <span class="cline-any cline-yes">2x</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>
438
375
  <span class="cline-any cline-no">&nbsp;</span>
439
376
  <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>
477
- <span class="cline-any cline-yes">6x</span>
478
- <span class="cline-any cline-yes">6x</span>
479
- <span class="cline-any cline-yes">6x</span>
480
- <span class="cline-any cline-yes">6x</span>
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">2x</span>
488
- <span class="cline-any cline-yes">2x</span>
489
- <span class="cline-any cline-yes">25x</span>
490
- <span class="cline-any cline-yes">25x</span>
491
- <span class="cline-any cline-yes">6x</span>
492
- <span class="cline-any cline-yes">6x</span>
493
- <span class="cline-any cline-yes">6x</span>
494
- <span class="cline-any cline-yes">6x</span>
495
- <span class="cline-any cline-yes">6x</span>
496
- <span class="cline-any cline-yes">6x</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>
502
- <span class="cline-any cline-yes">2x</span>
503
- <span class="cline-any cline-yes">2x</span>
504
- <span class="cline-any cline-yes">2x</span>
505
377
  <span class="cline-any cline-no">&nbsp;</span>
506
378
  <span class="cline-any cline-no">&nbsp;</span>
507
379
  <span class="cline-any cline-no">&nbsp;</span>
@@ -517,81 +389,120 @@
517
389
  <span class="cline-any cline-no">&nbsp;</span>
518
390
  <span class="cline-any cline-no">&nbsp;</span>
519
391
  <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-yes">2x</span>
521
- <span class="cline-any cline-yes">2x</span>
522
- <span class="cline-any cline-yes">2x</span>
523
- <span class="cline-any cline-yes">2x</span>
524
- <span class="cline-any cline-yes">2x</span>
525
392
  <span class="cline-any cline-no">&nbsp;</span>
526
393
  <span class="cline-any cline-no">&nbsp;</span>
527
394
  <span class="cline-any cline-no">&nbsp;</span>
528
395
  <span class="cline-any cline-no">&nbsp;</span>
529
396
  <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-yes">2x</span>
531
- <span class="cline-any cline-yes">2x</span>
532
- <span class="cline-any cline-yes">2x</span>
533
- <span class="cline-any cline-yes">2x</span>
534
- <span class="cline-any cline-yes">2x</span>
535
- <span class="cline-any cline-yes">13x</span>
536
- <span class="cline-any cline-yes">13x</span>
537
- <span class="cline-any cline-yes">13x</span>
538
- <span class="cline-any cline-yes">13x</span>
539
- <span class="cline-any cline-yes">13x</span>
540
- <span class="cline-any cline-yes">13x</span>
541
- <span class="cline-any cline-yes">13x</span>
542
- <span class="cline-any cline-yes">13x</span>
543
- <span class="cline-any cline-yes">13x</span>
544
- <span class="cline-any cline-yes">13x</span>
545
- <span class="cline-any cline-yes">13x</span>
546
- <span class="cline-any cline-yes">13x</span>
547
- <span class="cline-any cline-yes">13x</span>
548
- <span class="cline-any cline-yes">13x</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-no">&nbsp;</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-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-yes">1x</span>
415
+ <span class="cline-any cline-yes">1x</span>
416
+ <span class="cline-any cline-yes">1x</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-no">&nbsp;</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-no">&nbsp;</span>
423
+ <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-no">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-no">&nbsp;</span>
427
+ <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-no">&nbsp;</span>
429
+ <span class="cline-any cline-no">&nbsp;</span>
430
+ <span class="cline-any cline-no">&nbsp;</span>
431
+ <span class="cline-any cline-no">&nbsp;</span>
432
+ <span class="cline-any cline-yes">1x</span>
433
+ <span class="cline-any cline-yes">1x</span>
434
+ <span class="cline-any cline-yes">1x</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-no">&nbsp;</span>
437
+ <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-no">&nbsp;</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-no">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-no">&nbsp;</span>
445
+ <span class="cline-any cline-yes">1x</span>
446
+ <span class="cline-any cline-yes">1x</span>
447
+ <span class="cline-any cline-yes">9x</span>
448
+ <span class="cline-any cline-yes">9x</span>
449
+ <span class="cline-any cline-yes">9x</span>
450
+ <span class="cline-any cline-yes">9x</span>
451
+ <span class="cline-any cline-yes">9x</span>
452
+ <span class="cline-any cline-yes">9x</span>
453
+ <span class="cline-any cline-yes">9x</span>
454
+ <span class="cline-any cline-yes">9x</span>
455
+ <span class="cline-any cline-yes">9x</span>
456
+ <span class="cline-any cline-yes">9x</span>
457
+ <span class="cline-any cline-yes">9x</span>
458
+ <span class="cline-any cline-yes">9x</span>
459
+ <span class="cline-any cline-yes">9x</span>
460
+ <span class="cline-any cline-yes">9x</span>
549
461
  <span class="cline-any cline-yes">9x</span>
550
462
  <span class="cline-any cline-yes">9x</span>
551
463
  <span class="cline-any cline-no">&nbsp;</span>
552
464
  <span class="cline-any cline-no">&nbsp;</span>
553
465
  <span class="cline-any cline-yes">9x</span>
554
- <span class="cline-any cline-yes">13x</span>
555
- <span class="cline-any cline-yes">13x</span>
556
- <span class="cline-any cline-yes">13x</span>
557
- <span class="cline-any cline-yes">13x</span>
558
- <span class="cline-any cline-yes">13x</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>
559
471
  <span class="cline-any cline-no">&nbsp;</span>
560
472
  <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-yes">13x</span>
562
- <span class="cline-any cline-yes">13x</span>
563
- <span class="cline-any cline-yes">13x</span>
564
473
  <span class="cline-any cline-yes">9x</span>
565
474
  <span class="cline-any cline-yes">9x</span>
566
- <span class="cline-any cline-yes">15x</span>
567
- <span class="cline-any cline-yes">15x</span>
568
- <span class="cline-any cline-yes">4x</span>
569
- <span class="cline-any cline-yes">4x</span>
570
- <span class="cline-any cline-yes">4x</span>
571
- <span class="cline-any cline-yes">4x</span>
572
- <span class="cline-any cline-yes">4x</span>
573
- <span class="cline-any cline-yes">4x</span>
574
- <span class="cline-any cline-yes">4x</span>
575
- <span class="cline-any cline-yes">4x</span>
576
- <span class="cline-any cline-yes">4x</span>
577
- <span class="cline-any cline-yes">15x</span>
578
- <span class="cline-any cline-yes">4x</span>
579
- <span class="cline-any cline-yes">4x</span>
580
- <span class="cline-any cline-yes">4x</span>
581
- <span class="cline-any cline-yes">1x</span>
582
- <span class="cline-any cline-yes">1x</span>
583
- <span class="cline-any cline-yes">1x</span>
584
- <span class="cline-any cline-yes">1x</span>
585
- <span class="cline-any cline-yes">4x</span>
586
- <span class="cline-any cline-yes">4x</span>
587
- <span class="cline-any cline-yes">4x</span>
588
- <span class="cline-any cline-yes">4x</span>
589
- <span class="cline-any cline-yes">15x</span>
590
475
  <span class="cline-any cline-yes">9x</span>
591
- <span class="cline-any cline-yes">13x</span>
476
+ <span class="cline-any cline-yes">9x</span>
477
+ <span class="cline-any cline-yes">9x</span>
478
+ <span class="cline-any cline-yes">1x</span>
479
+ <span class="cline-any cline-yes">1x</span>
480
+ <span class="cline-any cline-yes">1x</span>
481
+ <span class="cline-any cline-yes">1x</span>
482
+ <span class="cline-any cline-yes">1x</span>
483
+ <span class="cline-any cline-yes">1x</span>
484
+ <span class="cline-any cline-yes">1x</span>
485
+ <span class="cline-any cline-yes">1x</span>
486
+ <span class="cline-any cline-yes">1x</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">1x</span>
490
+ <span class="cline-any cline-yes">1x</span>
491
+ <span class="cline-any cline-yes">1x</span>
492
+ <span class="cline-any cline-yes">1x</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
+ <span class="cline-any cline-no">&nbsp;</span>
497
+ <span class="cline-any cline-yes">1x</span>
498
+ <span class="cline-any cline-yes">1x</span>
499
+ <span class="cline-any cline-yes">1x</span>
500
+ <span class="cline-any cline-yes">1x</span>
501
+ <span class="cline-any cline-yes">1x</span>
502
+ <span class="cline-any cline-yes">9x</span>
503
+ <span class="cline-any cline-yes">9x</span>
592
504
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import makeDebug from 'debug'
593
505
  import _ from 'lodash'
594
- import qs from 'qs'
595
506
  import 'winston-daily-rotate-file'
596
507
  // import { RateLimiter } from 'limiter'
597
508
  import HttpLimiter from 'express-rate-limit'
@@ -610,37 +521,20 @@ const { NotAuthenticated } = errors
610
521
  export class Authentication extends AuthenticationService {
611
522
  // Feathers does not seem to take input payload into account when renewing the token,
612
523
  // see https://github.com/feathersjs/feathers/issues/3419
613
- async getPayload (authResult, params) {
614
- // Params can override defaults
615
- if (params.payload) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
524
+ <span class="fstat-no" title="function not covered" > async getPayload (authResult, params) {</span>
525
+ <span class="cstat-no" title="statement not covered" > // Params can override defaults</span>
526
+ <span class="cstat-no" title="statement not covered" > if (params.payload) {</span>
616
527
  <span class="cstat-no" title="statement not covered" > return params.payload</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'])
620
- } else {
621
- return {}
622
- }
623
- }
624
- }
625
- &nbsp;
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>
528
+ <span class="cstat-no" title="statement not covered" > } else if (authResult.authentication &amp;&amp; authResult.authentication.payload) {</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>
531
+ <span class="cstat-no" title="statement not covered" > } else {</span>
532
+ <span class="cstat-no" title="statement not covered" > return {}</span>
641
533
  <span class="cstat-no" title="statement not covered" > }</span>
642
534
  <span class="cstat-no" title="statement not covered" > }</span>
535
+ }
643
536
  &nbsp;
537
+ export class AuthenticationProviderStrategy extends OAuthStrategy {
644
538
  <span class="fstat-no" title="function not covered" > async getEntityData (profile, entity) {</span>
645
539
  <span class="cstat-no" title="statement not covered" > const createEntity = _.isNil(entity)</span>
646
540
  <span class="cstat-no" title="statement not covered" > // Add provider Id</span>
@@ -659,13 +553,6 @@ export class AuthenticationProviderStrategy extends OAuthStrategy {
659
553
  <span class="cstat-no" title="statement not covered" > }</span>
660
554
  &nbsp;
661
555
  <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>
669
556
  <span class="cstat-no" title="statement not covered" > const query = {</span>
670
557
  <span class="cstat-no" title="statement not covered" > $or: [</span>
671
558
  <span class="cstat-no" title="statement not covered" > { [`${this.name}Id`]: profile.id || profile.sub },</span>
@@ -690,78 +577,59 @@ export class AuthenticationProviderStrategy extends OAuthStrategy {
690
577
  // - a socket or a rest transport
691
578
  // It also supports token given as query parameter
692
579
  export class JWTAuthenticationStrategy extends JWTStrategy {
693
- async authenticate (authentication, params) {
694
- const { accessToken } = authentication
695
- const authConfig = this.authentication.configuration
696
- const { identityFields } = authConfig
697
- const { entity } = this.configuration
698
- const renewJwt = _.get(this.configuration, 'renewJwt', true)
699
- &nbsp;
700
- if (!accessToken) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
580
+ <span class="fstat-no" title="function not covered" > async authenticate (authentication, params) {</span>
581
+ <span class="cstat-no" title="statement not covered" > const { accessToken } = authentication</span>
582
+ <span class="cstat-no" title="statement not covered" > const { entity } = this.configuration</span>
583
+ <span class="cstat-no" title="statement not covered" > const renewJwt = _.get(this.configuration, 'renewJwt', true)</span>
584
+ <span class="cstat-no" title="statement not covered" ></span>
585
+ <span class="cstat-no" title="statement not covered" > if (!accessToken) {</span>
701
586
  <span class="cstat-no" title="statement not covered" > throw new NotAuthenticated('No access token')</span>
702
587
  <span class="cstat-no" title="statement not covered" > }</span>
588
+ <span class="cstat-no" title="statement not covered" ></span>
589
+ <span class="cstat-no" title="statement not covered" > const payload = await this.authentication.verifyAccessToken(accessToken, params.jwt)</span>
590
+ <span class="cstat-no" title="statement not covered" > const result = {</span>
591
+ <span class="cstat-no" title="statement not covered" > // First key trick - by deleting the token here</span>
592
+ <span class="cstat-no" title="statement not covered" > // we will get Feathers generate a new one</span>
593
+ <span class="cstat-no" title="statement not covered" > // accessToken,</span>
594
+ <span class="cstat-no" title="statement not covered" > authentication: {</span>
595
+ <span class="cstat-no" title="statement not covered" > strategy: 'jwt',</span>
596
+ <span class="cstat-no" title="statement not covered" > accessToken,</span>
597
+ <span class="cstat-no" title="statement not covered" > payload</span>
598
+ <span class="cstat-no" title="statement not covered" > }</span>
599
+ <span class="cstat-no" title="statement not covered" > }</span>
600
+ <span class="cstat-no" title="statement not covered" > if (!renewJwt) result.accessToken = accessToken</span>
601
+ <span class="cstat-no" title="statement not covered" ></span>
602
+ <span class="cstat-no" title="statement not covered" > // Second key trick</span>
603
+ <span class="cstat-no" title="statement not covered" > // Return user attached to the token if any</span>
604
+ <span class="cstat-no" title="statement not covered" > // Return basic information for a stateless token otherwise</span>
605
+ <span class="cstat-no" title="statement not covered" > // As we only target MongoDB now, check for a valid ID otherwise assume a stateless token as well</span>
606
+ <span class="cstat-no" title="statement not covered" > if (payload.sub &amp;&amp; ObjectID.isValid(payload.sub)) {</span>
607
+ <span class="cstat-no" title="statement not covered" > const entityId = await this.getEntityId(result, params)</span>
608
+ <span class="cstat-no" title="statement not covered" > const value = await this.getEntity(entityId, params)</span>
609
+ <span class="cstat-no" title="statement not covered" ></span>
610
+ <span class="cstat-no" title="statement not covered" > return {</span>
611
+ <span class="cstat-no" title="statement not covered" > ...result,</span>
612
+ <span class="cstat-no" title="statement not covered" > [entity]: value</span>
613
+ <span class="cstat-no" title="statement not covered" > }</span>
614
+ <span class="cstat-no" title="statement not covered" > }</span>
615
+ <span class="cstat-no" title="statement not covered" ></span>
616
+ <span class="cstat-no" title="statement not covered" > return result</span>
617
+ <span class="cstat-no" title="statement not covered" > }</span>
703
618
  &nbsp;
704
- const payload = await this.authentication.verifyAccessToken(accessToken, params.jwt)
705
- const result = {
706
- // First key trick - by deleting the token here
707
- // we will get Feathers generate a new one
708
- // accessToken,
709
- authentication: {
710
- strategy: 'jwt',
711
- accessToken,
712
- payload
713
- }
714
- }
715
- if (!renewJwt) <span class="branch-0 cbranch-no" title="branch not covered" >result.accessToken = accessToken</span>
716
- &nbsp;
717
- // Second key trick
718
- // Return user attached to the token if any
719
- // Return basic information for a stateless token otherwise
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)
725
- &nbsp;
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
- }
745
- }
746
- }
747
- &nbsp;
748
- return result
749
- }
750
- &nbsp;
751
- async parse (req) {
752
- const { jwt } = req.query
753
- if (jwt) {
754
- debug('Found parsed query value')
755
- delete req.query.jwt
756
- return {
757
- strategy: 'jwt',
758
- accessToken: jwt
759
- }
760
- } else {
761
- const result = await super.parse(req)
762
- return result
763
- }
764
- }
619
+ <span class="fstat-no" title="function not covered" > async parse (req) {</span>
620
+ <span class="cstat-no" title="statement not covered" > const { jwt } = req.query</span>
621
+ <span class="cstat-no" title="statement not covered" > if (jwt) {</span>
622
+ <span class="cstat-no" title="statement not covered" > debug('Found parsed query value')</span>
623
+ <span class="cstat-no" title="statement not covered" > delete req.query.jwt</span>
624
+ <span class="cstat-no" title="statement not covered" > return {</span>
625
+ <span class="cstat-no" title="statement not covered" > strategy: 'jwt',</span>
626
+ <span class="cstat-no" title="statement not covered" > accessToken: jwt</span>
627
+ <span class="cstat-no" title="statement not covered" > }</span>
628
+ <span class="cstat-no" title="statement not covered" > } else {</span>
629
+ <span class="cstat-no" title="statement not covered" > const result = await super.parse(req)</span>
630
+ <span class="cstat-no" title="statement not covered" > return result</span>
631
+ <span class="cstat-no" title="statement not covered" > }</span>
632
+ <span class="cstat-no" title="statement not covered" > }</span>
765
633
  }
766
634
  &nbsp;
767
635
  export <span class="fstat-no" title="function not covered" >async function createDefaultUsers () {</span>
@@ -782,17 +650,17 @@ export <span class="fstat-no" title="function not covered" >async function creat
782
650
  <span class="cstat-no" title="statement not covered" >}</span>
783
651
  &nbsp;
784
652
  // Middleware to be used to support jwt as a query param
785
- export function extractJwtFromQuery (req, res, next) {
786
- const { jwt } = req.query
787
- if (jwt) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
653
+ export <span class="fstat-no" title="function not covered" >function extractJwtFromQuery (req, res, next) {</span>
654
+ <span class="cstat-no" title="statement not covered" > const { jwt } = req.query</span>
655
+ <span class="cstat-no" title="statement not covered" > if (jwt) {</span>
788
656
  <span class="cstat-no" title="statement not covered" > _.set(req, 'feathers.authentication', {</span>
789
657
  <span class="cstat-no" title="statement not covered" > strategy: 'jwt',</span>
790
658
  <span class="cstat-no" title="statement not covered" > accessToken: jwt</span>
791
659
  <span class="cstat-no" title="statement not covered" > })</span>
792
660
  <span class="cstat-no" title="statement not covered" > }</span>
793
- &nbsp;
794
- next()
795
- }
661
+ <span class="cstat-no" title="statement not covered" ></span>
662
+ <span class="cstat-no" title="statement not covered" > next()</span>
663
+ <span class="cstat-no" title="statement not covered" >}</span>
796
664
  &nbsp;
797
665
  export default function auth (app) {
798
666
  const config = app.get('authentication')
@@ -827,7 +695,7 @@ export default function auth (app) {
827
695
  let validator
828
696
  app.getPasswordPolicy = function () {
829
697
  // Create on first access, should not be done outside a function because the app has not yet been correctly initialized
830
- if (validator) return validator
698
+ if (validator) <span class="branch-0 cbranch-no" title="branch not covered" >return validator</span>
831
699
  const { minLength, maxLength, uppercase, lowercase, digits, symbols, noSpaces, prohibited } = config.passwordPolicy
832
700
  &nbsp;
833
701
  validator = new PasswordValidator()
@@ -840,11 +708,11 @@ export default function auth (app) {
840
708
  if (noSpaces) <span class="branch-0 cbranch-no" title="branch not covered" >validator.not().spaces()</span>
841
709
  if (prohibited) validator.is().not().oneOf(prohibited)
842
710
  &nbsp;
843
- validator.comparePassword = function (entity, password) {
844
- const [localStrategy] = app.service(config.path).getStrategies('local')
845
- &nbsp;
846
- return localStrategy.comparePassword(entity, password)
847
- }
711
+ validator.comparePassword = <span class="fstat-no" title="function not covered" >function (entity, password) {</span>
712
+ <span class="cstat-no" title="statement not covered" > const [localStrategy] = app.service(config.path).getStrategies('local')</span>
713
+ <span class="cstat-no" title="statement not covered" ></span>
714
+ <span class="cstat-no" title="statement not covered" > return localStrategy.comparePassword(entity, password)</span>
715
+ <span class="cstat-no" title="statement not covered" > }</span>
848
716
  &nbsp;
849
717
  validator.options = config.passwordPolicy
850
718
  &nbsp;
@@ -859,7 +727,7 @@ export default function auth (app) {
859
727
  <div class='footer quiet pad2 space-top1 center small'>
860
728
  Code coverage generated by
861
729
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
862
- at 2025-07-24T10:00:20.508Z
730
+ at 2024-08-13T10:02:04.872Z
863
731
  </div>
864
732
  <script src="../../prettify.js"></script>
865
733
  <script>