create-swdg-frontend 0.1.7 → 0.2.0

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 (440) hide show
  1. package/README.md +31 -13
  2. package/bin/index.js +3 -244
  3. package/lib/argv.js +43 -0
  4. package/lib/cli.js +141 -0
  5. package/lib/constants.js +24 -0
  6. package/lib/gis.js +92 -0
  7. package/lib/manifest.js +23 -0
  8. package/lib/prompts.js +55 -0
  9. package/lib/scaffold.js +118 -0
  10. package/package.json +6 -2
  11. package/scripts/sync-template.js +120 -0
  12. package/scripts/validate-template.mjs +74 -0
  13. package/stubs/tsconfig.node.json +11 -0
  14. package/stubs/types-env.d.ts +9 -0
  15. package/stubs/vite.config.ts +64 -0
  16. package/template/.env.example +6 -0
  17. package/template/.github/workflows/ci.yml +23 -0
  18. package/template/.github/workflows/release.yml +69 -0
  19. package/template/.stylelintrc.json +7 -1
  20. package/template/README.md +95 -32
  21. package/template/auto-imports.d.ts +10 -0
  22. package/template/docs/MAINTAINER.md +77 -0
  23. package/template/docs/ONBOARDING.md +284 -0
  24. package/template/docs/TESTING.md +104 -0
  25. package/template/package.json +48 -41
  26. package/template/pnpm-lock.yaml +6360 -0
  27. package/template/scripts/gen-api.cjs +20 -7
  28. package/template/scripts/release.mjs +22 -28
  29. package/template/scripts/set-release-version.mjs +46 -0
  30. package/template/scripts/test-pipeline.mjs +85 -0
  31. package/template/scripts/test-scaffold.mjs +197 -0
  32. package/template/scripts/test-template.mjs +52 -0
  33. package/template/scripts/verify.mjs +28 -0
  34. package/template/scripts/vite-plugin-cesium-dev.ts +56 -0
  35. package/template/src/api/README.md +4 -0
  36. package/template/src/components/Body/index.vue +65 -35
  37. package/template/src/components/CesiumViewer/index.vue +36 -0
  38. package/template/src/components/Header/index.vue +16 -5
  39. package/template/src/components/OnboardingDeck/index.vue +449 -0
  40. package/template/src/data/onboardingSlides.ts +208 -0
  41. package/template/src/main.ts +1 -0
  42. package/template/src/router/index.ts +20 -14
  43. package/template/src/router/routeUtils.ts +13 -0
  44. package/template/src/styles/shell.css +232 -0
  45. package/template/src/utils/axios-middleware.js +1 -1
  46. package/template/src/utils/cesium/index.ts +71 -0
  47. package/template/src/utils/composables/useFeatureGis.ts +24 -0
  48. package/template/src/views/examples/cesium/index.vue +85 -0
  49. package/template/src/views/examples/guide/index.vue +42 -0
  50. package/template/src/views/examples/test/index.vue +63 -0
  51. package/template/src/views/index.vue +2 -3
  52. package/template/tests/README.md +1 -0
  53. package/template/tests/unit/onboardingSlides.test.ts +20 -0
  54. package/template/tests/unit/router.utils.test.ts +21 -0
  55. package/template/tests/unit/scaffold.lib.test.ts +44 -0
  56. package/template/tests/unit/useFeatureGis.test.ts +14 -0
  57. package/template/tsconfig.json +17 -17
  58. package/template/tsconfig.node.json +1 -1
  59. package/template/types/env.d.ts +13 -0
  60. package/template/vite.config.ts +26 -5
  61. package/template/vitest.config.ts +13 -0
  62. package/template/.env +0 -1
  63. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1012
  64. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1012
  65. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1012
  66. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1012
  67. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1012
  68. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1012
  69. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1012
  70. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1012
  71. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1012
  72. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1012
  73. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1012
  74. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1012
  75. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1012
  76. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1012
  77. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1012
  78. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1012
  79. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1012
  80. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1012
  81. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1012
  82. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1012
  83. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -438
  84. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1012
  85. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1012
  86. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1012
  87. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1012
  88. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1012
  89. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1012
  90. package/template/public/Cesium1.119/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1012
  91. package/template/public/Cesium1.119/Assets/Images/bing_maps_credit.png +0 -0
  92. package/template/public/Cesium1.119/Assets/Images/cesium_credit.png +0 -0
  93. package/template/public/Cesium1.119/Assets/Images/google_earth_credit.png +0 -0
  94. package/template/public/Cesium1.119/Assets/Images/ion-credit.png +0 -0
  95. package/template/public/Cesium1.119/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  96. package/template/public/Cesium1.119/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  97. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  98. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  99. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  100. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  101. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  102. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  103. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  104. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  105. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  106. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  107. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  108. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  109. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  110. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  111. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  112. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  113. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  114. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  115. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  116. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  117. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  118. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  119. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  120. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  121. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  122. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  123. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  124. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  125. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  126. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  127. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  128. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  129. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  130. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  131. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  132. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  133. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  134. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  135. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  136. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  137. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  138. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  139. package/template/public/Cesium1.119/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  140. package/template/public/Cesium1.119/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  141. package/template/public/Cesium1.119/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  142. package/template/public/Cesium1.119/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  143. package/template/public/Cesium1.119/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  144. package/template/public/Cesium1.119/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  145. package/template/public/Cesium1.119/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  146. package/template/public/Cesium1.119/Assets/Textures/maki/airfield.png +0 -0
  147. package/template/public/Cesium1.119/Assets/Textures/maki/airport.png +0 -0
  148. package/template/public/Cesium1.119/Assets/Textures/maki/alcohol-shop.png +0 -0
  149. package/template/public/Cesium1.119/Assets/Textures/maki/america-football.png +0 -0
  150. package/template/public/Cesium1.119/Assets/Textures/maki/art-gallery.png +0 -0
  151. package/template/public/Cesium1.119/Assets/Textures/maki/bakery.png +0 -0
  152. package/template/public/Cesium1.119/Assets/Textures/maki/bank.png +0 -0
  153. package/template/public/Cesium1.119/Assets/Textures/maki/bar.png +0 -0
  154. package/template/public/Cesium1.119/Assets/Textures/maki/baseball.png +0 -0
  155. package/template/public/Cesium1.119/Assets/Textures/maki/basketball.png +0 -0
  156. package/template/public/Cesium1.119/Assets/Textures/maki/beer.png +0 -0
  157. package/template/public/Cesium1.119/Assets/Textures/maki/bicycle.png +0 -0
  158. package/template/public/Cesium1.119/Assets/Textures/maki/building.png +0 -0
  159. package/template/public/Cesium1.119/Assets/Textures/maki/bus.png +0 -0
  160. package/template/public/Cesium1.119/Assets/Textures/maki/cafe.png +0 -0
  161. package/template/public/Cesium1.119/Assets/Textures/maki/camera.png +0 -0
  162. package/template/public/Cesium1.119/Assets/Textures/maki/campsite.png +0 -0
  163. package/template/public/Cesium1.119/Assets/Textures/maki/car.png +0 -0
  164. package/template/public/Cesium1.119/Assets/Textures/maki/cemetery.png +0 -0
  165. package/template/public/Cesium1.119/Assets/Textures/maki/cesium.png +0 -0
  166. package/template/public/Cesium1.119/Assets/Textures/maki/chemist.png +0 -0
  167. package/template/public/Cesium1.119/Assets/Textures/maki/cinema.png +0 -0
  168. package/template/public/Cesium1.119/Assets/Textures/maki/circle-stroked.png +0 -0
  169. package/template/public/Cesium1.119/Assets/Textures/maki/circle.png +0 -0
  170. package/template/public/Cesium1.119/Assets/Textures/maki/city.png +0 -0
  171. package/template/public/Cesium1.119/Assets/Textures/maki/clothing-store.png +0 -0
  172. package/template/public/Cesium1.119/Assets/Textures/maki/college.png +0 -0
  173. package/template/public/Cesium1.119/Assets/Textures/maki/commercial.png +0 -0
  174. package/template/public/Cesium1.119/Assets/Textures/maki/cricket.png +0 -0
  175. package/template/public/Cesium1.119/Assets/Textures/maki/cross.png +0 -0
  176. package/template/public/Cesium1.119/Assets/Textures/maki/dam.png +0 -0
  177. package/template/public/Cesium1.119/Assets/Textures/maki/danger.png +0 -0
  178. package/template/public/Cesium1.119/Assets/Textures/maki/disability.png +0 -0
  179. package/template/public/Cesium1.119/Assets/Textures/maki/dog-park.png +0 -0
  180. package/template/public/Cesium1.119/Assets/Textures/maki/embassy.png +0 -0
  181. package/template/public/Cesium1.119/Assets/Textures/maki/emergency-telephone.png +0 -0
  182. package/template/public/Cesium1.119/Assets/Textures/maki/entrance.png +0 -0
  183. package/template/public/Cesium1.119/Assets/Textures/maki/farm.png +0 -0
  184. package/template/public/Cesium1.119/Assets/Textures/maki/fast-food.png +0 -0
  185. package/template/public/Cesium1.119/Assets/Textures/maki/ferry.png +0 -0
  186. package/template/public/Cesium1.119/Assets/Textures/maki/fire-station.png +0 -0
  187. package/template/public/Cesium1.119/Assets/Textures/maki/fuel.png +0 -0
  188. package/template/public/Cesium1.119/Assets/Textures/maki/garden.png +0 -0
  189. package/template/public/Cesium1.119/Assets/Textures/maki/gift.png +0 -0
  190. package/template/public/Cesium1.119/Assets/Textures/maki/golf.png +0 -0
  191. package/template/public/Cesium1.119/Assets/Textures/maki/grocery.png +0 -0
  192. package/template/public/Cesium1.119/Assets/Textures/maki/hairdresser.png +0 -0
  193. package/template/public/Cesium1.119/Assets/Textures/maki/harbor.png +0 -0
  194. package/template/public/Cesium1.119/Assets/Textures/maki/heart.png +0 -0
  195. package/template/public/Cesium1.119/Assets/Textures/maki/heliport.png +0 -0
  196. package/template/public/Cesium1.119/Assets/Textures/maki/hospital.png +0 -0
  197. package/template/public/Cesium1.119/Assets/Textures/maki/ice-cream.png +0 -0
  198. package/template/public/Cesium1.119/Assets/Textures/maki/industrial.png +0 -0
  199. package/template/public/Cesium1.119/Assets/Textures/maki/land-use.png +0 -0
  200. package/template/public/Cesium1.119/Assets/Textures/maki/laundry.png +0 -0
  201. package/template/public/Cesium1.119/Assets/Textures/maki/library.png +0 -0
  202. package/template/public/Cesium1.119/Assets/Textures/maki/lighthouse.png +0 -0
  203. package/template/public/Cesium1.119/Assets/Textures/maki/lodging.png +0 -0
  204. package/template/public/Cesium1.119/Assets/Textures/maki/logging.png +0 -0
  205. package/template/public/Cesium1.119/Assets/Textures/maki/london-underground.png +0 -0
  206. package/template/public/Cesium1.119/Assets/Textures/maki/marker-stroked.png +0 -0
  207. package/template/public/Cesium1.119/Assets/Textures/maki/marker.png +0 -0
  208. package/template/public/Cesium1.119/Assets/Textures/maki/minefield.png +0 -0
  209. package/template/public/Cesium1.119/Assets/Textures/maki/mobilephone.png +0 -0
  210. package/template/public/Cesium1.119/Assets/Textures/maki/monument.png +0 -0
  211. package/template/public/Cesium1.119/Assets/Textures/maki/museum.png +0 -0
  212. package/template/public/Cesium1.119/Assets/Textures/maki/music.png +0 -0
  213. package/template/public/Cesium1.119/Assets/Textures/maki/oil-well.png +0 -0
  214. package/template/public/Cesium1.119/Assets/Textures/maki/park.png +0 -0
  215. package/template/public/Cesium1.119/Assets/Textures/maki/park2.png +0 -0
  216. package/template/public/Cesium1.119/Assets/Textures/maki/parking-garage.png +0 -0
  217. package/template/public/Cesium1.119/Assets/Textures/maki/parking.png +0 -0
  218. package/template/public/Cesium1.119/Assets/Textures/maki/pharmacy.png +0 -0
  219. package/template/public/Cesium1.119/Assets/Textures/maki/pitch.png +0 -0
  220. package/template/public/Cesium1.119/Assets/Textures/maki/place-of-worship.png +0 -0
  221. package/template/public/Cesium1.119/Assets/Textures/maki/playground.png +0 -0
  222. package/template/public/Cesium1.119/Assets/Textures/maki/police.png +0 -0
  223. package/template/public/Cesium1.119/Assets/Textures/maki/polling-place.png +0 -0
  224. package/template/public/Cesium1.119/Assets/Textures/maki/post.png +0 -0
  225. package/template/public/Cesium1.119/Assets/Textures/maki/prison.png +0 -0
  226. package/template/public/Cesium1.119/Assets/Textures/maki/rail-above.png +0 -0
  227. package/template/public/Cesium1.119/Assets/Textures/maki/rail-light.png +0 -0
  228. package/template/public/Cesium1.119/Assets/Textures/maki/rail-metro.png +0 -0
  229. package/template/public/Cesium1.119/Assets/Textures/maki/rail-underground.png +0 -0
  230. package/template/public/Cesium1.119/Assets/Textures/maki/rail.png +0 -0
  231. package/template/public/Cesium1.119/Assets/Textures/maki/religious-christian.png +0 -0
  232. package/template/public/Cesium1.119/Assets/Textures/maki/religious-jewish.png +0 -0
  233. package/template/public/Cesium1.119/Assets/Textures/maki/religious-muslim.png +0 -0
  234. package/template/public/Cesium1.119/Assets/Textures/maki/restaurant.png +0 -0
  235. package/template/public/Cesium1.119/Assets/Textures/maki/roadblock.png +0 -0
  236. package/template/public/Cesium1.119/Assets/Textures/maki/rocket.png +0 -0
  237. package/template/public/Cesium1.119/Assets/Textures/maki/school.png +0 -0
  238. package/template/public/Cesium1.119/Assets/Textures/maki/scooter.png +0 -0
  239. package/template/public/Cesium1.119/Assets/Textures/maki/shop.png +0 -0
  240. package/template/public/Cesium1.119/Assets/Textures/maki/skiing.png +0 -0
  241. package/template/public/Cesium1.119/Assets/Textures/maki/slaughterhouse.png +0 -0
  242. package/template/public/Cesium1.119/Assets/Textures/maki/soccer.png +0 -0
  243. package/template/public/Cesium1.119/Assets/Textures/maki/square-stroked.png +0 -0
  244. package/template/public/Cesium1.119/Assets/Textures/maki/square.png +0 -0
  245. package/template/public/Cesium1.119/Assets/Textures/maki/star-stroked.png +0 -0
  246. package/template/public/Cesium1.119/Assets/Textures/maki/star.png +0 -0
  247. package/template/public/Cesium1.119/Assets/Textures/maki/suitcase.png +0 -0
  248. package/template/public/Cesium1.119/Assets/Textures/maki/swimming.png +0 -0
  249. package/template/public/Cesium1.119/Assets/Textures/maki/telephone.png +0 -0
  250. package/template/public/Cesium1.119/Assets/Textures/maki/tennis.png +0 -0
  251. package/template/public/Cesium1.119/Assets/Textures/maki/theatre.png +0 -0
  252. package/template/public/Cesium1.119/Assets/Textures/maki/toilets.png +0 -0
  253. package/template/public/Cesium1.119/Assets/Textures/maki/town-hall.png +0 -0
  254. package/template/public/Cesium1.119/Assets/Textures/maki/town.png +0 -0
  255. package/template/public/Cesium1.119/Assets/Textures/maki/triangle-stroked.png +0 -0
  256. package/template/public/Cesium1.119/Assets/Textures/maki/triangle.png +0 -0
  257. package/template/public/Cesium1.119/Assets/Textures/maki/village.png +0 -0
  258. package/template/public/Cesium1.119/Assets/Textures/maki/warehouse.png +0 -0
  259. package/template/public/Cesium1.119/Assets/Textures/maki/waste-basket.png +0 -0
  260. package/template/public/Cesium1.119/Assets/Textures/maki/water.png +0 -0
  261. package/template/public/Cesium1.119/Assets/Textures/maki/wetland.png +0 -0
  262. package/template/public/Cesium1.119/Assets/Textures/maki/zoo.png +0 -0
  263. package/template/public/Cesium1.119/Assets/Textures/moonSmall.jpg +0 -0
  264. package/template/public/Cesium1.119/Assets/Textures/pin.svg +0 -1
  265. package/template/public/Cesium1.119/Assets/Textures/waterNormals.jpg +0 -0
  266. package/template/public/Cesium1.119/Assets/Textures/waterNormalsSmall.jpg +0 -0
  267. package/template/public/Cesium1.119/Assets/approximateTerrainHeights.json +0 -10924
  268. package/template/public/Cesium1.119/Cesium.js +0 -185772
  269. package/template/public/Cesium1.119/ThirdParty/Workers/package.json +0 -3
  270. package/template/public/Cesium1.119/ThirdParty/Workers/pako_deflate.min.js +0 -1681
  271. package/template/public/Cesium1.119/ThirdParty/Workers/pako_inflate.min.js +0 -1489
  272. package/template/public/Cesium1.119/ThirdParty/Workers/z-worker-pako.js +0 -1070
  273. package/template/public/Cesium1.119/ThirdParty/basis_transcoder.wasm +0 -0
  274. package/template/public/Cesium1.119/ThirdParty/draco_decoder.wasm +0 -0
  275. package/template/public/Cesium1.119/ThirdParty/google-earth-dbroot-parser.js +0 -11424
  276. package/template/public/Cesium1.119/Widgets/Animation/Animation.css +0 -127
  277. package/template/public/Cesium1.119/Widgets/Animation/lighter.css +0 -78
  278. package/template/public/Cesium1.119/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -112
  279. package/template/public/Cesium1.119/Widgets/BaseLayerPicker/lighter.css +0 -28
  280. package/template/public/Cesium1.119/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -104
  281. package/template/public/Cesium1.119/Widgets/CesiumInspector/CesiumInspector.css +0 -115
  282. package/template/public/Cesium1.119/Widgets/CesiumWidget/CesiumWidget.css +0 -119
  283. package/template/public/Cesium1.119/Widgets/CesiumWidget/lighter.css +0 -14
  284. package/template/public/Cesium1.119/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  285. package/template/public/Cesium1.119/Widgets/Geocoder/Geocoder.css +0 -72
  286. package/template/public/Cesium1.119/Widgets/Geocoder/lighter.css +0 -17
  287. package/template/public/Cesium1.119/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  288. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  289. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  290. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  291. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  292. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  293. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  294. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  295. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  296. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  297. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  298. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  299. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  300. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  301. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  302. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  303. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  304. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  305. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  306. package/template/public/Cesium1.119/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  307. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  308. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  309. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  310. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  311. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  312. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  313. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  314. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  315. package/template/public/Cesium1.119/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  316. package/template/public/Cesium1.119/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  317. package/template/public/Cesium1.119/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  318. package/template/public/Cesium1.119/Widgets/Images/TimelineIcons.png +0 -0
  319. package/template/public/Cesium1.119/Widgets/Images/info-loading.gif +0 -0
  320. package/template/public/Cesium1.119/Widgets/InfoBox/InfoBox.css +0 -94
  321. package/template/public/Cesium1.119/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  322. package/template/public/Cesium1.119/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -95
  323. package/template/public/Cesium1.119/Widgets/NavigationHelpButton/lighter.css +0 -38
  324. package/template/public/Cesium1.119/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  325. package/template/public/Cesium1.119/Widgets/ProjectionPicker/ProjectionPicker.css +0 -46
  326. package/template/public/Cesium1.119/Widgets/SceneModePicker/SceneModePicker.css +0 -72
  327. package/template/public/Cesium1.119/Widgets/SelectionIndicator/SelectionIndicator.css +0 -22
  328. package/template/public/Cesium1.119/Widgets/Timeline/Timeline.css +0 -103
  329. package/template/public/Cesium1.119/Widgets/Timeline/lighter.css +0 -18
  330. package/template/public/Cesium1.119/Widgets/VRButton/VRButton.css +0 -8
  331. package/template/public/Cesium1.119/Widgets/Viewer/Viewer.css +0 -107
  332. package/template/public/Cesium1.119/Widgets/VoxelInspector/VoxelInspector.css +0 -18
  333. package/template/public/Cesium1.119/Widgets/lighter.css +0 -246
  334. package/template/public/Cesium1.119/Widgets/lighterShared.css +0 -46
  335. package/template/public/Cesium1.119/Widgets/shared.css +0 -103
  336. package/template/public/Cesium1.119/Widgets/widgets.css +0 -1376
  337. package/template/public/Cesium1.119/Workers/chunk-3C7WC463.js +0 -611
  338. package/template/public/Cesium1.119/Workers/chunk-3JW36LZF.js +0 -166
  339. package/template/public/Cesium1.119/Workers/chunk-4BTGX3WJ.js +0 -264
  340. package/template/public/Cesium1.119/Workers/chunk-4WRMLZA7.js +0 -128
  341. package/template/public/Cesium1.119/Workers/chunk-7Z5IIKOJ.js +0 -8046
  342. package/template/public/Cesium1.119/Workers/chunk-ABGXSJNX.js +0 -341
  343. package/template/public/Cesium1.119/Workers/chunk-AMQUWUD4.js +0 -269
  344. package/template/public/Cesium1.119/Workers/chunk-ATPDRNKI.js +0 -28
  345. package/template/public/Cesium1.119/Workers/chunk-BMHPVZ4H.js +0 -199
  346. package/template/public/Cesium1.119/Workers/chunk-CBEO3SHS.js +0 -1102
  347. package/template/public/Cesium1.119/Workers/chunk-CV7DLCWG.js +0 -485
  348. package/template/public/Cesium1.119/Workers/chunk-DQO6B4EQ.js +0 -76
  349. package/template/public/Cesium1.119/Workers/chunk-ED3TLP6D.js +0 -91
  350. package/template/public/Cesium1.119/Workers/chunk-EFZKO5RU.js +0 -42
  351. package/template/public/Cesium1.119/Workers/chunk-F5IHREXR.js +0 -2678
  352. package/template/public/Cesium1.119/Workers/chunk-FKRG4HDY.js +0 -516
  353. package/template/public/Cesium1.119/Workers/chunk-FYOYUPXG.js +0 -399
  354. package/template/public/Cesium1.119/Workers/chunk-GFN7NNSJ.js +0 -65
  355. package/template/public/Cesium1.119/Workers/chunk-HEEMUCG6.js +0 -92
  356. package/template/public/Cesium1.119/Workers/chunk-HSWA4OEL.js +0 -672
  357. package/template/public/Cesium1.119/Workers/chunk-IAC5XVZV.js +0 -287
  358. package/template/public/Cesium1.119/Workers/chunk-II4VNKYR.js +0 -50
  359. package/template/public/Cesium1.119/Workers/chunk-ILGBPNP6.js +0 -28
  360. package/template/public/Cesium1.119/Workers/chunk-IRH46BDL.js +0 -124
  361. package/template/public/Cesium1.119/Workers/chunk-IUA6FAOZ.js +0 -31
  362. package/template/public/Cesium1.119/Workers/chunk-K4ASOM65.js +0 -331
  363. package/template/public/Cesium1.119/Workers/chunk-KCIZBVXL.js +0 -258
  364. package/template/public/Cesium1.119/Workers/chunk-KF5NF354.js +0 -162
  365. package/template/public/Cesium1.119/Workers/chunk-KRKI6AAO.js +0 -773
  366. package/template/public/Cesium1.119/Workers/chunk-KZNJOCYU.js +0 -162
  367. package/template/public/Cesium1.119/Workers/chunk-O5IJ3OGP.js +0 -857
  368. package/template/public/Cesium1.119/Workers/chunk-OO23RBLX.js +0 -183
  369. package/template/public/Cesium1.119/Workers/chunk-P37AI2DW.js +0 -85
  370. package/template/public/Cesium1.119/Workers/chunk-PDMQLSBL.js +0 -108
  371. package/template/public/Cesium1.119/Workers/chunk-PEYJTJPE.js +0 -73
  372. package/template/public/Cesium1.119/Workers/chunk-POASMU2N.js +0 -2372
  373. package/template/public/Cesium1.119/Workers/chunk-PXCJYT2S.js +0 -73
  374. package/template/public/Cesium1.119/Workers/chunk-Q6L7X3LP.js +0 -538
  375. package/template/public/Cesium1.119/Workers/chunk-QB3MDM4J.js +0 -1670
  376. package/template/public/Cesium1.119/Workers/chunk-R6KGAEF6.js +0 -392
  377. package/template/public/Cesium1.119/Workers/chunk-RXTBM4OI.js +0 -57
  378. package/template/public/Cesium1.119/Workers/chunk-SB224QGV.js +0 -72
  379. package/template/public/Cesium1.119/Workers/chunk-T6BE4RZK.js +0 -37
  380. package/template/public/Cesium1.119/Workers/chunk-TAMCUKAR.js +0 -814
  381. package/template/public/Cesium1.119/Workers/chunk-TMSETF7M.js +0 -579
  382. package/template/public/Cesium1.119/Workers/chunk-TOGHF3VN.js +0 -376
  383. package/template/public/Cesium1.119/Workers/chunk-UH2WFNTA.js +0 -111
  384. package/template/public/Cesium1.119/Workers/chunk-V7JEDBOE.js +0 -573
  385. package/template/public/Cesium1.119/Workers/chunk-VBIROZR5.js +0 -633
  386. package/template/public/Cesium1.119/Workers/chunk-W23CU777.js +0 -271
  387. package/template/public/Cesium1.119/Workers/chunk-X5IHHI6X.js +0 -173
  388. package/template/public/Cesium1.119/Workers/chunk-XHX2UPDO.js +0 -217
  389. package/template/public/Cesium1.119/Workers/combineGeometry.js +0 -53
  390. package/template/public/Cesium1.119/Workers/createBoxGeometry.js +0 -45
  391. package/template/public/Cesium1.119/Workers/createBoxOutlineGeometry.js +0 -189
  392. package/template/public/Cesium1.119/Workers/createCircleGeometry.js +0 -148
  393. package/template/public/Cesium1.119/Workers/createCircleOutlineGeometry.js +0 -105
  394. package/template/public/Cesium1.119/Workers/createCoplanarPolygonGeometry.js +0 -293
  395. package/template/public/Cesium1.119/Workers/createCoplanarPolygonOutlineGeometry.js +0 -143
  396. package/template/public/Cesium1.119/Workers/createCorridorGeometry.js +0 -830
  397. package/template/public/Cesium1.119/Workers/createCorridorOutlineGeometry.js +0 -417
  398. package/template/public/Cesium1.119/Workers/createCylinderGeometry.js +0 -47
  399. package/template/public/Cesium1.119/Workers/createCylinderOutlineGeometry.js +0 -170
  400. package/template/public/Cesium1.119/Workers/createEllipseGeometry.js +0 -58
  401. package/template/public/Cesium1.119/Workers/createEllipseOutlineGeometry.js +0 -51
  402. package/template/public/Cesium1.119/Workers/createEllipsoidGeometry.js +0 -46
  403. package/template/public/Cesium1.119/Workers/createEllipsoidOutlineGeometry.js +0 -45
  404. package/template/public/Cesium1.119/Workers/createFrustumGeometry.js +0 -45
  405. package/template/public/Cesium1.119/Workers/createFrustumOutlineGeometry.js +0 -164
  406. package/template/public/Cesium1.119/Workers/createGeometry.js +0 -159
  407. package/template/public/Cesium1.119/Workers/createGroundPolylineGeometry.js +0 -911
  408. package/template/public/Cesium1.119/Workers/createPlaneGeometry.js +0 -185
  409. package/template/public/Cesium1.119/Workers/createPlaneOutlineGeometry.js +0 -93
  410. package/template/public/Cesium1.119/Workers/createPolygonGeometry.js +0 -884
  411. package/template/public/Cesium1.119/Workers/createPolygonOutlineGeometry.js +0 -359
  412. package/template/public/Cesium1.119/Workers/createPolylineGeometry.js +0 -349
  413. package/template/public/Cesium1.119/Workers/createPolylineVolumeGeometry.js +0 -262
  414. package/template/public/Cesium1.119/Workers/createPolylineVolumeOutlineGeometry.js +0 -177
  415. package/template/public/Cesium1.119/Workers/createRectangleGeometry.js +0 -787
  416. package/template/public/Cesium1.119/Workers/createRectangleOutlineGeometry.js +0 -299
  417. package/template/public/Cesium1.119/Workers/createSimplePolylineGeometry.js +0 -294
  418. package/template/public/Cesium1.119/Workers/createSphereGeometry.js +0 -84
  419. package/template/public/Cesium1.119/Workers/createSphereOutlineGeometry.js +0 -83
  420. package/template/public/Cesium1.119/Workers/createTaskProcessorWorker.js +0 -28
  421. package/template/public/Cesium1.119/Workers/createVectorTileClampedPolylines.js +0 -289
  422. package/template/public/Cesium1.119/Workers/createVectorTileGeometries.js +0 -258
  423. package/template/public/Cesium1.119/Workers/createVectorTilePoints.js +0 -79
  424. package/template/public/Cesium1.119/Workers/createVectorTilePolygons.js +0 -275
  425. package/template/public/Cesium1.119/Workers/createVectorTilePolylines.js +0 -176
  426. package/template/public/Cesium1.119/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -375
  427. package/template/public/Cesium1.119/Workers/createVerticesFromHeightmap.js +0 -1772
  428. package/template/public/Cesium1.119/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -425
  429. package/template/public/Cesium1.119/Workers/createWallGeometry.js +0 -320
  430. package/template/public/Cesium1.119/Workers/createWallOutlineGeometry.js +0 -229
  431. package/template/public/Cesium1.119/Workers/decodeDraco.js +0 -227
  432. package/template/public/Cesium1.119/Workers/decodeGoogleEarthEnterprisePacket.js +0 -1836
  433. package/template/public/Cesium1.119/Workers/decodeI3S.js +0 -924
  434. package/template/public/Cesium1.119/Workers/transcodeKTX2.js +0 -3180
  435. package/template/public/Cesium1.119/Workers/transferTypedArrayTest.js +0 -34
  436. package/template/public/Cesium1.119/Workers/upsampleQuantizedTerrainMesh.js +0 -534
  437. package/template/public/Cesium1.119/index.cjs +0 -185632
  438. package/template/public/Cesium1.119/index.js +0 -182874
  439. package/template/src/views/Test/index.vue +0 -56
  440. package/template/tests/unit/example.test.ts +0 -7
