@kalisio/kdk 2.6.3 → 2.6.4

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 (284) hide show
  1. package/.vscode/settings.json +5 -0
  2. package/coverage/core/api/application.js.html +398 -392
  3. package/coverage/core/api/authentication.js.html +187 -352
  4. package/coverage/core/api/db.js.html +126 -165
  5. package/coverage/core/api/hooks/hooks.authentication.js.html +196 -22
  6. package/coverage/core/api/hooks/hooks.authorisations.js.html +662 -383
  7. package/coverage/{lcov-report/core/api/hooks/hooks.tags.js.html → core/api/hooks/hooks.groups.js.html} +76 -100
  8. package/coverage/core/api/hooks/hooks.logger.js.html +41 -41
  9. package/coverage/core/api/hooks/hooks.model.js.html +101 -113
  10. package/coverage/core/api/hooks/hooks.organisations.js.html +541 -0
  11. package/coverage/core/api/hooks/hooks.push.js.html +97 -112
  12. package/coverage/core/api/hooks/hooks.query.js.html +222 -270
  13. package/coverage/core/api/hooks/hooks.schemas.js.html +123 -123
  14. package/coverage/core/api/hooks/hooks.service.js.html +1 -1
  15. package/coverage/core/api/hooks/hooks.storage.js.html +1 -1
  16. package/coverage/core/api/hooks/hooks.users.js.html +447 -255
  17. package/coverage/core/api/hooks/index.html +122 -107
  18. package/coverage/core/api/hooks/index.js.html +10 -4
  19. package/coverage/core/api/index.html +61 -46
  20. package/coverage/core/api/index.js.html +9 -9
  21. package/coverage/core/api/marshall.js.html +9 -9
  22. package/coverage/{lcov-report/map/api/models/styles.model.mongodb.js.html → core/api/models/groups.model.mongodb.js.html} +7 -10
  23. package/coverage/core/api/models/index.html +50 -35
  24. package/coverage/core/api/models/messages.model.mongodb.js.html +27 -39
  25. package/coverage/{lcov-report/core/api/models/configurations.model.mongodb.js.html → core/api/models/organisations.model.mongodb.js.html} +7 -10
  26. package/coverage/core/api/models/tags.model.mongodb.js.html +32 -26
  27. package/coverage/core/api/models/users.model.mongodb.js.html +10 -10
  28. package/coverage/core/api/services/account/account.hooks.js.html +5 -5
  29. package/coverage/core/api/services/account/account.service.js.html +127 -127
  30. package/coverage/core/api/services/account/index.html +22 -22
  31. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  32. package/coverage/core/api/services/authorisations/authorisations.service.js.html +222 -213
  33. package/coverage/core/api/services/authorisations/index.html +21 -21
  34. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  35. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  36. package/coverage/core/api/services/databases/index.html +1 -1
  37. package/coverage/{lcov-report/core/api/services/configurations/configurations.hooks.js.html → core/api/services/groups/groups.hooks.js.html} +10 -16
  38. package/coverage/core/api/services/{configurations → groups}/index.html +8 -8
  39. package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
  40. package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
  41. package/coverage/core/api/services/import-export/index.html +32 -32
  42. package/coverage/core/api/services/index.html +21 -21
  43. package/coverage/core/api/services/index.js.html +142 -313
  44. package/coverage/core/api/services/mailer/index.html +32 -32
  45. package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
  46. package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
  47. package/coverage/core/api/services/messages/index.html +21 -21
  48. package/coverage/core/api/services/messages/messages.hooks.js.html +76 -112
  49. package/coverage/{lcov-report/map/api/services/styles → core/api/services/organisations}/index.html +25 -10
  50. package/coverage/core/api/services/{configurations/configurations.hooks.js.html → organisations/organisations.hooks.js.html} +10 -16
  51. package/coverage/core/api/services/organisations/organisations.service.js.html +343 -0
  52. package/coverage/core/api/services/push/index.html +32 -32
  53. package/coverage/core/api/services/push/push.hooks.js.html +80 -80
  54. package/coverage/core/api/services/push/push.service.js.html +34 -34
  55. package/coverage/core/api/services/storage/index.html +29 -29
  56. package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
  57. package/coverage/core/api/services/storage/storage.service.js.html +29 -29
  58. package/coverage/core/api/services/tags/index.html +21 -21
  59. package/coverage/core/api/services/tags/tags.hooks.js.html +71 -119
  60. package/coverage/core/api/services/users/index.html +12 -27
  61. package/coverage/core/api/services/users/users.hooks.js.html +11 -14
  62. package/coverage/core/api/utils.js.html +118 -0
  63. package/coverage/core/common/errors.js.html +1 -1
  64. package/coverage/core/common/index.html +27 -42
  65. package/coverage/core/common/index.js.html +1 -1
  66. package/coverage/core/common/permissions.js.html +472 -166
  67. package/coverage/core/common/schema.js.html +4 -4
  68. package/coverage/core/common/utils.js.html +25 -31
  69. package/coverage/index.html +192 -192
  70. package/coverage/lcov-report/core/api/application.js.html +398 -392
  71. package/coverage/lcov-report/core/api/authentication.js.html +187 -352
  72. package/coverage/lcov-report/core/api/db.js.html +126 -165
  73. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +196 -22
  74. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +662 -383
  75. package/coverage/{core/api/hooks/hooks.tags.js.html → lcov-report/core/api/hooks/hooks.groups.js.html} +76 -100
  76. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +41 -41
  77. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +101 -113
  78. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +541 -0
  79. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +97 -112
  80. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +222 -270
  81. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +123 -123
  82. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +1 -1
  83. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +1 -1
  84. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +447 -255
  85. package/coverage/lcov-report/core/api/hooks/index.html +122 -107
  86. package/coverage/lcov-report/core/api/hooks/index.js.html +10 -4
  87. package/coverage/lcov-report/core/api/index.html +61 -46
  88. package/coverage/lcov-report/core/api/index.js.html +9 -9
  89. package/coverage/lcov-report/core/api/marshall.js.html +9 -9
  90. package/coverage/{map/api/models/styles.model.mongodb.js.html → lcov-report/core/api/models/groups.model.mongodb.js.html} +7 -10
  91. package/coverage/lcov-report/core/api/models/index.html +50 -35
  92. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +27 -39
  93. package/coverage/{core/api/models/configurations.model.mongodb.js.html → lcov-report/core/api/models/organisations.model.mongodb.js.html} +7 -10
  94. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +32 -26
  95. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +10 -10
  96. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +5 -5
  97. package/coverage/lcov-report/core/api/services/account/account.service.js.html +127 -127
  98. package/coverage/lcov-report/core/api/services/account/index.html +22 -22
  99. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  100. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +222 -213
  101. package/coverage/lcov-report/core/api/services/authorisations/index.html +21 -21
  102. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  103. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  104. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  105. package/coverage/lcov-report/{map/api/services/styles/styles.hooks.js.html → core/api/services/groups/groups.hooks.js.html} +12 -45
  106. package/coverage/lcov-report/core/api/services/{configurations → groups}/index.html +8 -8
  107. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
  108. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
  109. package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
  110. package/coverage/lcov-report/core/api/services/index.html +21 -21
  111. package/coverage/lcov-report/core/api/services/index.js.html +142 -313
  112. package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
  113. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
  114. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
  115. package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
  116. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +76 -112
  117. package/coverage/{map/api/services/styles → lcov-report/core/api/services/organisations}/index.html +25 -10
  118. package/coverage/{map/api/services/styles/styles.hooks.js.html → lcov-report/core/api/services/organisations/organisations.hooks.js.html} +12 -45
  119. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +343 -0
  120. package/coverage/lcov-report/core/api/services/push/index.html +32 -32
  121. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
  122. package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
  123. package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
  124. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
  125. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +29 -29
  126. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  127. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +71 -119
  128. package/coverage/lcov-report/core/api/services/users/index.html +12 -27
  129. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +11 -14
  130. package/coverage/lcov-report/core/api/utils.js.html +118 -0
  131. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  132. package/coverage/lcov-report/core/common/index.html +27 -42
  133. package/coverage/lcov-report/core/common/index.js.html +1 -1
  134. package/coverage/lcov-report/core/common/permissions.js.html +472 -166
  135. package/coverage/lcov-report/core/common/schema.js.html +4 -4
  136. package/coverage/lcov-report/core/common/utils.js.html +25 -31
  137. package/coverage/lcov-report/index.html +192 -192
  138. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +31 -169
  139. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
  140. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +32 -32
  141. package/coverage/lcov-report/map/api/hooks/index.html +5 -5
  142. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  143. package/coverage/lcov-report/map/api/index.html +1 -1
  144. package/coverage/lcov-report/map/api/index.js.html +1 -1
  145. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  146. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  147. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +7 -82
  148. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  149. package/coverage/lcov-report/map/api/models/index.html +7 -22
  150. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
  151. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  152. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  153. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  154. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +12 -39
  155. package/coverage/lcov-report/map/api/services/catalog/index.html +5 -5
  156. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  157. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  158. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +11 -86
  159. package/coverage/lcov-report/map/api/services/features/features.service.js.html +4 -307
  160. package/coverage/lcov-report/map/api/services/features/index.html +7 -7
  161. package/coverage/lcov-report/map/api/services/index.html +5 -5
  162. package/coverage/lcov-report/map/api/services/index.js.html +50 -326
  163. package/coverage/lcov-report/map/api/services/projects/index.html +1 -1
  164. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +1 -1
  165. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  166. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  167. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +10 -7
  168. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  169. package/coverage/lcov-report/map/common/index.html +19 -19
  170. package/coverage/lcov-report/map/common/index.js.html +1 -1
  171. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  172. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  173. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  174. package/coverage/lcov-report/map/common/opendap-utils.js.html +7 -4
  175. package/coverage/lcov-report/map/common/permissions.js.html +4 -10
  176. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  177. package/coverage/lcov-report/map/common/tms-utils.js.html +12 -9
  178. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
  179. package/coverage/lcov-report/map/common/wcs-utils.js.html +15 -12
  180. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +2 -2
  181. package/coverage/lcov-report/map/common/wfs-utils.js.html +17 -14
  182. package/coverage/lcov-report/map/common/wms-utils.js.html +12 -30
  183. package/coverage/lcov-report/map/common/wmts-utils.js.html +13 -10
  184. package/coverage/lcov.info +4096 -4359
  185. package/coverage/map/api/hooks/hooks.catalog.js.html +31 -169
  186. package/coverage/map/api/hooks/hooks.features.js.html +1 -1
  187. package/coverage/map/api/hooks/hooks.query.js.html +32 -32
  188. package/coverage/map/api/hooks/index.html +5 -5
  189. package/coverage/map/api/hooks/index.js.html +1 -1
  190. package/coverage/map/api/index.html +1 -1
  191. package/coverage/map/api/index.js.html +1 -1
  192. package/coverage/map/api/marshall.js.html +1 -1
  193. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  194. package/coverage/map/api/models/catalog.model.mongodb.js.html +7 -82
  195. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  196. package/coverage/map/api/models/index.html +7 -22
  197. package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
  198. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  199. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  200. package/coverage/map/api/services/alerts/index.html +1 -1
  201. package/coverage/map/api/services/catalog/catalog.hooks.js.html +12 -39
  202. package/coverage/map/api/services/catalog/index.html +5 -5
  203. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  204. package/coverage/map/api/services/daptiles/index.html +1 -1
  205. package/coverage/map/api/services/features/features.hooks.js.html +11 -86
  206. package/coverage/map/api/services/features/features.service.js.html +4 -307
  207. package/coverage/map/api/services/features/index.html +7 -7
  208. package/coverage/map/api/services/index.html +5 -5
  209. package/coverage/map/api/services/index.js.html +50 -326
  210. package/coverage/map/api/services/projects/index.html +1 -1
  211. package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
  212. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  213. package/coverage/map/common/errors.js.html +1 -1
  214. package/coverage/map/common/geotiff-grid-source.js.html +10 -7
  215. package/coverage/map/common/grid.js.html +1 -1
  216. package/coverage/map/common/index.html +19 -19
  217. package/coverage/map/common/index.js.html +1 -1
  218. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  219. package/coverage/map/common/moment-utils.js.html +1 -1
  220. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  221. package/coverage/map/common/opendap-utils.js.html +7 -4
  222. package/coverage/map/common/permissions.js.html +4 -10
  223. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  224. package/coverage/map/common/tms-utils.js.html +12 -9
  225. package/coverage/map/common/wcs-grid-source.js.html +3 -3
  226. package/coverage/map/common/wcs-utils.js.html +15 -12
  227. package/coverage/map/common/weacast-grid-source.js.html +2 -2
  228. package/coverage/map/common/wfs-utils.js.html +17 -14
  229. package/coverage/map/common/wms-utils.js.html +12 -30
  230. package/coverage/map/common/wmts-utils.js.html +13 -10
  231. package/coverage/tmp/coverage-151166-1723543324307-0.json +1 -0
  232. package/coverage/tmp/coverage-151178-1723543324283-0.json +1 -0
  233. package/coverage/tmp/coverage-151189-1723543324271-0.json +1 -0
  234. package/coverage/tmp/coverage-151201-1723543324248-0.json +1 -0
  235. package/coverage/tmp/coverage-151208-1723543324227-0.json +1 -0
  236. package/extras/tours/pane.top.js +9 -0
  237. package/map/client/i18n/map_en.json +2 -1
  238. package/map/client/i18n/map_fr.json +2 -1
  239. package/package.json +1 -1
  240. package/test/api/core/test-log-2024-04-22.log +84 -0
  241. package/test/api/core/{test-log-2025-10-03.log → test-log-2024-04-23.log} +9 -4
  242. package/test/api/core/test-log-2024-08-13.log +3 -0
  243. package/client/css/core.variables.scss +0 -72
  244. package/client/i18n/core_en.json +0 -744
  245. package/client/i18n/core_fr.json +0 -744
  246. package/client/i18n/map_en.json +0 -800
  247. package/client/i18n/map_fr.json +0 -800
  248. package/client/kdk.client.css +0 -47
  249. package/client/kdk.client.js +0 -41097
  250. package/client/kdk.client.map.css +0 -47
  251. package/client/kdk.client.map.js +0 -38182
  252. package/client/kdk.client.map.min.css +0 -1
  253. package/client/kdk.client.map.min.js +0 -27032
  254. package/client/kdk.client.min.css +0 -1
  255. package/client/kdk.client.min.js +0 -29074
  256. package/client/schemas/capture.create.json +0 -132
  257. package/client/schemas/catalog.update.json +0 -44
  258. package/client/schemas/messages.update.json +0 -16
  259. package/client/schemas/projects.create.json +0 -52
  260. package/client/schemas/projects.update.json +0 -52
  261. package/client/schemas/settings.update.json +0 -286
  262. package/client/schemas/tags.update.json +0 -35
  263. package/client/schemas/users.update-profile.json +0 -34
  264. package/coverage/core/api/services/users/users.service.js.html +0 -100
  265. package/coverage/core/common/utils.offline.js.html +0 -199
  266. package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
  267. package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
  268. package/coverage/tmp/coverage-222524-1765963609350-0.json +0 -1
  269. package/coverage/tmp/coverage-222536-1765963609335-0.json +0 -1
  270. package/coverage/tmp/coverage-222547-1765963609324-0.json +0 -1
  271. package/coverage/tmp/coverage-222559-1765963609309-0.json +0 -1
  272. package/coverage/tmp/coverage-222566-1765963609278-0.json +0 -1
  273. package/test/api/core/test-log-2025-07-31.log +0 -15
  274. package/test/api/core/test-log-2025-11-12.log +0 -117
  275. package/test/api/core/test-log-2025-11-27.log +0 -0
  276. package/test/api/core/test-log-2025-11-28.log +0 -17
  277. package/test/api/core/test-log-2025-12-09.log +0 -148
  278. package/test/api/core/test-log-2025-12-17.log +0 -58
  279. package/test/api/core/test-log-2026-01-29.log +0 -17
  280. package/test/api/map/test-log-2025-07-23.log +0 -1
  281. package/test/api/map/test-log-2025-11-28.log +0 -33
  282. package/test/api/map/test-log-2025-12-10.log +0 -2
  283. package/test/api/map/test-log-2026-01-06.log +0 -26
  284. /package/test/api/{core/test-log-2025-11-10.log → map/test-log-2025-03-08.log} +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">85.24% </span>
