@kalisio/kdk 1.3.5 → 1.4.2

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 (535) hide show
  1. package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +1 -0
  2. package/.nyc_output/{0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json → 2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json} +0 -0
  3. package/.nyc_output/{20df4355-911a-4b16-a8ab-d3392e9f0a7f.json → 81d21e46-766a-46bc-b1b7-143ca577347a.json} +0 -0
  4. package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
  5. package/.nyc_output/{257af0bb-96c3-465a-b5ef-a1df60078d5f.json → aaf3ebbb-f895-4d7b-9255-bc5dee832570.json} +0 -0
  6. package/.nyc_output/{284aebfa-23fd-425f-9d72-e4b8904dc224.json → dbeb2602-0ac2-4e66-978b-0d29548359ca.json} +0 -0
  7. package/.nyc_output/{5cbee06e-be6e-468a-bd78-4793ee785fe4.json → e47d1e4c-2fff-4dcb-908f-d3081162547c.json} +0 -0
  8. package/.nyc_output/processinfo/{2bece194-92f7-4971-a688-10604044a7fa.json → 2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json} +1 -1
  9. package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +1 -0
  10. package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +1 -0
  11. package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
  12. package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +1 -0
  13. package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +1 -0
  14. package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +1 -0
  15. package/.nyc_output/processinfo/index.json +1 -1
  16. package/CHANGELOG.md +189 -67
  17. package/README.md +1 -1
  18. package/coverage/core/api/application.js.html +145 -145
  19. package/coverage/core/api/authentication.js.html +37 -37
  20. package/coverage/core/api/db.js.html +74 -74
  21. package/coverage/core/api/hooks/hooks.account.js.html +15 -15
  22. package/coverage/core/api/hooks/hooks.authentication.js.html +16 -16
  23. package/coverage/core/api/hooks/hooks.authorisations.js.html +112 -121
  24. package/coverage/core/api/hooks/hooks.devices.js.html +5 -5
  25. package/coverage/core/api/hooks/hooks.groups.js.html +3 -3
  26. package/coverage/core/api/hooks/hooks.logger.js.html +7 -7
  27. package/coverage/core/api/hooks/hooks.model.js.html +149 -149
  28. package/coverage/core/api/hooks/hooks.organisations.js.html +13 -61
  29. package/coverage/core/api/hooks/hooks.pusher.js.html +7 -7
  30. package/coverage/core/api/hooks/hooks.query.js.html +68 -32
  31. package/coverage/core/api/hooks/hooks.service.js.html +15 -15
  32. package/coverage/core/api/hooks/hooks.storage.js.html +5 -5
  33. package/coverage/core/api/hooks/hooks.tags.js.html +7 -7
  34. package/coverage/core/api/hooks/hooks.users.js.html +111 -63
  35. package/coverage/core/api/hooks/index.html +72 -72
  36. package/coverage/core/api/hooks/index.js.html +15 -15
  37. package/coverage/core/api/index.html +35 -35
  38. package/coverage/core/api/index.js.html +13 -13
  39. package/coverage/core/api/marshall.js.html +81 -81
  40. package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
  41. package/coverage/core/api/models/index.html +1 -1
  42. package/coverage/core/api/models/organisations.model.mongodb.js.html +1 -1
  43. package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
  44. package/coverage/core/api/models/users.model.mongodb.js.html +7 -7
  45. package/coverage/core/api/oauth2-handler.js.html +3 -3
  46. package/coverage/core/api/oauth2-verifier.js.html +5 -5
  47. package/coverage/core/api/services/account/account.hooks.js.html +1 -1
  48. package/coverage/core/api/services/account/account.service.js.html +34 -34
  49. package/coverage/core/api/services/account/index.html +17 -17
  50. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
  51. package/coverage/core/api/services/authorisations/authorisations.service.js.html +40 -37
  52. package/coverage/core/api/services/authorisations/index.html +17 -17
  53. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  54. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  55. package/coverage/core/api/services/databases/index.html +1 -1
  56. package/coverage/core/api/services/devices/devices.hooks.js.html +1 -1
  57. package/coverage/core/api/services/devices/devices.service.js.html +1 -1
  58. package/coverage/core/api/services/devices/index.html +1 -1
  59. package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
  60. package/coverage/core/api/services/groups/index.html +1 -1
  61. package/coverage/core/api/services/index.html +5 -5
  62. package/coverage/core/api/services/index.js.html +40 -40
  63. package/coverage/core/api/services/mailer/index.html +1 -1
  64. package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
  65. package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
  66. package/coverage/core/api/services/organisations/index.html +1 -1
  67. package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
  68. package/coverage/core/api/services/organisations/organisations.service.js.html +1 -1
  69. package/coverage/core/api/services/pusher/index.html +1 -1
  70. package/coverage/core/api/services/pusher/pusher.channels.js.html +1 -1
  71. package/coverage/core/api/services/pusher/pusher.hooks.js.html +1 -1
  72. package/coverage/core/api/services/pusher/pusher.service.js.html +1 -1
  73. package/coverage/core/api/services/storage/index.html +1 -1
  74. package/coverage/core/api/services/storage/storage.hooks.js.html +4 -4
  75. package/coverage/core/api/services/tags/index.html +1 -1
  76. package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
  77. package/coverage/core/api/services/users/index.html +1 -1
  78. package/coverage/core/api/services/users/users.hooks.js.html +12 -12
  79. package/coverage/core/common/index.html +32 -32
  80. package/coverage/core/common/index.js.html +27 -27
  81. package/coverage/core/common/permissions.js.html +135 -75
  82. package/coverage/index.html +157 -157
  83. package/coverage/lcov-report/core/api/application.js.html +145 -145
  84. package/coverage/lcov-report/core/api/authentication.js.html +37 -37
  85. package/coverage/lcov-report/core/api/db.js.html +74 -74
  86. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +15 -15
  87. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +16 -16
  88. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +112 -121
  89. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +5 -5
  90. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +3 -3
  91. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +7 -7
  92. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +149 -149
  93. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +13 -61
  94. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +7 -7
  95. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +68 -32
  96. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +15 -15
  97. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +5 -5
  98. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +7 -7
  99. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +111 -63
  100. package/coverage/lcov-report/core/api/hooks/index.html +72 -72
  101. package/coverage/lcov-report/core/api/hooks/index.js.html +15 -15
  102. package/coverage/lcov-report/core/api/index.html +35 -35
  103. package/coverage/lcov-report/core/api/index.js.html +13 -13
  104. package/coverage/lcov-report/core/api/marshall.js.html +81 -81
  105. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
  106. package/coverage/lcov-report/core/api/models/index.html +1 -1
  107. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +1 -1
  108. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
  109. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +7 -7
  110. package/coverage/lcov-report/core/api/oauth2-handler.js.html +3 -3
  111. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +5 -5
  112. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +1 -1
  113. package/coverage/lcov-report/core/api/services/account/account.service.js.html +34 -34
  114. package/coverage/lcov-report/core/api/services/account/index.html +17 -17
  115. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
  116. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +40 -37
  117. package/coverage/lcov-report/core/api/services/authorisations/index.html +17 -17
  118. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  119. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  120. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  121. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +1 -1
  122. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +1 -1
  123. package/coverage/lcov-report/core/api/services/devices/index.html +1 -1
  124. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
  125. package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
  126. package/coverage/lcov-report/core/api/services/index.html +5 -5
  127. package/coverage/lcov-report/core/api/services/index.js.html +40 -40
  128. package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
  129. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
  130. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
  131. package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
  132. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
  133. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +1 -1
  134. package/coverage/lcov-report/core/api/services/pusher/index.html +1 -1
  135. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +1 -1
  136. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +1 -1
  137. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +1 -1
  138. package/coverage/lcov-report/core/api/services/storage/index.html +1 -1
  139. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +4 -4
  140. package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
  141. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
  142. package/coverage/lcov-report/core/api/services/users/index.html +1 -1
  143. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +12 -12
  144. package/coverage/lcov-report/core/common/index.html +32 -32
  145. package/coverage/lcov-report/core/common/index.js.html +27 -27
  146. package/coverage/lcov-report/core/common/permissions.js.html +135 -75
  147. package/coverage/lcov-report/index.html +157 -157
  148. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +55 -55
  149. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +337 -274
  150. package/coverage/lcov-report/map/api/hooks/index.html +43 -43
  151. package/coverage/lcov-report/map/api/hooks/index.js.html +12 -12
  152. package/coverage/lcov-report/map/api/index.html +31 -31
  153. package/coverage/lcov-report/map/api/index.js.html +24 -24
  154. package/coverage/lcov-report/map/api/marshall.js.html +39 -39
  155. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +20 -20
  156. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +22 -22
  157. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +24 -24
  158. package/coverage/lcov-report/map/api/models/index.html +43 -43
  159. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +21 -21
  160. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +156 -156
  161. package/coverage/lcov-report/map/api/services/alerts/index.html +30 -30
  162. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +19 -19
  163. package/coverage/lcov-report/map/api/services/catalog/index.html +17 -17
  164. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  165. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  166. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +20 -20
  167. package/coverage/lcov-report/map/api/services/features/index.html +21 -21
  168. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
  169. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +99 -99
  170. package/coverage/lcov-report/map/api/services/geocoder/index.html +28 -28
  171. package/coverage/lcov-report/map/api/services/index.html +21 -21
  172. package/coverage/lcov-report/map/api/services/index.js.html +71 -71
  173. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  174. package/coverage/lcov-report/map/common/errors.js.html +9 -9
  175. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +120 -120
  176. package/coverage/lcov-report/map/common/grid.js.html +268 -268
  177. package/coverage/lcov-report/map/common/index.html +149 -149
  178. package/coverage/lcov-report/map/common/index.js.html +31 -31
  179. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +71 -71
  180. package/coverage/lcov-report/map/common/moment-utils.js.html +14 -14
  181. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +280 -280
  182. package/coverage/lcov-report/map/common/opendap-utils.js.html +220 -220
  183. package/coverage/lcov-report/map/common/permissions.js.html +21 -21
  184. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +51 -51
  185. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  186. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +99 -99
  187. package/coverage/lcov-report/map/common/wcs-utils.js.html +66 -66
  188. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +196 -196
  189. package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
  190. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  191. package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
  192. package/coverage/lcov.info +3588 -3659
  193. package/coverage/map/api/hooks/hooks.catalog.js.html +55 -55
  194. package/coverage/map/api/hooks/hooks.query.js.html +337 -274
  195. package/coverage/map/api/hooks/index.html +43 -43
  196. package/coverage/map/api/hooks/index.js.html +12 -12
  197. package/coverage/map/api/index.html +31 -31
  198. package/coverage/map/api/index.js.html +24 -24
  199. package/coverage/map/api/marshall.js.html +39 -39
  200. package/coverage/map/api/models/alerts.model.mongodb.js.html +20 -20
  201. package/coverage/map/api/models/catalog.model.mongodb.js.html +22 -22
  202. package/coverage/map/api/models/features.model.mongodb.js.html +24 -24
  203. package/coverage/map/api/models/index.html +43 -43
  204. package/coverage/map/api/services/alerts/alerts.hooks.js.html +21 -21
  205. package/coverage/map/api/services/alerts/alerts.service.js.html +156 -156
  206. package/coverage/map/api/services/alerts/index.html +30 -30
  207. package/coverage/map/api/services/catalog/catalog.hooks.js.html +19 -19
  208. package/coverage/map/api/services/catalog/index.html +17 -17
  209. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  210. package/coverage/map/api/services/daptiles/index.html +1 -1
  211. package/coverage/map/api/services/features/features.hooks.js.html +20 -20
  212. package/coverage/map/api/services/features/index.html +21 -21
  213. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
  214. package/coverage/map/api/services/geocoder/geocoder.service.js.html +99 -99
  215. package/coverage/map/api/services/geocoder/index.html +28 -28
  216. package/coverage/map/api/services/index.html +21 -21
  217. package/coverage/map/api/services/index.js.html +71 -71
  218. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  219. package/coverage/map/common/errors.js.html +9 -9
  220. package/coverage/map/common/geotiff-grid-source.js.html +120 -120
  221. package/coverage/map/common/grid.js.html +268 -268
  222. package/coverage/map/common/index.html +149 -149
  223. package/coverage/map/common/index.js.html +31 -31
  224. package/coverage/map/common/meteo-model-grid-source.js.html +71 -71
  225. package/coverage/map/common/moment-utils.js.html +14 -14
  226. package/coverage/map/common/opendap-grid-source.js.html +280 -280
  227. package/coverage/map/common/opendap-utils.js.html +220 -220
  228. package/coverage/map/common/permissions.js.html +21 -21
  229. package/coverage/map/common/time-based-grid-source.js.html +51 -51
  230. package/coverage/map/common/tms-utils.js.html +1 -1
  231. package/coverage/map/common/wcs-grid-source.js.html +99 -99
  232. package/coverage/map/common/wcs-utils.js.html +66 -66
  233. package/coverage/map/common/weacast-grid-source.js.html +196 -196
  234. package/coverage/map/common/wfs-utils.js.html +8 -5
  235. package/coverage/map/common/wms-utils.js.html +1 -1
  236. package/coverage/map/common/wmts-utils.js.html +71 -11
  237. package/extras/icons/kanban.png +0 -0
  238. package/extras/testcafe/page-models/map/catalog.js +2 -2
  239. package/extras/tours/core/add-member.js +10 -1
  240. package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
  241. package/extras/tours/core/groups.js +8 -2
  242. package/extras/tours/core/members.js +11 -21
  243. package/extras/tours/core/tags.js +7 -1
  244. package/extras/tours/map/catalog-categories.js +4 -4
  245. package/extras/tours/map/catalog-panel.js +16 -16
  246. package/extras/tours/map/favorite-views.js +3 -3
  247. package/lib/core/api/hooks/hooks.authorisations.js +149 -140
  248. package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
  249. package/lib/core/api/hooks/hooks.organisations.js +1 -23
  250. package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
  251. package/lib/core/api/hooks/hooks.query.js +22 -0
  252. package/lib/core/api/hooks/hooks.query.js.map +1 -1
  253. package/lib/core/api/hooks/hooks.users.js +34 -18
  254. package/lib/core/api/hooks/hooks.users.js.map +1 -1
  255. package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
  256. package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
  257. package/lib/core/client/api.js +1 -0
  258. package/lib/core/client/api.js.map +1 -1
  259. package/lib/core/client/components/account/KAccountDZ.vue +3 -4
  260. package/lib/core/client/components/account/KAccountDevices.vue +5 -6
  261. package/lib/core/client/components/account/KDeviceCard.vue +2 -1
  262. package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
  263. package/lib/core/client/components/collection/KBoard.vue +26 -155
  264. package/lib/core/client/components/collection/KCard.vue +144 -42
  265. package/lib/core/client/components/collection/KCardSection.vue +52 -0
  266. package/lib/core/client/components/collection/KColumn.vue +181 -0
  267. package/lib/core/client/components/collection/KGrid.vue +13 -18
  268. package/lib/core/client/components/collection/KHistory.vue +61 -89
  269. package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
  270. package/lib/core/client/components/collection/KItem.vue +21 -2
  271. package/lib/core/client/components/collection/KList.vue +9 -12
  272. package/lib/core/client/components/collection/KTable.vue +33 -39
  273. package/lib/core/client/components/collection/index.js +6 -1
  274. package/lib/core/client/components/collection/index.js.map +1 -1
  275. package/lib/core/client/components/editor/KEditor.vue +0 -6
  276. package/lib/core/client/components/editor/KModalEditor.vue +4 -4
  277. package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
  278. package/lib/core/client/components/form/KAttachmentField.vue +10 -10
  279. package/lib/core/client/components/form/KChipsField.vue +28 -23
  280. package/lib/core/client/components/form/KColorField.vue +30 -25
  281. package/lib/core/client/components/form/KForm.vue +0 -12
  282. package/lib/core/client/components/form/KIconField.vue +1 -0
  283. package/lib/core/client/components/form/KItemField.vue +8 -4
  284. package/lib/core/client/components/form/KRoleField.vue +56 -0
  285. package/lib/core/client/components/form/KSelectField.vue +16 -1
  286. package/lib/core/client/components/form/KView.vue +5 -14
  287. package/lib/core/client/components/frame/KAction.vue +18 -12
  288. package/lib/core/client/components/frame/KAvatar.vue +3 -3
  289. package/lib/core/client/components/frame/KChart.vue +60 -0
  290. package/lib/core/client/components/frame/KChipsPane.vue +80 -0
  291. package/lib/core/client/components/frame/KContent.vue +1 -1
  292. package/lib/core/client/components/frame/KModal.vue +30 -44
  293. package/lib/core/client/components/frame/KPanel.vue +1 -1
  294. package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
  295. package/lib/core/client/components/frame/KSpot.vue +31 -0
  296. package/lib/core/client/components/frame/KStamp.vue +62 -0
  297. package/lib/core/client/components/frame/index.js +56 -1
  298. package/lib/core/client/components/frame/index.js.map +1 -1
  299. package/lib/core/client/components/input/KColorChooser.vue +16 -8
  300. package/lib/core/client/components/input/KIconChooser.vue +2 -1
  301. package/lib/core/client/components/input/KUploader.vue +14 -5
  302. package/lib/core/client/components/layout/KAbout.vue +9 -3
  303. package/lib/core/client/components/layout/KFab.vue +1 -1
  304. package/lib/core/client/components/layout/KPage.vue +44 -19
  305. package/lib/core/client/components/layout/KTour.vue +2 -2
  306. package/lib/core/client/components/layout/KWelcome.vue +13 -12
  307. package/lib/core/client/components/layout/KWindow.vue +1 -1
  308. package/lib/core/client/components/media/KImageViewer.vue +9 -7
  309. package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
  310. package/lib/core/client/components/menu/KMenu.vue +103 -0
  311. package/lib/core/client/components/team/KAddMember.vue +17 -9
  312. package/lib/core/client/components/team/KChangeRole.vue +5 -7
  313. package/lib/core/client/components/team/KGroupCard.vue +34 -51
  314. package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
  315. package/lib/core/client/components/team/KJoinGroup.vue +5 -7
  316. package/lib/core/client/components/team/KMemberCard.vue +104 -63
  317. package/lib/core/client/components/team/KMembersActivity.vue +9 -2
  318. package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
  319. package/lib/core/client/components/team/KTagCard.vue +26 -26
  320. package/lib/core/client/components/team/KTagsActivity.vue +9 -2
  321. package/lib/core/client/components/time/KTimeRange.vue +144 -0
  322. package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
  323. package/lib/core/client/components/viewer/KViewer.vue +0 -6
  324. package/lib/core/client/i18n/core_en.json +133 -93
  325. package/lib/core/client/i18n/core_fr.json +56 -16
  326. package/lib/core/client/index.js +28 -14
  327. package/lib/core/client/index.js.map +1 -1
  328. package/lib/core/client/mixins/mixin.authorisation.js +28 -18
  329. package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
  330. package/lib/core/client/mixins/mixin.base-collection.js +57 -9
  331. package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
  332. package/lib/core/client/mixins/mixin.base-context.js +1 -1
  333. package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
  334. package/lib/core/client/mixins/mixin.base-editor.js +26 -16
  335. package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
  336. package/lib/core/client/mixins/mixin.base-field.js +0 -4
  337. package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
  338. package/lib/core/client/mixins/mixin.base-item.js +29 -14
  339. package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
  340. package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
  341. package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
  342. package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
  343. package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
  344. package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
  345. package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
  346. package/lib/core/client/mixins/mixin.service.js +5 -33
  347. package/lib/core/client/mixins/mixin.service.js.map +1 -1
  348. package/lib/core/client/services/index.js +23 -0
  349. package/lib/core/client/services/index.js.map +1 -1
  350. package/lib/core/client/services/local-settings.service.js +4 -0
  351. package/lib/core/client/services/local-settings.service.js.map +1 -1
  352. package/lib/core/client/time.js +131 -0
  353. package/lib/core/client/time.js.map +1 -0
  354. package/lib/core/common/permissions.js +65 -23
  355. package/lib/core/common/permissions.js.map +1 -1
  356. package/lib/core/common/schemas/groups.create.json +1 -1
  357. package/lib/core/common/schemas/groups.update.json +1 -1
  358. package/lib/core/common/schemas/organisations.create.json +1 -1
  359. package/lib/core/common/schemas/organisations.update.json +2 -2
  360. package/lib/core/common/schemas/settings.update.json +139 -0
  361. package/lib/core/common/schemas/tags.update.json +9 -1
  362. package/lib/map/api/hooks/hooks.query.js +48 -27
  363. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  364. package/lib/map/api/services/features/features.hooks.js +1 -1
  365. package/lib/map/api/services/features/features.hooks.js.map +1 -1
  366. package/lib/map/client/components/KColorLegend.vue +25 -23
  367. package/lib/map/client/components/KFavoriteViews.vue +71 -35
  368. package/lib/map/client/components/KFeaturesChart.vue +11 -9
  369. package/lib/map/client/components/KFeaturesFilter.vue +15 -7
  370. package/lib/map/client/components/KFeaturesTable.vue +27 -2
  371. package/lib/map/client/components/KLayerEditionToolbar.vue +43 -0
  372. package/lib/map/client/components/KLayerStyleEditor.vue +10 -4
  373. package/lib/map/client/components/KLayerStyleForm.vue +14 -11
  374. package/lib/map/client/components/KLocationInput.vue +126 -65
  375. package/lib/map/client/components/KLocationMap.vue +199 -84
  376. package/lib/map/client/components/KPositionIndicator.vue +1 -0
  377. package/lib/map/client/components/KTimeline.vue +41 -36
  378. package/lib/map/client/components/KUrlLegend.vue +21 -19
  379. package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
  380. package/lib/map/client/components/catalog/KCatalog.vue +14 -2
  381. package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
  382. package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
  383. package/lib/map/client/components/catalog/KImportLayer.vue +28 -8
  384. package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
  385. package/lib/map/client/components/catalog/KLayersSelector.vue +42 -42
  386. package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  387. package/lib/map/client/components/form/KLocationField.vue +1 -1
  388. package/lib/map/client/components/form/KOwsLayerField.vue +21 -2
  389. package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
  390. package/lib/map/client/components/widget/KInformationBox.vue +10 -16
  391. package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
  392. package/lib/map/client/components/widget/KTimeSeries.vue +39 -29
  393. package/lib/map/client/i18n/map_en.json +65 -17
  394. package/lib/map/client/i18n/map_fr.json +67 -20
  395. package/lib/map/client/init.js +18 -6
  396. package/lib/map/client/init.js.map +1 -1
  397. package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
  398. package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
  399. package/lib/map/client/leaflet/GradientPath.js.map +1 -1
  400. package/lib/map/client/leaflet/MaskLayer.js +64 -0
  401. package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
  402. package/lib/map/client/mixins/globe/mixin.base-globe.js +4 -1
  403. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  404. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
  405. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  406. package/lib/map/client/mixins/index.js +8 -13
  407. package/lib/map/client/mixins/index.js.map +1 -1
  408. package/lib/map/client/mixins/map/mixin.base-map.js +30 -6
  409. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  410. package/lib/map/client/mixins/map/mixin.canvas-layers.js +274 -51
  411. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  412. package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
  413. package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
  414. package/lib/map/client/mixins/map/mixin.file-layers.js +25 -18
  415. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  416. package/lib/map/client/mixins/map/mixin.geojson-layers.js +18 -10
  417. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  418. package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
  419. package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
  420. package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
  421. package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
  422. package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
  423. package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
  424. package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
  425. package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
  426. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
  427. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
  428. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
  429. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
  430. package/lib/map/client/mixins/mixin.activity.js +60 -68
  431. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  432. package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
  433. package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
  434. package/lib/map/client/mixins/mixin.feature-service.js +7 -5
  435. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  436. package/lib/map/client/mixins/mixin.weacast.js +6 -4
  437. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  438. package/lib/map/client/pixi-utils.js +9 -0
  439. package/lib/map/client/pixi-utils.js.map +1 -1
  440. package/lib/map/client/utils.js +50 -0
  441. package/lib/map/client/utils.js.map +1 -1
  442. package/lib/map/common/wfs-utils.js +1 -1
  443. package/lib/map/common/wfs-utils.js.map +1 -1
  444. package/lib/map/common/wmts-utils.js +31 -7
  445. package/lib/map/common/wmts-utils.js.map +1 -1
  446. package/lib/test/client/core/account.js +100 -0
  447. package/lib/test/client/core/account.js.map +1 -0
  448. package/lib/test/client/core/api.js +400 -0
  449. package/lib/test/client/core/api.js.map +1 -0
  450. package/lib/test/client/core/collection.js +109 -0
  451. package/lib/test/client/core/collection.js.map +1 -0
  452. package/lib/test/client/core/index.js +90 -0
  453. package/lib/test/client/core/index.js.map +1 -0
  454. package/lib/test/client/core/layout.js +221 -0
  455. package/lib/test/client/core/layout.js.map +1 -0
  456. package/lib/test/client/core/runner.js +204 -0
  457. package/lib/test/client/core/runner.js.map +1 -0
  458. package/lib/test/client/core/screens.js +68 -0
  459. package/lib/test/client/core/screens.js.map +1 -0
  460. package/lib/test/client/core/utils.js +304 -0
  461. package/lib/test/client/core/utils.js.map +1 -0
  462. package/lib/test/client/index.js +20 -0
  463. package/lib/test/client/index.js.map +1 -0
  464. package/lib/test/client/map/catalog.js +191 -0
  465. package/lib/test/client/map/catalog.js.map +1 -0
  466. package/lib/test/client/map/controls.js +54 -0
  467. package/lib/test/client/map/controls.js.map +1 -0
  468. package/lib/test/client/map/index.js +30 -0
  469. package/lib/test/client/map/index.js.map +1 -0
  470. package/package.json +17 -9
  471. package/test.client.js +1 -0
  472. package/tests/core/test-log-2021-07-15.log +71 -0
  473. package/tests/core/test-log-2021-09-02.log +47 -0
  474. package/tests/map/test-log-%DATE%.logYYYY-07-DD +12 -0
  475. package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
  476. package/tests/map/test-log-2021-07-12.log +12 -0
  477. package/tests/map/test-log-2021-07-15.log +5 -0
  478. package/tests/map/test-log-2021-09-02.log +3 -0
  479. package/.nyc_output/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  480. package/.nyc_output/2bece194-92f7-4971-a688-10604044a7fa.json +0 -1
  481. package/.nyc_output/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  482. package/.nyc_output/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  483. package/.nyc_output/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  484. package/.nyc_output/processinfo/0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json +0 -1
  485. package/.nyc_output/processinfo/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  486. package/.nyc_output/processinfo/20df4355-911a-4b16-a8ab-d3392e9f0a7f.json +0 -1
  487. package/.nyc_output/processinfo/257af0bb-96c3-465a-b5ef-a1df60078d5f.json +0 -1
  488. package/.nyc_output/processinfo/284aebfa-23fd-425f-9d72-e4b8904dc224.json +0 -1
  489. package/.nyc_output/processinfo/5cbee06e-be6e-468a-bd78-4793ee785fe4.json +0 -1
  490. package/.nyc_output/processinfo/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  491. package/.nyc_output/processinfo/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  492. package/.nyc_output/processinfo/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  493. package/lib/core/client/components/frame/KLabel.vue +0 -56
  494. package/lib/core/client/components/team/KTagsPane.vue +0 -35
  495. package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
  496. package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
  497. package/lib/map/client/mixins/mixin.time.js +0 -73
  498. package/lib/map/client/mixins/mixin.time.js.map +0 -1
  499. package/tests/core/account.test.js +0 -415
  500. package/tests/core/client.test.js.skip +0 -37
  501. package/tests/core/config/default.js +0 -97
  502. package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
  503. package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
  504. package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
  505. package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
  506. package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
  507. package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
  508. package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
  509. package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
  510. package/tests/core/data/10k_most_common_passwords.txt +0 -10000
  511. package/tests/core/data/logo.png +0 -0
  512. package/tests/core/hooks.test.js +0 -175
  513. package/tests/core/index.test.js +0 -418
  514. package/tests/core/notifications.test.js +0 -465
  515. package/tests/core/storage.test.js +0 -134
  516. package/tests/core/team.test.js +0 -610
  517. package/tests/core/utils.js +0 -59
  518. package/tests/map/alerts.test.js +0 -554
  519. package/tests/map/config/default.js +0 -112
  520. package/tests/map/config/layers.json +0 -37
  521. package/tests/map/daptiles.test.js +0 -41
  522. package/tests/map/data/DescribeCoverage.xml +0 -55
  523. package/tests/map/data/GetCoverage.tif +0 -0
  524. package/tests/map/data/adsb.observations.json +0 -132
  525. package/tests/map/data/dataset.grb.das +0 -55
  526. package/tests/map/data/dataset.grb.dds +0 -17
  527. package/tests/map/data/dataset.grb.dods +0 -0
  528. package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
  529. package/tests/map/data/subdataset.grb.dods +0 -0
  530. package/tests/map/data/vigicrues.observations.json +0 -47042
  531. package/tests/map/data/vigicrues.stations.json +0 -15422
  532. package/tests/map/data/zones.json +0 -1228
  533. package/tests/map/grid-sources.test.js +0 -304
  534. package/tests/map/hooks.test.js +0 -96
  535. package/tests/map/index.test.js +0 -333
