@geode/opengeodeweb-front 10.6.2 → 10.6.3-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/.oxlintrc.json +3 -22
  3. package/app/assets/geode_objects.js +26 -26
  4. package/app/components/Carousel.vue +62 -66
  5. package/app/components/CrsSelector.vue +48 -52
  6. package/app/components/DeleteDialog.vue +21 -37
  7. package/app/components/DragAndDrop.vue +35 -41
  8. package/app/components/ExtensionSelector.vue +50 -63
  9. package/app/components/FeedBack/ErrorBanner.vue +7 -10
  10. package/app/components/FeedBack/Snackers.vue +12 -14
  11. package/app/components/FetchingData.vue +1 -6
  12. package/app/components/FileSelector.vue +41 -47
  13. package/app/components/FileUploader.vue +62 -79
  14. package/app/components/GlassCard.vue +19 -19
  15. package/app/components/HybridRenderingView.vue +37 -38
  16. package/app/components/InfraConnected.vue +3 -3
  17. package/app/components/Inspector/InspectionButton.vue +27 -31
  18. package/app/components/Inspector/ResultPanel.vue +13 -24
  19. package/app/components/Launcher.vue +13 -13
  20. package/app/components/Loading.vue +63 -69
  21. package/app/components/MissingFilesSelector.vue +53 -73
  22. package/app/components/ObjectSelector.vue +81 -99
  23. package/app/components/PackagesVersions.vue +27 -30
  24. package/app/components/Recaptcha.vue +60 -71
  25. package/app/components/RemoteRenderingView.vue +102 -108
  26. package/app/components/Screenshot.vue +36 -42
  27. package/app/components/SearchBar.vue +5 -5
  28. package/app/components/Step.vue +37 -44
  29. package/app/components/Stepper.vue +29 -35
  30. package/app/components/VeaseViewToolbar.vue +69 -78
  31. package/app/components/ViewToolbar.vue +41 -45
  32. package/app/components/Viewer/BreadCrumb.vue +18 -30
  33. package/app/components/Viewer/ContextMenu.vue +176 -179
  34. package/app/components/Viewer/ContextMenuItem.vue +105 -117
  35. package/app/components/Viewer/EdgedCurve/PointsOptions.vue +6 -9
  36. package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +82 -93
  37. package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +84 -99
  38. package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +83 -98
  39. package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +62 -73
  40. package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +84 -108
  41. package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +82 -105
  42. package/app/components/Viewer/Generic/Model/EdgesOptions.vue +19 -23
  43. package/app/components/Viewer/Generic/Model/PointsOptions.vue +26 -30
  44. package/app/components/Viewer/Grid/2D/CellsOptions.vue +5 -5
  45. package/app/components/Viewer/Grid/2D/EdgesOptions.vue +6 -9
  46. package/app/components/Viewer/Grid/2D/PointsOptions.vue +6 -9
  47. package/app/components/Viewer/Grid/3D/CellsOptions.vue +5 -5
  48. package/app/components/Viewer/Grid/3D/EdgesOptions.vue +6 -9
  49. package/app/components/Viewer/Grid/3D/FacetsOptions.vue +5 -5
  50. package/app/components/Viewer/Grid/3D/PointsOptions.vue +6 -9
  51. package/app/components/Viewer/HybridSolid/EdgesOptions.vue +6 -9
  52. package/app/components/Viewer/HybridSolid/PointsOptions.vue +6 -9
  53. package/app/components/Viewer/HybridSolid/PolygonsOptions.vue +6 -9
  54. package/app/components/Viewer/HybridSolid/PolyhedraOptions.vue +6 -9
  55. package/app/components/Viewer/Options/AttributeColorBar.vue +8 -8
  56. package/app/components/Viewer/Options/AttributeSelector.vue +73 -78
  57. package/app/components/Viewer/Options/ColorMapList.vue +115 -140
  58. package/app/components/Viewer/Options/ColorMapPicker.vue +128 -142
  59. package/app/components/Viewer/Options/ColorPicker.vue +9 -9
  60. package/app/components/Viewer/Options/ColoringTypeSelector.vue +77 -91
  61. package/app/components/Viewer/Options/TextureItem.vue +54 -58
  62. package/app/components/Viewer/Options/TexturesSelector.vue +22 -26
  63. package/app/components/Viewer/Options/VisibilitySwitch.vue +1 -1
  64. package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +61 -68
  65. package/app/components/Viewer/PolygonalSurface/EdgesOptions.vue +6 -9
  66. package/app/components/Viewer/PolygonalSurface/PointsOptions.vue +6 -9
  67. package/app/components/Viewer/PolygonalSurface/SpecificPolygonsOptions.vue +83 -103
  68. package/app/components/Viewer/Solid/EdgesOptions.vue +6 -9
  69. package/app/components/Viewer/Solid/PointsOptions.vue +6 -9
  70. package/app/components/Viewer/Solid/PolygonsOptions.vue +6 -9
  71. package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +82 -105
  72. package/app/components/Viewer/TetrahedralSolid/TetrahedraOptions.vue +5 -5
  73. package/app/components/Viewer/TetrahedralSolid/TrianglesOptions.vue +5 -5
  74. package/app/components/Viewer/Tree/ObjectTree.vue +80 -89
  75. package/app/components/Viewer/TreeComponent.vue +43 -49
  76. package/app/components/Viewer/TreeObject.vue +48 -50
  77. package/app/components/Viewer/TriangulatedSurface/EdgesOptions.vue +6 -9
  78. package/app/components/Viewer/TriangulatedSurface/PointsOptions.vue +5 -5
  79. package/app/components/Viewer/TriangulatedSurface/TrianglesOptions.vue +5 -5
  80. package/app/components/Wrapper.vue +8 -8
  81. package/app/components/ZScaling.vue +18 -27
  82. package/app/composables/project_manager.js +57 -67
  83. package/app/composables/run_function_when_microservices_connected.js +8 -8
  84. package/app/plugins/auto_store_register.js +11 -13
  85. package/app/stores/app.js +118 -138
  86. package/app/stores/data.js +52 -68
  87. package/app/stores/data_style.js +36 -36
  88. package/app/stores/feedback.js +17 -20
  89. package/app/stores/geode.js +54 -55
  90. package/app/stores/hybrid_viewer.js +164 -177
  91. package/app/stores/infra.js +45 -55
  92. package/app/stores/lambda.js +26 -26
  93. package/app/stores/menu.js +78 -85
  94. package/app/stores/treeview.js +57 -65
  95. package/app/stores/viewer.js +92 -104
  96. package/app/utils/colormap.js +3 -3
  97. package/app/utils/config.js +16 -22
  98. package/app/utils/default_styles.js +50 -62
  99. package/app/utils/extension.js +44 -44
  100. package/app/utils/file_import_workflow.js +50 -64
  101. package/app/utils/local/app_mode.js +2 -2
  102. package/app/utils/local/cleanup.js +66 -72
  103. package/app/utils/local/microservices.js +61 -71
  104. package/app/utils/local/path.js +16 -19
  105. package/app/utils/local/scripts.js +22 -22
  106. package/app/utils/recaptcha.js +6 -6
  107. package/app/utils/server.js +21 -24
  108. package/app/utils/status.js +2 -2
  109. package/app/utils/treeview.js +4 -4
  110. package/app/utils/validate_schema.js +7 -7
  111. package/commitlint.config.js +2 -2
  112. package/eslint.config.js +4 -4
  113. package/internal/database/database.js +38 -46
  114. package/internal/database/extended_database.js +9 -10
  115. package/internal/database/tables/data.js +2 -3
  116. package/internal/database/tables/model_components.js +1 -1
  117. package/internal/database/tables/model_components_relation.js +1 -1
  118. package/internal/stores/data_style/mesh/cells/cell.js +47 -63
  119. package/internal/stores/data_style/mesh/cells/color.js +11 -16
  120. package/internal/stores/data_style/mesh/cells/common.js +6 -6
  121. package/internal/stores/data_style/mesh/cells/index.js +37 -47
  122. package/internal/stores/data_style/mesh/cells/textures.js +11 -12
  123. package/internal/stores/data_style/mesh/cells/vertex.js +47 -58
  124. package/internal/stores/data_style/mesh/cells/visibility.js +11 -16
  125. package/internal/stores/data_style/mesh/edges/color.js +11 -16
  126. package/internal/stores/data_style/mesh/edges/common.js +6 -6
  127. package/internal/stores/data_style/mesh/edges/edge.js +47 -63
  128. package/internal/stores/data_style/mesh/edges/index.js +38 -52
  129. package/internal/stores/data_style/mesh/edges/vertex.js +47 -58
  130. package/internal/stores/data_style/mesh/edges/visibility.js +11 -16
  131. package/internal/stores/data_style/mesh/edges/width.js +11 -16
  132. package/internal/stores/data_style/mesh/index.js +34 -34
  133. package/internal/stores/data_style/mesh/points/color.js +11 -16
  134. package/internal/stores/data_style/mesh/points/common.js +6 -6
  135. package/internal/stores/data_style/mesh/points/index.js +35 -49
  136. package/internal/stores/data_style/mesh/points/size.js +11 -16
  137. package/internal/stores/data_style/mesh/points/vertex.js +47 -58
  138. package/internal/stores/data_style/mesh/points/visibility.js +11 -16
  139. package/internal/stores/data_style/mesh/polygons/color.js +11 -16
  140. package/internal/stores/data_style/mesh/polygons/common.js +6 -6
  141. package/internal/stores/data_style/mesh/polygons/index.js +36 -45
  142. package/internal/stores/data_style/mesh/polygons/polygon.js +45 -56
  143. package/internal/stores/data_style/mesh/polygons/textures.js +11 -16
  144. package/internal/stores/data_style/mesh/polygons/vertex.js +47 -58
  145. package/internal/stores/data_style/mesh/polygons/visibility.js +11 -16
  146. package/internal/stores/data_style/mesh/polyhedra/color.js +11 -16
  147. package/internal/stores/data_style/mesh/polyhedra/common.js +6 -6
  148. package/internal/stores/data_style/mesh/polyhedra/index.js +29 -42
  149. package/internal/stores/data_style/mesh/polyhedra/polyhedron.js +43 -47
  150. package/internal/stores/data_style/mesh/polyhedra/vertex.js +47 -58
  151. package/internal/stores/data_style/mesh/polyhedra/visibility.js +11 -17
  152. package/internal/stores/data_style/model/blocks/color.js +21 -24
  153. package/internal/stores/data_style/model/blocks/common.js +6 -6
  154. package/internal/stores/data_style/model/blocks/index.js +13 -17
  155. package/internal/stores/data_style/model/blocks/visibility.js +21 -24
  156. package/internal/stores/data_style/model/corners/color.js +21 -24
  157. package/internal/stores/data_style/model/corners/common.js +6 -6
  158. package/internal/stores/data_style/model/corners/index.js +14 -18
  159. package/internal/stores/data_style/model/corners/visibility.js +21 -25
  160. package/internal/stores/data_style/model/edges/common.js +4 -4
  161. package/internal/stores/data_style/model/edges/index.js +7 -7
  162. package/internal/stores/data_style/model/edges/visibility.js +11 -15
  163. package/internal/stores/data_style/model/index.js +84 -100
  164. package/internal/stores/data_style/model/lines/color.js +21 -24
  165. package/internal/stores/data_style/model/lines/common.js +6 -6
  166. package/internal/stores/data_style/model/lines/index.js +13 -17
  167. package/internal/stores/data_style/model/lines/visibility.js +21 -24
  168. package/internal/stores/data_style/model/points/common.js +4 -4
  169. package/internal/stores/data_style/model/points/index.js +9 -9
  170. package/internal/stores/data_style/model/points/size.js +11 -11
  171. package/internal/stores/data_style/model/points/visibility.js +11 -15
  172. package/internal/stores/data_style/model/surfaces/color.js +21 -24
  173. package/internal/stores/data_style/model/surfaces/common.js +6 -6
  174. package/internal/stores/data_style/model/surfaces/index.js +14 -22
  175. package/internal/stores/data_style/model/surfaces/visibility.js +18 -22
  176. package/internal/stores/data_style/state.js +11 -11
  177. package/internal/utils/api_fetch.js +24 -34
  178. package/internal/utils/upload_file.js +19 -24
  179. package/internal/utils/viewer_call.js +23 -36
  180. package/nuxt.config.js +7 -11
  181. package/package.json +3 -3
  182. package/scripts/generate_geode_objects.js +14 -16
  183. package/server/api/app/kill.post.js +4 -4
  184. package/server/api/app/project_folder_path.post.js +11 -11
  185. package/server/api/app/run_back.post.js +12 -12
  186. package/server/api/app/run_viewer.post.js +12 -12
  187. package/server/api/extensions/run.post.js +34 -41
  188. package/server/api/extensions/upload.put.js +48 -62
  189. package/tests/integration/setup.js +43 -53
  190. package/tests/integration/stores/data_style/mesh/cells.nuxt.test.js +90 -116
  191. package/tests/integration/stores/data_style/mesh/edges.nuxt.test.js +81 -107
  192. package/tests/integration/stores/data_style/mesh/index.nuxt.test.js +38 -41
  193. package/tests/integration/stores/data_style/mesh/points.nuxt.test.js +85 -101
  194. package/tests/integration/stores/data_style/mesh/polygons.nuxt.test.js +89 -113
  195. package/tests/integration/stores/data_style/mesh/polyhedra.nuxt.test.js +81 -105
  196. package/tests/integration/stores/data_style/model/blocks.nuxt.test.js +56 -73
  197. package/tests/integration/stores/data_style/model/corners.nuxt.test.js +59 -76
  198. package/tests/integration/stores/data_style/model/edges.nuxt.test.js +39 -42
  199. package/tests/integration/stores/data_style/model/index.nuxt.test.js +31 -34
  200. package/tests/integration/stores/data_style/model/lines.nuxt.test.js +60 -73
  201. package/tests/integration/stores/data_style/model/points.nuxt.test.js +52 -55
  202. package/tests/integration/stores/data_style/model/surfaces.nuxt.test.js +59 -80
  203. package/tests/integration/stores/viewer.nuxt.test.js +35 -38
  204. package/tests/setup_indexeddb.js +2 -2
  205. package/tests/unit/components/CrsSelector.nuxt.test.js +28 -28
  206. package/tests/unit/components/ExtensionSelector.nuxt.test.js +33 -35
  207. package/tests/unit/components/FeedBack/ErrorsBanner.nuxt.test.js +23 -23
  208. package/tests/unit/components/FeedBack/Snackers.nuxt.test.js +18 -18
  209. package/tests/unit/components/FileSelector.nuxt.test.js +57 -59
  210. package/tests/unit/components/FileUploader.nuxt.test.js +35 -39
  211. package/tests/unit/components/Inspector/InspectionButton.nuxt.test.js +28 -28
  212. package/tests/unit/components/Inspector/ResultPanel.nuxt.test.js +22 -27
  213. package/tests/unit/components/Launcher.nuxt.test.js +20 -22
  214. package/tests/unit/components/MissingFilesSelector.nuxt.test.js +37 -37
  215. package/tests/unit/components/ObjectSelector.nuxt.test.js +62 -62
  216. package/tests/unit/components/PackagesVersions.nuxt.test.js +16 -16
  217. package/tests/unit/components/Step.nuxt.test.js +18 -19
  218. package/tests/unit/components/Stepper.nuxt.test.js +18 -18
  219. package/tests/unit/composables/api_fetch.nuxt.test.js +34 -36
  220. package/tests/unit/composables/project_manager.nuxt.test.js +93 -112
  221. package/tests/unit/composables/run_function_when_microservices_connected.nuxt.test.js +36 -36
  222. package/tests/unit/composables/upload_file.nuxt.test.js +27 -29
  223. package/tests/unit/plugins/project_load.nuxt.test.js +31 -33
  224. package/tests/unit/stores/app.nuxt.test.js +90 -92
  225. package/tests/unit/stores/feedback.nuxt.test.js +47 -57
  226. package/tests/unit/stores/geode.nuxt.test.js +111 -115
  227. package/tests/unit/stores/infra.nuxt.test.js +148 -148
  228. package/tests/unit/stores/lambda.nuxt.test.js +72 -74
  229. package/tests/unit/stores/treeview.nuxt.test.js +19 -21
  230. package/tests/unit/stores/viewer.nuxt.test.js +109 -122
  231. package/tests/unit/utils/recaptcha.nuxt.test.js +25 -29
  232. package/tests/unit/utils/validate_schema.nuxt.test.js +17 -17
  233. package/tests/utils.js +11 -11
  234. package/tests/vitest.config.js +9 -9
  235. package/vuetify_config.js +2 -2