@@ -85,7 +85,9 @@ function quoteForCmd(arg) {
85
85
  }
86
86
 
87
87
  function execOnWindowsViaCmd(commandLine) {
88
- execFileSync('cmd.exe', ['/d', '/s', '/c', commandLine], { stdio: 'inherit' });
88
+ execFileSync('cmd.exe', ['/d', '/s', '/c', commandLine], {
89
+ stdio: 'inherit',
90
+ });
89
91
  }
90
92
 
91
93
  function runAndReport(cmd, args, options = {}) {
@@ -94,8 +96,10 @@ function runAndReport(cmd, args, options = {}) {
94
96
  } catch (e) {
95
97
  const stdout = e && e.stdout ? e.stdout.toString() : '';
96
98
  const stderr = e && e.stderr ? e.stderr.toString() : '';
97
- if (stdout.trim()) console.error(`\n[openapi-generator stdout]\n${stdout}\n`);
98
- if (stderr.trim()) console.error(`\n[openapi-generator stderr]\n${stderr}\n`);
99
+ if (stdout.trim())
100
+ console.error(`\n[openapi-generator stdout]\n${stdout}\n`);
101
+ if (stderr.trim())
102
+ console.error(`\n[openapi-generator stderr]\n${stderr}\n`);
99
103
  throw e;
100
104
  }
101
105
  }