26
+ <span class="strong">19.64% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>52/61</span>
28
+ <span class='fraction'>11/56</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">71.42% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>10/14</span>
35
+ <span class='fraction'>1/1</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>0/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">85.24% </span>
47
+ <span class="strong">19.64% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>52/61</span>
49
+ <span class='fraction'>11/56</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 high'></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>
@@ -119,12 +119,7 @@
119
119
  <a name='L54'></a><a href='#L54'>54</a>
120
120
  <a name='L55'></a><a href='#L55'>55</a>
121
121
  <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
122
+ <a name='L57'></a><a href='#L57'>57</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
128
123
  <span class="cline-any cline-yes">1x</span>
129
124
  <span class="cline-any cline-yes">1x</span>
130
125
  <span class="cline-any cline-yes">1x</span>
@@ -133,58 +128,53 @@
133
128
  <span class="cline-any cline-yes">1x</span>
134
129
  <span class="cline-any cline-yes">1x</span>
135
130
  <span class="cline-any cline-yes">1x</span>
136
- <span class="cline-any cline-yes">2x</span>
137
- <span class="cline-any cline-yes">2x</span>
131
+ <span class="cline-any cline-no">&nbsp;</span>
132
+ <span class="cline-any cline-no">&nbsp;</span>
138
133
  <span class="cline-any cline-yes">1x</span>