@@ -1,90 +1,90 @@
1
1
  // Node.js imports
2
2
 
3
3
  // Third party imports
4
- import _ from "lodash"
4
+ import _ from "lodash";
5
5
 
6
6
  // Local imports
7
- import { useAppStore } from "@ogw_front/stores/app"
8
- import { useInfraStore } from "@ogw_front/stores/infra"
7
+ import { useAppStore } from "@ogw_front/stores/app";
8
+ import { useInfraStore } from "@ogw_front/stores/infra";
9
9
 
10
10
  async function importExtensionFile(file) {
11
- await uploadExtension(file)
12
- return registerRunningExtensions()
11
+ await uploadExtension(file);
12
+ return registerRunningExtensions();
13
13
  }
14
14
 
15
15
  async function registerRunningExtensions() {
16
- const appStore = useAppStore()
17
- const infraStore = useInfraStore()
18
- const { extensionsArray } = await runExtensions()
16
+ const appStore = useAppStore();
17
+ const infraStore = useInfraStore();
18
+ const { extensionsArray } = await runExtensions();
19
19
 
20
20
  return Promise.all(
21
21
  extensionsArray.map(async (extension) => {
22
- const { name, version, frontendContent, port } = extension
22
+ const { name, version, frontendContent, port } = extension;
23
23
  const blob = new Blob([frontendContent], {
24
24
  type: "application/javascript",
25
- })
26
- const blobUrl = URL.createObjectURL(blob)
27
- const extensionModule = await appStore.loadExtension(blobUrl)
28
- console.log("[ExtensionManager] Extension loaded:", id)
25
+ });
26
+ const blobUrl = URL.createObjectURL(blob);
27
+ const extensionModule = await appStore.loadExtension(blobUrl);
28
+ console.log("[ExtensionManager] Extension loaded:", id);
29
29
 
30
30
  if (extensionModule.metadata?.store) {
31
- const storeFactory = extensionModule.metadata.store
32
- const store = storeFactory()
31
+ const storeFactory = extensionModule.metadata.store;
32
+ const store = storeFactory();
33
33
  store.$patch((state) => {
34
- state.default_local_port = port
35
- })
36
- appStore.registerStore(store)
37
- console.log("[ExtensionManager] Store registered:", store.$id)
38
- await store.connect()
39
- console.log("[ExtensionManager] Microservice connected:", store.$id)
40
- infraStore.register_microservice(store)
34
+ state.default_local_port = port;
35
+ });
36
+ appStore.registerStore(store);
37
+ console.log("[ExtensionManager] Store registered:", store.$id);
38
+ await store.connect();
39
+ console.log("[ExtensionManager] Microservice connected:", store.$id);
40
+ infraStore.register_microservice(store);
41
41
  }