@@ -0,0 +1,221 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.logout = exports.isToastVisible = exports.closeWelcomeDialog = exports.clickFab = exports.clickLeftPaneAction = exports.clickBottomPaneAction = exports.clickRightPaneAction = exports.clickTopPaneAction = exports.clickAction = exports.isLeftPaneVisible = exports.isBottomPaneVisible = exports.isRightPaneVisible = exports.isTopPaneVisible = exports.clickLeftOpener = exports.clickBottomOpener = exports.clickRightOpener = exports.clickTopOpener = undefined;
7
+
8
+ let clickOpener = (() => {
9
+ var _ref = _asyncToGenerator(function* (page, opener) {
10
+ const selector = `#${opener}-opener`;
11
+ yield page.evaluate(function (selector) {
12
+ return document.querySelector(selector).click();
13
+ }, selector);
14
+ yield page.waitForTimeout(500);
15
+ debug(`Clicked opener ${selector}`);
16
+ });
17
+
18
+ return function clickOpener(_x, _x2) {
19
+ return _ref.apply(this, arguments);
20
+ };
21
+ })();
22
+
23
+ let clickTopOpener = exports.clickTopOpener = (() => {
24
+ var _ref2 = _asyncToGenerator(function* (page) {
25
+ yield clickOpener(page, 'top');
26
+ });
27
+
28
+ return function clickTopOpener(_x3) {
29
+ return _ref2.apply(this, arguments);
30
+ };
31
+ })();
32
+
33
+ let clickRightOpener = exports.clickRightOpener = (() => {
34
+ var _ref3 = _asyncToGenerator(function* (page) {
35
+ yield clickOpener(page, 'right');
36
+ });
37
+
38
+ return function clickRightOpener(_x4) {
39
+ return _ref3.apply(this, arguments);
40
+ };
41
+ })();
42
+
43
+ let clickBottomOpener = exports.clickBottomOpener = (() => {
44
+ var _ref4 = _asyncToGenerator(function* (page) {
45
+ yield clickOpener(page, 'bottom');
46
+ });
47
+
48
+ return function clickBottomOpener(_x5) {
49
+ return _ref4.apply(this, arguments);
50
+ };
51
+ })();
52
+
53
+ let clickLeftOpener = exports.clickLeftOpener = (() => {
54
+ var _ref5 = _asyncToGenerator(function* (page) {
55
+ yield clickOpener(page, 'left');
56
+ });
57
+
58
+ return function clickLeftOpener(_x6) {
59
+ return _ref5.apply(this, arguments);
60
+ };
61
+ })();
62
+
63
+ let isTopPaneVisible = exports.isTopPaneVisible = (() => {
64
+ var _ref6 = _asyncToGenerator(function* (page) {
65
+ return (0, _utils.isElementVisible)(page, '#top-panel');
66
+ });
67
+
68
+ return function isTopPaneVisible(_x7) {
69
+ return _ref6.apply(this, arguments);
70
+ };
71
+ })();
72
+
73
+ let isRightPaneVisible = exports.isRightPaneVisible = (() => {
74
+ var _ref7 = _asyncToGenerator(function* (page) {
75
+ return (0, _utils.isElementVisible)(page, '#right-panel');
76
+ });
77
+
78
+ return function isRightPaneVisible(_x8) {
79
+ return _ref7.apply(this, arguments);
80
+ };
81
+ })();
82
+
83
+ let isBottomPaneVisible = exports.isBottomPaneVisible = (() => {
84
+ var _ref8 = _asyncToGenerator(function* (page) {
85
+ return (0, _utils.isElementVisible)(page, '#bottom-panel');
86
+ });
87
+
88
+ return function isBottomPaneVisible(_x9) {
89
+ return _ref8.apply(this, arguments);
90
+ };
91
+ })();
92
+
93
+ let isLeftPaneVisible = exports.isLeftPaneVisible = (() => {
94
+ var _ref9 = _asyncToGenerator(function* (page) {
95
+ return (0, _utils.isElementVisible)(page, '#left-panel');
96
+ });
97
+
98
+ return function isLeftPaneVisible(_x10) {
99
+ return _ref9.apply(this, arguments);
100
+ };
101
+ })();
102
+
103
+ let clickAction = exports.clickAction = (() => {
104
+ var _ref10 = _asyncToGenerator(function* (page, action, wait = 250) {
105
+ const selector = `#${action}`;
106
+ yield (0, _utils.click)(page, selector, wait);
107
+ debug(`Clicked action ${selector}`);
108
+ });
109
+
110
+ return function clickAction(_x11, _x12) {
111
+ return _ref10.apply(this, arguments);
112
+ };
113
+ })();
114
+
115
+ let clickPaneAction = (() => {
116
+ var _ref11 = _asyncToGenerator(function* (page, pane, action, wait) {
117
+ const isPaneVisible = yield (0, _utils.isElementVisible)(page, `#${pane}-panel`);
118
+ if (!isPaneVisible) yield clickOpener(page, pane);
119
+ yield clickAction(page, action, wait);
120
+ if (!isPaneVisible) yield clickOpener(page, pane);
121
+ });
122
+
123
+ return function clickPaneAction(_x13, _x14, _x15, _x16) {
124
+ return _ref11.apply(this, arguments);
125
+ };
126
+ })();
127
+
128
+ let clickTopPaneAction = exports.clickTopPaneAction = (() => {
129
+ var _ref12 = _asyncToGenerator(function* (page, action, wait = 250) {
130
+ yield clickPaneAction(page, 'top', action, wait);
131
+ });
132
+
133
+ return function clickTopPaneAction(_x17, _x18) {
134
+ return _ref12.apply(this, arguments);
135
+ };
136
+ })();
137
+
138
+ let clickRightPaneAction = exports.clickRightPaneAction = (() => {
139
+ var _ref13 = _asyncToGenerator(function* (page, action, wait = 250) {
140
+ yield clickPaneAction(page, 'right', action, wait);
141
+ });
142
+
143
+ return function clickRightPaneAction(_x19, _x20) {
144
+ return _ref13.apply(this, arguments);
145
+ };
146
+ })();
147
+
148
+ let clickBottomPaneAction = exports.clickBottomPaneAction = (() => {
149
+ var _ref14 = _asyncToGenerator(function* (page, action, wait = 250) {
150
+ yield clickPaneAction(page, 'bottom', action, wait);
151
+ });
152
+
153
+ return function clickBottomPaneAction(_x21, _x22) {
154
+ return _ref14.apply(this, arguments);
155
+ };
156
+ })();
157
+
158
+ let clickLeftPaneAction = exports.clickLeftPaneAction = (() => {
159
+ var _ref15 = _asyncToGenerator(function* (page, action, wait = 250) {
160
+ const isPaneVisible = yield isLeftPaneVisible(page);
161
+ if (!isPaneVisible) yield clickLeftOpener(page);
162
+ yield clickAction(page, action, wait);
163
+ });
164
+
165
+ return function clickLeftPaneAction(_x23, _x24) {
166
+ return _ref15.apply(this, arguments);
167
+ };
168
+ })();
169
+
170
+ let clickFab = exports.clickFab = (() => {
171
+ var _ref16 = _asyncToGenerator(function* (page) {
172
+ return clickAction(page, 'fab');
173
+ });
174
+
175
+ return function clickFab(_x25) {
176
+ return _ref16.apply(this, arguments);
177
+ };
178
+ })();
179
+
180
+ let closeWelcomeDialog = exports.closeWelcomeDialog = (() => {
181
+ var _ref17 = _asyncToGenerator(function* (page) {
182
+ yield (0, _utils.click)(page, '.q-dialog #close-button');
183
+ });
184
+
185
+ return function closeWelcomeDialog(_x26) {
186
+ return _ref17.apply(this, arguments);
187
+ };
188
+ })();
189
+
190
+ let isToastVisible = exports.isToastVisible = (() => {
191
+ var _ref18 = _asyncToGenerator(function* (page) {
192
+ return (0, _utils.isElementVisible)(page, '[role="alert"]');
193
+ });
194
+
195
+ return function isToastVisible(_x27) {
196
+ return _ref18.apply(this, arguments);
197
+ };
198
+ })();
199
+
200
+ let logout = exports.logout = (() => {
201
+ var _ref19 = _asyncToGenerator(function* (page) {
202
+ yield clickLeftPaneAction(page, 'logout', 1000);
203
+ });
204
+
205
+ return function logout(_x28) {
206
+ return _ref19.apply(this, arguments);
207
+ };
208
+ })();
209
+
210
+ var _debug = require('debug');
211
+
212
+ var _debug2 = _interopRequireDefault(_debug);
213
+
214
+ var _utils = require('./utils');
215
+
216
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
217
+
218
+ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
219
+
220
+ const debug = (0, _debug2.default)('kdk:core:test:layout');
221
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../test/client/core/layout.js"],"names":["page","opener","selector","evaluate","document","querySelector","click","waitForTimeout","debug","clickOpener","clickTopOpener","clickRightOpener","clickBottomOpener","clickLeftOpener","isTopPaneVisible","isRightPaneVisible","isBottomPaneVisible","isLeftPaneVisible","action","wait","clickAction","pane","isPaneVisible","clickPaneAction","clickTopPaneAction","clickRightPaneAction","clickBottomPaneAction","clickLeftPaneAction","clickFab","closeWelcomeDialog","isToastVisible","logout"],"mappings":"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","file":"layout.js","sourcesContent":["import makeDebug from 'debug'\r\nimport { click, isElementVisible } from './utils'\r\n\r\nconst debug = makeDebug('kdk:core:test:layout')\r\n\r\nasync function clickOpener (page, opener) {\r\n const selector = `#${opener}-opener`\r\n await page.evaluate((selector) => document.querySelector(selector).click(), selector)\r\n await page.waitForTimeout(500)\r\n debug(`Clicked opener ${selector}`)\r\n}\r\n\r\nexport async function clickTopOpener (page) {\r\n await clickOpener(page, 'top')\r\n}\r\n\r\nexport async function clickRightOpener (page) {\r\n await clickOpener(page, 'right')\r\n}\r\n\r\nexport async function clickBottomOpener (page) {\r\n await clickOpener(page, 'bottom')\r\n}\r\n\r\nexport async function clickLeftOpener (page) {\r\n await clickOpener(page, 'left')\r\n}\r\n\r\nexport async function isTopPaneVisible (page) {\r\n return isElementVisible(page, '#top-panel')\r\n}\r\n\r\nexport async function isRightPaneVisible (page) {\r\n return isElementVisible(page, '#right-panel')\r\n}\r\n\r\nexport async function isBottomPaneVisible (page) {\r\n return isElementVisible(page, '#bottom-panel')\r\n}\r\n\r\nexport async function isLeftPaneVisible (page) {\r\n return isElementVisible(page, '#left-panel')\r\n}\r\n\r\nexport async function clickAction (page, action, wait = 250) {\r\n const selector = `#${action}`\r\n await click(page, selector, wait)\r\n debug(`Clicked action ${selector}`)\r\n}\r\n\r\nasync function clickPaneAction (page, pane, action, wait) {\r\n const isPaneVisible = await isElementVisible(page, `#${pane}-panel`)\r\n if (!isPaneVisible) await clickOpener(page, pane)\r\n await clickAction(page, action, wait)\r\n if (!isPaneVisible) await clickOpener(page, pane)\r\n}\r\n\r\nexport async function clickTopPaneAction (page, action, wait = 250) {\r\n await clickPaneAction(page, 'top', action, wait)\r\n}\r\n\r\nexport async function clickRightPaneAction (page, action, wait = 250) {\r\n await clickPaneAction(page, 'right', action, wait)\r\n}\r\n\r\nexport async function clickBottomPaneAction (page, action, wait = 250) {\r\n await clickPaneAction(page, 'bottom', action, wait)\r\n}\r\n\r\nexport async function clickLeftPaneAction (page, action, wait = 250) {\r\n const isPaneVisible = await isLeftPaneVisible(page)\r\n if (!isPaneVisible) await clickLeftOpener(page)\r\n await clickAction(page, action, wait)\r\n}\r\n\r\nexport async function clickFab (page) {\r\n return clickAction(page, 'fab')\r\n}\r\n\r\nexport async function closeWelcomeDialog (page) {\r\n await click(page, '.q-dialog #close-button')\r\n}\r\n\r\nexport async function isToastVisible (page) {\r\n return isElementVisible(page, '[role=\"alert\"]')\r\n}\r\n\r\nexport async function logout (page) {\r\n await clickLeftPaneAction(page, 'logout', 1000)\r\n}\r\n"]}
@@ -0,0 +1,204 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Runner = undefined;
7
+
8
+ var _lodash = require('lodash');
9
+
10
+ var _lodash2 = _interopRequireDefault(_lodash);
11
+
12
+ var _fs = require('fs');
13
+
14
+ var _fs2 = _interopRequireDefault(_fs);
15
+
16
+ var _path = require('path');
17
+
18
+ var _path2 = _interopRequireDefault(_path);
19
+
20
+ var _debug = require('debug');
21
+
22
+ var _debug2 = _interopRequireDefault(_debug);
23
+
24
+ var _puppeteer = require('puppeteer');
25
+
26
+ var _puppeteer2 = _interopRequireDefault(_puppeteer);
27
+
28
+ var _utils = require('./utils');
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+
32
+ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
33
+
34
+ const debug = (0, _debug2.default)('kdk:core:test:runner');
35
+
36
+ function merger(objValue, srcValue) {
37
+ if (_lodash2.default.isArray(objValue)) {
38
+ return objValue.concat(srcValue);
39
+ }
40
+ }
41
+
42
+ class Runner {
43
+ constructor(suite, options = {}) {
44
+ this.warnings = [];
45
+ this.errors = [];
46
+ // Compute helper default options
47
+ const defaultPort = process.env.CLIENT_PORT || '8080';
48
+ let domain = `http://localhost:${defaultPort}`;
49
+ // Override defaults if env provided, we need the app name in this case
50
+ if (process.env.SUBDOMAIN) {
51
+ domain = `https://${options.appName}.` + process.env.SUBDOMAIN;
52
+ }
53
+ const defaultBrowser = process.env.BROWSER || 'chrome';
54
+ const defaultDataDir = _path2.default.join('.', 'test', 'data', suite);
55
+ const defaultRunDir = _path2.default.join('.', 'test', 'run', defaultBrowser, suite);
56
+ // Set the runner options using default and overrrident options
57
+ this.options = _lodash2.default.mergeWith({
58
+ baseUrl: domain,
59
+ browser: {
60
+ product: defaultBrowser,
61
+ headless: process.env.HEADLESS ? !!process.env.HEADLESS : false,
62
+ defaultViewport: {
63
+ width: +process.env.VIEWPORT_WIDTH || 1024,
64
+ height: +process.env.VIEWPORT_HEIGHT || 768
65
+ },
66
+ args: process.env.BROWSER_ARGS ? _lodash2.default.split(process.env.BROWSER_ARGS, ' ') : []
67
+ },
68
+ dataDir: defaultDataDir,
69
+ runDir: defaultRunDir,
70
+ screenrefsDir: _path2.default.join(defaultDataDir, 'screenrefs'),
71
+ screenshotsDir: _path2.default.join(defaultRunDir, '/screenshots'),
72
+ mode: 'run',
73
+ writeDiffs: false,
74
+ matchTreshold: 0.1
75
+ }, options, merger);
76
+ // Display the runner options
77
+ console.log('Runner created with the following options:');
78
+ console.log(this.options);
79
+ // Create the run directory if needed
80
+ if (!_fs2.default.existsSync(this.options.screenshotsDir)) {
81
+ console.log('Creating runner directory structure');
82
+ _fs2.default.mkdirSync(this.options.screenshotsDir, { recursive: true });
83
+ }
84
+ }
85
+
86
+ getUrl(path) {
87
+ return path ? this.options.baseUrl + '/#/' + path : this.options.baseUrl;
88
+ }
89
+
90
+ getDataPath(key) {
91
+ return _path2.default.join(this.options.dataDir, key);
92
+ }
93
+
94
+ start(path) {
95
+ var _this = this;
96
+
97
+ return _asyncToGenerator(function* () {
98
+ _this.browser = yield _puppeteer2.default.launch(_this.options.browser);
99
+ _this.page = yield _this.browser.newPage();
100
+ // Handle geolocation if needed
101
+ if (_this.options.geolocation) {
102
+ const context = _this.browser.defaultBrowserContext();
103
+ yield context.overridePermissions(_this.getUrl(path), ['geolocation']);
104
+ _this.page.setGeolocation(_this.options.geolocation);
105
+ }
106
+ // Handle the local storage if needed
107
+ if (_this.options.localStorage) {
108
+ yield _this.page.evaluateOnNewDocument(function (items) {
109
+ for (const [key, value] of Object.entries(items)) localStorage.setItem(key, value);
110
+ }, _this.options.localStorage);
111
+ }
112
+ // Catch errors
113
+ _this.page.on('console', function (message) {
114
+ if (message._type === 'error') {
115
+ _this.errors.push(message);
116
+ debug('Console error:', message);
117
+ }
118
+ if (message._type === 'warning') {
119
+ _this.warnings.push(message);
120
+ // debug('Console warning:', message)
121
+ }
122
+ });
123
+ // Navigate the to given url
124
+ yield _this.page.goto(_this.getUrl(path));
125
+ return _this.page;
126
+ })();
127
+ }
128
+
129
+ stop() {
130
+ var _this2 = this;
131
+
132
+ return _asyncToGenerator(function* () {
133
+ // Ensure it has been correctly initialized
134
+ if (_this2.browser) yield _this2.browser.close();
135
+ })();
136
+ }
137
+
138
+ capture(key, boundingBox) {
139
+ var _this3 = this;
140
+
141
+ return _asyncToGenerator(function* () {
142
+ // If run mode store in screenshots dir, otherwise in screenrefs dir
143
+ const dir = _this3.options.mode === 'run' ? _this3.options.screenshotsDir : _this3.options.screenrefsDir;
144
+ const options = Object.assign({
145
+ path: _path2.default.join(dir, key + '.png'),
146
+ type: 'png'
147
+ }, boundingBox ? { clip: boundingBox } : { fullPage: true });
148
+ yield _this3.page.screenshot(options);
149
+ })();
150
+ }
151
+
152
+ captureAndMatch(key, diffTolerance = 1.0, boundingBox = null) {
153
+ var _this4 = this;
154
+
155
+ return _asyncToGenerator(function* () {
156
+ yield _this4.capture(key, boundingBox);
157
+ // If run mode compare, otherwise skip as we only want to record screenrefs
158
+ if (_this4.options.mode === 'run') {
159
+ const runDir = _path2.default.join(_this4.options.screenshotsDir, key + '.png');
160
+ const refPath = _path2.default.join(_this4.options.screenrefsDir, key + '.png');
161
+ const diffFilename = _this4.options.writeDiffs ? _path2.default.join(_this4.options.screenshotsDir, `diff.${key}.png`) : null;
162
+ const diff = (0, _utils.compareImages)(runDir, refPath, _this4.options.matchTreshold, diffFilename);
163
+ return diff.diffRatio <= diffTolerance;
164
+ } else {
165
+ return true;
166
+ }
167
+ })();
168
+ }
169
+
170
+ compareCaptures(key1, key2, threshold) {
171
+ const dir = this.options.screenshotsDir;
172
+ const img1 = _path2.default.join(dir, key1 + '.png');
173
+ const img2 = _path2.default.join(dir, key2 + '.png');
174
+ const imgDiff = this.options.writeDiffs ? _path2.default.join(dir, `diff.${key1}.${key2}.png`) : null;
175
+ const result = (0, _utils.compareImages)(img1, img2, threshold, imgDiff);
176
+ return result.diffRatio;
177
+ }
178
+
179
+ hasError() {
180
+ return this.errors.length > 0;
181
+ }
182
+
183
+ getErrors() {
184
+ return this.errors;
185
+ }
186
+
187
+ clearErrors() {
188
+ this.errors = [];
189
+ }
190
+
191
+ hasWarning() {
192
+ return this.warnings.length > 0;
193
+ }
194
+
195
+ getWarnings() {
196
+ return this.warnings;
197
+ }
198
+
199
+ clearWarnings() {
200
+ this.warnings = [];
201
+ }
202
+ }
203
+ exports.Runner = Runner;
204
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../test/client/core/runner.js"],"names":["debug","merger","objValue","srcValue","_","isArray","concat","Runner","constructor","suite","options","warnings","errors","defaultPort","process","env","CLIENT_PORT","domain","SUBDOMAIN","appName","defaultBrowser","BROWSER","defaultDataDir","path","join","defaultRunDir","mergeWith","baseUrl","browser","product","headless","HEADLESS","defaultViewport","width","VIEWPORT_WIDTH","height","VIEWPORT_HEIGHT","args","BROWSER_ARGS","split","dataDir","runDir","screenrefsDir","screenshotsDir","mode","writeDiffs","matchTreshold","console","log","fs","existsSync","mkdirSync","recursive","getUrl","getDataPath","key","start","puppeteer","launch","page","newPage","geolocation","context","defaultBrowserContext","overridePermissions","setGeolocation","localStorage","evaluateOnNewDocument","value","Object","entries","items","setItem","on","message","_type","push","goto","stop","close","capture","boundingBox","dir","assign","type","clip","fullPage","screenshot","captureAndMatch","diffTolerance","refPath","diffFilename","diff","diffRatio","compareCaptures","key1","key2","threshold","img1","img2","imgDiff","result","hasError","length","getErrors","clearErrors","hasWarning","getWarnings","clearWarnings"],"mappings":"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","file":"runner.js","sourcesContent":["import _ from 'lodash'\r\nimport fs from 'fs'\r\nimport path from 'path'\r\nimport makeDebug from 'debug'\r\nimport puppeteer from 'puppeteer'\r\nimport { compareImages } from './utils'\r\n\r\nconst debug = makeDebug('kdk:core:test:runner')\r\n\r\nfunction merger (objValue, srcValue) {\r\n if (_.isArray(objValue)) {\r\n return objValue.concat(srcValue)\r\n }\r\n}\r\n\r\nexport class Runner {\r\n constructor (suite, options = {}) {\r\n this.warnings = []\r\n this.errors = []\r\n // Compute helper default options\r\n const defaultPort = process.env.CLIENT_PORT || '8080'\r\n let domain = `http://localhost:${defaultPort}`\r\n // Override defaults if env provided, we need the app name in this case\r\n if (process.env.SUBDOMAIN) {\r\n domain = `https://${options.appName}.` + process.env.SUBDOMAIN\r\n }\r\n const defaultBrowser = process.env.BROWSER || 'chrome'\r\n const defaultDataDir = path.join('.', 'test', 'data', suite)\r\n const defaultRunDir = path.join('.', 'test', 'run', defaultBrowser, suite)\r\n // Set the runner options using default and overrrident options\r\n this.options = _.mergeWith({\r\n baseUrl: domain,\r\n browser: {\r\n product: defaultBrowser,\r\n headless: process.env.HEADLESS ? !!process.env.HEADLESS : false,\r\n defaultViewport: {\r\n width: +process.env.VIEWPORT_WIDTH || 1024,\r\n height: +process.env.VIEWPORT_HEIGHT || 768\r\n },\r\n args: process.env.BROWSER_ARGS ? _.split(process.env.BROWSER_ARGS, ' ') : []\r\n },\r\n dataDir: defaultDataDir,\r\n runDir: defaultRunDir,\r\n screenrefsDir: path.join(defaultDataDir, 'screenrefs'),\r\n screenshotsDir: path.join(defaultRunDir, '/screenshots'),\r\n mode: 'run',\r\n writeDiffs: false,\r\n matchTreshold: 0.1\r\n }, options, merger)\r\n // Display the runner options\r\n console.log('Runner created with the following options:')\r\n console.log(this.options)\r\n // Create the run directory if needed\r\n if (!fs.existsSync(this.options.screenshotsDir)) {\r\n console.log('Creating runner directory structure')\r\n fs.mkdirSync(this.options.screenshotsDir, { recursive: true })\r\n }\r\n }\r\n\r\n getUrl (path) {\r\n return path ? this.options.baseUrl + '/#/' + path : this.options.baseUrl\r\n }\r\n\r\n getDataPath (key) {\r\n return path.join(this.options.dataDir, key)\r\n }\r\n\r\n async start (path) {\r\n this.browser = await puppeteer.launch(this.options.browser)\r\n this.page = await this.browser.newPage()\r\n // Handle geolocation if needed\r\n if (this.options.geolocation) {\r\n const context = this.browser.defaultBrowserContext()\r\n await context.overridePermissions(this.getUrl(path), ['geolocation'])\r\n this.page.setGeolocation(this.options.geolocation)\r\n }\r\n // Handle the local storage if needed\r\n if (this.options.localStorage) {\r\n await this.page.evaluateOnNewDocument(items => {\r\n for (const [key, value] of Object.entries(items)) localStorage.setItem(key, value)\r\n }, this.options.localStorage)\r\n }\r\n // Catch errors\r\n this.page.on('console', message => {\r\n if (message._type === 'error') {\r\n this.errors.push(message)\r\n debug('Console error:', message)\r\n }\r\n if (message._type === 'warning') {\r\n this.warnings.push(message)\r\n // debug('Console warning:', message)\r\n }\r\n })\r\n // Navigate the to given url\r\n await this.page.goto(this.getUrl(path))\r\n return this.page\r\n }\r\n\r\n async stop () {\r\n // Ensure it has been correctly initialized\r\n if (this.browser) await this.browser.close()\r\n }\r\n\r\n async capture (key, boundingBox) {\r\n // If run mode store in screenshots dir, otherwise in screenrefs dir\r\n const dir = (this.options.mode === 'run' ? this.options.screenshotsDir : this.options.screenrefsDir)\r\n const options = Object.assign(\r\n {\r\n path: path.join(dir, key + '.png'),\r\n type: 'png'\r\n }, boundingBox ? { clip: boundingBox } : { fullPage: true })\r\n await this.page.screenshot(options)\r\n }\r\n\r\n async captureAndMatch (key, diffTolerance = 1.0, boundingBox = null) {\r\n await this.capture(key, boundingBox)\r\n // If run mode compare, otherwise skip as we only want to record screenrefs\r\n if (this.options.mode === 'run') {\r\n const runDir = path.join(this.options.screenshotsDir, key + '.png')\r\n const refPath = path.join(this.options.screenrefsDir, key + '.png')\r\n const diffFilename = this.options.writeDiffs ? path.join(this.options.screenshotsDir, `diff.${key}.png`) : null\r\n const diff = compareImages(runDir, refPath, this.options.matchTreshold, diffFilename)\r\n return diff.diffRatio <= diffTolerance\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n compareCaptures (key1, key2, threshold) {\r\n const dir = this.options.screenshotsDir\r\n const img1 = path.join(dir, key1 + '.png')\r\n const img2 = path.join(dir, key2 + '.png')\r\n const imgDiff = this.options.writeDiffs ? path.join(dir, `diff.${key1}.${key2}.png`) : null\r\n const result = compareImages(img1, img2, threshold, imgDiff)\r\n return result.diffRatio\r\n }\r\n\r\n hasError () {\r\n return this.errors.length > 0\r\n }\r\n\r\n getErrors () {\r\n return this.errors\r\n }\r\n\r\n clearErrors () {\r\n this.errors = []\r\n }\r\n\r\n hasWarning () {\r\n return this.warnings.length > 0\r\n }\r\n\r\n getWarnings () {\r\n return this.warnings\r\n }\r\n\r\n clearWarnings () {\r\n this.warnings = []\r\n }\r\n}\r\n"]}
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.register = exports.goToRegisterScreen = exports.login = exports.goToLoginScreen = undefined;
7
+
8
+ let goToLoginScreen = exports.goToLoginScreen = (() => {
9
+ var _ref = _asyncToGenerator(function* (page) {
10
+ yield Promise.all([page.waitForNavigation(), (0, _utils.click)(page, '#login-link')]);
11
+ debug('Login screen ready');
12
+ });
13
+
14
+ return function goToLoginScreen(_x) {
15
+ return _ref.apply(this, arguments);
16
+ };
17
+ })();
18
+
19
+ let login = exports.login = (() => {
20
+ var _ref2 = _asyncToGenerator(function* (page, user, wait = 5000) {
21
+ yield (0, _utils.type)(page, '#email-field', user.email);
22
+ yield (0, _utils.type)(page, '#password-field', user.password);
23
+ yield (0, _utils.click)(page, 'button', wait);
24
+ });
25
+
26
+ return function login(_x2, _x3) {
27
+ return _ref2.apply(this, arguments);
28
+ };
29
+ })();
30
+
31
+ let goToRegisterScreen = exports.goToRegisterScreen = (() => {
32
+ var _ref3 = _asyncToGenerator(function* (page) {
33
+ yield Promise.all([page.waitForNavigation(), (0, _utils.click)(page, '#register-link')]);
34
+ debug('Register screen ready');
35
+ });
36
+
37
+ return function goToRegisterScreen(_x4) {
38
+ return _ref3.apply(this, arguments);
39
+ };
40
+ })();
41
+
42
+ let register = exports.register = (() => {
43
+ var _ref4 = _asyncToGenerator(function* (page, user, wait = 5000) {
44
+ yield (0, _utils.type)(page, '#name-field', user.name);
45
+ yield (0, _utils.type)(page, '#email-field', user.email);
46
+ yield (0, _utils.type)(page, '#password-field', user.password);
47
+ yield (0, _utils.type)(page, '#confirmPassword-field', user.password);
48
+ yield (0, _utils.click)(page, '.q-toggle');
49
+ yield (0, _utils.click)(page, 'button', wait);
50
+ });
51
+
52
+ return function register(_x5, _x6) {
53
+ return _ref4.apply(this, arguments);
54
+ };
55
+ })();
56
+
57
+ var _debug = require('debug');
58
+
59
+ var _debug2 = _interopRequireDefault(_debug);
60
+
61
+ var _utils = require('./utils');
62
+
63
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
64
+
65
+ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
66
+
67
+ const debug = (0, _debug2.default)('kdk:core:test:screens');
68
+ //# sourceMappingURL=screens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../test/client/core/screens.js"],"names":["page","Promise","all","waitForNavigation","debug","goToLoginScreen","user","wait","email","password","login","goToRegisterScreen","name","register"],"mappings":";;;;;;;;+BAKO,WAAgCA,IAAhC,EAAsC;AAC3C,UAAMC,QAAQC,GAAR,CAAY,CAChBF,KAAKG,iBAAL,EADgB,EAEhB,kBAAMH,IAAN,EAAY,aAAZ,CAFgB,CAAZ,CAAN;AAIAI,UAAM,oBAAN;AACD,G;;kBANqBC,e;;;;;;gCAQf,WAAsBL,IAAtB,EAA4BM,IAA5B,EAAkCC,OAAO,IAAzC,EAA+C;AACpD,UAAM,iBAAKP,IAAL,EAAW,cAAX,EAA2BM,KAAKE,KAAhC,CAAN;AACA,UAAM,iBAAKR,IAAL,EAAW,iBAAX,EAA8BM,KAAKG,QAAnC,CAAN;AACA,UAAM,kBAAMT,IAAN,EAAY,QAAZ,EAAsBO,IAAtB,CAAN;AACD,G;;kBAJqBG,K;;;;;;gCAMf,WAAmCV,IAAnC,EAAyC;AAC9C,UAAMC,QAAQC,GAAR,CAAY,CAChBF,KAAKG,iBAAL,EADgB,EAEhB,kBAAMH,IAAN,EAAY,gBAAZ,CAFgB,CAAZ,CAAN;AAIAI,UAAM,uBAAN;AACD,G;;kBANqBO,kB;;;;;;gCAQf,WAAyBX,IAAzB,EAA+BM,IAA/B,EAAqCC,OAAO,IAA5C,EAAkD;AACvD,UAAM,iBAAKP,IAAL,EAAW,aAAX,EAA0BM,KAAKM,IAA/B,CAAN;AACA,UAAM,iBAAKZ,IAAL,EAAW,cAAX,EAA2BM,KAAKE,KAAhC,CAAN;AACA,UAAM,iBAAKR,IAAL,EAAW,iBAAX,EAA8BM,KAAKG,QAAnC,CAAN;AACA,UAAM,iBAAKT,IAAL,EAAW,wBAAX,EAAqCM,KAAKG,QAA1C,CAAN;AACA,UAAM,kBAAMT,IAAN,EAAY,WAAZ,CAAN;AACA,UAAM,kBAAMA,IAAN,EAAY,QAAZ,EAAsBO,IAAtB,CAAN;AACD,G;;kBAPqBM,Q;;;;;AA3BtB;;;;AACA;;;;;;AAEA,MAAMT,QAAQ,qBAAU,uBAAV,CAAd","file":"screens.js","sourcesContent":["import makeDebug from 'debug'\r\nimport { click, type } from './utils'\r\n\r\nconst debug = makeDebug('kdk:core:test:screens')\r\n\r\nexport async function goToLoginScreen (page) {\r\n await Promise.all([\r\n page.waitForNavigation(),\r\n click(page, '#login-link')\r\n ])\r\n debug('Login screen ready')\r\n}\r\n\r\nexport async function login (page, user, wait = 5000) {\r\n await type(page, '#email-field', user.email)\r\n await type(page, '#password-field', user.password)\r\n await click(page, 'button', wait)\r\n}\r\n\r\nexport async function goToRegisterScreen (page) {\r\n await Promise.all([\r\n page.waitForNavigation(),\r\n click(page, '#register-link')\r\n ])\r\n debug('Register screen ready')\r\n}\r\n\r\nexport async function register (page, user, wait = 5000) {\r\n await type(page, '#name-field', user.name)\r\n await type(page, '#email-field', user.email)\r\n await type(page, '#password-field', user.password)\r\n await type(page, '#confirmPassword-field', user.password)\r\n await click(page, '.q-toggle')\r\n await click(page, 'button', wait)\r\n}\r\n"]}