139
134
  <span class="cline-any cline-yes">1x</span>
140
- <span class="cline-any cline-yes">17x</span>
141
- <span class="cline-any cline-no">&nbsp;</span>
142
- <span class="cline-any cline-no">&nbsp;</span>
143
- <span class="cline-any cline-yes">17x</span>
144
- <span class="cline-any cline-yes">17x</span>
145
- <span class="cline-any cline-yes">17x</span>
146
- <span class="cline-any cline-yes">17x</span>
147
- <span class="cline-any cline-yes">17x</span>
148
- <span class="cline-any cline-yes">17x</span>
149
- <span class="cline-any cline-yes">17x</span>
150
- <span class="cline-any cline-yes">17x</span>
151
- <span class="cline-any cline-yes">6x</span>
152
- <span class="cline-any cline-yes">6x</span>
153
- <span class="cline-any cline-yes">17x</span>
154
- <span class="cline-any cline-yes">2x</span>
155
- <span class="cline-any cline-yes">2x</span>
156
- <span class="cline-any cline-no">&nbsp;</span>
157
- <span class="cline-any cline-yes">2x</span>
158
- <span class="cline-any cline-yes">17x</span>
159
- <span class="cline-any cline-no">&nbsp;</span>
160
- <span class="cline-any cline-no">&nbsp;</span>
161
- <span class="cline-any cline-no">&nbsp;</span>
162
- <span class="cline-any cline-yes">2x</span>
163
- <span class="cline-any cline-yes">2x</span>
164
- <span class="cline-any cline-yes">2x</span>
165
- <span class="cline-any cline-yes">2x</span>
166
- <span class="cline-any cline-yes">2x</span>
167
- <span class="cline-any cline-yes">17x</span>
168
- <span class="cline-any cline-yes">17x</span>
169
- <span class="cline-any cline-yes">17x</span>
170
- <span class="cline-any cline-yes">17x</span>
171
- <span class="cline-any cline-yes">17x</span>
172
- <span class="cline-any cline-yes">17x</span>
173
- <span class="cline-any cline-yes">17x</span>
174
- <span class="cline-any cline-yes">17x</span>
175
- <span class="cline-any cline-yes">17x</span>
176
- <span class="cline-any cline-yes">17x</span>
177
- <span class="cline-any cline-yes">17x</span>
178
- <span class="cline-any cline-yes">17x</span>
179
- <span class="cline-any cline-yes">2x</span>
180
- <span class="cline-any cline-yes">2x</span>
181
- <span class="cline-any cline-yes">2x</span>
182
- <span class="cline-any cline-yes">2x</span>
183
- <span class="cline-any cline-yes">17x</span>
184
- <span class="cline-any cline-no">&nbsp;</span>
185
- <span class="cline-any cline-no">&nbsp;</span>
186
- <span class="cline-any cline-no">&nbsp;</span>
187
- <span class="cline-any cline-yes">17x</span>
135
+ <span class="cline-any cline-no">&nbsp;</span>
136
+ <span class="cline-any cline-no">&nbsp;</span>
137
+ <span class="cline-any cline-no">&nbsp;</span>
138
+ <span class="cline-any cline-no">&nbsp;</span>
139
+ <span class="cline-any cline-no">&nbsp;</span>
140
+ <span class="cline-any cline-no">&nbsp;</span>
141
+ <span class="cline-any cline-no">&nbsp;</span>
142
+ <span class="cline-any cline-no">&nbsp;</span>
143
+ <span class="cline-any cline-no">&nbsp;</span>
144
+ <span class="cline-any cline-no">&nbsp;</span>
145
+ <span class="cline-any cline-no">&nbsp;</span>
146
+ <span class="cline-any cline-no">&nbsp;</span>
147
+ <span class="cline-any cline-no">&nbsp;</span>
148
+ <span class="cline-any cline-no">&nbsp;</span>
149
+ <span class="cline-any cline-no">&nbsp;</span>
150
+ <span class="cline-any cline-no">&nbsp;</span>
151
+ <span class="cline-any cline-no">&nbsp;</span>
152
+ <span class="cline-any cline-no">&nbsp;</span>
153
+ <span class="cline-any cline-no">&nbsp;</span>
154
+ <span class="cline-any cline-no">&nbsp;</span>
155
+ <span class="cline-any cline-no">&nbsp;</span>
156
+ <span class="cline-any cline-no">&nbsp;</span>
157
+ <span class="cline-any cline-no">&nbsp;</span>
158
+ <span class="cline-any cline-no">&nbsp;</span>
159
+ <span class="cline-any cline-no">&nbsp;</span>
160
+ <span class="cline-any cline-no">&nbsp;</span>
161
+ <span class="cline-any cline-no">&nbsp;</span>
162
+ <span class="cline-any cline-no">&nbsp;</span>
163
+ <span class="cline-any cline-no">&nbsp;</span>
164
+ <span class="cline-any cline-no">&nbsp;</span>
165
+ <span class="cline-any cline-no">&nbsp;</span>
166
+ <span class="cline-any cline-no">&nbsp;</span>
167
+ <span class="cline-any cline-no">&nbsp;</span>
168
+ <span class="cline-any cline-no">&nbsp;</span>
169
+ <span class="cline-any cline-no">&nbsp;</span>
170
+ <span class="cline-any cline-no">&nbsp;</span>
171
+ <span class="cline-any cline-no">&nbsp;</span>
172
+ <span class="cline-any cline-no">&nbsp;</span>
173
+ <span class="cline-any cline-no">&nbsp;</span>
174
+ <span class="cline-any cline-no">&nbsp;</span>
175
+ <span class="cline-any cline-no">&nbsp;</span>
176
+ <span class="cline-any cline-no">&nbsp;</span>
177
+ <span class="cline-any cline-no">&nbsp;</span>
188
178
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import emails from 'email-templates'
189
179
  import path from 'path'