42
42
  return {
43
43
  name,
44
44
  version,
45
45
  extensionModule,
46
- }
46
+ };
47
47
  }),
48
- )
48
+ );
49
49
  }
50
50
 
51
51
  async function unloadExtension(extensionId) {
52
- const appStore = useAppStore()
53
- console.log("[ExtensionManager] Unloading extension:", extensionId)
52
+ const appStore = useAppStore();
53
+ console.log("[ExtensionManager] Unloading extension:", extensionId);
54
54
 
55
- const extensionData = appStore.getExtension(extensionId)
55
+ const extensionData = appStore.getExtension(extensionId);
56
56
  if (!extensionData) {
57
- console.warn("[ExtensionManager] Extension not found:", extensionId)
58
- return false
57
+ console.warn("[ExtensionManager] Extension not found:", extensionId);
58
+ return false;
59
59
  }
60
60
 
61
61
  // Get the store if it exists
62
- const storeFactory = extensionData.metadata?.store
62
+ const storeFactory = extensionData.metadata?.store;
63
63
  if (storeFactory) {
64
- const store = storeFactory()
64
+ const store = storeFactory();
65
65
  // Stop the microservice if possible
66
66
  if (typeof store.kill === "function") {
67
- await store.kill()
67
+ await store.kill();
68
68
  }
69
69
  }
70
70
 
71
71
  // Unload from AppStore
72
- appStore.unloadExtension(extensionId)
72
+ appStore.unloadExtension(extensionId);
73
73
 
74
- console.log("[ExtensionManager] Extension unloaded:", extensionId)
75
- return true
74
+ console.log("[ExtensionManager] Extension unloaded:", extensionId);
75
+ return true;
76
76
  }
