@simplysm/sd-cli 12.16.27 → 13.0.0-beta.12

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 (421) hide show
  1. package/README.md +529 -0
  2. package/dist/builders/BaseBuilder.js +86 -0
  3. package/dist/builders/BaseBuilder.js.map +7 -0
  4. package/dist/builders/DtsBuilder.js +109 -0
  5. package/dist/builders/DtsBuilder.js.map +7 -0
  6. package/dist/builders/LibraryBuilder.js +122 -0
  7. package/dist/builders/LibraryBuilder.js.map +7 -0
  8. package/dist/builders/index.js +9 -0
  9. package/dist/builders/index.js.map +7 -0
  10. package/dist/builders/types.js +1 -0
  11. package/dist/builders/types.js.map +7 -0
  12. package/dist/capacitor/capacitor.js +619 -0
  13. package/dist/capacitor/capacitor.js.map +7 -0
  14. package/dist/commands/add-client.js +83 -0
  15. package/dist/commands/add-client.js.map +7 -0
  16. package/dist/commands/add-server.js +91 -0
  17. package/dist/commands/add-server.js.map +7 -0
  18. package/dist/commands/build.js +310 -0
  19. package/dist/commands/build.js.map +7 -0
  20. package/dist/commands/dev.js +426 -0
  21. package/dist/commands/dev.js.map +7 -0
  22. package/dist/commands/device.js +107 -0
  23. package/dist/commands/device.js.map +7 -0
  24. package/dist/commands/init.js +58 -0
  25. package/dist/commands/init.js.map +7 -0
  26. package/dist/commands/lint.js +138 -0
  27. package/dist/commands/lint.js.map +7 -0
  28. package/dist/commands/publish.js +401 -0
  29. package/dist/commands/publish.js.map +7 -0
  30. package/dist/commands/typecheck.js +197 -0
  31. package/dist/commands/typecheck.js.map +7 -0
  32. package/dist/commands/watch.js +19 -0
  33. package/dist/commands/watch.js.map +7 -0
  34. package/dist/core-common/src/common.types.d.ts +74 -0
  35. package/dist/core-common/src/common.types.d.ts.map +1 -0
  36. package/dist/core-common/src/env.d.ts +6 -0
  37. package/dist/core-common/src/env.d.ts.map +1 -0
  38. package/dist/core-common/src/errors/argument-error.d.ts +25 -0
  39. package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
  40. package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
  41. package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
  42. package/dist/core-common/src/errors/sd-error.d.ts +27 -0
  43. package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
  44. package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
  45. package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
  46. package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
  47. package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
  48. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
  49. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
  50. package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
  51. package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
  52. package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
  53. package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
  54. package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
  55. package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
  56. package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
  57. package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
  58. package/dist/core-common/src/features/event-emitter.d.ts +66 -0
  59. package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
  60. package/dist/core-common/src/features/serial-queue.d.ts +47 -0
  61. package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
  62. package/dist/core-common/src/index.d.ts +32 -0
  63. package/dist/core-common/src/index.d.ts.map +1 -0
  64. package/dist/core-common/src/types/date-only.d.ts +152 -0
  65. package/dist/core-common/src/types/date-only.d.ts.map +1 -0
  66. package/dist/core-common/src/types/date-time.d.ts +96 -0
  67. package/dist/core-common/src/types/date-time.d.ts.map +1 -0
  68. package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
  69. package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
  70. package/dist/core-common/src/types/time.d.ts +68 -0
  71. package/dist/core-common/src/types/time.d.ts.map +1 -0
  72. package/dist/core-common/src/types/uuid.d.ts +35 -0
  73. package/dist/core-common/src/types/uuid.d.ts.map +1 -0
  74. package/dist/core-common/src/utils/bytes.d.ts +51 -0
  75. package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
  76. package/dist/core-common/src/utils/date-format.d.ts +90 -0
  77. package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
  78. package/dist/core-common/src/utils/json.d.ts +34 -0
  79. package/dist/core-common/src/utils/json.d.ts.map +1 -0
  80. package/dist/core-common/src/utils/num.d.ts +60 -0
  81. package/dist/core-common/src/utils/num.d.ts.map +1 -0
  82. package/dist/core-common/src/utils/obj.d.ts +258 -0
  83. package/dist/core-common/src/utils/obj.d.ts.map +1 -0
  84. package/dist/core-common/src/utils/path.d.ts +23 -0
  85. package/dist/core-common/src/utils/path.d.ts.map +1 -0
  86. package/dist/core-common/src/utils/primitive.d.ts +18 -0
  87. package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
  88. package/dist/core-common/src/utils/str.d.ts +103 -0
  89. package/dist/core-common/src/utils/str.d.ts.map +1 -0
  90. package/dist/core-common/src/utils/template-strings.d.ts +84 -0
  91. package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
  92. package/dist/core-common/src/utils/transferable.d.ts +47 -0
  93. package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
  94. package/dist/core-common/src/utils/wait.d.ts +19 -0
  95. package/dist/core-common/src/utils/wait.d.ts.map +1 -0
  96. package/dist/core-common/src/utils/xml.d.ts +36 -0
  97. package/dist/core-common/src/utils/xml.d.ts.map +1 -0
  98. package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
  99. package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
  100. package/dist/core-node/src/features/fs-watcher.d.ts +70 -0
  101. package/dist/core-node/src/features/fs-watcher.d.ts.map +1 -0
  102. package/dist/core-node/src/index.d.ts +7 -0
  103. package/dist/core-node/src/index.d.ts.map +1 -0
  104. package/dist/core-node/src/utils/fs.d.ts +197 -0
  105. package/dist/core-node/src/utils/fs.d.ts.map +1 -0
  106. package/dist/core-node/src/utils/path.d.ts +75 -0
  107. package/dist/core-node/src/utils/path.d.ts.map +1 -0
  108. package/dist/core-node/src/worker/create-worker.d.ts +23 -0
  109. package/dist/core-node/src/worker/create-worker.d.ts.map +1 -0
  110. package/dist/core-node/src/worker/types.d.ts +67 -0
  111. package/dist/core-node/src/worker/types.d.ts.map +1 -0
  112. package/dist/core-node/src/worker/worker.d.ts +27 -0
  113. package/dist/core-node/src/worker/worker.d.ts.map +1 -0
  114. package/dist/electron/electron.js +242 -0
  115. package/dist/electron/electron.js.map +7 -0
  116. package/dist/index.js +2 -0
  117. package/dist/index.js.map +7 -0
  118. package/dist/infra/ResultCollector.js +59 -0
  119. package/dist/infra/ResultCollector.js.map +7 -0
  120. package/dist/infra/SignalHandler.js +44 -0
  121. package/dist/infra/SignalHandler.js.map +7 -0
  122. package/dist/infra/WorkerManager.js +56 -0
  123. package/dist/infra/WorkerManager.js.map +7 -0
  124. package/dist/infra/index.js +9 -0
  125. package/dist/infra/index.js.map +7 -0
  126. package/dist/orchestrators/WatchOrchestrator.js +135 -0
  127. package/dist/orchestrators/WatchOrchestrator.js.map +7 -0
  128. package/dist/orchestrators/index.js +5 -0
  129. package/dist/orchestrators/index.js.map +7 -0
  130. package/dist/sd-cli/src/builders/BaseBuilder.d.ts +77 -0
  131. package/dist/sd-cli/src/builders/BaseBuilder.d.ts.map +1 -0
  132. package/dist/sd-cli/src/builders/DtsBuilder.d.ts +22 -0
  133. package/dist/sd-cli/src/builders/DtsBuilder.d.ts.map +1 -0
  134. package/dist/sd-cli/src/builders/LibraryBuilder.d.ts +22 -0
  135. package/dist/sd-cli/src/builders/LibraryBuilder.d.ts.map +1 -0
  136. package/dist/sd-cli/src/builders/index.d.ts +5 -0
  137. package/dist/sd-cli/src/builders/index.d.ts.map +1 -0
  138. package/dist/sd-cli/src/builders/types.d.ts +49 -0
  139. package/dist/sd-cli/src/builders/types.d.ts.map +1 -0
  140. package/dist/sd-cli/src/capacitor/capacitor.d.ts +131 -0
  141. package/dist/sd-cli/src/capacitor/capacitor.d.ts.map +1 -0
  142. package/dist/sd-cli/src/commands/add-client.d.ts +18 -0
  143. package/dist/sd-cli/src/commands/add-client.d.ts.map +1 -0
  144. package/dist/sd-cli/src/commands/add-server.d.ts +18 -0
  145. package/dist/sd-cli/src/commands/add-server.d.ts.map +1 -0
  146. package/dist/sd-cli/src/commands/build.d.ts +25 -0
  147. package/dist/sd-cli/src/commands/build.d.ts.map +1 -0
  148. package/dist/sd-cli/src/commands/dev.d.ts +23 -0
  149. package/dist/sd-cli/src/commands/dev.d.ts.map +1 -0
  150. package/dist/sd-cli/src/commands/device.d.ts +22 -0
  151. package/dist/sd-cli/src/commands/device.d.ts.map +1 -0
  152. package/dist/sd-cli/src/commands/init.d.ts +15 -0
  153. package/dist/sd-cli/src/commands/init.d.ts.map +1 -0
  154. package/dist/sd-cli/src/commands/lint.d.ts +31 -0
  155. package/dist/sd-cli/src/commands/lint.d.ts.map +1 -0
  156. package/dist/sd-cli/src/commands/publish.d.ts +27 -0
  157. package/dist/sd-cli/src/commands/publish.d.ts.map +1 -0
  158. package/dist/sd-cli/src/commands/typecheck.d.ts +39 -0
  159. package/dist/sd-cli/src/commands/typecheck.d.ts.map +1 -0
  160. package/dist/sd-cli/src/commands/watch.d.ts +20 -0
  161. package/dist/sd-cli/src/commands/watch.d.ts.map +1 -0
  162. package/dist/sd-cli/src/electron/electron.d.ts +79 -0
  163. package/dist/sd-cli/src/electron/electron.d.ts.map +1 -0
  164. package/dist/sd-cli/src/index.d.ts +2 -0
  165. package/dist/sd-cli/src/index.d.ts.map +1 -0
  166. package/dist/sd-cli/src/infra/ResultCollector.d.ts +56 -0
  167. package/dist/sd-cli/src/infra/ResultCollector.d.ts.map +1 -0
  168. package/dist/sd-cli/src/infra/SignalHandler.d.ts +26 -0
  169. package/dist/sd-cli/src/infra/SignalHandler.d.ts.map +1 -0
  170. package/dist/sd-cli/src/infra/WorkerManager.d.ts +40 -0
  171. package/dist/sd-cli/src/infra/WorkerManager.d.ts.map +1 -0
  172. package/dist/sd-cli/src/infra/index.d.ts +4 -0
  173. package/dist/sd-cli/src/infra/index.d.ts.map +1 -0
  174. package/dist/sd-cli/src/orchestrators/WatchOrchestrator.d.ts +48 -0
  175. package/dist/sd-cli/src/orchestrators/WatchOrchestrator.d.ts.map +1 -0
  176. package/dist/sd-cli/src/orchestrators/index.d.ts +2 -0
  177. package/dist/sd-cli/src/orchestrators/index.d.ts.map +1 -0
  178. package/dist/sd-cli/src/sd-cli.d.ts +9 -0
  179. package/dist/sd-cli/src/sd-cli.d.ts.map +1 -0
  180. package/dist/sd-cli/src/sd-config.types.d.ts +222 -0
  181. package/dist/sd-cli/src/sd-config.types.d.ts.map +1 -0
  182. package/dist/sd-cli/src/utils/build-env.d.ts +5 -0
  183. package/dist/sd-cli/src/utils/build-env.d.ts.map +1 -0
  184. package/dist/sd-cli/src/utils/config-editor.d.ts +17 -0
  185. package/dist/sd-cli/src/utils/config-editor.d.ts.map +1 -0
  186. package/dist/sd-cli/src/utils/esbuild-config.d.ts +49 -0
  187. package/dist/sd-cli/src/utils/esbuild-config.d.ts.map +1 -0
  188. package/dist/sd-cli/src/utils/listr-manager.d.ts +37 -0
  189. package/dist/sd-cli/src/utils/listr-manager.d.ts.map +1 -0
  190. package/dist/sd-cli/src/utils/output-utils.d.ts +21 -0
  191. package/dist/sd-cli/src/utils/output-utils.d.ts.map +1 -0
  192. package/dist/sd-cli/src/utils/package-utils.d.ts +29 -0
  193. package/dist/sd-cli/src/utils/package-utils.d.ts.map +1 -0
  194. package/dist/sd-cli/src/utils/sd-config.d.ts +12 -0
  195. package/dist/sd-cli/src/utils/sd-config.d.ts.map +1 -0
  196. package/dist/sd-cli/src/utils/spawn.d.ts +26 -0
  197. package/dist/sd-cli/src/utils/spawn.d.ts.map +1 -0
  198. package/dist/sd-cli/src/utils/tailwind-config-deps.d.ts +8 -0
  199. package/dist/sd-cli/src/utils/tailwind-config-deps.d.ts.map +1 -0
  200. package/dist/sd-cli/src/utils/template.d.ts +14 -0
  201. package/dist/sd-cli/src/utils/template.d.ts.map +1 -0
  202. package/dist/sd-cli/src/utils/tsconfig.d.ts +35 -0
  203. package/dist/sd-cli/src/utils/tsconfig.d.ts.map +1 -0
  204. package/dist/sd-cli/src/utils/typecheck-serialization.d.ts +28 -0
  205. package/dist/sd-cli/src/utils/typecheck-serialization.d.ts.map +1 -0
  206. package/dist/sd-cli/src/utils/vite-config.d.ts +25 -0
  207. package/dist/sd-cli/src/utils/vite-config.d.ts.map +1 -0
  208. package/dist/sd-cli/src/utils/worker-events.d.ts +53 -0
  209. package/dist/sd-cli/src/utils/worker-events.d.ts.map +1 -0
  210. package/dist/sd-cli/src/workers/client.worker.d.ts +82 -0
  211. package/dist/sd-cli/src/workers/client.worker.d.ts.map +1 -0
  212. package/dist/sd-cli/src/workers/dts.worker.d.ts +73 -0
  213. package/dist/sd-cli/src/workers/dts.worker.d.ts.map +1 -0
  214. package/dist/sd-cli/src/workers/library.worker.d.ts +73 -0
  215. package/dist/sd-cli/src/workers/library.worker.d.ts.map +1 -0
  216. package/dist/sd-cli/src/workers/server-runtime.worker.d.ts +40 -0
  217. package/dist/sd-cli/src/workers/server-runtime.worker.d.ts.map +1 -0
  218. package/dist/sd-cli/src/workers/server.worker.d.ts +76 -0
  219. package/dist/sd-cli/src/workers/server.worker.d.ts.map +1 -0
  220. package/dist/sd-cli.js +239 -76
  221. package/dist/sd-cli.js.map +7 -0
  222. package/dist/sd-config.types.js +1 -0
  223. package/dist/sd-config.types.js.map +7 -0
  224. package/dist/storage/src/clients/ftp-storage-client.d.ts +56 -0
  225. package/dist/storage/src/clients/ftp-storage-client.d.ts.map +1 -0
  226. package/dist/storage/src/clients/sftp-storage-client.d.ts +48 -0
  227. package/dist/storage/src/clients/sftp-storage-client.d.ts.map +1 -0
  228. package/dist/storage/src/index.d.ts +7 -0
  229. package/dist/storage/src/index.d.ts.map +1 -0
  230. package/dist/storage/src/storage-factory.d.ts +20 -0
  231. package/dist/storage/src/storage-factory.d.ts.map +1 -0
  232. package/dist/storage/src/types/storage-conn-config.d.ts +7 -0
  233. package/dist/storage/src/types/storage-conn-config.d.ts.map +1 -0
  234. package/dist/storage/src/types/storage-type.d.ts +2 -0
  235. package/dist/storage/src/types/storage-type.d.ts.map +1 -0
  236. package/dist/storage/src/types/storage.d.ts +19 -0
  237. package/dist/storage/src/types/storage.d.ts.map +1 -0
  238. package/dist/utils/build-env.js +12 -0
  239. package/dist/utils/build-env.js.map +7 -0
  240. package/dist/utils/config-editor.js +77 -0
  241. package/dist/utils/config-editor.js.map +7 -0
  242. package/dist/utils/esbuild-config.js +44 -0
  243. package/dist/utils/esbuild-config.js.map +7 -0
  244. package/dist/utils/listr-manager.js +59 -0
  245. package/dist/utils/listr-manager.js.map +7 -0
  246. package/dist/utils/output-utils.js +40 -0
  247. package/dist/utils/output-utils.js.map +7 -0
  248. package/dist/utils/package-utils.js +28 -0
  249. package/dist/utils/package-utils.js.map +7 -0
  250. package/dist/utils/sd-config.js +24 -0
  251. package/dist/utils/sd-config.js.map +7 -0
  252. package/dist/utils/spawn.js +49 -0
  253. package/dist/utils/spawn.js.map +7 -0
  254. package/dist/utils/tailwind-config-deps.js +80 -0
  255. package/dist/utils/tailwind-config-deps.js.map +7 -0
  256. package/dist/utils/template.js +28 -0
  257. package/dist/utils/template.js.map +7 -0
  258. package/dist/utils/tsconfig.js +62 -0
  259. package/dist/utils/tsconfig.js.map +7 -0
  260. package/dist/utils/typecheck-serialization.js +46 -0
  261. package/dist/utils/typecheck-serialization.js.map +7 -0
  262. package/dist/utils/vite-config.js +108 -0
  263. package/dist/utils/vite-config.js.map +7 -0
  264. package/dist/utils/worker-events.js +38 -0
  265. package/dist/utils/worker-events.js.map +7 -0
  266. package/dist/workers/client.worker.js +94 -0
  267. package/dist/workers/client.worker.js.map +7 -0
  268. package/dist/workers/dts.worker.js +210 -0
  269. package/dist/workers/dts.worker.js.map +7 -0
  270. package/dist/workers/library.worker.js +118 -0
  271. package/dist/workers/library.worker.js.map +7 -0
  272. package/dist/workers/server-runtime.worker.js +85 -0
  273. package/dist/workers/server-runtime.worker.js.map +7 -0
  274. package/dist/workers/server.worker.js +114 -42
  275. package/dist/workers/server.worker.js.map +7 -0
  276. package/package.json +32 -29
  277. package/dist/entry/SdCliAiCommand.d.ts +0 -3
  278. package/dist/entry/SdCliAiCommand.js +0 -91
  279. package/dist/entry/SdCliCapacitor.d.ts +0 -35
  280. package/dist/entry/SdCliCapacitor.js +0 -565
  281. package/dist/entry/SdCliCordova.d.ts +0 -49
  282. package/dist/entry/SdCliCordova.js +0 -394
  283. package/dist/entry/SdCliElectron.d.ts +0 -22
  284. package/dist/entry/SdCliElectron.js +0 -128
  285. package/dist/entry/SdCliLocalUpdate.d.ts +0 -11
  286. package/dist/entry/SdCliLocalUpdate.js +0 -83
  287. package/dist/entry/SdCliPostInstall.d.ts +0 -3
  288. package/dist/entry/SdCliPostInstall.js +0 -48
  289. package/dist/entry/SdCliProject.d.ts +0 -24
  290. package/dist/entry/SdCliProject.js +0 -336
  291. package/dist/pkg-builders/SdBuildRunnerBase.d.ts +0 -14
  292. package/dist/pkg-builders/SdBuildRunnerBase.js +0 -22
  293. package/dist/pkg-builders/SdProjectBuildRunner.d.ts +0 -25
  294. package/dist/pkg-builders/SdProjectBuildRunner.js +0 -264
  295. package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.d.ts +0 -9
  296. package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.js +0 -89
  297. package/dist/pkg-builders/client/SdClientBuildRunner.d.ts +0 -10
  298. package/dist/pkg-builders/client/SdClientBuildRunner.js +0 -113
  299. package/dist/pkg-builders/client/SdNgBundler.d.ts +0 -38
  300. package/dist/pkg-builders/client/SdNgBundler.js +0 -525
  301. package/dist/pkg-builders/client/SdNgBundlerContext.d.ts +0 -25
  302. package/dist/pkg-builders/client/SdNgBundlerContext.js +0 -104
  303. package/dist/pkg-builders/client/createSdNgPlugin.d.ts +0 -5
  304. package/dist/pkg-builders/client/createSdNgPlugin.js +0 -133
  305. package/dist/pkg-builders/commons/SdWorkerPathPlugin.d.ts +0 -2
  306. package/dist/pkg-builders/commons/SdWorkerPathPlugin.js +0 -91
  307. package/dist/pkg-builders/lib/SdCliDbContextFileGenerator.d.ts +0 -9
  308. package/dist/pkg-builders/lib/SdCliDbContextFileGenerator.js +0 -138
  309. package/dist/pkg-builders/lib/SdCliIndexFileGenerator.d.ts +0 -11
  310. package/dist/pkg-builders/lib/SdCliIndexFileGenerator.js +0 -79
  311. package/dist/pkg-builders/lib/SdJsLibBuildRunner.d.ts +0 -8
  312. package/dist/pkg-builders/lib/SdJsLibBuildRunner.js +0 -44
  313. package/dist/pkg-builders/lib/SdTsLibBuildRunner.d.ts +0 -8
  314. package/dist/pkg-builders/lib/SdTsLibBuildRunner.js +0 -34
  315. package/dist/pkg-builders/lib/SdTsLibBuilder.d.ts +0 -10
  316. package/dist/pkg-builders/lib/SdTsLibBuilder.js +0 -54
  317. package/dist/pkg-builders/server/SdServerBuildRunner.d.ts +0 -10
  318. package/dist/pkg-builders/server/SdServerBuildRunner.js +0 -228
  319. package/dist/pkg-builders/server/SdServerBundler.d.ts +0 -17
  320. package/dist/pkg-builders/server/SdServerBundler.js +0 -174
  321. package/dist/pkg-builders/server/createSdServerPlugin.d.ts +0 -5
  322. package/dist/pkg-builders/server/createSdServerPlugin.js +0 -53
  323. package/dist/sd-cli-entry.d.ts +0 -2
  324. package/dist/sd-cli-entry.js +0 -230
  325. package/dist/sd-cli.d.ts +0 -2
  326. package/dist/ts-compiler/ScopePathSet.d.ts +0 -7
  327. package/dist/ts-compiler/ScopePathSet.js +0 -12
  328. package/dist/ts-compiler/SdDepAnalyzer.d.ts +0 -15
  329. package/dist/ts-compiler/SdDepAnalyzer.js +0 -299
  330. package/dist/ts-compiler/SdDepCache.d.ts +0 -77
  331. package/dist/ts-compiler/SdDepCache.js +0 -248
  332. package/dist/ts-compiler/SdStyleBundler.d.ts +0 -23
  333. package/dist/ts-compiler/SdStyleBundler.js +0 -131
  334. package/dist/ts-compiler/SdTsCompiler.d.ts +0 -29
  335. package/dist/ts-compiler/SdTsCompiler.js +0 -420
  336. package/dist/types/build/ISdBuildMessage.d.ts +0 -10
  337. package/dist/types/build/ISdBuildMessage.js +0 -1
  338. package/dist/types/build/ISdBuildResult.d.ts +0 -8
  339. package/dist/types/build/ISdBuildResult.js +0 -1
  340. package/dist/types/build/ISdTsCompilerOptions.d.ts +0 -10
  341. package/dist/types/build/ISdTsCompilerOptions.js +0 -1
  342. package/dist/types/build/ISdTsCompilerResult.d.ts +0 -14
  343. package/dist/types/build/ISdTsCompilerResult.js +0 -1
  344. package/dist/types/build/TStylesheetBundlingResult.d.ts +0 -12
  345. package/dist/types/build/TStylesheetBundlingResult.js +0 -1
  346. package/dist/types/common-config/INpmConfig.d.ts +0 -17
  347. package/dist/types/common-config/INpmConfig.js +0 -1
  348. package/dist/types/common-config/ITsConfig.d.ts +0 -7
  349. package/dist/types/common-config/ITsConfig.js +0 -1
  350. package/dist/types/config/ISdProjectConfig.d.ts +0 -144
  351. package/dist/types/config/ISdProjectConfig.js +0 -1
  352. package/dist/types/plugin/ISdCliNgPluginResultCache.d.ts +0 -8
  353. package/dist/types/plugin/ISdCliNgPluginResultCache.js +0 -1
  354. package/dist/types/plugin/ISdCliServerPluginResultCache.d.ts +0 -8
  355. package/dist/types/plugin/ISdCliServerPluginResultCache.js +0 -1
  356. package/dist/types/worker/ISdBuildRunnerWorkerType.d.ts +0 -20
  357. package/dist/types/worker/ISdBuildRunnerWorkerType.js +0 -1
  358. package/dist/types/worker/IServerWorkerType.d.ts +0 -17
  359. package/dist/types/worker/IServerWorkerType.js +0 -1
  360. package/dist/utils/SdCliConvertMessageUtils.d.ts +0 -21
  361. package/dist/utils/SdCliConvertMessageUtils.js +0 -138
  362. package/dist/utils/SdCliPerformanceTimer.d.ts +0 -10
  363. package/dist/utils/SdCliPerformanceTimer.js +0 -50
  364. package/dist/utils/loadProjConfAsync.d.ts +0 -5
  365. package/dist/utils/loadProjConfAsync.js +0 -7
  366. package/dist/workers/build-runner.worker.d.ts +0 -1
  367. package/dist/workers/build-runner.worker.js +0 -37
  368. package/dist/workers/server.worker.d.ts +0 -1
  369. package/lib/cordova-entry.js +0 -29
  370. package/src/entry/SdCliAiCommand.ts +0 -105
  371. package/src/entry/SdCliCapacitor.ts +0 -760
  372. package/src/entry/SdCliCordova.ts +0 -550
  373. package/src/entry/SdCliElectron.ts +0 -197
  374. package/src/entry/SdCliLocalUpdate.ts +0 -106
  375. package/src/entry/SdCliPostInstall.ts +0 -51
  376. package/src/entry/SdCliProject.ts +0 -427
  377. package/src/pkg-builders/SdBuildRunnerBase.ts +0 -36
  378. package/src/pkg-builders/SdProjectBuildRunner.ts +0 -398
  379. package/src/pkg-builders/client/SdCliNgRoutesFileGenerator.ts +0 -112
  380. package/src/pkg-builders/client/SdClientBuildRunner.ts +0 -156
  381. package/src/pkg-builders/client/SdNgBundler.ts +0 -666
  382. package/src/pkg-builders/client/SdNgBundlerContext.ts +0 -138
  383. package/src/pkg-builders/client/createSdNgPlugin.ts +0 -186
  384. package/src/pkg-builders/commons/SdWorkerPathPlugin.ts +0 -117
  385. package/src/pkg-builders/lib/SdCliDbContextFileGenerator.ts +0 -177
  386. package/src/pkg-builders/lib/SdCliIndexFileGenerator.ts +0 -94
  387. package/src/pkg-builders/lib/SdJsLibBuildRunner.ts +0 -59
  388. package/src/pkg-builders/lib/SdTsLibBuildRunner.ts +0 -47
  389. package/src/pkg-builders/lib/SdTsLibBuilder.ts +0 -71
  390. package/src/pkg-builders/server/SdServerBuildRunner.ts +0 -299
  391. package/src/pkg-builders/server/SdServerBundler.ts +0 -208
  392. package/src/pkg-builders/server/createSdServerPlugin.ts +0 -80
  393. package/src/sd-cli-entry.ts +0 -292
  394. package/src/sd-cli.ts +0 -105
  395. package/src/ts-compiler/ScopePathSet.ts +0 -17
  396. package/src/ts-compiler/SdDepAnalyzer.ts +0 -372
  397. package/src/ts-compiler/SdDepCache.ts +0 -304
  398. package/src/ts-compiler/SdStyleBundler.ts +0 -169
  399. package/src/ts-compiler/SdTsCompiler.ts +0 -638
  400. package/src/types/build/ISdBuildMessage.ts +0 -11
  401. package/src/types/build/ISdBuildResult.ts +0 -9
  402. package/src/types/build/ISdTsCompilerOptions.ts +0 -11
  403. package/src/types/build/ISdTsCompilerResult.ts +0 -12
  404. package/src/types/build/TStylesheetBundlingResult.ts +0 -15
  405. package/src/types/common-config/INpmConfig.ts +0 -24
  406. package/src/types/common-config/ITsConfig.ts +0 -5
  407. package/src/types/config/ISdProjectConfig.ts +0 -174
  408. package/src/types/plugin/ISdCliNgPluginResultCache.ts +0 -9
  409. package/src/types/plugin/ISdCliServerPluginResultCache.ts +0 -9
  410. package/src/types/worker/ISdBuildRunnerWorkerType.ts +0 -19
  411. package/src/types/worker/IServerWorkerType.ts +0 -8
  412. package/src/utils/SdCliConvertMessageUtils.ts +0 -180
  413. package/src/utils/SdCliPerformanceTimer.ts +0 -62
  414. package/src/utils/loadProjConfAsync.ts +0 -16
  415. package/src/workers/build-runner.worker.ts +0 -54
  416. package/src/workers/server.worker.ts +0 -54
  417. package/tests/deps/sd-dependency-analyzer.spec.ts +0 -241
  418. package/tests/deps/sd-dependency-cache.spec.ts +0 -153
  419. package/tsconfig.json +0 -8
  420. package/tsconfig.test.json +0 -8
  421. package/vitest.config.js +0 -15