@@ -110,7 +114,8 @@ function withJavaEnv(baseEnv) {
110
114
 
111
115
  // ✅ 如果你已全局装好 Java(java -version 可用),可以把这块注释掉
112
116
  // TODO: 把这里改成你的 JDK 路径
113
- const JDK_HOME = env.JDK_HOME || env.JAVA_HOME || 'C:\\Program Files\\Java\\jdk-17';
117
+ const JDK_HOME =
118
+ env.JDK_HOME || env.JAVA_HOME || 'C:\\Program Files\\Java\\jdk-17';
114
119
 
115
120
  if (process.platform === 'win32') {
116
121
  const javaBin = path.join(JDK_HOME, 'bin');
@@ -148,7 +153,10 @@ function runOpenapiGenerator(args) {
148
153
  const cmdline = ['npx', 'openapi-generator-cli', ...args]
149
154
  .map(quoteForCmd)
150
155
  .join(' ');
151
- execFileSync('cmd.exe', ['/d', '/s', '/c', cmdline], { stdio: 'inherit', env });
156
+ execFileSync('cmd.exe', ['/d', '/s', '/c', cmdline], {
157
+ stdio: 'inherit',
158
+ env,
159
+ });
152
160
  return;
153
161
  }
154
162
 
@@ -200,7 +208,9 @@ function moveToSrcApi(serviceName, tempDir, targetBase) {
200
208
  }
201
209
 
202
210
  fse.moveSync(tempDir, destDir, { overwrite: true });
203
- console.log(`✅ ${serviceName} 接口生成完毕,已移动到 src/api/${serviceName}`);
211
+ console.log(
212
+ `✅ ${serviceName} 接口生成完毕,已移动到 src/api/${serviceName}`
213
+ );
204
214
  }
205
215
 
206
216
  function toCamelExportName(serviceName) {
@@ -257,7 +267,10 @@ async function main() {
257
267
  try {
258
268
  await generateService(svc.name, svc.url);
259
269
  } catch (err) {
260
- console.error(`❌ 生成失败: ${svc.name}`, err && err.message ? err.message : err);
270
+ console.error(
271
+ `❌ 生成失败: ${svc.name}`,
272
+ err && err.message ? err.message : err
273
+ );
261
274
  }
262
275
  }
263
276
 
@@ -7,51 +7,45 @@ const rootDir = process.cwd();
7
7
  const createDir = path.join(rootDir, 'create-swdg');
8
8
  const swdgDir = path.join(rootDir, 'swdg');
9
9
 
10
- const createPkgPath = path.join(createDir, 'package.json');
11
- const swdgPkgPath = path.join(swdgDir, 'package.json');
12
-
13
10
  const input = process.argv[2];
14
11
  if (!input) {
15
12
  console.error('Usage: node scripts/release.mjs <x.y.z>');
13
+ console.error('Tip: push tag v<x.y.z> to GitHub for automated npm publish.');
16
14
  process.exit(1);
17
15
  }
18
16
 
19
- const readJson = (filePath) => JSON.parse(fs.readFileSync(filePath, 'utf8'));
20
- const writeJson = (filePath, data) =>
21
- fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n', 'utf8');
22
-
23
- const isValidVersion = (value) => /^\d+\.\d+\.\d+$/.test(value);
24
- const createPkg = readJson(createPkgPath);
25
- const swdgPkg = readJson(swdgPkgPath);
26
-
27
- if (!isValidVersion(input)) {
17
+ if (!/^\d+\.\d+\.\d+$/.test(input)) {
28
18
  console.error('Version must be in x.y.z format, e.g. 0.1.2');
29
19
  process.exit(1);
30
20
  }
31
21
 
32
- const nextVersion = input;
33
-
34
- createPkg.version = nextVersion;
35
- swdgPkg.version = nextVersion;
36
- swdgPkg.dependencies = swdgPkg.dependencies || {};
37
- swdgPkg.dependencies['create-swdg-frontend'] = `^${nextVersion}`;
22
+ console.log('\nRunning release test pipeline (must pass before publish)…\n');
23
+ execSync('node scripts/test-pipeline.mjs', { stdio: 'inherit', cwd: rootDir });
38
24
 
39
- writeJson(createPkgPath, createPkg);
40
- writeJson(swdgPkgPath, swdgPkg);
25
+ execSync(`node scripts/set-release-version.mjs ${input}`, {
26
+ stdio: 'inherit',
27
+ cwd: rootDir,
28
+ });
41
29
 
42
30
  try {
43
31
  execSync('npm config set registry https://registry.npmjs.org/', {
44
32
  stdio: 'inherit',
45
33
  });
46
34
  execSync('pnpm -C create-swdg run prepublishOnly', { stdio: 'inherit' });
47
- execSync('npm publish --access public --registry https://registry.npmjs.org/', {
48
- stdio: 'inherit',
49
- cwd: createDir,
50
- });
51
- execSync('npm publish --access public --registry https://registry.npmjs.org/', {
52
- stdio: 'inherit',
53
- cwd: swdgDir,
54
- });
35
+ execSync(
36
+ 'npm publish --access public --registry https://registry.npmjs.org/',
37
+ {
38
+ stdio: 'inherit',
39
+ cwd: createDir,
40
+ }
41
+ );
42
+ execSync(
43
+ 'npm publish --access public --registry https://registry.npmjs.org/',
44
+ {
45
+ stdio: 'inherit',
46
+ cwd: swdgDir,
47
+ }
48
+ );
55
49
  } finally {
56
50
  execSync('npm config set registry https://registry.npmmirror.com/', {
57
51
  stdio: 'inherit',
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 将 create-swdg / swdg / SCAFFOLD_VERSION 对齐到同一 semver。
4
+ * 供本地 release 与 CI tag 发布共用。
5
+ */
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+
10
+ const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
11
+ const createPkgPath = path.join(rootDir, 'create-swdg/package.json');
12
+ const swdgPkgPath = path.join(rootDir, 'swdg/package.json');
13
+ const constantsPath = path.join(rootDir, 'create-swdg/lib/constants.js');
14
+
15
+ const version = process.argv[2];
16
+ if (!version || !/^\d+\.\d+\.\d+$/.test(version)) {
17
+ console.error('Usage: node scripts/set-release-version.mjs <x.y.z>');
18
+ process.exit(1);
19
+ }
20
+
21
+ const readJson = (filePath) => JSON.parse(fs.readFileSync(filePath, 'utf8'));
22
+ const writeJson = (filePath, data) =>
23
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n', 'utf8');
24
+
25
+ const createPkg = readJson(createPkgPath);
26
+ const swdgPkg = readJson(swdgPkgPath);
27
+
28
+ createPkg.version = version;
29
+ swdgPkg.version = version;
30
+ swdgPkg.dependencies = swdgPkg.dependencies || {};
31
+ swdgPkg.dependencies['create-swdg-frontend'] = `^${version}`;
32
+
33
+ writeJson(createPkgPath, createPkg);
34
+ writeJson(swdgPkgPath, swdgPkg);
35
+
36
+ let constants = fs.readFileSync(constantsPath, 'utf8');
37
+ constants = constants.replace(
38
+ /export const SCAFFOLD_VERSION = '[^']+';/,
39
+ `export const SCAFFOLD_VERSION = '${version}';`
40
+ );
41
+ fs.writeFileSync(constantsPath, constants, 'utf8');
42
+
43
+ console.log(`✓ Release version set to ${version}`);
44
+ console.log(' - create-swdg/package.json');
45
+ console.log(' - swdg/package.json');
46
+ console.log(' - create-swdg/lib/constants.js');
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 发布前统一测试管道(本地 CI / npm release 门禁)。
4
+ *
5
+ * 顺序固定,任一阶段失败即 exit(1):
6
+ * 0. sync — 生成 create-swdg/template(CI 全新 clone 必需)
7
+ * 1. verify — typecheck + eslint
8
+ * 2. unit — vitest
9
+ * 3. scaffold — 脚手架集成(无 install)
10
+ * 4. template — template install/typecheck/build
11
+ */
12
+ import { spawn } from 'node:child_process';
13
+ import path from 'node:path';
14
+ import { fileURLToPath } from 'node:url';
15
+
16
+ const rootDir = path.resolve(
17
+ path.dirname(fileURLToPath(import.meta.url)),
18
+ '..'
19
+ );
20
+
21
+ const syncScript = path.join(rootDir, 'create-swdg/scripts/sync-template.js');
22
+
23
+ const stages = [
24
+ {
25
+ name: 'sync',
26
+ cmd: process.execPath,
27
+ args: [syncScript],
28
+ env: { ...process.env, TEMPLATE_DIR: rootDir },
29
+ },
30
+ { name: 'verify', cmd: process.execPath, args: ['scripts/verify.mjs'] },
31
+ { name: 'unit', cmd: 'pnpm', args: ['run', 'test:unit'] },
32
+ {
33
+ name: 'scaffold',
34
+ cmd: process.execPath,
35
+ args: ['scripts/test-scaffold.mjs'],
36
+ },
37
+ {
38
+ name: 'template',
39
+ cmd: process.execPath,
40
+ args: ['scripts/test-template.mjs'],
41
+ },
42
+ ];
43
+
44
+ function runStage(stage) {
45
+ return new Promise((resolve, reject) => {
46
+ console.log(
47
+ `\n${'='.repeat(60)}\n▶ stage: ${stage.name}\n${'='.repeat(60)}\n`
48
+ );
49
+ const started = Date.now();
50
+ const child = spawn(stage.cmd, stage.args, {
51
+ cwd: rootDir,
52
+ stdio: 'inherit',
53
+ shell: stage.cmd === 'pnpm',
54
+ env: stage.env ?? process.env,
55
+ });
56
+ child.on('exit', (code) => {
57
+ const sec = ((Date.now() - started) / 1000).toFixed(1);
58
+ if (code === 0) {
59
+ console.log(`\n✓ stage "${stage.name}" passed (${sec}s)\n`);
60
+ resolve();
61
+ } else {
62
+ reject(new Error(`stage "${stage.name}" failed (exit ${code})`));
63
+ }
64
+ });
65
+ });
66
+ }
67
+
68
+ async function main() {
69
+ console.log('\nSWDG release test pipeline\n');
70
+ const pipelineStarted = Date.now();
71
+
72
+ for (const stage of stages) {
73
+ await runStage(stage);
74
+ }
75
+
76
+ const totalSec = ((Date.now() - pipelineStarted) / 1000).toFixed(1);
77
+ console.log(`${'='.repeat(60)}`);
78
+ console.log(`✓ ALL STAGES PASSED (${totalSec}s)`);
79
+ console.log(`${'='.repeat(60)}\n`);
80
+ }
81
+
82
+ main().catch((err) => {
83
+ console.error(`\n✗ PIPELINE FAILED: ${err.message}\n`);
84
+ process.exit(1);
85
+ });
@@ -0,0 +1,197 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 脚手架集成测试:无 GIS / 有 GIS 产物结构、manifest、CLI 参数解析。
4
+ * 不执行 pnpm install(快速、可重复)。
5
+ */
6
+ import fs from 'node:fs/promises';
7
+ import path from 'node:path';
8
+ import os from 'node:os';
9
+ import { spawn } from 'node:child_process';
10
+ import { fileURLToPath } from 'node:url';
11
+ import { createProject, pathExists } from '../create-swdg/lib/scaffold.js';
12
+ import { SCAFFOLD_VERSION } from '../create-swdg/lib/constants.js';
13
+
14
+ const rootDir = path.resolve(
15
+ path.dirname(fileURLToPath(import.meta.url)),
16
+ '..'
17
+ );
18
+ const cliBin = path.join(rootDir, 'create-swdg/bin/index.js');
19
+ const tmpBase = path.join(os.tmpdir(), 'swdg-scaffold-test');
20
+
21
+ let passed = 0;
22
+ let failed = 0;
23
+
24
+ function pass(name) {
25
+ passed += 1;
26
+ console.log(` ✓ ${name}`);
27
+ }
28
+
29
+ function fail(name, err) {
30
+ failed += 1;
31
+ console.error(` ✗ ${name}`);
32
+ console.error(` ${err?.message ?? err}`);
33
+ }
34
+
35
+ async function readJson(filePath) {
36
+ return JSON.parse(await fs.readFile(filePath, 'utf8'));
37
+ }
38
+
39
+ async function assertNoGisProject(dir) {
40
+ const pkg = await readJson(path.join(dir, 'package.json'));
41
+ if (pkg.dependencies?.cesium) {
42
+ throw new Error('dependencies.cesium should be removed');
43
+ }
44
+ if (pkg.devDependencies?.['vite-plugin-static-copy']) {
45
+ throw new Error('vite-plugin-static-copy should be removed');
46
+ }
47
+ const paths = [
48
+ 'scripts/vite-plugin-cesium-dev.ts',
49
+ 'src/utils/cesium',
50
+ 'src/components/CesiumViewer',
51
+ 'src/views/examples/cesium',
52
+ ];
53
+ for (const rel of paths) {
54
+ if (await pathExists(path.join(dir, rel))) {
55
+ throw new Error(`should not exist: ${rel}`);
56
+ }
57
+ }
58
+ const envExample = await fs.readFile(path.join(dir, '.env.example'), 'utf8');
59
+ if (envExample.includes('VITE_FEATURE_GIS=true')) {
60
+ throw new Error('.env.example should not contain VITE_FEATURE_GIS=true');
61
+ }
62
+ const manifest = await readJson(path.join(dir, '.swdg/manifest.json'));
63
+ if (manifest.features.gis !== false) {
64
+ throw new Error('manifest.features.gis should be false');
65
+ }
66
+ if (manifest.generatorVersion !== SCAFFOLD_VERSION) {
67
+ throw new Error(`manifest version mismatch: ${manifest.generatorVersion}`);
68
+ }
69
+ }
70
+
71
+ async function assertGisProject(dir) {
72
+ const pkg = await readJson(path.join(dir, 'package.json'));
73
+ if (!pkg.dependencies?.cesium) {
74
+ throw new Error('dependencies.cesium should exist');
75
+ }
76
+ if (
77
+ !(await pathExists(path.join(dir, 'src/views/examples/cesium/index.vue')))
78
+ ) {
79
+ throw new Error('cesium example page missing');
80
+ }
81
+ const envExample = await fs.readFile(path.join(dir, '.env.example'), 'utf8');
82
+ if (!envExample.includes('VITE_FEATURE_GIS=true')) {
83
+ throw new Error('.env.example should contain VITE_FEATURE_GIS=true');
84
+ }
85
+ const manifest = await readJson(path.join(dir, '.swdg/manifest.json'));
86
+ if (manifest.features.gis !== true) {
87
+ throw new Error('manifest.features.gis should be true');
88
+ }
89
+ }
90
+
91
+ function runCli(cwd, args) {
92
+ return new Promise((resolve, reject) => {
93
+ const child = spawn(process.execPath, [cliBin, ...args], {
94
+ cwd,
95
+ stdio: ['ignore', 'pipe', 'pipe'],
96
+ });
97
+ let stdout = '';
98
+ let stderr = '';
99
+ child.stdout.on('data', (d) => {
100
+ stdout += d;
101
+ });
102
+ child.stderr.on('data', (d) => {
103
+ stderr += d;
104
+ });
105
+ child.on('exit', (code) => {
106
+ resolve({ code, stdout, stderr });
107
+ });
108
+ child.on('error', reject);
109
+ });
110
+ }
111
+
112
+ async function rmDir(dir) {
113
+ await fs.rm(dir, { recursive: true, force: true });
114
+ }
115
+
116
+ async function runCase(name, fn) {
117
+ try {
118
+ await fn();
119
+ pass(name);
120
+ } catch (err) {
121
+ fail(name, err);
122
+ }
123
+ }
124
+
125
+ async function main() {
126
+ console.log('\n▶ test:scaffold\n');
127
+ await fs.mkdir(tmpBase, { recursive: true });
128
+
129
+ const noGisDir = path.join(tmpBase, 'proj-no-gis');
130
+ const gisDir = path.join(tmpBase, 'proj-gis');
131
+ const cliDir = path.join(tmpBase, 'cli-run');
132
+
133
+ await runCase('programmatic scaffold --no-gis', async () => {
134
+ await rmDir(noGisDir);
135
+ await createProject(noGisDir, {
136
+ projectName: 'proj-no-gis',
137
+ gis: false,
138
+ });
139
+ const pkg = await readJson(path.join(noGisDir, 'package.json'));
140
+ if (pkg.name !== 'proj-no-gis') {
141
+ throw new Error(`package name should be proj-no-gis, got ${pkg.name}`);
142
+ }
143
+ await assertNoGisProject(noGisDir);
144
+ });
145
+
146
+ await runCase('programmatic scaffold --gis', async () => {
147
+ await rmDir(gisDir);
148
+ await createProject(gisDir, {
149
+ projectName: 'proj-gis',
150
+ gis: true,
151
+ });
152
+ await assertGisProject(gisDir);
153
+ });
154
+
155
+ await runCase('CLI end-to-end --no-gis --no-install', async () => {
156
+ await rmDir(cliDir);
157
+ await fs.mkdir(cliDir, { recursive: true });
158
+ const { code } = await runCli(cliDir, [
159
+ 'cli-smoke-app',
160
+ '--no-gis',
161
+ '--no-install',
162
+ '--no-git',
163
+ '--no-verify',
164
+ ]);
165
+ if (code !== 0) {
166
+ throw new Error(`CLI exited with ${code}`);
167
+ }
168
+ const outDir = path.join(cliDir, 'cli-smoke-app');
169
+ await assertNoGisProject(outDir);
170
+ });
171
+
172
+ await runCase('CLI rejects invalid project name', async () => {
173
+ await rmDir(cliDir);
174
+ await fs.mkdir(cliDir, { recursive: true });
175
+ const { code } = await runCli(cliDir, [
176
+ 'Invalid_Name',
177
+ '--no-install',
178
+ '--no-git',
179
+ '--no-verify',
180
+ ]);
181
+ if (code === 0) {
182
+ throw new Error('CLI should fail for invalid project name');
183
+ }
184
+ });
185
+
186
+ await rmDir(tmpBase);
187
+
188
+ console.log(`\n scaffold: ${passed} passed, ${failed} failed\n`);
189
+ if (failed > 0) {
190
+ process.exit(1);
191
+ }
192
+ }
193
+
194
+ main().catch((err) => {
195
+ console.error(err);
196
+ process.exit(1);
197
+ });
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 模板包质量门禁:sync 后的 create-swdg/template 必须能 install / typecheck / build。
4
+ */
5
+ import path from 'node:path';
6
+ import { spawn } from 'node:child_process';
7
+ import { fileURLToPath } from 'node:url';
8
+
9
+ const rootDir = path.resolve(
10
+ path.dirname(fileURLToPath(import.meta.url)),
11
+ '..'
12
+ );
13
+ const syncScript = path.join(rootDir, 'create-swdg/scripts/sync-template.js');
14
+ const validateScript = path.join(
15
+ rootDir,
16
+ 'create-swdg/scripts/validate-template.mjs'
17
+ );
18
+
19
+ function run(cmd, args, cwd, env = process.env) {
20
+ return new Promise((resolve, reject) => {
21
+ const child = spawn(cmd, args, {
22
+ cwd,
23
+ stdio: 'inherit',
24
+ shell: true,
25
+ env,
26
+ });
27
+ child.on('exit', (code) => {
28
+ if (code === 0) resolve();
29
+ else reject(new Error(`${cmd} ${args.join(' ')} exited ${code}`));
30
+ });
31
+ });
32
+ }
33
+
34
+ async function main() {
35
+ console.log('\n▶ test:template\n');
36
+
37
+ console.log(' · sync-template');
38
+ await run(process.execPath, [syncScript], rootDir, {
39
+ ...process.env,
40
+ TEMPLATE_DIR: rootDir,
41
+ });
42
+
43
+ console.log(' · validate-template');
44
+ await run(process.execPath, [validateScript], rootDir);
45
+
46
+ console.log('\n✓ test:template passed\n');
47
+ }
48
+
49
+ main().catch((err) => {
50
+ console.error(`\n✗ test:template failed: ${err.message}\n`);
51
+ process.exit(1);
52
+ });
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from 'node:child_process';
3
+
4
+ const steps = [
5
+ ['typecheck', ['run', 'typecheck']],
6
+ ['lint', ['run', 'lint']],
7
+ ];
8
+
9
+ function run(cmd, args) {
10
+ return new Promise((resolve, reject) => {
11
+ const child = spawn(cmd, args, { stdio: 'inherit', shell: true });
12
+ child.on('exit', (code) => {
13
+ if (code === 0) resolve();
14
+ else reject(new Error(`${cmd} ${args.join(' ')} failed`));
15
+ });
16
+ });
17
+ }
18
+
19
+ try {
20
+ for (const [name, args] of steps) {
21
+ console.log(`\n▶ verify: ${name}\n`);
22
+ await run('pnpm', args);
23
+ }
24
+ console.log('\n✓ verify passed\n');
25
+ } catch (err) {
26
+ console.error(`\n✗ ${err.message}\n`);
27
+ process.exit(1);
28
+ }
@@ -0,0 +1,56 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import type { Plugin } from 'vite';
4
+
5
+ const cesiumRoot = path.resolve(
6
+ process.cwd(),
7
+ 'node_modules/cesium/Build/Cesium'
8
+ );
9
+
10
+ const MIME: Record<string, string> = {
11
+ '.js': 'application/javascript',
12
+ '.mjs': 'application/javascript',
13
+ '.json': 'application/json',
14
+ '.wasm': 'application/wasm',
15
+ '.css': 'text/css',
16
+ '.svg': 'image/svg+xml',
17
+ '.png': 'image/png',
18
+ '.jpg': 'image/jpeg',
19
+ '.jpeg': 'image/jpeg',
20
+ '.xml': 'application/xml',
21
+ };
22
+
23
+ /** 开发环境从 node_modules 提供 Cesium Workers/Assets,避免请求落到 SPA 返回 HTML */
24
+ export function cesiumDevAssets(mountPath = '/cesium'): Plugin {
25
+ return {
26
+ name: 'cesium-dev-assets',
27
+ apply: 'serve',
28
+ configureServer(server) {
29
+ server.middlewares.use(mountPath, (req, res, next) => {
30
+ const rawUrl = req.url ?? '';
31
+ const pathname = decodeURIComponent(rawUrl.split('?')[0]);
32
+ const relative = pathname.replace(/^\/+/, '');
33
+ if (!relative) {
34
+ next();
35
+ return;
36
+ }
37
+
38
+ const filePath = path.join(cesiumRoot, relative);
39
+ if (!filePath.startsWith(cesiumRoot)) {
40
+ res.statusCode = 403;
41
+ res.end();
42
+ return;
43
+ }
44
+
45
+ if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {
46
+ next();
47
+ return;
48
+ }
49
+
50
+ const ext = path.extname(filePath);
51
+ res.setHeader('Content-Type', MIME[ext] ?? 'application/octet-stream');
52
+ fs.createReadStream(filePath).pipe(res);
53
+ });
54
+ },
55
+ };
56
+ }
@@ -1,3 +1,7 @@
1
1
  # api
2
2
 
3
3
  后端接口请求统一放在这里。
4
+
5
+ 开发环境代理:`/demo` → `.env` 中的 `VITE_DEMO_PROXY_TARGET`(见 `vite.config.ts`)。
6
+
7
+ 更多用法见 [docs/ONBOARDING.md](../../docs/ONBOARDING.md)。