77
77
 
78
78
  async function uploadExtension(file) {
79
- const appStore = useAppStore()
80
- await appStore.upload(file)
79
+ const appStore = useAppStore();
80
+ await appStore.upload(file);
81
81
  }
82
82
 
83
83
  function runExtensions() {
84
- const appStore = useAppStore()
85
- const { projectFolderPath } = appStore
86
- const { PROJECT: projectName } = useRuntimeConfig().public
87
- const params = { projectFolderPath, projectName }
84
+ const appStore = useAppStore();
85
+ const { projectFolderPath } = appStore;
86
+ const { PROJECT: projectName } = useRuntimeConfig().public;
87
+ const params = { projectFolderPath, projectName };
88
88
 
89
89
  const schema = {
90
90
  $id: "/api/extensions/run",
@@ -96,9 +96,9 @@ function runExtensions() {
96
96
  },
97
97
  required: ["projectFolderPath", "projectName"],
98
98
  additionalProperties: false,
99
- }
99
+ };
100
100
 
101
- return appStore.request(schema, params)
101
+ return appStore.request(schema, params);
102
102
  }
103
103
 
104
104
  export {
@@ -107,4 +107,4 @@ export {
107
107
  uploadExtension,
108
108
  registerRunningExtensions,
109
109
  runExtensions,
110
- }
110
+ };
@@ -1,73 +1,62 @@
1
1
  // oxlint-disable promise/prefer-await-to-then
