@kalisio/kdk 2.5.1 → 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/core/api/hooks/hooks.authorisations.js +1 -2
  2. package/core/api/services/authorisations/authorisations.service.js +1 -3
  3. package/core/api/services/index.js +5 -1
  4. package/core/api/services/users/users.hooks.js +4 -3
  5. package/core/client/components/input/KShapePicker.vue +4 -4
  6. package/core/client/utils/index.js +1 -0
  7. package/coverage/core/api/application.js.html +344 -344
  8. package/coverage/core/api/authentication.js.html +79 -79
  9. package/coverage/core/api/db.js.html +167 -167
  10. package/coverage/core/api/hooks/hooks.authentication.js.html +12 -12
  11. package/coverage/core/api/hooks/hooks.authorisations.js.html +154 -157
  12. package/coverage/core/api/hooks/hooks.logger.js.html +18 -18
  13. package/coverage/core/api/hooks/hooks.model.js.html +275 -275
  14. package/coverage/core/api/hooks/hooks.push.js.html +34 -34
  15. package/coverage/core/api/hooks/hooks.query.js.html +89 -89
  16. package/coverage/core/api/hooks/hooks.schemas.js.html +13 -13
  17. package/coverage/core/api/hooks/hooks.service.js.html +28 -28
  18. package/coverage/core/api/hooks/hooks.storage.js.html +7 -7
  19. package/coverage/core/api/hooks/hooks.users.js.html +50 -50
  20. package/coverage/core/api/hooks/index.html +51 -51
  21. package/coverage/core/api/hooks/index.js.html +11 -11
  22. package/coverage/core/api/index.html +42 -42
  23. package/coverage/core/api/index.js.html +22 -22
  24. package/coverage/core/api/marshall.js.html +127 -127
  25. package/coverage/core/api/models/index.html +1 -1
  26. package/coverage/core/api/models/messages.model.mongodb.js.html +1 -1
  27. package/coverage/core/api/models/users.model.mongodb.js.html +11 -11
  28. package/coverage/core/api/services/account/account.hooks.js.html +42 -42
  29. package/coverage/core/api/services/account/account.service.js.html +34 -34
  30. package/coverage/core/api/services/account/index.html +1 -1
  31. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  32. package/coverage/core/api/services/authorisations/authorisations.service.js.html +87 -93
  33. package/coverage/core/api/services/authorisations/index.html +19 -19
  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/core/api/services/import-export/import-export.hooks.js.html +1 -1
  38. package/coverage/core/api/services/import-export/import-export.service.js.html +1 -1
  39. package/coverage/core/api/services/import-export/index.html +1 -1
  40. package/coverage/core/api/services/index.html +15 -15
  41. package/coverage/core/api/services/index.js.html +97 -85
  42. package/coverage/core/api/services/mailer/index.html +1 -1
  43. package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
  44. package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
  45. package/coverage/core/api/services/messages/index.html +1 -1
  46. package/coverage/core/api/services/messages/messages.hooks.js.html +1 -1
  47. package/coverage/core/api/services/push/index.html +1 -1
  48. package/coverage/core/api/services/push/push.hooks.js.html +1 -1
  49. package/coverage/core/api/services/push/push.service.js.html +1 -1
  50. package/coverage/core/api/services/storage/index.html +1 -1
  51. package/coverage/core/api/services/storage/storage.hooks.js.html +36 -36
  52. package/coverage/core/api/services/storage/storage.service.js.html +30 -30
  53. package/coverage/core/api/services/users/index.html +7 -7
  54. package/coverage/core/api/services/users/users.hooks.js.html +83 -80
  55. package/coverage/core/api/services/users/users.service.js.html +4 -4
  56. package/coverage/core/common/errors.js.html +2 -2
  57. package/coverage/core/common/index.html +30 -30
  58. package/coverage/core/common/index.js.html +11 -11
  59. package/coverage/core/common/permissions.js.html +187 -187
  60. package/coverage/core/common/schema.js.html +26 -26
  61. package/coverage/core/common/utils.js.html +61 -61
  62. package/coverage/core/common/utils.offline.js.html +6 -6
  63. package/coverage/index.html +173 -173
  64. package/coverage/lcov-report/core/api/application.js.html +344 -344
  65. package/coverage/lcov-report/core/api/authentication.js.html +79 -79
  66. package/coverage/lcov-report/core/api/db.js.html +167 -167
  67. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +12 -12
  68. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +154 -157
  69. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +18 -18
  70. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +275 -275
  71. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +34 -34
  72. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +89 -89
  73. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +13 -13
  74. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +28 -28
  75. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +7 -7
  76. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +50 -50
  77. package/coverage/lcov-report/core/api/hooks/index.html +51 -51
  78. package/coverage/lcov-report/core/api/hooks/index.js.html +11 -11
  79. package/coverage/lcov-report/core/api/index.html +42 -42
  80. package/coverage/lcov-report/core/api/index.js.html +22 -22
  81. package/coverage/lcov-report/core/api/marshall.js.html +127 -127
  82. package/coverage/lcov-report/core/api/models/index.html +1 -1
  83. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +1 -1
  84. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +11 -11
  85. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +42 -42
  86. package/coverage/lcov-report/core/api/services/account/account.service.js.html +34 -34
  87. package/coverage/lcov-report/core/api/services/account/index.html +1 -1
  88. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  89. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +87 -93
  90. package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
  91. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  92. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  93. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  94. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +1 -1
  95. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +1 -1
  96. package/coverage/lcov-report/core/api/services/import-export/index.html +1 -1
  97. package/coverage/lcov-report/core/api/services/index.html +15 -15
  98. package/coverage/lcov-report/core/api/services/index.js.html +97 -85
  99. package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
  100. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
  101. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
  102. package/coverage/lcov-report/core/api/services/messages/index.html +1 -1
  103. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +1 -1
  104. package/coverage/lcov-report/core/api/services/push/index.html +1 -1
  105. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +1 -1
  106. package/coverage/lcov-report/core/api/services/push/push.service.js.html +1 -1
  107. package/coverage/lcov-report/core/api/services/storage/index.html +1 -1
  108. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +36 -36
  109. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +30 -30
  110. package/coverage/lcov-report/core/api/services/users/index.html +7 -7
  111. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +83 -80
  112. package/coverage/lcov-report/core/api/services/users/users.service.js.html +4 -4
  113. package/coverage/lcov-report/core/common/errors.js.html +2 -2
  114. package/coverage/lcov-report/core/common/index.html +30 -30
  115. package/coverage/lcov-report/core/common/index.js.html +11 -11
  116. package/coverage/lcov-report/core/common/permissions.js.html +187 -187
  117. package/coverage/lcov-report/core/common/schema.js.html +26 -26
  118. package/coverage/lcov-report/core/common/utils.js.html +61 -61
  119. package/coverage/lcov-report/core/common/utils.offline.js.html +6 -6
  120. package/coverage/lcov-report/index.html +173 -173
  121. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +316 -316
  122. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +218 -218
  123. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +798 -789
  124. package/coverage/lcov-report/map/api/hooks/index.html +54 -54
  125. package/coverage/lcov-report/map/api/hooks/index.js.html +16 -16
  126. package/coverage/lcov-report/map/api/index.html +32 -32
  127. package/coverage/lcov-report/map/api/index.js.html +46 -46
  128. package/coverage/lcov-report/map/api/marshall.js.html +72 -72
  129. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +24 -24
  130. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +44 -44
  131. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +80 -80
  132. package/coverage/lcov-report/map/api/models/index.html +65 -65
  133. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +26 -26
  134. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +28 -28
  135. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +136 -136
  136. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +343 -343
  137. package/coverage/lcov-report/map/api/services/alerts/index.html +32 -32
  138. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +172 -172
  139. package/coverage/lcov-report/map/api/services/catalog/index.html +21 -21
  140. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  141. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  142. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +160 -160
  143. package/coverage/lcov-report/map/api/services/features/features.service.js.html +117 -117
  144. package/coverage/lcov-report/map/api/services/features/index.html +31 -31
  145. package/coverage/lcov-report/map/api/services/index.html +21 -21
  146. package/coverage/lcov-report/map/api/services/index.js.html +334 -334
  147. package/coverage/lcov-report/map/api/services/projects/index.html +21 -21
  148. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +237 -237
  149. package/coverage/lcov-report/map/api/services/styles/index.html +21 -21
  150. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +84 -84
  151. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  152. package/coverage/lcov-report/map/common/errors.js.html +16 -16
  153. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +267 -267
  154. package/coverage/lcov-report/map/common/grid.js.html +554 -554
  155. package/coverage/lcov-report/map/common/index.html +159 -159
  156. package/coverage/lcov-report/map/common/index.js.html +68 -68
  157. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +73 -73
  158. package/coverage/lcov-report/map/common/moment-utils.js.html +18 -18
  159. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +484 -484
  160. package/coverage/lcov-report/map/common/opendap-utils.js.html +353 -353
  161. package/coverage/lcov-report/map/common/permissions.js.html +40 -40
  162. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +59 -59
  163. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  164. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +190 -190
  165. package/coverage/lcov-report/map/common/wcs-utils.js.html +338 -338
  166. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +345 -345
  167. package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
  168. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  169. package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
  170. package/coverage/lcov.info +6880 -5908
  171. package/coverage/map/api/hooks/hooks.catalog.js.html +316 -316
  172. package/coverage/map/api/hooks/hooks.features.js.html +218 -218
  173. package/coverage/map/api/hooks/hooks.query.js.html +798 -789
  174. package/coverage/map/api/hooks/index.html +54 -54
  175. package/coverage/map/api/hooks/index.js.html +16 -16
  176. package/coverage/map/api/index.html +32 -32
  177. package/coverage/map/api/index.js.html +46 -46
  178. package/coverage/map/api/marshall.js.html +72 -72
  179. package/coverage/map/api/models/alerts.model.mongodb.js.html +24 -24
  180. package/coverage/map/api/models/catalog.model.mongodb.js.html +44 -44
  181. package/coverage/map/api/models/features.model.mongodb.js.html +80 -80
  182. package/coverage/map/api/models/index.html +65 -65
  183. package/coverage/map/api/models/projects.model.mongodb.js.html +26 -26
  184. package/coverage/map/api/models/styles.model.mongodb.js.html +28 -28
  185. package/coverage/map/api/services/alerts/alerts.hooks.js.html +136 -136
  186. package/coverage/map/api/services/alerts/alerts.service.js.html +343 -343
  187. package/coverage/map/api/services/alerts/index.html +32 -32
  188. package/coverage/map/api/services/catalog/catalog.hooks.js.html +172 -172
  189. package/coverage/map/api/services/catalog/index.html +21 -21
  190. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  191. package/coverage/map/api/services/daptiles/index.html +1 -1
  192. package/coverage/map/api/services/features/features.hooks.js.html +160 -160
  193. package/coverage/map/api/services/features/features.service.js.html +117 -117
  194. package/coverage/map/api/services/features/index.html +31 -31
  195. package/coverage/map/api/services/index.html +21 -21
  196. package/coverage/map/api/services/index.js.html +334 -334
  197. package/coverage/map/api/services/projects/index.html +21 -21
  198. package/coverage/map/api/services/projects/projects.hooks.js.html +237 -237
  199. package/coverage/map/api/services/styles/index.html +21 -21
  200. package/coverage/map/api/services/styles/styles.hooks.js.html +84 -84
  201. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  202. package/coverage/map/common/errors.js.html +16 -16
  203. package/coverage/map/common/geotiff-grid-source.js.html +267 -267
  204. package/coverage/map/common/grid.js.html +554 -554
  205. package/coverage/map/common/index.html +159 -159
  206. package/coverage/map/common/index.js.html +68 -68
  207. package/coverage/map/common/meteo-model-grid-source.js.html +73 -73
  208. package/coverage/map/common/moment-utils.js.html +18 -18
  209. package/coverage/map/common/opendap-grid-source.js.html +484 -484
  210. package/coverage/map/common/opendap-utils.js.html +353 -353
  211. package/coverage/map/common/permissions.js.html +40 -40
  212. package/coverage/map/common/time-based-grid-source.js.html +59 -59
  213. package/coverage/map/common/tms-utils.js.html +1 -1
  214. package/coverage/map/common/wcs-grid-source.js.html +190 -190
  215. package/coverage/map/common/wcs-utils.js.html +338 -338
  216. package/coverage/map/common/weacast-grid-source.js.html +345 -345
  217. package/coverage/map/common/wfs-utils.js.html +1 -1
  218. package/coverage/map/common/wms-utils.js.html +1 -1
  219. package/coverage/map/common/wmts-utils.js.html +1 -1
  220. package/coverage/tmp/coverage-151198-1753351220086-0.json +1 -0
  221. package/coverage/tmp/coverage-151210-1753351220070-0.json +1 -0
  222. package/coverage/tmp/coverage-151221-1753351129816-0.json +1 -0
  223. package/coverage/tmp/coverage-151233-1753351129803-0.json +1 -0
  224. package/coverage/tmp/coverage-151240-1753351129770-0.json +1 -0
  225. package/coverage/tmp/coverage-151307-1753351220058-0.json +1 -0
  226. package/coverage/tmp/coverage-151319-1753351220044-0.json +1 -0
  227. package/coverage/tmp/coverage-151326-1753351220010-0.json +1 -0
  228. package/map/api/hooks/hooks.query.js +7 -4
  229. package/map/api/services/styles/styles.hooks.js +1 -1
  230. package/map/client/components/KLayerEditor.vue +4 -0
  231. package/map/client/components/catalog/KLayerCategories.vue +2 -0
  232. package/map/client/components/stickies/KAttribution.vue +8 -7
  233. package/map/client/components/stickies/KLevelSlider.vue +10 -8
  234. package/map/client/components/styles/KStyleEditor.vue +1 -1
  235. package/map/client/components/styles/KStyleManager.vue +7 -1
  236. package/map/client/composables/highlight.js +5 -1
  237. package/map/client/i18n/map_en.json +4 -1
  238. package/map/client/i18n/map_fr.json +5 -2
  239. package/map/client/leaflet/utils/utils.geojson.js +5 -4
  240. package/map/client/mixins/globe/mixin.geojson-layers.js +11 -5
  241. package/map/client/mixins/mixin.activity.js +9 -0
  242. package/map/client/utils/utils.layers.js +0 -2
  243. package/package.json +1 -1
  244. package/test/api/core/index.test.js +49 -60
  245. package/test/api/core/push.test.js +1 -1
  246. package/test/api/core/test-log-2025-06-25.log +9 -0
  247. package/test/api/core/test-log-2025-07-24.log +44 -0
  248. package/test/api/map/test-log-2025-05-27.log +13 -0
  249. package/test/api/map/test-log-2025-06-23.log +7 -0
  250. package/test/api/map/test-log-2025-07-24.log +11 -0
  251. package/coverage/tmp/coverage-323534-1747828879483-0.json +0 -1
  252. package/coverage/tmp/coverage-323546-1747828879453-0.json +0 -1
  253. package/coverage/tmp/coverage-323557-1747828879439-0.json +0 -1
  254. package/coverage/tmp/coverage-323569-1747828879416-0.json +0 -1
  255. package/coverage/tmp/coverage-323576-1747828879390-0.json +0 -1
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">93.54% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/93</span>
28
+ <span class='fraction'>87/93</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">72.72% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
35
+ <span class='fraction'>8/11</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">83.33% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>5/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">93.54% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/93</span>
49
+ <span class='fraction'>87/93</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 low'></div>
64
+ <div class='status-line high'></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>
@@ -156,192 +156,192 @@
156
156
  <a name='L91'></a><a href='#L91'>91</a>