190
180
  import makeDebug from 'debug'
@@ -193,59 +183,54 @@ import _ from 'lodash'
193
183
  const debug = makeDebug('kdk:core:push:hooks')
194
184
  &nbsp;
195
185
  // Helper functions to be used in iff hooks
196
- export function disallowExternalPush (hook) {
197
- return _.get(hook.app.get('push'), 'disallowExternalPush', true)
198
- }
186
+ export <span class="fstat-no" title="function not covered" >function disallowExternalPush (hook) {</span>
187
+ <span class="cstat-no" title="statement not covered" > return _.get(hook.app.get('push'), 'disallowExternalPush', true)</span>
188
+ <span class="cstat-no" title="statement not covered" >}</span>
199
189
  &nbsp;
200
- export async function sendNewSubscriptionEmail (hook) {
201
- if (hook.type !== 'after') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
190
+ export <span class="fstat-no" title="function not covered" >async function sendNewSubscriptionEmail (hook) {</span>
191
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
202
192
  <span class="cstat-no" title="statement not covered" > throw new Error('The \'sendNewSubscriptionEmail\' hook should only be used as a \'after\' hook.')</span>
203
193
  <span class="cstat-no" title="statement not covered" > }</span>
204
- const app = hook.app
205
- const mailerService = app.getService('mailer')
206
- if (!mailerService) <span class="branch-0 cbranch-no" title="branch not covered" >return</span>
207
- // Check for a new subscription if any
208
- const currentUser = hook.result
209
- const previousUser = hook.params.user
210
- // If we can't compare abort, eg f-a-m might patch user to update tokens
211
- if (!currentUser || !previousUser) return
212
- // Retrieve the last subscription
213
- const lastSubscription = _.last(_.get(currentUser, 'subscriptions', []))
214
- if (!lastSubscription) return
215
- // Check whether the subscription has an existing fingerprint
216
- const existingSubscription = _.find(_.get(previousUser, 'subscriptions', []), subscription =&gt; {
217
- <span class="cstat-no" title="statement not covered" > return _.isEqual(subscription.fingerprint, lastSubscription.fingerprint)</span>
218
- })
219
- if (existingSubscription) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
220
- <span class="cstat-no" title="statement not covered" > debug('Last subscription uses an existing fingerprint')</span>
221
- <span class="cstat-no" title="statement not covered" > return</span>
194
+ <span class="cstat-no" title="statement not covered" ></span>
195
+ <span class="cstat-no" title="statement not covered" > // Check for a new subscription if any</span>
196
+ <span class="cstat-no" title="statement not covered" > const updatedUser = hook.result</span>
197
+ <span class="cstat-no" title="statement not covered" > const previousUser = hook.params.user</span>
198
+ <span class="cstat-no" title="statement not covered" > // If we can't compare abort, eg f-a-m might patch user to update tokens</span>
199
+ <span class="cstat-no" title="statement not covered" > if (!updatedUser || !previousUser) return hook</span>
200
+ <span class="cstat-no" title="statement not covered" > const newSubscription = _.differenceBy(_.get(updatedUser, 'subscriptions', []), _.get(previousUser, 'subscriptions', []), 'endpoint')</span>
201
+ <span class="cstat-no" title="statement not covered" > if (_.size(newSubscription) !== 1) return</span>
202
+ <span class="cstat-no" title="statement not covered" ></span>
203
+ <span class="cstat-no" title="statement not covered" > // Data</span>
204
+ <span class="cstat-no" title="statement not covered" > const app = hook.app</span>
205
+ <span class="cstat-no" title="statement not covered" > const mailerService = app.getService('mailer')</span>
206
+ <span class="cstat-no" title="statement not covered" > const domainPath = app.get('domain') + '/#/'</span>
207
+ <span class="cstat-no" title="statement not covered" > const email = {</span>
208
+ <span class="cstat-no" title="statement not covered" > subject: 'Security alert - new browser detected',</span>
209
+ <span class="cstat-no" title="statement not covered" > from: mailerService.options.auth.user,</span>
210
+ <span class="cstat-no" title="statement not covered" > // When changing email send to the new one so that it can be verified</span>
211
+ <span class="cstat-no" title="statement not covered" > to: updatedUser.email,</span>
212
+ <span class="cstat-no" title="statement not covered" > link: domainPath,</span>
213
+ <span class="cstat-no" title="statement not covered" > domainPath</span>
222
214
  <span class="cstat-no" title="statement not covered" > }</span>
223
- debug('Last subscription uses a new fingerprint')
224
- // Send an email to notify the user
225
- const domainPath = app.get('domain') + '/#/'
226
- const email = {
227
- subject: 'Security alert - new browser detected',
228
- from: mailerService.options.from || mailerService.options.auth.user,
229
- to: currentUser.email,
230
- link: domainPath,
231
- domainPath
232
- }
233
- // Build the subject &amp; link to the app to perform the different actions
234
- const templateDir = path.join(mailerService.options.templateDir, 'newSubscription')
235
- const template = new emails.EmailTemplate(templateDir)
236
- // Errors does not seem to be correctly catched by the caller
237
- // so we catch them here to avoid any problem
238
- try {
239
- const emailContent = await template.render({ email, user: currentUser, subscription: lastSubscription }, currentUser.locale || 'en-us')
240
- // Update compiled content
241
- email.html = emailContent.html
242
- debug('Sending email ', email)
243
- await mailerService.create(email)
244
- } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
215
+ <span class="cstat-no" title="statement not covered" ></span>
216
+ <span class="cstat-no" title="statement not covered" > // Build the subject &amp; link to the app to perform the different actions</span>
217
+ <span class="cstat-no" title="statement not covered" > const templateDir = path.join(mailerService.options.templateDir, 'newSubscription')</span>
218
+ <span class="cstat-no" title="statement not covered" > const template = new emails.EmailTemplate(templateDir)</span>
219
+ <span class="cstat-no" title="statement not covered" > // Errors does not seem to be correctly catched by the caller</span>
220
+ <span class="cstat-no" title="statement not covered" > // so we catch them here to avoid any problem</span>
221
+ <span class="cstat-no" title="statement not covered" > try {</span>
222
+ <span class="cstat-no" title="statement not covered" > const emailContent = await template.render({ email, user: updatedUser, subscription: _.first(newSubscription) }, updatedUser.locale || 'en-us')</span>
223
+ <span class="cstat-no" title="statement not covered" > // Update compiled content</span>
224
+ <span class="cstat-no" title="statement not covered" > email.html = emailContent.html</span>
225
+ <span class="cstat-no" title="statement not covered" > debug('Sending email ', email)</span>
226
+ <span class="cstat-no" title="statement not covered" > await mailerService.create(email)</span>
227
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
245
228
  <span class="cstat-no" title="statement not covered" > debug('Sending email failed', error)</span>
246
229
  <span class="cstat-no" title="statement not covered" > app.logger.error(error)</span>
247
230
  <span class="cstat-no" title="statement not covered" > }</span>
248
- }
231
+ <span class="cstat-no" title="statement not covered" ></span>
232
+ <span class="cstat-no" title="statement not covered" > return hook</span>
233
+ <span class="cstat-no" title="statement not covered" >}</span>
249
234
  &nbsp;</pre></td></tr></table></pre>
250
235
 
251
236
  <div class='push'></div><!-- for sticky footer -->
@@ -253,7 +238,7 @@ export async function sendNewSubscriptionEmail (hook) {
253
238
  <div class='footer quiet pad2 space-top1 center small'>
254
239
  Code coverage generated by
255
240
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
256
- at 2025-12-17T09:26:49.744Z
241
+ at 2024-08-13T10:02:04.843Z
257
242
  </div>
258
243
  <script src="../../../prettify.js"></script>
259
244
  <script>