2
2
  // Third party imports
3
- import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json"
3
+ import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json";
4
4
 
5
5
  // Local imports
6
- import { useDataStore } from "@ogw_front/stores/data"
7
- import { useDataStyleStore } from "@ogw_front/stores/data_style"
8
- import { useGeodeStore } from "@ogw_front/stores/geode"
9
- import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer"
10
- import { useTreeviewStore } from "@ogw_front/stores/treeview"
6
+ import { useDataStore } from "@ogw_front/stores/data";
7
+ import { useDataStyleStore } from "@ogw_front/stores/data_style";
8
+ import { useGeodeStore } from "@ogw_front/stores/geode";
9
+ import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer";
10
+ import { useTreeviewStore } from "@ogw_front/stores/treeview";
11
11
 
12
- const SECOND = 1000
12
+ const SECOND = 1000;
13
13
 
14
14
  async function importWorkflow(files) {
15
- console.log("importWorkflow", { files })
16
- const start = Date.now()
17
- const promise_array = []
15
+ console.log("importWorkflow", { files });
16
+ const start = Date.now();
17
+ const promise_array = [];
18
18
  for (const file of files) {
19
- const { filename, geode_object_type } = file
20
- console.log({ filename }, { geode_object_type })
21
- promise_array.push(importFile(filename, geode_object_type))
19
+ const { filename, geode_object_type } = file;
20
+ console.log({ filename }, { geode_object_type });
21
+ promise_array.push(importFile(filename, geode_object_type));
22
22
  }
23
- const results = await Promise.all(promise_array)
24
- const hybridViewerStore = useHybridViewerStore()
25
- hybridViewerStore.remoteRender()
26
- console.log("importWorkflow completed in", (Date.now() - start) / SECOND)
27
- return results
23
+ const results = await Promise.all(promise_array);
24
+ const hybridViewerStore = useHybridViewerStore();
25
+ hybridViewerStore.remoteRender();
26
+ console.log("importWorkflow completed in", (Date.now() - start) / SECOND);
27
+ return results;
28
28
  }