157
157
  <a name='L92'></a><a href='#L92'>92</a>
158
158
  <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a></td><td class="line-coverage quiet"><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>
178
- <span class="cline-any cline-no">&nbsp;</span>
179
- <span class="cline-any cline-no">&nbsp;</span>
180
- <span class="cline-any cline-no">&nbsp;</span>
181
- <span class="cline-any cline-no">&nbsp;</span>
182
- <span class="cline-any cline-no">&nbsp;</span>
183
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
189
- <span class="cline-any cline-no">&nbsp;</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
191
- <span class="cline-any cline-no">&nbsp;</span>
192
- <span class="cline-any cline-no">&nbsp;</span>
193
- <span class="cline-any cline-no">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
195
- <span class="cline-any cline-no">&nbsp;</span>
196
- <span class="cline-any cline-no">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
- <span class="cline-any cline-no">&nbsp;</span>
199
- <span class="cline-any cline-no">&nbsp;</span>
200
- <span class="cline-any cline-no">&nbsp;</span>
201
- <span class="cline-any cline-no">&nbsp;</span>
202
- <span class="cline-any cline-no">&nbsp;</span>
203
- <span class="cline-any cline-no">&nbsp;</span>
204
- <span class="cline-any cline-no">&nbsp;</span>
205
- <span class="cline-any cline-no">&nbsp;</span>
206
- <span class="cline-any cline-no">&nbsp;</span>
207
- <span class="cline-any cline-no">&nbsp;</span>
208
- <span class="cline-any cline-no">&nbsp;</span>
209
- <span class="cline-any cline-no">&nbsp;</span>
210
- <span class="cline-any cline-no">&nbsp;</span>
211
- <span class="cline-any cline-no">&nbsp;</span>
212
- <span class="cline-any cline-no">&nbsp;</span>
213
- <span class="cline-any cline-no">&nbsp;</span>
214
- <span class="cline-any cline-no">&nbsp;</span>
215
- <span class="cline-any cline-no">&nbsp;</span>
216
- <span class="cline-any cline-no">&nbsp;</span>
217
- <span class="cline-any cline-no">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&nbsp;</span>
220
- <span class="cline-any cline-no">&nbsp;</span>
221
- <span class="cline-any cline-no">&nbsp;</span>
222
- <span class="cline-any cline-no">&nbsp;</span>
223
- <span class="cline-any cline-no">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-no">&nbsp;</span>
227
- <span class="cline-any cline-no">&nbsp;</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
- <span class="cline-any cline-no">&nbsp;</span>
230
- <span class="cline-any cline-no">&nbsp;</span>
231
- <span class="cline-any cline-no">&nbsp;</span>
232
- <span class="cline-any cline-no">&nbsp;</span>
233
- <span class="cline-any cline-no">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
235
- <span class="cline-any cline-no">&nbsp;</span>
236
- <span class="cline-any cline-no">&nbsp;</span>
237
- <span class="cline-any cline-no">&nbsp;</span>
238
- <span class="cline-any cline-no">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-no">&nbsp;</span>
241
- <span class="cline-any cline-no">&nbsp;</span>
242
- <span class="cline-any cline-no">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-no">&nbsp;</span>
246
- <span class="cline-any cline-no">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import * as GeoTIFF from 'geotiff'</span></span></span>
253
- <span class="cstat-no" title="statement not covered" >import { unitConverters, SortOrder, GridSource, Grid1D } from './grid.js'</span>
254
- <span class="cstat-no" title="statement not covered" >import * as wcs from './wcs-utils.js'</span>
255
- <span class="cstat-no" title="statement not covered" ></span>
256
- <span class="cstat-no" title="statement not covered" >export class WcsGridSource extends GridSource {</span>
257
- <span class="cstat-no" title="statement not covered" > static getKey () {</span>
258
- <span class="cstat-no" title="statement not covered" > return 'wcs'</span>
259
- <span class="cstat-no" title="statement not covered" > }</span>
260
- <span class="cstat-no" title="statement not covered" ></span>
261
- <span class="cstat-no" title="statement not covered" > constructor (options) {</span>
262
- <span class="cstat-no" title="statement not covered" > super(options)</span>
263
- <span class="cstat-no" title="statement not covered" ></span>
264
- <span class="cstat-no" title="statement not covered" > this.usable = false</span>
265
- <span class="cstat-no" title="statement not covered" > }</span>
266
- <span class="cstat-no" title="statement not covered" ></span>
267
- <span class="cstat-no" title="statement not covered" > getBBox () {</span>
268
- <span class="cstat-no" title="statement not covered" > return this.usable ? [this.minMaxLat[0], this.minMaxLon[0], this.minMaxLat[1], this.minMaxLon[1]] : null</span>
269
- <span class="cstat-no" title="statement not covered" > }</span>
270
- <span class="cstat-no" title="statement not covered" ></span>
271
- <span class="cstat-no" title="statement not covered" > getDataBounds () {</span>
159
+ <a name='L94'></a><a href='#L94'>94</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
160
+ <span class="cline-any cline-yes">1x</span>
161
+ <span class="cline-any cline-yes">1x</span>
162
+ <span class="cline-any cline-yes">1x</span>
163
+ <span class="cline-any cline-yes">1x</span>
164
+ <span class="cline-any cline-yes">1x</span>
165
+ <span class="cline-any cline-yes">1x</span>
166
+ <span class="cline-any cline-yes">1x</span>
167
+ <span class="cline-any cline-yes">1x</span>
168
+ <span class="cline-any cline-yes">1x</span>
169
+ <span class="cline-any cline-yes">1x</span>
170
+ <span class="cline-any cline-yes">1x</span>
171
+ <span class="cline-any cline-yes">1x</span>
172
+ <span class="cline-any cline-yes">1x</span>
173
+ <span class="cline-any cline-yes">1x</span>
174
+ <span class="cline-any cline-yes">1x</span>
175
+ <span class="cline-any cline-yes">1x</span>
176
+ <span class="cline-any cline-yes">1x</span>
177
+ <span class="cline-any cline-yes">1x</span>
178
+ <span class="cline-any cline-yes">1x</span>
179
+ <span class="cline-any cline-no">&nbsp;</span>
180
+ <span class="cline-any cline-no">&nbsp;</span>
181
+ <span class="cline-any cline-yes">1x</span>
182
+ <span class="cline-any cline-yes">1x</span>
183
+ <span class="cline-any cline-yes">1x</span>
184
+ <span class="cline-any cline-yes">1x</span>
185
+ <span class="cline-any cline-yes">1x</span>
186
+ <span class="cline-any cline-yes">1x</span>
187
+ <span class="cline-any cline-yes">1x</span>
188
+ <span class="cline-any cline-yes">1x</span>
189
+ <span class="cline-any cline-yes">1x</span>
190
+ <span class="cline-any cline-yes">1x</span>
191
+ <span class="cline-any cline-yes">1x</span>
192
+ <span class="cline-any cline-yes">1x</span>
193
+ <span class="cline-any cline-yes">1x</span>
194
+ <span class="cline-any cline-yes">1x</span>
195
+ <span class="cline-any cline-yes">1x</span>
196
+ <span class="cline-any cline-yes">1x</span>
197
+ <span class="cline-any cline-yes">1x</span>
198
+ <span class="cline-any cline-yes">1x</span>
199
+ <span class="cline-any cline-yes">1x</span>
200
+ <span class="cline-any cline-yes">1x</span>
201
+ <span class="cline-any cline-yes">1x</span>
202
+ <span class="cline-any cline-yes">1x</span>
203
+ <span class="cline-any cline-yes">1x</span>
204
+ <span class="cline-any cline-yes">1x</span>
205
+ <span class="cline-any cline-yes">1x</span>
206
+ <span class="cline-any cline-yes">1x</span>
207
+ <span class="cline-any cline-yes">1x</span>
208
+ <span class="cline-any cline-yes">1x</span>
209
+ <span class="cline-any cline-yes">1x</span>
210
+ <span class="cline-any cline-yes">1x</span>
211
+ <span class="cline-any cline-yes">1x</span>
212
+ <span class="cline-any cline-yes">1x</span>
213
+ <span class="cline-any cline-no">&nbsp;</span>
214
+ <span class="cline-any cline-no">&nbsp;</span>
215
+ <span class="cline-any cline-no">&nbsp;</span>
216
+ <span class="cline-any cline-no">&nbsp;</span>
217
+ <span class="cline-any cline-yes">1x</span>
218
+ <span class="cline-any cline-yes">1x</span>
219
+ <span class="cline-any cline-yes">1x</span>
220
+ <span class="cline-any cline-yes">1x</span>
221
+ <span class="cline-any cline-yes">1x</span>
222
+ <span class="cline-any cline-yes">1x</span>
223
+ <span class="cline-any cline-yes">1x</span>
224
+ <span class="cline-any cline-yes">1x</span>
225
+ <span class="cline-any cline-yes">1x</span>
226
+ <span class="cline-any cline-yes">1x</span>
227
+ <span class="cline-any cline-yes">1x</span>
228
+ <span class="cline-any cline-yes">1x</span>
229
+ <span class="cline-any cline-yes">1x</span>
230
+ <span class="cline-any cline-yes">1x</span>
231
+ <span class="cline-any cline-yes">1x</span>
232
+ <span class="cline-any cline-yes">1x</span>
233
+ <span class="cline-any cline-yes">1x</span>
234
+ <span class="cline-any cline-yes">1x</span>
235
+ <span class="cline-any cline-yes">1x</span>
236
+ <span class="cline-any cline-yes">1x</span>
237
+ <span class="cline-any cline-yes">1x</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-yes">1x</span>
240
+ <span class="cline-any cline-yes">1x</span>
241
+ <span class="cline-any cline-yes">1x</span>
242
+ <span class="cline-any cline-yes">1x</span>
243
+ <span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-yes">1x</span>
246
+ <span class="cline-any cline-yes">1x</span>
247
+ <span class="cline-any cline-yes">1x</span>
248
+ <span class="cline-any cline-yes">1x</span>
249
+ <span class="cline-any cline-yes">1x</span>
250
+ <span class="cline-any cline-yes">1x</span>
251
+ <span class="cline-any cline-yes">1x</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import * as GeoTIFF from 'geotiff'
253
+ import { unitConverters, SortOrder, GridSource, Grid1D } from './grid.js'
254
+ import * as wcs from './wcs-utils.js'
255
+ &nbsp;
256
+ export class WcsGridSource extends GridSource {
257
+ static getKey () {
258
+ return 'wcs'
259
+ }
260
+ &nbsp;
261
+ constructor (options) {
262
+ super(options)
263
+ &nbsp;
264
+ this.usable = false
265
+ }
266
+ &nbsp;
267
+ getBBox () {
268
+ return this.usable ? [this.minMaxLat[0], this.minMaxLon[0], this.minMaxLat[1], this.minMaxLon[1]] <span class="branch-0 cbranch-no" title="branch not covered" >: null</span>
269
+ }
270
+ &nbsp;
271
+ <span class="fstat-no" title="function not covered" > getDataBounds () {</span>
272
272
  <span class="cstat-no" title="statement not covered" > return this.usable ? this.minMaxVal : null</span>
273
273
  <span class="cstat-no" title="statement not covered" > }</span>
274
- <span class="cstat-no" title="statement not covered" ></span>
275
- <span class="cstat-no" title="statement not covered" > async setup (config) {</span>
276
- <span class="cstat-no" title="statement not covered" > this.usable = false</span>
277
- <span class="cstat-no" title="statement not covered" > ++this.sourceKey</span>
278
- <span class="cstat-no" title="statement not covered" ></span>
279
- <span class="cstat-no" title="statement not covered" > this.minMaxLat = null</span>
280
- <span class="cstat-no" title="statement not covered" > this.minMaxLon = null</span>
281
- <span class="cstat-no" title="statement not covered" > this.minMaxVal = null</span>
282
- <span class="cstat-no" title="statement not covered" ></span>
283
- <span class="cstat-no" title="statement not covered" > this.queryFormat = null</span>
284
- <span class="cstat-no" title="statement not covered" ></span>
285
- <span class="cstat-no" title="statement not covered" > this.config = config</span>
286
- <span class="cstat-no" title="statement not covered" > this.converter = unitConverters[config.converter]</span>
287
- <span class="cstat-no" title="statement not covered" ></span>
288
- <span class="cstat-no" title="statement not covered" > // const caps = await wcs.GetCapabilities(this.config.url)</span>
289
- <span class="cstat-no" title="statement not covered" ></span>
290
- <span class="cstat-no" title="statement not covered" > // check image/tiff is supported</span>
291
- <span class="cstat-no" title="statement not covered" > // const formats = wcs.GetSupportedFormats(caps)</span>
292
- <span class="cstat-no" title="statement not covered" > // make sure coverage is available</span>
293
- <span class="cstat-no" title="statement not covered" > // const coverages = wcs.GetOfferedCoverages(caps)</span>
294
- <span class="cstat-no" title="statement not covered" ></span>
295
- <span class="cstat-no" title="statement not covered" > // use DescribeCoverage to find out bbox</span>
296
- <span class="cstat-no" title="statement not covered" > try {</span>
297
- <span class="cstat-no" title="statement not covered" > const coverage = await wcs.DescribeCoverage(this.config.url, this.config.version, this.config.coverage, this.config.searchParams, this.config.headers)</span>
298
- <span class="cstat-no" title="statement not covered" > const bounds = wcs.GetCoverageSpatialBounds(coverage)</span>
299
- <span class="cstat-no" title="statement not covered" > const formats = wcs.GetSupportedFormats(coverage)</span>
300
- <span class="cstat-no" title="statement not covered" ></span>
301
- <span class="cstat-no" title="statement not covered" > this.queryFormat = formats[0]</span>
302
- <span class="cstat-no" title="statement not covered" > this.minMaxLat = [bounds[0], bounds[2]]</span>
303
- <span class="cstat-no" title="statement not covered" > this.minMaxLon = [bounds[1], bounds[3]]</span>
304
- <span class="cstat-no" title="statement not covered" > this.usable = true</span>
305
- <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
274
+ &nbsp;
275
+ async setup (config) {
276
+ this.usable = false
277
+ ++this.sourceKey
278
+ &nbsp;
279
+ this.minMaxLat = null
280
+ this.minMaxLon = null
281
+ this.minMaxVal = null
282
+ &nbsp;
283
+ this.queryFormat = null
284
+ &nbsp;
285
+ this.config = config
286
+ this.converter = unitConverters[config.converter]
287
+ &nbsp;
288
+ // const caps = await wcs.GetCapabilities(this.config.url)
289
+ &nbsp;
290
+ // check image/tiff is supported
291
+ // const formats = wcs.GetSupportedFormats(caps)
292
+ // make sure coverage is available
293
+ // const coverages = wcs.GetOfferedCoverages(caps)
294
+ &nbsp;
295
+ // use DescribeCoverage to find out bbox
296
+ try {
297
+ const coverage = await wcs.DescribeCoverage(this.config.url, this.config.version, this.config.coverage, this.config.searchParams, this.config.headers)
298
+ const bounds = wcs.GetCoverageSpatialBounds(coverage)
299
+ const formats = wcs.GetSupportedFormats(coverage)
300
+ &nbsp;
301
+ this.queryFormat = formats[0]
302
+ this.minMaxLat = [bounds[0], bounds[2]]
303
+ this.minMaxLon = [bounds[1], bounds[3]]
304
+ this.usable = true
305
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
306
306
  <span class="cstat-no" title="statement not covered" > // fetching may fail, in this case the source</span>
307
307
  <span class="cstat-no" title="statement not covered" > // will remain in unusable state</span>
308
308
  <span class="cstat-no" title="statement not covered" > console.log(`Failed fetching wcs from ${this.config.url}`)</span>
309
309
  <span class="cstat-no" title="statement not covered" > }</span>
310
- <span class="cstat-no" title="statement not covered" ></span>
311
- <span class="cstat-no" title="statement not covered" > this.dataChanged()</span>
312
- <span class="cstat-no" title="statement not covered" > }</span>
313
- <span class="cstat-no" title="statement not covered" ></span>
314
- <span class="cstat-no" title="statement not covered" > async fetch (abort, bbox, resolution) {</span>
315
- <span class="cstat-no" title="statement not covered" > if (!this.usable) { return null }</span>
316
- <span class="cstat-no" title="statement not covered" ></span>
317
- <span class="cstat-no" title="statement not covered" > const sourceKey = this.sourceKey</span>
318
- <span class="cstat-no" title="statement not covered" ></span>
319
- <span class="cstat-no" title="statement not covered" > const reqMinLat = bbox[0]</span>
320
- <span class="cstat-no" title="statement not covered" > const reqMinLon = bbox[1]</span>
321
- <span class="cstat-no" title="statement not covered" > const reqMaxLat = bbox[2]</span>
322
- <span class="cstat-no" title="statement not covered" > const reqMaxLon = bbox[3]</span>
323
- <span class="cstat-no" title="statement not covered" > const width = 1 + Math.trunc((bbox[3] - bbox[1]) / resolution[1])</span>
324
- <span class="cstat-no" title="statement not covered" > const height = 1 + Math.trunc((bbox[2] - bbox[0]) / resolution[0])</span>
325
- <span class="cstat-no" title="statement not covered" ></span>
326
- <span class="cstat-no" title="statement not covered" > const wcsbbox = [reqMinLon, reqMinLat, reqMaxLon, reqMaxLat]</span>
327
- <span class="cstat-no" title="statement not covered" ></span>
328
- <span class="cstat-no" title="statement not covered" > const image = await wcs.GetCoverage(abort, this.config.url, this.config.version, this.config.coverage, this.queryFormat, wcsbbox, width, height, this.config.searchParams, this.config.headers)</span>
329
- <span class="cstat-no" title="statement not covered" > // geotiff.js will try to use a FileReader to read from the blob</span>
330
- <span class="cstat-no" title="statement not covered" > // this class doesn't exist in node.js so we use fromArrayBuffer</span>
331
- <span class="cstat-no" title="statement not covered" > // .then(blob =&gt; GeoTIFF.fromBlob(blob))</span>
332
- <span class="cstat-no" title="statement not covered" > .then(buffer =&gt; GeoTIFF.fromArrayBuffer(buffer))</span>
333
- <span class="cstat-no" title="statement not covered" > .then(tiff =&gt; tiff.getImage())</span>
334
- <span class="cstat-no" title="statement not covered" > const data = image.readRasters()</span>
335
- <span class="cstat-no" title="statement not covered" > const databbox = image.getBoundingBox()</span>
336
- <span class="cstat-no" title="statement not covered" > const gridbbox = [databbox[1], databbox[0], databbox[3], databbox[2]]</span>
337
- <span class="cstat-no" title="statement not covered" > const dimensions = [image.getHeight(), image.getWidth()]</span>
338
- <span class="cstat-no" title="statement not covered" > return new Grid1D(</span>
339
- <span class="cstat-no" title="statement not covered" > sourceKey,</span>
340
- <span class="cstat-no" title="statement not covered" > gridbbox, dimensions,</span>
341
- <span class="cstat-no" title="statement not covered" > (await data)[0], true, SortOrder.DESCENDING, SortOrder.ASCENDING,</span>
342
- <span class="cstat-no" title="statement not covered" > this.nodata, this.converter)</span>
343
- <span class="cstat-no" title="statement not covered" > }</span>
344
- <span class="cstat-no" title="statement not covered" >}</span>
310
+ &nbsp;
311
+ this.dataChanged()
312
+ }
313
+ &nbsp;
314
+ async fetch (abort, bbox, resolution) {
315
+ if (!this.usable) <span class="branch-0 cbranch-no" title="branch not covered" >{ return null }</span>
316
+ &nbsp;
317
+ const sourceKey = this.sourceKey
318
+ &nbsp;
319
+ const reqMinLat = bbox[0]
320
+ const reqMinLon = bbox[1]
321
+ const reqMaxLat = bbox[2]
322
+ const reqMaxLon = bbox[3]
323
+ const width = 1 + Math.trunc((bbox[3] - bbox[1]) / resolution[1])
324
+ const height = 1 + Math.trunc((bbox[2] - bbox[0]) / resolution[0])
325
+ &nbsp;
326
+ const wcsbbox = [reqMinLon, reqMinLat, reqMaxLon, reqMaxLat]
327
+ &nbsp;
328
+ const image = await wcs.GetCoverage(abort, this.config.url, this.config.version, this.config.coverage, this.queryFormat, wcsbbox, width, height, this.config.searchParams, this.config.headers)
329
+ // geotiff.js will try to use a FileReader to read from the blob
330
+ // this class doesn't exist in node.js so we use fromArrayBuffer
331
+ // .then(blob =&gt; GeoTIFF.fromBlob(blob))
332
+ .then(buffer =&gt; GeoTIFF.fromArrayBuffer(buffer))
333
+ .then(tiff =&gt; tiff.getImage())
334
+ const data = image.readRasters()
335
+ const databbox = image.getBoundingBox()
336
+ const gridbbox = [databbox[1], databbox[0], databbox[3], databbox[2]]
337
+ const dimensions = [image.getHeight(), image.getWidth()]
338
+ return new Grid1D(
339
+ sourceKey,
340
+ gridbbox, dimensions,
341
+ (await data)[0], true, SortOrder.DESCENDING, SortOrder.ASCENDING,
342
+ this.nodata, this.converter)
343
+ }
344
+ }
345
345
  &nbsp;</pre></td></tr></table></pre>
346
346
 
347
347
  <div class='push'></div><!-- for sticky footer -->
@@ -349,7 +349,7 @@
349
349
  <div class='footer quiet pad2 space-top1 center small'>
350
350
  Code coverage generated by
351
351
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
352
- at 2025-05-21T12:01:19.803Z
352
+ at 2025-07-24T10:00:20.476Z
353
353
  </div>
354
354
  <script src="../../prettify.js"></script>
355
355
  <script>