@@ -0,0 +1,62 @@
1
+ import ts from "typescript";
2
+ import path from "path";
3
+ import { fsExists, fsReadJson } from "@simplysm/core-node";
4
+ import { SdError } from "@simplysm/core-common";
5
+ const DOM_LIB_PATTERNS = ["dom", "webworker"];
6
+ async function getTypesFromPackageJson(packageDir) {
7
+ const packageJsonPath = path.join(packageDir, "package.json");
8
+ if (!await fsExists(packageJsonPath)) {
9
+ return [];
10
+ }
11
+ const packageJson = await fsReadJson(packageJsonPath);
12
+ const devDeps = packageJson.devDependencies ?? {};
13
+ return Object.keys(devDeps).filter((dep) => dep.startsWith("@types/")).map((dep) => dep.replace("@types/", ""));
14
+ }
15
+ async function getCompilerOptionsForPackage(baseOptions, env, packageDir) {
16
+ const options = { ...baseOptions };
17
+ const packageTypes = await getTypesFromPackageJson(packageDir);
18
+ options.typeRoots = [
19
+ path.join(packageDir, "node_modules", "@types"),
20
+ path.join(process.cwd(), "node_modules", "@types")
21
+ ];
22
+ switch (env) {
23
+ case "node":
24
+ options.lib = options.lib?.filter(
25
+ (lib) => !DOM_LIB_PATTERNS.some((pattern) => lib.toLowerCase().includes(pattern))
26
+ );
27
+ options.types = [.../* @__PURE__ */ new Set([...packageTypes, "node"])];
28
+ break;
29
+ case "browser":
30
+ options.types = packageTypes.filter((t) => t !== "node");
31
+ break;
32
+ case "neutral":
33
+ options.types = [.../* @__PURE__ */ new Set([...packageTypes, "node"])];
34
+ break;
35
+ }
36
+ return options;
37
+ }
38
+ function parseRootTsconfig(cwd) {
39
+ const tsconfigPath = path.join(cwd, "tsconfig.json");
40
+ const configFile = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
41
+ if (configFile.error) {
42
+ const message = ts.flattenDiagnosticMessageText(configFile.error.messageText, "\n");
43
+ throw new SdError(`tsconfig.json \uC77D\uAE30 \uC2E4\uD328: ${message}`);
44
+ }
45
+ const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);
46
+ if (parsed.errors.length > 0) {
47
+ const messages = parsed.errors.map((e) => ts.flattenDiagnosticMessageText(e.messageText, "\n"));
48
+ throw new SdError(`tsconfig.json \uD30C\uC2F1 \uC2E4\uD328: ${messages.join("; ")}`);
49
+ }
50
+ return parsed;
51
+ }
52
+ function getPackageSourceFiles(pkgDir, parsedConfig) {
53
+ const pkgSrcPrefix = path.join(pkgDir, "src") + path.sep;
54
+ return parsedConfig.fileNames.filter((f) => f.startsWith(pkgSrcPrefix));
55
+ }
56
+ export {
57
+ getCompilerOptionsForPackage,
58
+ getPackageSourceFiles,
59
+ getTypesFromPackageJson,
60
+ parseRootTsconfig
61
+ };
62
+ //# sourceMappingURL=tsconfig.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/tsconfig.ts"],
4
+ "sourcesContent": ["import ts from \"typescript\";\nimport path from \"path\";\nimport { fsExists, fsReadJson } from \"@simplysm/core-node\";\nimport { SdError } from \"@simplysm/core-common\";\n\n/**\n * DOM \uAD00\uB828 lib \uD328\uD134 - \uBE0C\uB77C\uC6B0\uC800 API\uB97C \uD3EC\uD568\uD558\uB294 lib\uB4E4\n * node \uD658\uACBD\uC5D0\uC11C \uC81C\uC678\uB418\uC5B4\uC57C \uD558\uB294 lib\uC744 \uD544\uD130\uB9C1\uD560 \uB54C \uC0AC\uC6A9 (lib.dom.d.ts, lib.webworker.d.ts \uB4F1)\n */\nconst DOM_LIB_PATTERNS = [\"dom\", \"webworker\"] as const;\n\n/**\n * \uD328\uD0A4\uC9C0\uC758 package.json\uC5D0\uC11C @types/* devDependencies\uB97C \uC77D\uC5B4 types \uBAA9\uB85D\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\nexport async function getTypesFromPackageJson(packageDir: string): Promise<string[]> {\n const packageJsonPath = path.join(packageDir, \"package.json\");\n if (!(await fsExists(packageJsonPath))) {\n return [];\n }\n\n const packageJson = await fsReadJson<{ devDependencies?: Record<string, string> }>(packageJsonPath);\n const devDeps = packageJson.devDependencies ?? {};\n\n return Object.keys(devDeps)\n .filter((dep) => dep.startsWith(\"@types/\"))\n .map((dep) => dep.replace(\"@types/\", \"\"));\n}\n\n/**\n * \uD0C0\uC785\uCCB4\uD06C \uD658\uACBD\n * - node: DOM lib \uC81C\uAC70 + node \uD0C0\uC785 \uCD94\uAC00\n * - browser: node \uD0C0\uC785 \uC81C\uAC70\n * - neutral: DOM lib \uC720\uC9C0 + node \uD0C0\uC785 \uCD94\uAC00 (Node/\uBE0C\uB77C\uC6B0\uC800 \uACF5\uC6A9 \uD328\uD0A4\uC9C0\uC6A9)\n */\nexport type TypecheckEnv = \"node\" | \"browser\" | \"neutral\";\n\n/**\n * \uD328\uD0A4\uC9C0\uC6A9 \uCEF4\uD30C\uC77C\uB7EC \uC635\uC158 \uC0DD\uC131\n *\n * @param baseOptions \uB8E8\uD2B8 tsconfig\uC758 \uCEF4\uD30C\uC77C\uB7EC \uC635\uC158\n * @param env \uD0C0\uC785\uCCB4\uD06C \uD658\uACBD (node: DOM lib \uC81C\uAC70 + node \uD0C0\uC785 \uCD94\uAC00, browser: node \uD0C0\uC785 \uC81C\uAC70)\n * @param packageDir \uD328\uD0A4\uC9C0 \uB514\uB809\uD1A0\uB9AC \uACBD\uB85C\n *\n * @remarks\n * types \uC635\uC158\uC740 baseOptions.types\uB97C \uBB34\uC2DC\uD558\uACE0 \uD328\uD0A4\uC9C0\uBCC4\uB85C \uC0C8\uB85C \uAD6C\uC131\uD55C\uB2E4.\n * \uC774\uB294 \uB8E8\uD2B8 tsconfig\uC758 \uC804\uC5ED \uD0C0\uC785\uC774 \uD328\uD0A4\uC9C0 \uD658\uACBD\uC5D0 \uB9DE\uC9C0 \uC54A\uC744 \uC218 \uC788\uAE30 \uB54C\uBB38\uC774\uB2E4.\n * (\uC608: browser \uD328\uD0A4\uC9C0\uC5D0 node \uD0C0\uC785\uC774 \uD3EC\uD568\uB418\uB294 \uAC83\uC744 \uBC29\uC9C0)\n */\nexport async function getCompilerOptionsForPackage(\n baseOptions: ts.CompilerOptions,\n env: TypecheckEnv,\n packageDir: string,\n): Promise<ts.CompilerOptions> {\n const options = { ...baseOptions };\n const packageTypes = await getTypesFromPackageJson(packageDir);\n\n // pnpm \uD658\uACBD: \uD328\uD0A4\uC9C0\uBCC4 node_modules/@types\uC640 \uB8E8\uD2B8 node_modules/@types \uBAA8\uB450 \uAC80\uC0C9\n options.typeRoots = [\n path.join(packageDir, \"node_modules\", \"@types\"),\n path.join(process.cwd(), \"node_modules\", \"@types\"),\n ];\n\n switch (env) {\n case \"node\":\n options.lib = options.lib?.filter(\n (lib) => !DOM_LIB_PATTERNS.some((pattern) => lib.toLowerCase().includes(pattern)),\n );\n options.types = [...new Set([...packageTypes, \"node\"])];\n break;\n case \"browser\":\n options.types = packageTypes.filter((t) => t !== \"node\");\n break;\n case \"neutral\":\n options.types = [...new Set([...packageTypes, \"node\"])];\n break;\n }\n\n return options;\n}\n\n/**\n * \uB8E8\uD2B8 tsconfig \uD30C\uC2F1\n * @throws tsconfig.json\uC744 \uC77D\uAC70\uB098 \uD30C\uC2F1\uD560 \uC218 \uC5C6\uB294 \uACBD\uC6B0\n */\nexport function parseRootTsconfig(cwd: string): ts.ParsedCommandLine {\n const tsconfigPath = path.join(cwd, \"tsconfig.json\");\n const configFile = ts.readConfigFile(tsconfigPath, ts.sys.readFile);\n\n if (configFile.error) {\n const message = ts.flattenDiagnosticMessageText(configFile.error.messageText, \"\\n\");\n throw new SdError(`tsconfig.json \uC77D\uAE30 \uC2E4\uD328: ${message}`);\n }\n\n const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);\n\n if (parsed.errors.length > 0) {\n const messages = parsed.errors.map((e) => ts.flattenDiagnosticMessageText(e.messageText, \"\\n\"));\n throw new SdError(`tsconfig.json \uD30C\uC2F1 \uC2E4\uD328: ${messages.join(\"; \")}`);\n }\n\n return parsed;\n}\n\n/**\n * \uD328\uD0A4\uC9C0\uC758 \uC18C\uC2A4 \uD30C\uC77C \uBAA9\uB85D \uAC00\uC838\uC624\uAE30 (tsconfig \uAE30\uBC18)\n */\nexport function getPackageSourceFiles(pkgDir: string, parsedConfig: ts.ParsedCommandLine): string[] {\n // \uACBD\uB85C \uAD6C\uBD84\uC790\uAE4C\uC9C0 \uD3EC\uD568\uD558\uC5EC \uBE44\uAD50 (packages/core\uC640 packages/core-common \uAD6C\uBD84)\n const pkgSrcPrefix = path.join(pkgDir, \"src\") + path.sep;\n return parsedConfig.fileNames.filter((f) => f.startsWith(pkgSrcPrefix));\n}\n"],
5
+ "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,UAAU,kBAAkB;AACrC,SAAS,eAAe;AAMxB,MAAM,mBAAmB,CAAC,OAAO,WAAW;AAK5C,eAAsB,wBAAwB,YAAuC;AACnF,QAAM,kBAAkB,KAAK,KAAK,YAAY,cAAc;AAC5D,MAAI,CAAE,MAAM,SAAS,eAAe,GAAI;AACtC,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,cAAc,MAAM,WAAyD,eAAe;AAClG,QAAM,UAAU,YAAY,mBAAmB,CAAC;AAEhD,SAAO,OAAO,KAAK,OAAO,EACvB,OAAO,CAAC,QAAQ,IAAI,WAAW,SAAS,CAAC,EACzC,IAAI,CAAC,QAAQ,IAAI,QAAQ,WAAW,EAAE,CAAC;AAC5C;AAsBA,eAAsB,6BACpB,aACA,KACA,YAC6B;AAC7B,QAAM,UAAU,EAAE,GAAG,YAAY;AACjC,QAAM,eAAe,MAAM,wBAAwB,UAAU;AAG7D,UAAQ,YAAY;AAAA,IAClB,KAAK,KAAK,YAAY,gBAAgB,QAAQ;AAAA,IAC9C,KAAK,KAAK,QAAQ,IAAI,GAAG,gBAAgB,QAAQ;AAAA,EACnD;AAEA,UAAQ,KAAK;AAAA,IACX,KAAK;AACH,cAAQ,MAAM,QAAQ,KAAK;AAAA,QACzB,CAAC,QAAQ,CAAC,iBAAiB,KAAK,CAAC,YAAY,IAAI,YAAY,EAAE,SAAS,OAAO,CAAC;AAAA,MAClF;AACA,cAAQ,QAAQ,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,cAAc,MAAM,CAAC,CAAC;AACtD;AAAA,IACF,KAAK;AACH,cAAQ,QAAQ,aAAa,OAAO,CAAC,MAAM,MAAM,MAAM;AACvD;AAAA,IACF,KAAK;AACH,cAAQ,QAAQ,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,cAAc,MAAM,CAAC,CAAC;AACtD;AAAA,EACJ;AAEA,SAAO;AACT;AAMO,SAAS,kBAAkB,KAAmC;AACnE,QAAM,eAAe,KAAK,KAAK,KAAK,eAAe;AACnD,QAAM,aAAa,GAAG,eAAe,cAAc,GAAG,IAAI,QAAQ;AAElE,MAAI,WAAW,OAAO;AACpB,UAAM,UAAU,GAAG,6BAA6B,WAAW,MAAM,aAAa,IAAI;AAClF,UAAM,IAAI,QAAQ,4CAAwB,OAAO,EAAE;AAAA,EACrD;AAEA,QAAM,SAAS,GAAG,2BAA2B,WAAW,QAAQ,GAAG,KAAK,GAAG;AAE3E,MAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,WAAW,OAAO,OAAO,IAAI,CAAC,MAAM,GAAG,6BAA6B,EAAE,aAAa,IAAI,CAAC;AAC9F,UAAM,IAAI,QAAQ,4CAAwB,SAAS,KAAK,IAAI,CAAC,EAAE;AAAA,EACjE;AAEA,SAAO;AACT;AAKO,SAAS,sBAAsB,QAAgB,cAA8C;AAElG,QAAM,eAAe,KAAK,KAAK,QAAQ,KAAK,IAAI,KAAK;AACrD,SAAO,aAAa,UAAU,OAAO,CAAC,MAAM,EAAE,WAAW,YAAY,CAAC;AACxE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,46 @@
1
+ import ts from "typescript";
2
+ import { fsExistsSync, fsReadSync } from "@simplysm/core-node";
3
+ function serializeDiagnostic(diagnostic) {
4
+ const messageText = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
5
+ return {
6
+ category: diagnostic.category,
7
+ code: diagnostic.code,
8
+ messageText,
9
+ file: diagnostic.file ? {
10
+ fileName: diagnostic.file.fileName
11
+ } : void 0,
12
+ start: diagnostic.start,
13
+ length: diagnostic.length
14
+ };
15
+ }
16
+ function getScriptKind(fileName) {
17
+ if (fileName.endsWith(".tsx")) return ts.ScriptKind.TSX;
18
+ if (fileName.endsWith(".jsx")) return ts.ScriptKind.JSX;
19
+ if (fileName.endsWith(".js") || fileName.endsWith(".mjs") || fileName.endsWith(".cjs")) return ts.ScriptKind.JS;
20
+ return ts.ScriptKind.TS;
21
+ }
22
+ function deserializeDiagnostic(serialized, fileCache) {
23
+ let file;
24
+ if (serialized.file != null) {
25
+ const fileName = serialized.file.fileName;
26
+ if (!fileCache.has(fileName)) {
27
+ fileCache.set(fileName, fsExistsSync(fileName) ? fsReadSync(fileName) : "");
28
+ }
29
+ const content = fileCache.get(fileName);
30
+ const scriptKind = getScriptKind(fileName);
31
+ file = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, false, scriptKind);
32
+ }
33
+ return {
34
+ category: serialized.category,
35
+ code: serialized.code,
36
+ messageText: serialized.messageText,
37
+ file,
38
+ start: serialized.start,
39
+ length: serialized.length
40
+ };
41
+ }
42
+ export {
43
+ deserializeDiagnostic,
44
+ serializeDiagnostic
45
+ };
46
+ //# sourceMappingURL=typecheck-serialization.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/typecheck-serialization.ts"],
4
+ "sourcesContent": ["import ts from \"typescript\";\nimport { fsExistsSync, fsReadSync } from \"@simplysm/core-node\";\n\n/**\n * Worker\uB85C \uC804\uB2EC \uAC00\uB2A5\uD55C \uC9C1\uB82C\uD654\uB41C Diagnostic\n */\nexport interface SerializedDiagnostic {\n category: number;\n code: number;\n messageText: string;\n file?: {\n fileName: string;\n };\n start?: number;\n length?: number;\n}\n\n/**\n * Diagnostic\uC744 \uC9C1\uB82C\uD654 \uAC00\uB2A5\uD55C \uD615\uD0DC\uB85C \uBCC0\uD658\n * (Worker thread \uAC04 structured clone \uD1B5\uC2E0\uC744 \uC704\uD574 \uC21C\uD658 \uCC38\uC870/\uD568\uC218 \uC81C\uAC70)\n */\nexport function serializeDiagnostic(diagnostic: ts.Diagnostic): SerializedDiagnostic {\n // DiagnosticMessageChain\uC778 \uACBD\uC6B0 \uC804\uCCB4 \uCCB4\uC778\uC744 \uD3C9\uD0C4\uD654\uD558\uC5EC \uBAA8\uB4E0 \uCEE8\uD14D\uC2A4\uD2B8 \uC815\uBCF4 \uBCF4\uC874\n const messageText = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n\n return {\n category: diagnostic.category,\n code: diagnostic.code,\n messageText,\n file: diagnostic.file\n ? {\n fileName: diagnostic.file.fileName,\n }\n : undefined,\n start: diagnostic.start,\n length: diagnostic.length,\n };\n}\n\n/**\n * \uD30C\uC77C\uBA85\uC5D0\uC11C TypeScript ScriptKind \uACB0\uC815\n */\nfunction getScriptKind(fileName: string): ts.ScriptKind {\n if (fileName.endsWith(\".tsx\")) return ts.ScriptKind.TSX;\n if (fileName.endsWith(\".jsx\")) return ts.ScriptKind.JSX;\n if (fileName.endsWith(\".js\") || fileName.endsWith(\".mjs\") || fileName.endsWith(\".cjs\")) return ts.ScriptKind.JS;\n return ts.ScriptKind.TS;\n}\n\n/**\n * SerializedDiagnostic\uC744 ts.Diagnostic\uC73C\uB85C \uBCF5\uC6D0\n * \uC2E4\uC81C \uD30C\uC77C \uB0B4\uC6A9\uC744 \uC77D\uC5B4 formatDiagnosticsWithColorAndContext\uC5D0\uC11C \uC18C\uC2A4 \uCF54\uB4DC \uCEE8\uD14D\uC2A4\uD2B8\uAC00 \uD45C\uC2DC\uB418\uB3C4\uB85D \uD568\n * @param serialized \uC9C1\uB82C\uD654\uB41C \uC9C4\uB2E8 \uC815\uBCF4\n * @param fileCache \uD30C\uC77C \uB0B4\uC6A9 \uCE90\uC2DC (\uB3D9\uC77C \uD30C\uC77C \uC911\uBCF5 \uC77D\uAE30 \uBC29\uC9C0)\n * @returns \uBCF5\uC6D0\uB41C ts.Diagnostic \uAC1D\uCCB4\n */\nexport function deserializeDiagnostic(serialized: SerializedDiagnostic, fileCache: Map<string, string>): ts.Diagnostic {\n let file: ts.SourceFile | undefined;\n if (serialized.file != null) {\n const fileName = serialized.file.fileName;\n\n // \uCE90\uC2DC\uB41C \uD30C\uC77C \uB0B4\uC6A9 \uAC00\uC838\uC624\uAE30 (\uC5C6\uC73C\uBA74 \uC77D\uC5B4\uC11C \uCE90\uC2DC)\n // \uD30C\uC77C\uC774 \uC0AD\uC81C\uB418\uC5C8\uAC70\uB098 \uC811\uADFC \uBD88\uAC00\uB2A5\uD55C \uACBD\uC6B0 \uBE48 \uB0B4\uC6A9\uC73C\uB85C \uCC98\uB9AC\n // (\uC18C\uC2A4 \uCF54\uB4DC \uCEE8\uD14D\uC2A4\uD2B8\uB294 \uD45C\uC2DC\uB418\uC9C0 \uC54A\uC9C0\uB9CC \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB294 \uC815\uC0C1 \uCD9C\uB825\uB428)\n if (!fileCache.has(fileName)) {\n fileCache.set(fileName, fsExistsSync(fileName) ? fsReadSync(fileName) : \"\");\n }\n const content = fileCache.get(fileName)!;\n\n const scriptKind = getScriptKind(fileName);\n file = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, false, scriptKind);\n }\n\n return {\n category: serialized.category,\n code: serialized.code,\n messageText: serialized.messageText,\n file,\n start: serialized.start,\n length: serialized.length,\n };\n}\n"],
5
+ "mappings": "AAAA,OAAO,QAAQ;AACf,SAAS,cAAc,kBAAkB;AAoBlC,SAAS,oBAAoB,YAAiD;AAEnF,QAAM,cAAc,GAAG,6BAA6B,WAAW,aAAa,IAAI;AAEhF,SAAO;AAAA,IACL,UAAU,WAAW;AAAA,IACrB,MAAM,WAAW;AAAA,IACjB;AAAA,IACA,MAAM,WAAW,OACb;AAAA,MACE,UAAU,WAAW,KAAK;AAAA,IAC5B,IACA;AAAA,IACJ,OAAO,WAAW;AAAA,IAClB,QAAQ,WAAW;AAAA,EACrB;AACF;AAKA,SAAS,cAAc,UAAiC;AACtD,MAAI,SAAS,SAAS,MAAM,EAAG,QAAO,GAAG,WAAW;AACpD,MAAI,SAAS,SAAS,MAAM,EAAG,QAAO,GAAG,WAAW;AACpD,MAAI,SAAS,SAAS,KAAK,KAAK,SAAS,SAAS,MAAM,KAAK,SAAS,SAAS,MAAM,EAAG,QAAO,GAAG,WAAW;AAC7G,SAAO,GAAG,WAAW;AACvB;AASO,SAAS,sBAAsB,YAAkC,WAA+C;AACrH,MAAI;AACJ,MAAI,WAAW,QAAQ,MAAM;AAC3B,UAAM,WAAW,WAAW,KAAK;AAKjC,QAAI,CAAC,UAAU,IAAI,QAAQ,GAAG;AAC5B,gBAAU,IAAI,UAAU,aAAa,QAAQ,IAAI,WAAW,QAAQ,IAAI,EAAE;AAAA,IAC5E;AACA,UAAM,UAAU,UAAU,IAAI,QAAQ;AAEtC,UAAM,aAAa,cAAc,QAAQ;AACzC,WAAO,GAAG,iBAAiB,UAAU,SAAS,GAAG,aAAa,QAAQ,OAAO,UAAU;AAAA,EACzF;AAEA,SAAO;AAAA,IACL,UAAU,WAAW;AAAA,IACrB,MAAM,WAAW;AAAA,IACjB,aAAa,WAAW;AAAA,IACxB;AAAA,IACA,OAAO,WAAW;AAAA,IAClB,QAAQ,WAAW;AAAA,EACrB;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,108 @@
1
+ import fs from "fs";
2
+ import { createRequire } from "module";
3
+ import path from "path";
4
+ import tsconfigPaths from "vite-tsconfig-paths";
5
+ import solidPlugin from "vite-plugin-solid";
6
+ import tailwindcss from "tailwindcss";
7
+ import { getTailwindConfigDeps } from "./tailwind-config-deps.js";
8
+ function sdTailwindConfigDepsPlugin(pkgDir) {
9
+ return {
10
+ name: "sd-tailwind-config-deps",
11
+ configureServer(server) {
12
+ const configPath = path.join(pkgDir, "tailwind.config.ts");
13
+ if (!fs.existsSync(configPath)) return;
14
+ const pkgJsonPath = path.join(pkgDir, "package.json");
15
+ const pkgName = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8")).name;
16
+ const pkgScope = pkgName.match(/^(@[^/]+)\//)?.[1];
17
+ const scopes = /* @__PURE__ */ new Set(["@simplysm"]);
18
+ if (pkgScope != null) {
19
+ scopes.add(pkgScope);
20
+ }
21
+ const allDeps = getTailwindConfigDeps(configPath, [...scopes]);
22
+ const configAbsolute = path.resolve(configPath);
23
+ const externalDeps = allDeps.filter((d) => d !== configAbsolute);
24
+ if (externalDeps.length === 0) return;
25
+ for (const dep of externalDeps) {
26
+ server.watcher.add(dep);
27
+ }
28
+ server.watcher.on("change", (changed) => {
29
+ if (externalDeps.some((d) => path.normalize(d) === path.normalize(changed))) {
30
+ const _require = createRequire(import.meta.url);
31
+ for (const dep of allDeps) {
32
+ delete _require.cache[dep];
33
+ }
34
+ const now = /* @__PURE__ */ new Date();
35
+ fs.utimesSync(configPath, now, now);
36
+ server.ws.send({ type: "full-reload" });
37
+ }
38
+ });
39
+ }
40
+ };
41
+ }
42
+ function sdScopeWatchPlugin(pkgDir, scopes) {
43
+ return {
44
+ name: "sd-scope-watch",
45
+ config() {
46
+ return {
47
+ optimizeDeps: {
48
+ exclude: scopes.flatMap((s) => {
49
+ const scopeDir = path.join(pkgDir, "node_modules", s);
50
+ if (!fs.existsSync(scopeDir)) return [];
51
+ return fs.readdirSync(scopeDir).map((name) => `${s}/${name}`);
52
+ })
53
+ }
54
+ };
55
+ },
56
+ configureServer(server) {
57
+ for (const scope of scopes) {
58
+ const scopeDir = path.join(pkgDir, "node_modules", scope);
59
+ if (!fs.existsSync(scopeDir)) continue;
60
+ for (const pkgName of fs.readdirSync(scopeDir)) {
61
+ const distDir = path.join(scopeDir, pkgName, "dist");
62
+ if (fs.existsSync(distDir)) {
63
+ server.watcher.add(distDir);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ };
69
+ }
70
+ function createViteConfig(options) {
71
+ const { pkgDir, name, tsconfigPath, compilerOptions, env, mode, serverPort, watchScopes } = options;
72
+ const envDefine = {};
73
+ if (env != null) {
74
+ envDefine["process.env"] = JSON.stringify(env);
75
+ }
76
+ const config = {
77
+ root: pkgDir,
78
+ base: `/${name}/`,
79
+ plugins: [
80
+ tsconfigPaths({ projects: [tsconfigPath] }),
81
+ solidPlugin(),
82
+ sdTailwindConfigDepsPlugin(pkgDir),
83
+ ...watchScopes != null && watchScopes.length > 0 ? [sdScopeWatchPlugin(pkgDir, watchScopes)] : []
84
+ ],
85
+ css: {
86
+ postcss: {
87
+ plugins: [tailwindcss({ config: path.join(pkgDir, "tailwind.config.ts") })]
88
+ }
89
+ },
90
+ esbuild: {
91
+ tsconfigRaw: { compilerOptions }
92
+ }
93
+ };
94
+ if (mode === "build") {
95
+ config.logLevel = "silent";
96
+ } else {
97
+ config.define = envDefine;
98
+ config.server = {
99
+ port: serverPort === 0 ? void 0 : serverPort,
100
+ strictPort: serverPort !== 0 && serverPort !== void 0
101
+ };
102
+ }
103
+ return config;
104
+ }
105
+ export {
106
+ createViteConfig
107
+ };
108
+ //# sourceMappingURL=vite-config.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/vite-config.ts"],
4
+ "sourcesContent": ["import fs from \"fs\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nimport type { Plugin, UserConfig as ViteUserConfig } from \"vite\";\nimport tsconfigPaths from \"vite-tsconfig-paths\";\nimport solidPlugin from \"vite-plugin-solid\";\nimport tailwindcss from \"tailwindcss\";\nimport type esbuild from \"esbuild\";\nimport { getTailwindConfigDeps } from \"./tailwind-config-deps.js\";\n\n/**\n * Tailwind config\uC758 scope \uD328\uD0A4\uC9C0 \uC758\uC874\uC131\uC744 watch\uD558\uB294 Vite \uD50C\uB7EC\uADF8\uC778.\n *\n * Tailwind CSS\uC758 \uB0B4\uC7A5 \uC758\uC874\uC131 \uCD94\uC801\uC740 \uC0C1\uB300 \uACBD\uB85C import\uB9CC \uCC98\uB9AC\uD558\uBBC0\uB85C,\n * preset \uB4F1\uC73C\uB85C \uCC38\uC870\uD558\uB294 scope \uD328\uD0A4\uC9C0\uC758 config \uBCC0\uACBD\uC744 \uAC10\uC9C0\uD558\uC9C0 \uBABB\uD55C\uB2E4.\n * \uC774 \uD50C\uB7EC\uADF8\uC778\uC774 \uD574\uB2F9 \uD30C\uC77C\uB4E4\uC744 watch\uD558\uACE0, \uBCC0\uACBD \uC2DC Tailwind \uCE90\uC2DC\uB97C \uBB34\uD6A8\uD654\uD55C\uB2E4.\n */\nfunction sdTailwindConfigDepsPlugin(pkgDir: string): Plugin {\n return {\n name: \"sd-tailwind-config-deps\",\n configureServer(server) {\n const configPath = path.join(pkgDir, \"tailwind.config.ts\");\n if (!fs.existsSync(configPath)) return;\n\n // \uD604\uC7AC \uD328\uD0A4\uC9C0\uC758 scope + @simplysm \uC744 \uD56D\uC0C1 \uD3EC\uD568\n const pkgJsonPath = path.join(pkgDir, \"package.json\");\n const pkgName = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf-8\")).name as string;\n const pkgScope = pkgName.match(/^(@[^/]+)\\//)?.[1];\n const scopes = new Set([\"@simplysm\"]);\n if (pkgScope != null) {\n scopes.add(pkgScope);\n }\n\n const allDeps = getTailwindConfigDeps(configPath, [...scopes]);\n const configAbsolute = path.resolve(configPath);\n const externalDeps = allDeps.filter((d) => d !== configAbsolute);\n if (externalDeps.length === 0) return;\n\n for (const dep of externalDeps) {\n server.watcher.add(dep);\n }\n\n server.watcher.on(\"change\", (changed) => {\n if (externalDeps.some((d) => path.normalize(d) === path.normalize(changed))) {\n // jiti (Tailwind\uC758 config \uB85C\uB354)\uAC00 \uC0AC\uC6A9\uD558\uB294 require \uCE90\uC2DC\uB97C \uC815\uB9AC\uD558\uC5EC\n // config \uC7AC\uB85C\uB4DC \uC2DC \uBCC0\uACBD\uB41C \uD30C\uC77C\uC774 \uC0C8\uB85C \uC77D\uD788\uB3C4\uB85D \uD55C\uB2E4\n const _require = createRequire(import.meta.url);\n for (const dep of allDeps) {\n delete _require.cache[dep];\n }\n\n // Tailwind \uCE90\uC2DC \uBB34\uD6A8\uD654: config\uC758 mtime\uC744 \uAC31\uC2E0\uD558\uC5EC \uC7AC\uB85C\uB4DC \uC720\uB3C4\n const now = new Date();\n fs.utimesSync(configPath, now, now);\n server.ws.send({ type: \"full-reload\" });\n }\n });\n },\n };\n}\n\n/**\n * scope \uD328\uD0A4\uC9C0\uC758 dist \uB514\uB809\uD1A0\uB9AC \uBCC0\uACBD\uC744 \uAC10\uC9C0\uD558\uB294 Vite \uD50C\uB7EC\uADF8\uC778.\n *\n * Vite\uB294 node_modules\uB97C \uAE30\uBCF8\uC801\uC73C\uB85C watch\uC5D0\uC11C \uC81C\uC678\uD558\uBBC0\uB85C,\n * scope \uD328\uD0A4\uC9C0\uC758 dist \uD30C\uC77C\uC774 \uBCC0\uACBD\uB418\uC5B4\uB3C4 HMR/\uB9AC\uBE4C\uB4DC\uAC00 \uD2B8\uB9AC\uAC70\uB418\uC9C0 \uC54A\uB294\uB2E4.\n * \uC774 \uD50C\uB7EC\uADF8\uC778\uC740 scope \uD328\uD0A4\uC9C0\uC758 dist \uB514\uB809\uD1A0\uB9AC\uB97C watcher\uC5D0 \uBA85\uC2DC\uC801\uC73C\uB85C \uCD94\uAC00\uD558\uACE0,\n * optimizeDeps\uC5D0\uC11C \uC81C\uC678\uD558\uC5EC pre-bundled \uCE90\uC2DC\uB85C \uC778\uD55C \uBCC0\uACBD \uBB34\uC2DC\uB97C \uBC29\uC9C0\uD55C\uB2E4.\n */\nfunction sdScopeWatchPlugin(pkgDir: string, scopes: string[]): Plugin {\n return {\n name: \"sd-scope-watch\",\n config() {\n return {\n optimizeDeps: {\n exclude: scopes.flatMap((s) => {\n // scope \uD328\uD0A4\uC9C0\uB97C pre-bundling\uC5D0\uC11C \uC81C\uC678\uD558\uC5EC \uC18C\uC2A4 \uCF54\uB4DC\uB85C \uCDE8\uAE09\n const scopeDir = path.join(pkgDir, \"node_modules\", s);\n if (!fs.existsSync(scopeDir)) return [];\n return fs.readdirSync(scopeDir).map((name) => `${s}/${name}`);\n }),\n },\n };\n },\n configureServer(server) {\n for (const scope of scopes) {\n const scopeDir = path.join(pkgDir, \"node_modules\", scope);\n if (!fs.existsSync(scopeDir)) continue;\n\n for (const pkgName of fs.readdirSync(scopeDir)) {\n const distDir = path.join(scopeDir, pkgName, \"dist\");\n if (fs.existsSync(distDir)) {\n server.watcher.add(distDir);\n }\n }\n }\n },\n };\n}\n\n/**\n * Vite \uC124\uC815 \uC0DD\uC131 \uC635\uC158\n */\nexport interface ViteConfigOptions {\n pkgDir: string;\n name: string;\n tsconfigPath: string;\n compilerOptions: Record<string, unknown>;\n env?: Record<string, string>;\n mode: \"build\" | \"dev\";\n /** dev \uBAA8\uB4DC\uC77C \uB54C \uC11C\uBC84 \uD3EC\uD2B8 (0\uC774\uBA74 \uC790\uB3D9 \uD560\uB2F9) */\n serverPort?: number;\n /** watch \uB300\uC0C1 scope \uBAA9\uB85D (\uC608: [\"@myapp\", \"@simplysm\"]) */\n watchScopes?: string[];\n}\n\n/**\n * Vite \uC124\uC815 \uC0DD\uC131\n *\n * SolidJS + TailwindCSS \uAE30\uBC18\uC758 client \uD328\uD0A4\uC9C0 \uBE4C\uB4DC/\uAC1C\uBC1C \uC11C\uBC84\uC6A9 \uC124\uC815\uC785\uB2C8\uB2E4.\n * - build \uBAA8\uB4DC: production \uBE4C\uB4DC (logLevel: silent)\n * - dev \uBAA8\uB4DC: dev server (define\uC73C\uB85C env \uCE58\uD658, server \uC124\uC815)\n */\nexport function createViteConfig(options: ViteConfigOptions): ViteUserConfig {\n const { pkgDir, name, tsconfigPath, compilerOptions, env, mode, serverPort, watchScopes } = options;\n\n // process.env \uCE58\uD658 (dev \uBAA8\uB4DC\uC5D0\uC11C\uB9CC \uC0AC\uC6A9, build \uBAA8\uB4DC\uB294 inline\uC73C\uB85C \uCC98\uB9AC\uB428)\n const envDefine: Record<string, string> = {};\n if (env != null) {\n envDefine[\"process.env\"] = JSON.stringify(env);\n }\n\n const config: ViteUserConfig = {\n root: pkgDir,\n base: `/${name}/`,\n plugins: [\n tsconfigPaths({ projects: [tsconfigPath] }),\n solidPlugin(),\n sdTailwindConfigDepsPlugin(pkgDir),\n ...(watchScopes != null && watchScopes.length > 0 ? [sdScopeWatchPlugin(pkgDir, watchScopes)] : []),\n ],\n css: {\n postcss: {\n plugins: [tailwindcss({ config: path.join(pkgDir, \"tailwind.config.ts\") })],\n },\n },\n esbuild: {\n tsconfigRaw: { compilerOptions: compilerOptions as esbuild.TsconfigRaw[\"compilerOptions\"] },\n },\n };\n\n if (mode === \"build\") {\n config.logLevel = \"silent\";\n } else {\n // dev \uBAA8\uB4DC\n config.define = envDefine;\n config.server = {\n port: serverPort === 0 ? undefined : serverPort,\n strictPort: serverPort !== 0 && serverPort !== undefined,\n };\n }\n\n return config;\n}\n"],
5
+ "mappings": "AAAA,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAEjB,OAAO,mBAAmB;AAC1B,OAAO,iBAAiB;AACxB,OAAO,iBAAiB;AAExB,SAAS,6BAA6B;AAStC,SAAS,2BAA2B,QAAwB;AAC1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB,QAAQ;AACtB,YAAM,aAAa,KAAK,KAAK,QAAQ,oBAAoB;AACzD,UAAI,CAAC,GAAG,WAAW,UAAU,EAAG;AAGhC,YAAM,cAAc,KAAK,KAAK,QAAQ,cAAc;AACpD,YAAM,UAAU,KAAK,MAAM,GAAG,aAAa,aAAa,OAAO,CAAC,EAAE;AAClE,YAAM,WAAW,QAAQ,MAAM,aAAa,IAAI,CAAC;AACjD,YAAM,SAAS,oBAAI,IAAI,CAAC,WAAW,CAAC;AACpC,UAAI,YAAY,MAAM;AACpB,eAAO,IAAI,QAAQ;AAAA,MACrB;AAEA,YAAM,UAAU,sBAAsB,YAAY,CAAC,GAAG,MAAM,CAAC;AAC7D,YAAM,iBAAiB,KAAK,QAAQ,UAAU;AAC9C,YAAM,eAAe,QAAQ,OAAO,CAAC,MAAM,MAAM,cAAc;AAC/D,UAAI,aAAa,WAAW,EAAG;AAE/B,iBAAW,OAAO,cAAc;AAC9B,eAAO,QAAQ,IAAI,GAAG;AAAA,MACxB;AAEA,aAAO,QAAQ,GAAG,UAAU,CAAC,YAAY;AACvC,YAAI,aAAa,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,OAAO,CAAC,GAAG;AAG3E,gBAAM,WAAW,cAAc,YAAY,GAAG;AAC9C,qBAAW,OAAO,SAAS;AACzB,mBAAO,SAAS,MAAM,GAAG;AAAA,UAC3B;AAGA,gBAAM,MAAM,oBAAI,KAAK;AACrB,aAAG,WAAW,YAAY,KAAK,GAAG;AAClC,iBAAO,GAAG,KAAK,EAAE,MAAM,cAAc,CAAC;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAUA,SAAS,mBAAmB,QAAgB,QAA0B;AACpE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AACP,aAAO;AAAA,QACL,cAAc;AAAA,UACZ,SAAS,OAAO,QAAQ,CAAC,MAAM;AAE7B,kBAAM,WAAW,KAAK,KAAK,QAAQ,gBAAgB,CAAC;AACpD,gBAAI,CAAC,GAAG,WAAW,QAAQ,EAAG,QAAO,CAAC;AACtC,mBAAO,GAAG,YAAY,QAAQ,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,EAAE;AAAA,UAC9D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB,QAAQ;AACtB,iBAAW,SAAS,QAAQ;AAC1B,cAAM,WAAW,KAAK,KAAK,QAAQ,gBAAgB,KAAK;AACxD,YAAI,CAAC,GAAG,WAAW,QAAQ,EAAG;AAE9B,mBAAW,WAAW,GAAG,YAAY,QAAQ,GAAG;AAC9C,gBAAM,UAAU,KAAK,KAAK,UAAU,SAAS,MAAM;AACnD,cAAI,GAAG,WAAW,OAAO,GAAG;AAC1B,mBAAO,QAAQ,IAAI,OAAO;AAAA,UAC5B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAyBO,SAAS,iBAAiB,SAA4C;AAC3E,QAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB,KAAK,MAAM,YAAY,YAAY,IAAI;AAG5F,QAAM,YAAoC,CAAC;AAC3C,MAAI,OAAO,MAAM;AACf,cAAU,aAAa,IAAI,KAAK,UAAU,GAAG;AAAA,EAC/C;AAEA,QAAM,SAAyB;AAAA,IAC7B,MAAM;AAAA,IACN,MAAM,IAAI,IAAI;AAAA,IACd,SAAS;AAAA,MACP,cAAc,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC;AAAA,MAC1C,YAAY;AAAA,MACZ,2BAA2B,MAAM;AAAA,MACjC,GAAI,eAAe,QAAQ,YAAY,SAAS,IAAI,CAAC,mBAAmB,QAAQ,WAAW,CAAC,IAAI,CAAC;AAAA,IACnG;AAAA,IACA,KAAK;AAAA,MACH,SAAS;AAAA,QACP,SAAS,CAAC,YAAY,EAAE,QAAQ,KAAK,KAAK,QAAQ,oBAAoB,EAAE,CAAC,CAAC;AAAA,MAC5E;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,aAAa,EAAE,gBAA2E;AAAA,IAC5F;AAAA,EACF;AAEA,MAAI,SAAS,SAAS;AACpB,WAAO,WAAW;AAAA,EACpB,OAAO;AAEL,WAAO,SAAS;AAChB,WAAO,SAAS;AAAA,MACd,MAAM,eAAe,IAAI,SAAY;AAAA,MACrC,YAAY,eAAe,KAAK,eAAe;AAAA,IACjD;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,38 @@
1
+ function registerWorkerEventHandlers(workerInfo, opts, results, rebuildManager) {
2
+ const completeTask = (result) => {
3
+ results.set(opts.resultKey, result);
4
+ workerInfo.buildResolver?.();
5
+ workerInfo.buildResolver = void 0;
6
+ workerInfo.isInitialBuild = false;
7
+ };
8
+ workerInfo.worker.on("buildStart", () => {
9
+ if (!workerInfo.isInitialBuild) {
10
+ workerInfo.buildResolver = rebuildManager.registerBuild(opts.resultKey, opts.listrTitle);
11
+ }
12
+ });
13
+ workerInfo.worker.on("build", (data) => {
14
+ const event = data;
15
+ completeTask({
16
+ name: workerInfo.name,
17
+ target: workerInfo.config.target,
18
+ type: opts.resultType,
19
+ status: event.success ? "success" : "error",
20
+ message: event.errors?.join("\n")
21
+ });
22
+ });
23
+ workerInfo.worker.on("error", (data) => {
24
+ const event = data;
25
+ completeTask({
26
+ name: workerInfo.name,
27
+ target: workerInfo.config.target,
28
+ type: opts.resultType,
29
+ status: "error",
30
+ message: event.message
31
+ });
32
+ });
33
+ return completeTask;
34
+ }
35
+ export {
36
+ registerWorkerEventHandlers
37
+ };
38
+ //# sourceMappingURL=worker-events.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/worker-events.ts"],
4
+ "sourcesContent": ["import type { PackageResult } from \"./package-utils\";\nimport type { SdPackageConfig } from \"../sd-config.types\";\nimport type { RebuildListrManager } from \"./listr-manager\";\n\n/** Worker \uBE4C\uB4DC \uC644\uB8CC \uC774\uBCA4\uD2B8 \uB370\uC774\uD130 */\nexport interface BuildEventData {\n success: boolean;\n errors?: string[];\n}\n\n/** Worker \uC5D0\uB7EC \uC774\uBCA4\uD2B8 \uB370\uC774\uD130 */\nexport interface ErrorEventData {\n message: string;\n}\n\n/** Worker \uC11C\uBC84 \uC900\uBE44 \uC774\uBCA4\uD2B8 \uB370\uC774\uD130 */\nexport interface ServerReadyEventData {\n port: number;\n}\n\n/** Server Build \uC644\uB8CC \uC774\uBCA4\uD2B8 \uB370\uC774\uD130 */\nexport interface ServerBuildEventData {\n success: boolean;\n mainJsPath: string;\n errors?: string[];\n}\n\n/**\n * \uAE30\uBCF8 Worker \uC815\uBCF4 \uD0C0\uC785\n */\nexport interface BaseWorkerInfo {\n name: string;\n config: SdPackageConfig;\n worker: { on: (event: string, handler: (data: unknown) => void) => void };\n isInitialBuild: boolean;\n buildResolver: (() => void) | undefined;\n}\n\n/**\n * Worker \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC \uC635\uC158\n */\nexport interface WorkerEventHandlerOptions {\n resultKey: string;\n listrTitle: string;\n resultType: \"build\" | \"dts\";\n}\n\n/**\n * \uACF5\uD1B5 Worker \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC \uB4F1\uB85D (buildStart, build, error\uB9CC - serverReady\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C)\n *\n * @param workerInfo Worker \uC815\uBCF4\n * @param opts \uD578\uB4E4\uB7EC \uC635\uC158\n * @param results \uACB0\uACFC \uB9F5\n * @param rebuildManager \uB9AC\uBE4C\uB4DC \uB9E4\uB2C8\uC800\n * @returns completeTask \uD568\uC218 (\uACB0\uACFC\uB97C \uC800\uC7A5\uD558\uACE0 \uBE4C\uB4DC \uC644\uB8CC\uB97C \uC54C\uB9BC)\n */\nexport function registerWorkerEventHandlers<T extends BaseWorkerInfo>(\n workerInfo: T,\n opts: WorkerEventHandlerOptions,\n results: Map<string, PackageResult>,\n rebuildManager: RebuildListrManager,\n): (result: PackageResult) => void {\n const completeTask = (result: PackageResult): void => {\n results.set(opts.resultKey, result);\n workerInfo.buildResolver?.();\n workerInfo.buildResolver = undefined;\n workerInfo.isInitialBuild = false;\n };\n\n // \uBE4C\uB4DC \uC2DC\uC791 (\uB9AC\uBE4C\uB4DC \uC2DC)\n workerInfo.worker.on(\"buildStart\", () => {\n if (!workerInfo.isInitialBuild) {\n workerInfo.buildResolver = rebuildManager.registerBuild(opts.resultKey, opts.listrTitle);\n }\n });\n\n // \uBE4C\uB4DC \uC644\uB8CC\n workerInfo.worker.on(\"build\", (data) => {\n const event = data as BuildEventData;\n completeTask({\n name: workerInfo.name,\n target: workerInfo.config.target,\n type: opts.resultType,\n status: event.success ? \"success\" : \"error\",\n message: event.errors?.join(\"\\n\"),\n });\n });\n\n // \uC5D0\uB7EC\n workerInfo.worker.on(\"error\", (data) => {\n const event = data as ErrorEventData;\n completeTask({\n name: workerInfo.name,\n target: workerInfo.config.target,\n type: opts.resultType,\n status: \"error\",\n message: event.message,\n });\n });\n\n return completeTask;\n}\n"],
5
+ "mappings": "AAwDO,SAAS,4BACd,YACA,MACA,SACA,gBACiC;AACjC,QAAM,eAAe,CAAC,WAAgC;AACpD,YAAQ,IAAI,KAAK,WAAW,MAAM;AAClC,eAAW,gBAAgB;AAC3B,eAAW,gBAAgB;AAC3B,eAAW,iBAAiB;AAAA,EAC9B;AAGA,aAAW,OAAO,GAAG,cAAc,MAAM;AACvC,QAAI,CAAC,WAAW,gBAAgB;AAC9B,iBAAW,gBAAgB,eAAe,cAAc,KAAK,WAAW,KAAK,UAAU;AAAA,IACzF;AAAA,EACF,CAAC;AAGD,aAAW,OAAO,GAAG,SAAS,CAAC,SAAS;AACtC,UAAM,QAAQ;AACd,iBAAa;AAAA,MACX,MAAM,WAAW;AAAA,MACjB,QAAQ,WAAW,OAAO;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,QAAQ,MAAM,UAAU,YAAY;AAAA,MACpC,SAAS,MAAM,QAAQ,KAAK,IAAI;AAAA,IAClC,CAAC;AAAA,EACH,CAAC;AAGD,aAAW,OAAO,GAAG,SAAS,CAAC,SAAS;AACtC,UAAM,QAAQ;AACd,iBAAa;AAAA,MACX,MAAM,WAAW;AAAA,MACjB,QAAQ,WAAW,OAAO;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,QAAQ;AAAA,MACR,SAAS,MAAM;AAAA,IACjB,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,94 @@
1
+ import path from "path";
2
+ import { build as viteBuild, createServer } from "vite";
3
+ import { createWorker } from "@simplysm/core-node";
4
+ import { consola } from "consola";
5
+ import { parseRootTsconfig, getCompilerOptionsForPackage } from "../utils/tsconfig";
6
+ import { createViteConfig } from "../utils/vite-config";
7
+ const logger = consola.withTag("sd:cli:client:worker");
8
+ let viteServer;
9
+ async function cleanup() {
10
+ const serverToClose = viteServer;
11
+ viteServer = void 0;
12
+ if (serverToClose != null) {
13
+ await serverToClose.close();
14
+ }
15
+ }
16
+ process.on("SIGTERM", () => {
17
+ cleanup().catch((err) => {
18
+ logger.error("cleanup \uC2E4\uD328", err);
19
+ }).finally(() => {
20
+ process.exit(0);
21
+ });
22
+ });
23
+ process.on("SIGINT", () => {
24
+ cleanup().catch((err) => {
25
+ logger.error("cleanup \uC2E4\uD328", err);
26
+ }).finally(() => {
27
+ process.exit(0);
28
+ });
29
+ });
30
+ async function build(info) {
31
+ try {
32
+ const parsedConfig = parseRootTsconfig(info.cwd);
33
+ const tsconfigPath = path.join(info.cwd, "tsconfig.json");
34
+ const compilerOptions = await getCompilerOptionsForPackage(parsedConfig.options, "browser", info.pkgDir);
35
+ const viteConfig = createViteConfig({
36
+ pkgDir: info.pkgDir,
37
+ name: info.name,
38
+ tsconfigPath,
39
+ compilerOptions,
40
+ env: info.config.env,
41
+ mode: "build"
42
+ });
43
+ await viteBuild(viteConfig);
44
+ return { success: true };
45
+ } catch (err) {
46
+ return {
47
+ success: false,
48
+ errors: [err instanceof Error ? err.message : String(err)]
49
+ };
50
+ }
51
+ }
52
+ let isWatchStarted = false;
53
+ async function startWatch(info) {
54
+ if (isWatchStarted) {
55
+ throw new Error("startWatch\uB294 Worker\uB2F9 \uD55C \uBC88\uB9CC \uD638\uCD9C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.");
56
+ }
57
+ isWatchStarted = true;
58
+ try {
59
+ const parsedConfig = parseRootTsconfig(info.cwd);
60
+ const tsconfigPath = path.join(info.cwd, "tsconfig.json");
61
+ const compilerOptions = await getCompilerOptionsForPackage(parsedConfig.options, "browser", info.pkgDir);
62
+ const serverPort = typeof info.config.server === "number" ? info.config.server : 0;
63
+ const viteConfig = createViteConfig({
64
+ pkgDir: info.pkgDir,
65
+ name: info.name,
66
+ tsconfigPath,
67
+ compilerOptions,
68
+ env: info.config.env,
69
+ mode: "dev",
70
+ serverPort,
71
+ watchScopes: info.watchScopes
72
+ });
73
+ viteServer = await createServer(viteConfig);
74
+ await viteServer.listen();
75
+ sender.send("serverReady", { port: viteServer.config.server.port });
76
+ } catch (err) {
77
+ sender.send("error", {
78
+ message: err instanceof Error ? err.message : String(err)
79
+ });
80
+ }
81
+ }
82
+ async function stopWatch() {
83
+ await cleanup();
84
+ }
85
+ const sender = createWorker({
86
+ build,
87
+ startWatch,
88
+ stopWatch
89
+ });
90
+ var client_worker_default = sender;
91
+ export {
92
+ client_worker_default as default
93
+ };
94
+ //# sourceMappingURL=client.worker.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/workers/client.worker.ts"],
4
+ "sourcesContent": ["import path from \"path\";\nimport { build as viteBuild, createServer, type ViteDevServer } from \"vite\";\nimport { createWorker } from \"@simplysm/core-node\";\nimport { consola } from \"consola\";\nimport type { SdClientPackageConfig } from \"../sd-config.types\";\nimport { parseRootTsconfig, getCompilerOptionsForPackage } from \"../utils/tsconfig\";\nimport { createViteConfig } from \"../utils/vite-config\";\n\n//#region Types\n\n/**\n * Client \uBE4C\uB4DC \uC815\uBCF4 (\uC77C\uD68C\uC131 \uBE4C\uB4DC\uC6A9)\n */\nexport interface ClientBuildInfo {\n name: string;\n config: SdClientPackageConfig;\n cwd: string;\n pkgDir: string;\n}\n\n/**\n * Client \uBE4C\uB4DC \uACB0\uACFC\n */\nexport interface ClientBuildResult {\n success: boolean;\n errors?: string[];\n}\n\n/**\n * Client Watch \uC815\uBCF4\n */\nexport interface ClientWatchInfo {\n name: string;\n config: SdClientPackageConfig;\n cwd: string;\n pkgDir: string;\n /** watch \uB300\uC0C1 scope \uBAA9\uB85D */\n watchScopes?: string[];\n}\n\n/**\n * \uBE4C\uB4DC \uC774\uBCA4\uD2B8\n */\nexport interface ClientBuildEvent {\n success: boolean;\n errors?: string[];\n}\n\n/**\n * \uC11C\uBC84 \uC900\uBE44 \uC774\uBCA4\uD2B8\n */\nexport interface ClientServerReadyEvent {\n port: number;\n}\n\n/**\n * \uC5D0\uB7EC \uC774\uBCA4\uD2B8\n */\nexport interface ClientErrorEvent {\n message: string;\n}\n\n/**\n * Worker \uC774\uBCA4\uD2B8 \uD0C0\uC785\n */\nexport interface ClientWorkerEvents extends Record<string, unknown> {\n buildStart: Record<string, never>;\n build: ClientBuildEvent;\n serverReady: ClientServerReadyEvent;\n error: ClientErrorEvent;\n}\n\n//#endregion\n\n//#region \uB9AC\uC18C\uC2A4 \uAD00\uB9AC\n\nconst logger = consola.withTag(\"sd:cli:client:worker\");\n\n/** Vite dev server (\uC815\uB9AC \uB300\uC0C1) */\nlet viteServer: ViteDevServer | undefined;\n\n/**\n * \uB9AC\uC18C\uC2A4 \uC815\uB9AC\n */\nasync function cleanup(): Promise<void> {\n // \uC804\uC5ED \uBCC0\uC218\uB97C \uC784\uC2DC \uBCC0\uC218\uB85C \uCEA1\uCC98 \uD6C4 \uCD08\uAE30\uD654\n // (Promise.all \uB300\uAE30 \uC911 \uB2E4\uB978 \uD638\uCD9C\uC5D0\uC11C \uC804\uC5ED \uBCC0\uC218\uB97C \uC218\uC815\uD560 \uC218 \uC788\uC73C\uBBC0\uB85C)\n const serverToClose = viteServer;\n viteServer = undefined;\n\n if (serverToClose != null) {\n await serverToClose.close();\n }\n}\n\n// \uD504\uB85C\uC138\uC2A4 \uC885\uB8CC \uC804 \uB9AC\uC18C\uC2A4 \uC815\uB9AC (SIGTERM/SIGINT)\n// \uC8FC\uC758: worker.terminate()\uB294 \uC774 \uD578\uB4E4\uB7EC\uB4E4\uC744 \uD638\uCD9C\uD558\uC9C0 \uC54A\uACE0 \uC989\uC2DC \uC885\uB8CC\uB428.\n// \uADF8\uB7EC\uB098 watch \uBAA8\uB4DC\uC5D0\uC11C \uC815\uC0C1 \uC885\uB8CC\uB294 \uBA54\uC778 \uD504\uB85C\uC138\uC2A4\uC758 SIGINT/SIGTERM\uC744 \uD1B5\uD574 \uC774\uB8E8\uC5B4\uC9C0\uBBC0\uB85C \uBB38\uC81C\uC5C6\uC74C.\nprocess.on(\"SIGTERM\", () => {\n cleanup()\n .catch((err) => {\n logger.error(\"cleanup \uC2E4\uD328\", err);\n })\n .finally(() => {\n process.exit(0);\n });\n});\n\nprocess.on(\"SIGINT\", () => {\n cleanup()\n .catch((err) => {\n logger.error(\"cleanup \uC2E4\uD328\", err);\n })\n .finally(() => {\n process.exit(0);\n });\n});\n\n//#endregion\n\n//#region Worker\n\n/**\n * \uC77C\uD68C\uC131 \uBE4C\uB4DC\n */\nasync function build(info: ClientBuildInfo): Promise<ClientBuildResult> {\n try {\n // tsconfig \uD30C\uC2F1\n const parsedConfig = parseRootTsconfig(info.cwd);\n const tsconfigPath = path.join(info.cwd, \"tsconfig.json\");\n\n // browser \uD0C0\uAC9F\uC6A9 compilerOptions \uC0DD\uC131\n const compilerOptions = await getCompilerOptionsForPackage(parsedConfig.options, \"browser\", info.pkgDir);\n\n // Vite \uC124\uC815 \uC0DD\uC131 \uBC0F \uBE4C\uB4DC\n const viteConfig = createViteConfig({\n pkgDir: info.pkgDir,\n name: info.name,\n tsconfigPath,\n compilerOptions,\n env: info.config.env,\n mode: \"build\",\n });\n\n await viteBuild(viteConfig);\n\n return { success: true };\n } catch (err) {\n return {\n success: false,\n errors: [err instanceof Error ? err.message : String(err)],\n };\n }\n}\n\n/** startWatch \uD638\uCD9C \uC5EC\uBD80 \uD50C\uB798\uADF8 */\nlet isWatchStarted = false;\n\n/**\n * watch \uC2DC\uC791 (Vite dev server)\n * @remarks \uC774 \uD568\uC218\uB294 Worker\uB2F9 \uD55C \uBC88\uB9CC \uD638\uCD9C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n * @throws \uC774\uBBF8 watch\uAC00 \uC2DC\uC791\uB41C \uACBD\uC6B0\n */\nasync function startWatch(info: ClientWatchInfo): Promise<void> {\n if (isWatchStarted) {\n throw new Error(\"startWatch\uB294 Worker\uB2F9 \uD55C \uBC88\uB9CC \uD638\uCD9C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\");\n }\n isWatchStarted = true;\n\n try {\n // tsconfig \uD30C\uC2F1\n const parsedConfig = parseRootTsconfig(info.cwd);\n const tsconfigPath = path.join(info.cwd, \"tsconfig.json\");\n\n // browser \uD0C0\uAC9F\uC6A9 compilerOptions \uC0DD\uC131\n const compilerOptions = await getCompilerOptionsForPackage(parsedConfig.options, \"browser\", info.pkgDir);\n\n // server\uAC00 0\uC774\uBA74 \uC790\uB3D9 \uD3EC\uD2B8 \uD560\uB2F9 (\uC11C\uBC84 \uC5F0\uACB0 \uD074\uB77C\uC774\uC5B8\uD2B8)\n // server\uAC00 \uC22B\uC790\uBA74 \uD574\uB2F9 \uD3EC\uD2B8\uB85C \uACE0\uC815 (standalone \uD074\uB77C\uC774\uC5B8\uD2B8)\n const serverPort = typeof info.config.server === \"number\" ? info.config.server : 0;\n\n // Vite \uC124\uC815 \uC0DD\uC131\n const viteConfig = createViteConfig({\n pkgDir: info.pkgDir,\n name: info.name,\n tsconfigPath,\n compilerOptions,\n env: info.config.env,\n mode: \"dev\",\n serverPort,\n watchScopes: info.watchScopes,\n });\n\n // Vite dev server \uC2DC\uC791\n viteServer = await createServer(viteConfig);\n await viteServer.listen();\n\n // \uC2E4\uC81C \uD560\uB2F9\uB41C \uD3EC\uD2B8 \uBC18\uD658\n sender.send(\"serverReady\", { port: viteServer.config.server.port });\n } catch (err) {\n sender.send(\"error\", {\n message: err instanceof Error ? err.message : String(err),\n });\n }\n}\n\n/**\n * watch \uC911\uC9C0\n * @remarks Vite dev server\uB97C \uC815\uB9AC\uD569\uB2C8\uB2E4.\n */\nasync function stopWatch(): Promise<void> {\n await cleanup();\n}\n\nconst sender = createWorker<\n { build: typeof build; startWatch: typeof startWatch; stopWatch: typeof stopWatch },\n ClientWorkerEvents\n>({\n build,\n startWatch,\n stopWatch,\n});\n\nexport default sender;\n\n//#endregion\n"],
5
+ "mappings": "AAAA,OAAO,UAAU;AACjB,SAAS,SAAS,WAAW,oBAAwC;AACrE,SAAS,oBAAoB;AAC7B,SAAS,eAAe;AAExB,SAAS,mBAAmB,oCAAoC;AAChE,SAAS,wBAAwB;AAsEjC,MAAM,SAAS,QAAQ,QAAQ,sBAAsB;AAGrD,IAAI;AAKJ,eAAe,UAAyB;AAGtC,QAAM,gBAAgB;AACtB,eAAa;AAEb,MAAI,iBAAiB,MAAM;AACzB,UAAM,cAAc,MAAM;AAAA,EAC5B;AACF;AAKA,QAAQ,GAAG,WAAW,MAAM;AAC1B,UAAQ,EACL,MAAM,CAAC,QAAQ;AACd,WAAO,MAAM,wBAAc,GAAG;AAAA,EAChC,CAAC,EACA,QAAQ,MAAM;AACb,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACL,CAAC;AAED,QAAQ,GAAG,UAAU,MAAM;AACzB,UAAQ,EACL,MAAM,CAAC,QAAQ;AACd,WAAO,MAAM,wBAAc,GAAG;AAAA,EAChC,CAAC,EACA,QAAQ,MAAM;AACb,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACL,CAAC;AASD,eAAe,MAAM,MAAmD;AACtE,MAAI;AAEF,UAAM,eAAe,kBAAkB,KAAK,GAAG;AAC/C,UAAM,eAAe,KAAK,KAAK,KAAK,KAAK,eAAe;AAGxD,UAAM,kBAAkB,MAAM,6BAA6B,aAAa,SAAS,WAAW,KAAK,MAAM;AAGvG,UAAM,aAAa,iBAAiB;AAAA,MAClC,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA,KAAK,KAAK,OAAO;AAAA,MACjB,MAAM;AAAA,IACR,CAAC;AAED,UAAM,UAAU,UAAU;AAE1B,WAAO,EAAE,SAAS,KAAK;AAAA,EACzB,SAAS,KAAK;AACZ,WAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ,CAAC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAC3D;AAAA,EACF;AACF;AAGA,IAAI,iBAAiB;AAOrB,eAAe,WAAW,MAAsC;AAC9D,MAAI,gBAAgB;AAClB,UAAM,IAAI,MAAM,uGAAsC;AAAA,EACxD;AACA,mBAAiB;AAEjB,MAAI;AAEF,UAAM,eAAe,kBAAkB,KAAK,GAAG;AAC/C,UAAM,eAAe,KAAK,KAAK,KAAK,KAAK,eAAe;AAGxD,UAAM,kBAAkB,MAAM,6BAA6B,aAAa,SAAS,WAAW,KAAK,MAAM;AAIvG,UAAM,aAAa,OAAO,KAAK,OAAO,WAAW,WAAW,KAAK,OAAO,SAAS;AAGjF,UAAM,aAAa,iBAAiB;AAAA,MAClC,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA,KAAK,KAAK,OAAO;AAAA,MACjB,MAAM;AAAA,MACN;AAAA,MACA,aAAa,KAAK;AAAA,IACpB,CAAC;AAGD,iBAAa,MAAM,aAAa,UAAU;AAC1C,UAAM,WAAW,OAAO;AAGxB,WAAO,KAAK,eAAe,EAAE,MAAM,WAAW,OAAO,OAAO,KAAK,CAAC;AAAA,EACpE,SAAS,KAAK;AACZ,WAAO,KAAK,SAAS;AAAA,MACnB,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC1D,CAAC;AAAA,EACH;AACF;AAMA,eAAe,YAA2B;AACxC,QAAM,QAAQ;AAChB;AAEA,MAAM,SAAS,aAGb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAO,wBAAQ;",
6
+ "names": []
7
+ }