29
29
 
30
30
  function buildImportItemFromPayloadApi(value, geode_object_type) {
31
- console.log("buildImportItemFromPayloadApi", { value, geode_object_type })
31
+ console.log("buildImportItemFromPayloadApi", { value, geode_object_type });
32
32
  return {
33
33
  ...value,
34
- }
34
+ };
35
35
  }
36
36
 
37
37
  async function importItem(item) {
38
- const dataStore = useDataStore()
39
- const dataStyleStore = useDataStyleStore()
40
- const hybridViewerStore = useHybridViewerStore()
41
- const treeviewStore = useTreeviewStore()
42
- const registerTask = dataStore.registerObject(item.id)
43
- const addDataTask = dataStore.addItem(item)
38
+ const dataStore = useDataStore();
39
+ const dataStyleStore = useDataStyleStore();
40
+ const hybridViewerStore = useHybridViewerStore();
41
+ const treeviewStore = useTreeviewStore();
42
+ const registerTask = dataStore.registerObject(item.id);
43
+ const addDataTask = dataStore.addItem(item);
44
44
 
45
45
  const addDataComponentsTask =
46
- item.viewer_type === "model"
47
- ? dataStore.addComponents(item)
48
- : Promise.resolve()
46
+ item.viewer_type === "model" ? dataStore.addComponents(item) : Promise.resolve();
49
47
  const addDataRelationsTask =
50
- item.viewer_type === "model"
51
- ? dataStore.addComponentRelations(item)
52
- : Promise.resolve()
48
+ item.viewer_type === "model" ? dataStore.addComponentRelations(item) : Promise.resolve();
53
49
  const addTreeviewTask = treeviewStore.addItem(
54
50
  item.geode_object_type,
55
51
  item.name,
56
52
  item.id,
57
53
  item.viewer_type,
58
- )
59
- const addStyleTask = dataStyleStore.addDataStyle(
60
- item.id,
61
- item.geode_object_type,
62
- )
63
- const addViewerTask = addDataTask.then(() =>
64
- hybridViewerStore.addItem(item.id),
65
- )
66
- const applyStyleTask = Promise.all([
67
- registerTask,
68
- addDataComponentsTask,
69
- addStyleTask,
70
- ]).then(() => dataStyleStore.applyDefaultStyle(item.id))
54
+ );
55
+ const addStyleTask = dataStyleStore.addDataStyle(item.id, item.geode_object_type);
56
+ const addViewerTask = addDataTask.then(() => hybridViewerStore.addItem(item.id));
57
+ const applyStyleTask = Promise.all([registerTask, addDataComponentsTask, addStyleTask]).then(() =>
58
+ dataStyleStore.applyDefaultStyle(item.id),
59
+ );
71
60
  await Promise.all([
72
61
  registerTask,
73
62
  addDataTask,
@@ -77,32 +66,29 @@ async function importItem(item) {
77
66
  addDataRelationsTask,
78
67
  addViewerTask,
79
68
  applyStyleTask,
80
- ])
81
- return item.id
69
+ ]);
70
+ return item.id;
82
71
  }
83
72
 
84
73
  async function importFile(filename, geode_object_type) {
85
- const geodeStore = useGeodeStore()
86
- const response = await geodeStore.request(
87
- back_schemas.opengeodeweb_back.save_viewable_file,
88
- {
89
- geode_object_type,
90
- filename,
91
- },
92
- )
74
+ const geodeStore = useGeodeStore();
75
+ const response = await geodeStore.request(back_schemas.opengeodeweb_back.save_viewable_file, {
76
+ geode_object_type,
77
+ filename,
78
+ });
93
79
 
94
- const item = buildImportItemFromPayloadApi(response, geode_object_type)
95
- return importItem(item)
80
+ const item = buildImportItemFromPayloadApi(response, geode_object_type);
81
+ return importItem(item);
96
82
  }
97
83
 
98
84
  async function importWorkflowFromSnapshot(items) {
99
- console.log("[importWorkflowFromSnapshot] start", { count: items?.length })
100
- const hybridViewerStore = useHybridViewerStore()
85
+ console.log("[importWorkflowFromSnapshot] start", { count: items?.length });
86
+ const hybridViewerStore = useHybridViewerStore();
101
87
 
102
- const ids = await Promise.all(items.map((item) => importItem(item)))
103
- hybridViewerStore.remoteRender()
104
- console.log("[importWorkflowFromSnapshot] done", { ids })
105
- return ids
88
+ const ids = await Promise.all(items.map((item) => importItem(item)));
89
+ hybridViewerStore.remoteRender();
90
+ console.log("[importWorkflowFromSnapshot] done", { ids });
91
+ return ids;
106
92
  }
107
93
 
108
- export { importFile, importWorkflow, importWorkflowFromSnapshot, importItem }
94
+ export { importFile, importWorkflow, importWorkflowFromSnapshot, importItem };
@@ -2,6 +2,6 @@ const appMode = {
2
2
  DESKTOP: "DESKTOP",
3
3
  BROWSER: "BROWSER",
4
4
  CLOUD: "CLOUD",
5
- }
5
+ };
6
6
 
7
- export { appMode }
7
+ export { appMode };
@@ -1,151 +1,145 @@
1
1
  // Node imports
2
- import fs from "node:fs"
3
- import path from "node:path"
4
- import { setTimeout } from "node:timers/promises"
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { setTimeout } from "node:timers/promises";
5
5
 
6
6
  // Third party imports
7
- import { WebSocket } from "ws"
8
- import pTimeout from "p-timeout"
9
- import { rimraf } from "rimraf"
7
+ import { WebSocket } from "ws";
8
+ import pTimeout from "p-timeout";
9
+ import { rimraf } from "rimraf";
10
10
 
11
- const MAX_DELETE_FOLDER_RETRIES = 5
11
+ const MAX_DELETE_FOLDER_RETRIES = 5;
12
12
 
13
13
  async function deleteFolderRecursive(folderPath) {
14
14
  if (!fs.existsSync(folderPath)) {
15
- console.log(`Folder ${folderPath} does not exist.`)
16
- return
15
+ console.log(`Folder ${folderPath} does not exist.`);
16
+ return;
17
17
  }
18
18
  for (let i = 0; i <= MAX_DELETE_FOLDER_RETRIES; i += 1) {
19
19
  try {
20
- console.log(`Deleting folder: ${folderPath}`)
20
+ console.log(`Deleting folder: ${folderPath}`);
21
21
  // oxlint-disable-next-line no-await-in-loop
22
- await rimraf(folderPath)
23
- console.log(`Deleted folder: ${folderPath}`)
24
- return
22
+ await rimraf(folderPath);
23
+ console.log(`Deleted folder: ${folderPath}`);
24
+ return;
25
25
  } catch (error) {
26
- console.error(`Error deleting folder ${folderPath}:`, error)
26
+ console.error(`Error deleting folder ${folderPath}:`, error);
27
27
  // Wait before retrying
28
- const MILLISECONDS_PER_RETRY = 1000
29
- const DELAY = MILLISECONDS_PER_RETRY * (i + 1)
28
+ const MILLISECONDS_PER_RETRY = 1000;
29
+ const DELAY = MILLISECONDS_PER_RETRY * (i + 1);
30
30
  // oxlint-disable-next-line no-await-in-loop
31
- await setTimeout(DELAY)
32
- console.log("Retrying delete folder")
31
+ await setTimeout(DELAY);
32
+ console.log("Retrying delete folder");
33
33
  }
34
34
  }
35
35
  }
36
36
 
37
37
  function killHttpMicroservice(microservice) {
38
- console.log("killHttpMicroservice", { ...microservice })
39
- const failMessage = `Failed to kill ${microservice.name}`
38
+ console.log("killHttpMicroservice", { ...microservice });
39
+ const failMessage = `Failed to kill ${microservice.name}`;
40
40
  async function do_kill() {
41
41
  try {
42
42
  await fetch(microservice.url, {
43
43
  method: microservice.method,
44
- })
45
- throw new Error(failMessage)
44
+ });
45
+ throw new Error(failMessage);
46
46
  } catch (error) {
47
- console.log(`${microservice.name} closed`, error)
47
+ console.log(`${microservice.name} closed`, error);
48
48
  }
49
49
  }
50
50
  return pTimeout(do_kill(), {
51
51
  milliseconds: 5000,
52
52
  message: failMessage,
53
- })
53
+ });
54
54
  }
55
55
 
56
56
  function killWebsocketMicroservice(microservice) {
57
- console.log("killWebsocketMicroservice", { ...microservice })
58
- const failMessage = `Failed to kill ${microservice.name}`
59
- const successMessage = `Disconnected from ${microservice.name} WebSocket server`
57
+ console.log("killWebsocketMicroservice", { ...microservice });
58
+ const failMessage = `Failed to kill ${microservice.name}`;
59
+ const successMessage = `Disconnected from ${microservice.name} WebSocket server`;
60
60
  function do_kill() {
61
61
  // oxlint-disable-next-line promise/avoid-new
62
62
  return new Promise((resolve) => {
63
- const socket = new WebSocket(microservice.url)
63
+ const socket = new WebSocket(microservice.url);
64
64
  socket.on("open", () => {
65
- console.log("Connected to WebSocket server")
65
+ console.log("Connected to WebSocket server");
66
66
  socket.send(
67
67
  JSON.stringify({
68
68
  id: "system:hello",
69
69
  method: "wslink.hello",
70
70
  args: [{ secret: "wslink-secret" }],
71
71
  }),
72
- )
73
- })
72
+ );
73
+ });
74
74
  socket.on("message", (data) => {
75
- const message = data.toString()
76
- console.log("Received from server:", message)
75
+ const message = data.toString();
76
+ console.log("Received from server:", message);
77
77
  if (message.includes("hello")) {
78
78
  socket.send(
79
79
  JSON.stringify({
80
80
  id: "application.exit",
81
81
  method: "application.exit",
82
82
  }),
83
- )
84
- console.log(successMessage)
85
- socket.close()
86
- resolve()
83
+ );
84
+ console.log(successMessage);
85
+ socket.close();
86
+ resolve();
87
87
  }
88
- })
88
+ });
89
89
  socket.on("close", () => {
90
- console.log(successMessage)
91
- resolve()
92
- })
90
+ console.log(successMessage);
91
+ resolve();
92
+ });
93
93
  socket.on("error", (error) => {
94
- console.error("WebSocket error:", error)
95
- socket.close()
96
- resolve()
97
- })
98
- })
94
+ console.error("WebSocket error:", error);
95
+ socket.close();
96
+ resolve();
97
+ });
98
+ });
99
99
  }
100
100
  return pTimeout(do_kill(), {
101
101
  milliseconds: 5000,
102
102
  message: failMessage,
103
- })
103
+ });
104
104
  }
105
105
 
106
106
  function killMicroservice(microservice) {
107
107
  if (microservice.type === "back") {
108
- return killHttpMicroservice(microservice)
109
- } else if (microservice.type === "viewer") {
110
- return killWebsocketMicroservice(microservice)
111
- } else {
112
- throw new Error(`Unknown microservice type: ${microservice.type}`)
108
+ return killHttpMicroservice(microservice);
113
109
  }
110
+ if (microservice.type === "viewer") {
111
+ return killWebsocketMicroservice(microservice);
112
+ }
113
+ throw new Error(`Unknown microservice type: ${microservice.type}`);
114
114
  }
115
115
 
116
116
  function killMicroservices(microservices) {
117
- console.log("killMicroservices", { microservices })
117
+ console.log("killMicroservices", { microservices });
118
118
  return Promise.all(
119
- microservices.map(
120
- async (microservice) => await killMicroservice(microservice),
121
- ),
122
- )
119
+ microservices.map(async (microservice) => await killMicroservice(microservice)),
120
+ );
123
121
  }
124
122
 
125
123
  function projectMicroservices(projectFolderPath) {
126
- console.log("projectMicroservices", { projectFolderPath })
127
- const filePath = microservicesMetadatasPath(projectFolderPath)
124
+ console.log("projectMicroservices", { projectFolderPath });
125
+ const filePath = microservicesMetadatasPath(projectFolderPath);
128
126
 
129
127
  if (!fs.existsSync(filePath)) {
130
- const microservicesMetadatas = { microservices: [] }
131
- fs.writeFileSync(
132
- filePath,
133
- JSON.stringify(microservicesMetadatas, undefined, 2),
134
- "utf8",
135
- )
128
+ const microservicesMetadatas = { microservices: [] };
129
+ fs.writeFileSync(filePath, JSON.stringify(microservicesMetadatas, undefined, 2), "utf8");
136
130
  }
137
- const content = JSON.parse(fs.readFileSync(filePath, "utf8"))
138
- return content.microservices
131
+ const content = JSON.parse(fs.readFileSync(filePath, "utf8"));
132
+ return content.microservices;
139
133
  }
140
134
 
141
135
  async function cleanupBackend(projectFolderPath) {
142
- const microservices = projectMicroservices(projectFolderPath)
143
- await killMicroservices(microservices)
144
- await deleteFolderRecursive(projectFolderPath)
136
+ const microservices = projectMicroservices(projectFolderPath);
137
+ await killMicroservices(microservices);
138
+ await deleteFolderRecursive(projectFolderPath);
145
139
  }
146
140
 
147
141
  function microservicesMetadatasPath(projectFolderPath) {
148
- return path.join(projectFolderPath, "microservices.json")
142
+ return path.join(projectFolderPath, "microservices.json");
149
143
  }
150
144
 
151
- export { cleanupBackend, microservicesMetadatasPath }
145
+ export { cleanupBackend, microservicesMetadatasPath };