@simplysm/sd-cli 13.0.100 → 14.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/dist/commands/build.js +29 -19
  2. package/dist/commands/build.js.map +1 -6
  3. package/dist/commands/check.d.ts +1 -0
  4. package/dist/commands/check.d.ts.map +1 -1
  5. package/dist/commands/check.js +130 -115
  6. package/dist/commands/check.js.map +1 -6
  7. package/dist/commands/dev.d.ts +6 -7
  8. package/dist/commands/dev.d.ts.map +1 -1
  9. package/dist/commands/dev.js +24 -14
  10. package/dist/commands/dev.js.map +1 -6
  11. package/dist/commands/lint.d.ts +1 -1
  12. package/dist/commands/lint.js +158 -116
  13. package/dist/commands/lint.js.map +1 -6
  14. package/dist/commands/publish.d.ts.map +1 -1
  15. package/dist/commands/publish.js +637 -510
  16. package/dist/commands/publish.js.map +1 -6
  17. package/dist/commands/replace-deps.js +12 -12
  18. package/dist/commands/replace-deps.js.map +1 -6
  19. package/dist/commands/typecheck.d.ts +5 -30
  20. package/dist/commands/typecheck.d.ts.map +1 -1
  21. package/dist/commands/typecheck.js +144 -207
  22. package/dist/commands/typecheck.js.map +1 -6
  23. package/dist/commands/watch.d.ts +6 -4
  24. package/dist/commands/watch.d.ts.map +1 -1
  25. package/dist/commands/watch.js +25 -16
  26. package/dist/commands/watch.js.map +1 -6
  27. package/dist/engines/NgtscEngine.d.ts +47 -0
  28. package/dist/engines/NgtscEngine.d.ts.map +1 -0
  29. package/dist/engines/NgtscEngine.js +151 -0
  30. package/dist/engines/NgtscEngine.js.map +1 -0
  31. package/dist/engines/ServerEsbuildEngine.d.ts +47 -0
  32. package/dist/engines/ServerEsbuildEngine.d.ts.map +1 -0
  33. package/dist/engines/ServerEsbuildEngine.js +159 -0
  34. package/dist/engines/ServerEsbuildEngine.js.map +1 -0
  35. package/dist/engines/TscEngine.d.ts +47 -0
  36. package/dist/engines/TscEngine.d.ts.map +1 -0
  37. package/dist/engines/TscEngine.js +153 -0
  38. package/dist/engines/TscEngine.js.map +1 -0
  39. package/dist/engines/ViteEngine.d.ts +49 -0
  40. package/dist/engines/ViteEngine.d.ts.map +1 -0
  41. package/dist/engines/ViteEngine.js +161 -0
  42. package/dist/engines/ViteEngine.js.map +1 -0
  43. package/dist/engines/index.d.ts +26 -0
  44. package/dist/engines/index.d.ts.map +1 -0
  45. package/dist/engines/index.js +30 -0
  46. package/dist/engines/index.js.map +1 -0
  47. package/dist/engines/types.d.ts +77 -0
  48. package/dist/engines/types.d.ts.map +1 -0
  49. package/dist/engines/types.js +2 -0
  50. package/dist/engines/types.js.map +1 -0
  51. package/dist/index.d.ts +0 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +2 -2
  54. package/dist/index.js.map +1 -6
  55. package/dist/infra/ResultCollector.d.ts +1 -1
  56. package/dist/infra/ResultCollector.d.ts.map +1 -1
  57. package/dist/infra/ResultCollector.js +30 -27
  58. package/dist/infra/ResultCollector.js.map +1 -6
  59. package/dist/infra/SignalHandler.js +45 -42
  60. package/dist/infra/SignalHandler.js.map +1 -6
  61. package/dist/infra/WorkerManager.js +56 -53
  62. package/dist/infra/WorkerManager.js.map +1 -6
  63. package/dist/orchestrators/BuildOrchestrator.d.ts +33 -1
  64. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
  65. package/dist/orchestrators/BuildOrchestrator.js +314 -309
  66. package/dist/orchestrators/BuildOrchestrator.js.map +1 -6
  67. package/dist/orchestrators/DevWatchOrchestrator.d.ts +60 -0
  68. package/dist/orchestrators/DevWatchOrchestrator.d.ts.map +1 -0
  69. package/dist/orchestrators/DevWatchOrchestrator.js +465 -0
  70. package/dist/orchestrators/DevWatchOrchestrator.js.map +1 -0
  71. package/dist/sd-cli-entry.d.ts.map +1 -1
  72. package/dist/sd-cli-entry.js +190 -266
  73. package/dist/sd-cli-entry.js.map +1 -6
  74. package/dist/sd-cli.js +77 -49
  75. package/dist/sd-cli.js.map +1 -6
  76. package/dist/sd-config.types.d.ts +2 -0
  77. package/dist/sd-config.types.d.ts.map +1 -1
  78. package/dist/sd-config.types.js +2 -1
  79. package/dist/sd-config.types.js.map +1 -6
  80. package/dist/utils/angular-build.d.ts +77 -0
  81. package/dist/utils/angular-build.d.ts.map +1 -0
  82. package/dist/utils/angular-build.js +84 -0
  83. package/dist/utils/angular-build.js.map +1 -0
  84. package/dist/utils/build-env.js +9 -9
  85. package/dist/utils/build-env.js.map +1 -6
  86. package/dist/utils/concurrency.d.ts +15 -0
  87. package/dist/utils/concurrency.d.ts.map +1 -0
  88. package/dist/utils/concurrency.js +38 -0
  89. package/dist/utils/concurrency.js.map +1 -0
  90. package/dist/utils/copy-public.js +104 -87
  91. package/dist/utils/copy-public.js.map +1 -6
  92. package/dist/utils/copy-src.js +49 -35
  93. package/dist/utils/copy-src.js.map +1 -6
  94. package/dist/utils/esbuild-config.d.ts +0 -29
  95. package/dist/utils/esbuild-config.d.ts.map +1 -1
  96. package/dist/utils/esbuild-config.js +151 -218
  97. package/dist/utils/esbuild-config.js.map +1 -6
  98. package/dist/utils/ngtsc-build-core.d.ts +49 -0
  99. package/dist/utils/ngtsc-build-core.d.ts.map +1 -0
  100. package/dist/utils/ngtsc-build-core.js +250 -0
  101. package/dist/utils/ngtsc-build-core.js.map +1 -0
  102. package/dist/utils/output-path-rewriter.d.ts +23 -0
  103. package/dist/utils/output-path-rewriter.d.ts.map +1 -0
  104. package/dist/utils/output-path-rewriter.js +74 -0
  105. package/dist/utils/output-path-rewriter.js.map +1 -0
  106. package/dist/utils/output-utils.js +55 -40
  107. package/dist/utils/output-utils.js.map +1 -6
  108. package/dist/utils/package-utils.d.ts +8 -0
  109. package/dist/utils/package-utils.d.ts.map +1 -1
  110. package/dist/utils/package-utils.js +103 -73
  111. package/dist/utils/package-utils.js.map +1 -6
  112. package/dist/utils/rebuild-manager.js +41 -44
  113. package/dist/utils/rebuild-manager.js.map +1 -6
  114. package/dist/utils/replace-deps.js +283 -184
  115. package/dist/utils/replace-deps.js.map +1 -6
  116. package/dist/utils/scss-compiler.d.ts +10 -0
  117. package/dist/utils/scss-compiler.d.ts.map +1 -0
  118. package/dist/utils/scss-compiler.js +36 -0
  119. package/dist/utils/scss-compiler.js.map +1 -0
  120. package/dist/utils/sd-config.js +29 -19
  121. package/dist/utils/sd-config.js.map +1 -6
  122. package/dist/utils/tsc-build.d.ts +36 -0
  123. package/dist/utils/tsc-build.d.ts.map +1 -0
  124. package/dist/utils/tsc-build.js +130 -0
  125. package/dist/utils/tsc-build.js.map +1 -0
  126. package/dist/utils/tsconfig.d.ts +7 -26
  127. package/dist/utils/tsconfig.d.ts.map +1 -1
  128. package/dist/utils/tsconfig.js +39 -64
  129. package/dist/utils/tsconfig.js.map +1 -6
  130. package/dist/utils/typecheck-non-package.d.ts +18 -0
  131. package/dist/utils/typecheck-non-package.d.ts.map +1 -0
  132. package/dist/utils/typecheck-non-package.js +64 -0
  133. package/dist/utils/typecheck-non-package.js.map +1 -0
  134. package/dist/utils/typecheck-serialization.js +58 -40
  135. package/dist/utils/typecheck-serialization.js.map +1 -6
  136. package/dist/utils/worker-events.js +48 -40
  137. package/dist/utils/worker-events.js.map +1 -6
  138. package/dist/utils/worker-utils.js +48 -28
  139. package/dist/utils/worker-utils.js.map +1 -6
  140. package/dist/vitest-plugin.d.ts +9 -0
  141. package/dist/vitest-plugin.d.ts.map +1 -0
  142. package/dist/vitest-plugin.js +85 -0
  143. package/dist/vitest-plugin.js.map +1 -0
  144. package/dist/workers/library-build.worker.d.ts +54 -0
  145. package/dist/workers/library-build.worker.d.ts.map +1 -0
  146. package/dist/workers/library-build.worker.js +97 -0
  147. package/dist/workers/library-build.worker.js.map +1 -0
  148. package/dist/workers/lint.worker.js +9 -6
  149. package/dist/workers/lint.worker.js.map +1 -6
  150. package/dist/workers/ngtsc-build.worker.d.ts +23 -0
  151. package/dist/workers/ngtsc-build.worker.d.ts.map +1 -0
  152. package/dist/workers/ngtsc-build.worker.js +98 -0
  153. package/dist/workers/ngtsc-build.worker.js.map +1 -0
  154. package/dist/workers/{server.worker.d.ts → server-build.worker.d.ts} +39 -29
  155. package/dist/workers/server-build.worker.d.ts.map +1 -0
  156. package/dist/workers/server-build.worker.js +399 -0
  157. package/dist/workers/server-build.worker.js.map +1 -0
  158. package/dist/workers/server-runtime.worker.d.ts +3 -2
  159. package/dist/workers/server-runtime.worker.d.ts.map +1 -1
  160. package/dist/workers/server-runtime.worker.js +100 -95
  161. package/dist/workers/server-runtime.worker.js.map +1 -6
  162. package/dist/workers/vite-build.worker.d.ts +56 -0
  163. package/dist/workers/vite-build.worker.d.ts.map +1 -0
  164. package/dist/workers/vite-build.worker.js +167 -0
  165. package/dist/workers/vite-build.worker.js.map +1 -0
  166. package/package.json +10 -16
  167. package/src/commands/check.ts +21 -3
  168. package/src/commands/dev.ts +10 -8
  169. package/src/commands/lint.ts +1 -1
  170. package/src/commands/publish.ts +4 -0
  171. package/src/commands/typecheck.ts +89 -256
  172. package/src/commands/watch.ts +9 -8
  173. package/src/engines/NgtscEngine.ts +190 -0
  174. package/src/engines/ServerEsbuildEngine.ts +195 -0
  175. package/src/engines/TscEngine.ts +189 -0
  176. package/src/engines/ViteEngine.ts +203 -0
  177. package/src/engines/index.ts +49 -0
  178. package/src/engines/types.ts +79 -0
  179. package/src/index.ts +0 -3
  180. package/src/infra/ResultCollector.ts +1 -1
  181. package/src/orchestrators/BuildOrchestrator.ts +87 -157
  182. package/src/orchestrators/DevWatchOrchestrator.ts +573 -0
  183. package/src/sd-cli-entry.ts +13 -116
  184. package/src/sd-config.types.ts +2 -0
  185. package/src/utils/angular-build.ts +157 -0
  186. package/src/utils/concurrency.ts +43 -0
  187. package/src/utils/esbuild-config.ts +1 -122
  188. package/src/utils/ngtsc-build-core.ts +379 -0
  189. package/src/utils/output-path-rewriter.ts +82 -0
  190. package/src/utils/package-utils.ts +20 -0
  191. package/src/utils/scss-compiler.ts +58 -0
  192. package/src/utils/tsc-build.ts +175 -0
  193. package/src/utils/tsconfig.ts +27 -95
  194. package/src/utils/typecheck-non-package.ts +87 -0
  195. package/src/vitest-plugin.ts +118 -0
  196. package/src/workers/library-build.worker.ts +153 -0
  197. package/src/workers/ngtsc-build.worker.ts +146 -0
  198. package/src/workers/server-build.worker.ts +565 -0
  199. package/src/workers/server-runtime.worker.ts +17 -26
  200. package/src/workers/vite-build.worker.ts +252 -0
  201. package/tests/commands/check.spec.ts +276 -0
  202. package/tests/commands/dev.spec.ts +53 -0
  203. package/tests/commands/lint.spec.ts +243 -0
  204. package/tests/commands/publish.spec.ts +1159 -0
  205. package/tests/commands/typecheck.spec.ts +294 -0
  206. package/tests/commands/watch.spec.ts +53 -0
  207. package/tests/engines/engine-selection.spec.ts +247 -0
  208. package/tests/engines/ngtsc-engine.spec.ts +274 -0
  209. package/tests/engines/server-esbuild-engine.spec.ts +256 -0
  210. package/tests/engines/tsc-engine.spec.ts +213 -0
  211. package/tests/engines/vite-engine.spec.ts +358 -0
  212. package/tests/infra/result-collector.spec.ts +46 -0
  213. package/tests/infra/signal-handler.spec.ts +32 -0
  214. package/tests/infra/worker-manager.spec.ts +63 -0
  215. package/tests/orchestrators/build-orchestrator.spec.ts +772 -0
  216. package/tests/orchestrators/dev-watch-orchestrator.spec.ts +1173 -0
  217. package/tests/sd-cli-entry.spec.ts +49 -0
  218. package/tests/utils/angular-build.spec.ts +251 -0
  219. package/tests/utils/build-env.spec.ts +33 -0
  220. package/tests/utils/concurrency.spec.ts +65 -0
  221. package/tests/utils/copy-src.spec.ts +144 -0
  222. package/tests/utils/esbuild-config.spec.ts +186 -0
  223. package/tests/utils/external-modules.spec.ts +161 -0
  224. package/tests/utils/ngtsc-scss-refactor.spec.ts +66 -0
  225. package/tests/utils/output-path-rewriter.spec.ts +165 -0
  226. package/tests/utils/output-utils.spec.ts +104 -0
  227. package/tests/utils/package-utils.spec.ts +52 -0
  228. package/tests/utils/rebuild-manager.spec.ts +30 -27
  229. package/tests/utils/replace-deps.spec.ts +69 -0
  230. package/tests/utils/scss-compiler.spec.ts +131 -0
  231. package/tests/utils/sd-config.spec.ts +77 -0
  232. package/tests/utils/tsc-build.spec.ts +358 -0
  233. package/tests/utils/tsconfig-angular.spec.ts +71 -0
  234. package/tests/utils/typecheck-non-package.spec.ts +120 -0
  235. package/tests/utils/worker-events.spec.ts +155 -0
  236. package/tests/utils/worker-utils.spec.ts +43 -0
  237. package/tests/vitest-plugin-cwd.spec.ts +68 -0
  238. package/tests/vitest-plugin.spec.ts +103 -0
  239. package/tests/workers/library-build-worker.spec.ts +258 -0
  240. package/tests/workers/ngtsc-build-worker.spec.ts +187 -0
  241. package/tests/workers/server-build-worker.spec.ts +566 -0
  242. package/tests/workers/server-runtime-worker.spec.ts +251 -0
  243. package/README.md +0 -295
  244. package/dist/builders/BaseBuilder.d.ts +0 -88
  245. package/dist/builders/BaseBuilder.d.ts.map +0 -1
  246. package/dist/builders/BaseBuilder.js +0 -142
  247. package/dist/builders/BaseBuilder.js.map +0 -6
  248. package/dist/builders/DtsBuilder.d.ts +0 -22
  249. package/dist/builders/DtsBuilder.d.ts.map +0 -1
  250. package/dist/builders/DtsBuilder.js +0 -72
  251. package/dist/builders/DtsBuilder.js.map +0 -6
  252. package/dist/builders/LibraryBuilder.d.ts +0 -22
  253. package/dist/builders/LibraryBuilder.d.ts.map +0 -1
  254. package/dist/builders/LibraryBuilder.js +0 -85
  255. package/dist/builders/LibraryBuilder.js.map +0 -6
  256. package/dist/builders/types.d.ts +0 -55
  257. package/dist/builders/types.d.ts.map +0 -1
  258. package/dist/builders/types.js +0 -1
  259. package/dist/builders/types.js.map +0 -6
  260. package/dist/capacitor/capacitor.d.ts +0 -151
  261. package/dist/capacitor/capacitor.d.ts.map +0 -1
  262. package/dist/capacitor/capacitor.js +0 -694
  263. package/dist/capacitor/capacitor.js.map +0 -6
  264. package/dist/commands/device.d.ts +0 -22
  265. package/dist/commands/device.d.ts.map +0 -1
  266. package/dist/commands/device.js +0 -98
  267. package/dist/commands/device.js.map +0 -6
  268. package/dist/commands/init.d.ts +0 -14
  269. package/dist/commands/init.d.ts.map +0 -1
  270. package/dist/commands/init.js +0 -72
  271. package/dist/commands/init.js.map +0 -6
  272. package/dist/electron/electron.d.ts +0 -84
  273. package/dist/electron/electron.d.ts.map +0 -1
  274. package/dist/electron/electron.js +0 -263
  275. package/dist/electron/electron.js.map +0 -6
  276. package/dist/orchestrators/DevOrchestrator.d.ts +0 -83
  277. package/dist/orchestrators/DevOrchestrator.d.ts.map +0 -1
  278. package/dist/orchestrators/DevOrchestrator.js +0 -540
  279. package/dist/orchestrators/DevOrchestrator.js.map +0 -6
  280. package/dist/orchestrators/WatchOrchestrator.d.ts +0 -57
  281. package/dist/orchestrators/WatchOrchestrator.d.ts.map +0 -1
  282. package/dist/orchestrators/WatchOrchestrator.js +0 -199
  283. package/dist/orchestrators/WatchOrchestrator.js.map +0 -6
  284. package/dist/utils/tailwind-config-deps.d.ts +0 -8
  285. package/dist/utils/tailwind-config-deps.d.ts.map +0 -1
  286. package/dist/utils/tailwind-config-deps.js +0 -82
  287. package/dist/utils/tailwind-config-deps.js.map +0 -6
  288. package/dist/utils/template.d.ts +0 -14
  289. package/dist/utils/template.d.ts.map +0 -1
  290. package/dist/utils/template.js +0 -33
  291. package/dist/utils/template.js.map +0 -6
  292. package/dist/utils/vite-config.d.ts +0 -35
  293. package/dist/utils/vite-config.d.ts.map +0 -1
  294. package/dist/utils/vite-config.js +0 -259
  295. package/dist/utils/vite-config.js.map +0 -6
  296. package/dist/workers/client.worker.d.ts +0 -83
  297. package/dist/workers/client.worker.d.ts.map +0 -1
  298. package/dist/workers/client.worker.js +0 -111
  299. package/dist/workers/client.worker.js.map +0 -6
  300. package/dist/workers/dts.worker.d.ts +0 -75
  301. package/dist/workers/dts.worker.d.ts.map +0 -1
  302. package/dist/workers/dts.worker.js +0 -270
  303. package/dist/workers/dts.worker.js.map +0 -6
  304. package/dist/workers/library.worker.d.ts +0 -75
  305. package/dist/workers/library.worker.d.ts.map +0 -1
  306. package/dist/workers/library.worker.js +0 -166
  307. package/dist/workers/library.worker.js.map +0 -6
  308. package/dist/workers/server.worker.d.ts.map +0 -1
  309. package/dist/workers/server.worker.js +0 -482
  310. package/dist/workers/server.worker.js.map +0 -6
  311. package/src/builders/BaseBuilder.ts +0 -218
  312. package/src/builders/DtsBuilder.ts +0 -92
  313. package/src/builders/LibraryBuilder.ts +0 -110
  314. package/src/builders/types.ts +0 -60
  315. package/src/capacitor/capacitor.ts +0 -931
  316. package/src/commands/device.ts +0 -140
  317. package/src/commands/init.ts +0 -113
  318. package/src/electron/electron.ts +0 -362
  319. package/src/orchestrators/DevOrchestrator.ts +0 -744
  320. package/src/orchestrators/WatchOrchestrator.ts +0 -277
  321. package/src/utils/tailwind-config-deps.ts +0 -98
  322. package/src/utils/template.ts +0 -56
  323. package/src/utils/vite-config.ts +0 -390
  324. package/src/workers/client.worker.ts +0 -250
  325. package/src/workers/dts.worker.ts +0 -453
  326. package/src/workers/library.worker.ts +0 -316
  327. package/src/workers/server.worker.ts +0 -734
  328. package/templates/init/.gitignore.hbs +0 -34
  329. package/templates/init/.npmrc.hbs +0 -1
  330. package/templates/init/.prettierignore +0 -1
  331. package/templates/init/.prettierrc.yaml +0 -12
  332. package/templates/init/eslint.config.ts +0 -15
  333. package/templates/init/mise.toml +0 -3
  334. package/templates/init/package.json.hbs +0 -32
  335. package/templates/init/packages/client-admin/index.html.hbs +0 -144
  336. package/templates/init/packages/client-admin/package.json.hbs +0 -27
  337. package/templates/init/packages/client-admin/public/assets/logo-landscape.png +0 -0
  338. package/templates/init/packages/client-admin/public/assets/logo.png +0 -0
  339. package/templates/init/packages/client-admin/public/favicon.ico +0 -0
  340. package/templates/init/packages/client-admin/src/App.tsx +0 -42
  341. package/templates/init/packages/client-admin/src/dev/DevDialog.tsx +0 -34
  342. package/templates/init/packages/client-admin/src/events/AuthChangeEvent.ts +0 -3
  343. package/templates/init/packages/client-admin/src/main.css +0 -4
  344. package/templates/init/packages/client-admin/src/main.tsx.hbs +0 -146
  345. package/templates/init/packages/client-admin/src/providers/AppServiceProvider.tsx.hbs +0 -103
  346. package/templates/init/packages/client-admin/src/providers/AppStructureProvider.tsx +0 -84
  347. package/templates/init/packages/client-admin/src/providers/AuthProvider.tsx.hbs +0 -96
  348. package/templates/init/packages/client-admin/src/providers/configureSharedData.ts.hbs +0 -67
  349. package/templates/init/packages/client-admin/src/views/auth/LoginView.tsx +0 -132
  350. package/templates/init/packages/client-admin/src/views/home/HomeView.tsx +0 -108
  351. package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeDetail.tsx.hbs +0 -243
  352. package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeSheet.tsx.hbs +0 -271
  353. package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleDetail.tsx.hbs +0 -146
  354. package/templates/init/packages/client-admin/src/views/home/base/role-permission/RolePermissionDetail.tsx.hbs +0 -121
  355. package/templates/init/packages/client-admin/src/views/home/base/role-permission/RolePermissionView.tsx +0 -52
  356. package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleSheet.tsx.hbs +0 -125
  357. package/templates/init/packages/client-admin/src/views/home/main/MainView.tsx.hbs +0 -13
  358. package/templates/init/packages/client-admin/src/views/home/my-info/MyInfoDetail.tsx.hbs +0 -241
  359. package/templates/init/packages/client-admin/src/views/home/system/system-log/SystemLogSheet.tsx.hbs +0 -169
  360. package/templates/init/packages/client-admin/src/views/not-found/NotFoundView.tsx +0 -15
  361. package/templates/init/packages/client-admin/tailwind.config.ts +0 -10
  362. package/templates/init/packages/db-main/package.json.hbs +0 -13
  363. package/templates/init/packages/db-main/src/MainDbContext.ts +0 -22
  364. package/templates/init/packages/db-main/src/dataLogExt.ts +0 -127
  365. package/templates/init/packages/db-main/src/index.ts +0 -14
  366. package/templates/init/packages/db-main/src/tables/base/Employee.ts +0 -24
  367. package/templates/init/packages/db-main/src/tables/base/EmployeeConfig.ts +0 -13
  368. package/templates/init/packages/db-main/src/tables/base/Role.ts +0 -9
  369. package/templates/init/packages/db-main/src/tables/base/RolePermission.ts +0 -13
  370. package/templates/init/packages/db-main/src/tables/system/_DataLog.ts +0 -19
  371. package/templates/init/packages/db-main/src/tables/system/_Log.ts +0 -16
  372. package/templates/init/packages/server/package.json.hbs +0 -20
  373. package/templates/init/packages/server/public-dev/dev//354/264/210/352/270/260/355/231/224.xlsx +0 -0
  374. package/templates/init/packages/server/src/index.ts +0 -4
  375. package/templates/init/packages/server/src/main.ts.hbs +0 -34
  376. package/templates/init/packages/server/src/services/AuthService.ts.hbs +0 -171
  377. package/templates/init/packages/server/src/services/DevService.ts.hbs +0 -94
  378. package/templates/init/packages/server/src/services/EmployeeService.ts.hbs +0 -122
  379. package/templates/init/packages/server/src/services/RoleService.ts.hbs +0 -59
  380. package/templates/init/pnpm-workspace.yaml +0 -15
  381. package/templates/init/sd.config.ts.hbs +0 -48
  382. package/templates/init/tsconfig.json.hbs +0 -39
  383. package/templates/init/vitest.config.ts +0 -36
  384. package/tests/capacitor-exclude.spec.ts +0 -78
  385. package/tests/capacitor.spec.ts +0 -49
  386. package/tests/copy-src.spec.ts +0 -50
  387. package/tests/electron-exclude.spec.ts +0 -61
  388. package/tests/get-compiler-options-for-package.spec.ts +0 -80
  389. package/tests/get-package-source-files.spec.ts +0 -139
  390. package/tests/get-types-from-package-json.spec.ts +0 -92
  391. package/tests/infra/ResultCollector.spec.ts +0 -30
  392. package/tests/infra/SignalHandler.spec.ts +0 -38
  393. package/tests/infra/WorkerManager.spec.ts +0 -63
  394. package/tests/load-ignore-patterns.spec.ts +0 -163
  395. package/tests/load-sd-config.spec.ts +0 -100
  396. package/tests/package-utils.spec.ts +0 -188
  397. package/tests/parse-root-tsconfig.spec.ts +0 -89
  398. package/tests/publish-config-narrowing.spec.ts +0 -20
  399. package/tests/replace-deps.spec.ts +0 -308
  400. package/tests/run-lint.spec.ts +0 -366
  401. package/tests/run-typecheck.spec.ts +0 -544
  402. package/tests/run-watch.spec.ts +0 -76
  403. package/tests/sd-cli.spec.ts +0 -265
  404. package/tests/sd-public-dev-plugin-mime.spec.ts +0 -19
  405. package/tests/tailwind-config-deps.spec.ts +0 -30
  406. package/tests/template.spec.ts +0 -70
  407. package/tests/vite-config-exclude.spec.ts +0 -35
  408. package/tests/vite-config-outdir.spec.ts +0 -38
  409. package/tests/write-changed-output-files.spec.ts +0 -97
@@ -0,0 +1,274 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+
3
+ // --- Mock factories (vi.mock is hoisted) ---
4
+
5
+ vi.mock("consola", () => ({
6
+ consola: {
7
+ withTag: vi.fn(() => ({
8
+ debug: vi.fn(),
9
+ warn: vi.fn(),
10
+ error: vi.fn(),
11
+ })),
12
+ },
13
+ }));
14
+
15
+ const mockWorker = {
16
+ build: vi.fn(),
17
+ startWatch: vi.fn(),
18
+ stopWatch: vi.fn(),
19
+ terminate: vi.fn(),
20
+ on: vi.fn(),
21
+ };
22
+
23
+ vi.mock("@simplysm/core-node", () => ({
24
+ Worker: {
25
+ create: vi.fn(() => mockWorker),
26
+ },
27
+ }));
28
+
29
+ // --- Dynamic imports after mocking ---
30
+
31
+ const { NgtscEngine } = await import("../../src/engines/NgtscEngine");
32
+
33
+ import type { BuildPackageInfo } from "../../src/engines/types";
34
+
35
+ // --- Helpers ---
36
+
37
+ function createMockPkg(overrides: Partial<BuildPackageInfo> = {}): BuildPackageInfo {
38
+ return {
39
+ name: "angular",
40
+ dir: "/packages/angular",
41
+ config: { target: "browser" } as any,
42
+ ...overrides,
43
+ };
44
+ }
45
+
46
+ // --- Tests ---
47
+
48
+ beforeEach(() => {
49
+ vi.clearAllMocks();
50
+ mockWorker.terminate.mockResolvedValue(undefined);
51
+ mockWorker.stopWatch.mockResolvedValue(undefined);
52
+ });
53
+
54
+ afterEach(() => {
55
+ vi.restoreAllMocks();
56
+ });
57
+
58
+ describe("NgtscEngine", () => {
59
+ describe("run()", () => {
60
+ // Acceptance: Scenario "@Injectable 데코레이터가 런타임 코드로 변환된다"
61
+ // Acceptance: Scenario "@Directive 데코레이터가 런타임 코드로 변환된다"
62
+ // Acceptance: Scenario ".d.ts 파일이 Angular 메타데이터를 포함하여 출력된다"
63
+ // Acceptance: Scenario "run()으로 one-time 빌드를 수행한다"
64
+ it("creates worker, calls build, and returns EngineResult with js/dts", async () => {
65
+ mockWorker.build.mockResolvedValue({
66
+ js: { success: true, errors: undefined, warnings: undefined },
67
+ dts: { success: true, errors: undefined, diagnostics: [] },
68
+ });
69
+
70
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
71
+ const result = await engine.run({ js: true, dts: true });
72
+
73
+ const { Worker } = await import("@simplysm/core-node");
74
+ expect(Worker.create).toHaveBeenCalledTimes(1);
75
+ expect(mockWorker.build).toHaveBeenCalledWith(
76
+ expect.objectContaining({
77
+ name: "angular",
78
+ pkgDir: "/packages/angular",
79
+ output: { js: true, dts: true },
80
+ }),
81
+ );
82
+ expect(result.success).toBe(true);
83
+ expect(result.js.success).toBe(true);
84
+ expect(result.dts.success).toBe(true);
85
+ expect(result.dts.diagnostics).toEqual([]);
86
+ await engine.stop();
87
+ });
88
+
89
+ // Acceptance: Scenario "run()에서 dts: false면 .d.ts를 생략한다"
90
+ it("passes dts:false output flag to worker", async () => {
91
+ mockWorker.build.mockResolvedValue({
92
+ js: { success: true, errors: undefined, warnings: undefined },
93
+ dts: { success: true, errors: undefined, diagnostics: [] },
94
+ });
95
+
96
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
97
+ await engine.run({ js: true, dts: false });
98
+
99
+ expect(mockWorker.build).toHaveBeenCalledWith(
100
+ expect.objectContaining({ output: { js: true, dts: false } }),
101
+ );
102
+ await engine.stop();
103
+ });
104
+
105
+ // Acceptance: Scenario "TypeScript + Angular diagnostics를 통합 수집한다"
106
+ it("includes diagnostics in result from worker", async () => {
107
+ mockWorker.build.mockResolvedValue({
108
+ js: { success: true, errors: undefined, warnings: undefined },
109
+ dts: {
110
+ success: false,
111
+ errors: ["type error"],
112
+ diagnostics: [{ code: 2322, category: 1, messageText: "Type error" }],
113
+ },
114
+ });
115
+
116
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
117
+ const result = await engine.run({ js: true, dts: true });
118
+
119
+ expect(result.dts.success).toBe(false);
120
+ expect(result.dts.diagnostics).toHaveLength(1);
121
+ expect(result.dts.diagnostics[0].code).toBe(2322);
122
+ await engine.stop();
123
+ });
124
+
125
+ // Acceptance: Scenario "타입 에러가 있어도 빌드 결과를 반환한다"
126
+ it("returns result even when dts has errors", async () => {
127
+ mockWorker.build.mockResolvedValue({
128
+ js: { success: true, errors: undefined, warnings: undefined },
129
+ dts: {
130
+ success: false,
131
+ errors: ["TS2322: Type error"],
132
+ diagnostics: [{ code: 2322, category: 1, messageText: "Type error" }],
133
+ },
134
+ });
135
+
136
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
137
+ const result = await engine.run({ js: true, dts: true });
138
+
139
+ expect(result.success).toBe(false);
140
+ expect(result.js.success).toBe(true);
141
+ expect(result.dts.success).toBe(false);
142
+ expect(result.dts.errors).toContain("TS2322: Type error");
143
+ await engine.stop();
144
+ });
145
+
146
+ // Unit: JS-only failure reflects in overall success
147
+ it("reflects JS build failure in result", async () => {
148
+ mockWorker.build.mockResolvedValue({
149
+ js: { success: false, errors: ["ngtsc compilation error"], warnings: undefined },
150
+ dts: { success: true, errors: undefined, diagnostics: [] },
151
+ });
152
+
153
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
154
+ const result = await engine.run({ js: true, dts: true });
155
+
156
+ expect(result.success).toBe(false);
157
+ expect(result.js.success).toBe(false);
158
+ expect(result.js.errors).toEqual(["ngtsc compilation error"]);
159
+ expect(result.dts.success).toBe(true);
160
+ await engine.stop();
161
+ });
162
+
163
+ // Unit: warnings are mapped through
164
+ it("maps worker warnings to EngineResult", async () => {
165
+ mockWorker.build.mockResolvedValue({
166
+ js: { success: true, errors: undefined, warnings: ["deprecation warning"] },
167
+ dts: { success: true, errors: undefined, diagnostics: [] },
168
+ });
169
+
170
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
171
+ const result = await engine.run({ js: true, dts: true });
172
+
173
+ expect(result.js.warnings).toEqual(["deprecation warning"]);
174
+ await engine.stop();
175
+ });
176
+ });
177
+
178
+ describe("stop()", () => {
179
+ // Acceptance: Scenario "stop()으로 리소스를 정리한다"
180
+ it("terminates worker on stop", async () => {
181
+ mockWorker.build.mockResolvedValue({
182
+ js: { success: true, errors: undefined, warnings: undefined },
183
+ dts: { success: true, errors: undefined, diagnostics: [] },
184
+ });
185
+
186
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
187
+ await engine.run({ js: true, dts: true });
188
+ await engine.stop();
189
+
190
+ expect(mockWorker.terminate).toHaveBeenCalled();
191
+ });
192
+
193
+ it("handles stop without prior run", async () => {
194
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
195
+ await expect(engine.stop()).resolves.toBeUndefined();
196
+ });
197
+
198
+ // Unit: run mode doesn't call stopWatch
199
+ it("skips stopWatch in run mode", async () => {
200
+ mockWorker.build.mockResolvedValue({
201
+ js: { success: true, errors: undefined, warnings: undefined },
202
+ dts: { success: true, errors: undefined, diagnostics: [] },
203
+ });
204
+
205
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
206
+ await engine.run({ js: true, dts: true });
207
+ await engine.stop();
208
+
209
+ expect(mockWorker.stopWatch).not.toHaveBeenCalled();
210
+ expect(mockWorker.terminate).toHaveBeenCalled();
211
+ });
212
+ });
213
+
214
+ describe("startWatch()", () => {
215
+ // Unit: resolves when initial build event arrives
216
+ it("resolves when initial build event arrives", async () => {
217
+ mockWorker.startWatch.mockImplementation(() => {
218
+ const buildHandler = mockWorker.on.mock.calls.find(
219
+ (call: any[]) => call[0] === "build",
220
+ )?.[1];
221
+ buildHandler?.({
222
+ js: { success: true },
223
+ dts: { success: true },
224
+ });
225
+ });
226
+
227
+ const { Worker } = await import("@simplysm/core-node");
228
+ const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
229
+
230
+ await engine.startWatch({ js: true, dts: true });
231
+
232
+ expect(Worker.create).toHaveBeenCalledTimes(1);
233
+ expect(mockWorker.on).toHaveBeenCalledWith("build", expect.any(Function));
234
+ expect(mockWorker.on).toHaveBeenCalledWith("buildStart", expect.any(Function));
235
+ expect(mockWorker.on).toHaveBeenCalledWith("error", expect.any(Function));
236
+
237
+ await engine.stop();
238
+ });
239
+
240
+ // Unit: watch mode results reported to ResultCollector
241
+ it("reports build and dts results separately to ResultCollector", async () => {
242
+ const mockResultCollector = { add: vi.fn() };
243
+
244
+ mockWorker.startWatch.mockImplementation(() => {
245
+ const buildHandler = mockWorker.on.mock.calls.find(
246
+ (call: any[]) => call[0] === "build",
247
+ )?.[1];
248
+ buildHandler?.({
249
+ js: { success: true, errors: undefined },
250
+ dts: { success: false, errors: ["type error"] },
251
+ });
252
+ });
253
+
254
+ const engine = new NgtscEngine({
255
+ cwd: "/root",
256
+ pkg: createMockPkg(),
257
+ resultCollector: mockResultCollector as any,
258
+ });
259
+
260
+ await engine.startWatch({ js: true, dts: true });
261
+
262
+ const addCalls = mockResultCollector.add.mock.calls;
263
+ const buildResult = addCalls.find((c: any[]) => c[0].type === "build");
264
+ const dtsResult = addCalls.find((c: any[]) => c[0].type === "dts");
265
+
266
+ expect(buildResult).toBeDefined();
267
+ expect(buildResult![0].status).toBe("success");
268
+ expect(dtsResult).toBeDefined();
269
+ expect(dtsResult![0].status).toBe("error");
270
+
271
+ await engine.stop();
272
+ });
273
+ });
274
+ });
@@ -0,0 +1,256 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+
3
+ // --- Mock factories ---
4
+
5
+ vi.mock("consola", () => ({
6
+ consola: {
7
+ withTag: vi.fn(() => ({
8
+ debug: vi.fn(),
9
+ warn: vi.fn(),
10
+ error: vi.fn(),
11
+ })),
12
+ },
13
+ }));
14
+
15
+ const mockWorker = {
16
+ build: vi.fn(),
17
+ startWatch: vi.fn(),
18
+ stopWatch: vi.fn(),
19
+ terminate: vi.fn(),
20
+ on: vi.fn(),
21
+ };
22
+
23
+ vi.mock("@simplysm/core-node", () => ({
24
+ Worker: {
25
+ create: vi.fn(() => mockWorker),
26
+ },
27
+ }));
28
+
29
+ // --- Dynamic imports ---
30
+
31
+ const { ServerEsbuildEngine } = await import("../../src/engines/ServerEsbuildEngine");
32
+
33
+ import type { ServerPackageInfo } from "../../src/engines/types";
34
+
35
+ // --- Helpers ---
36
+
37
+ function createMockPkg(overrides: Partial<ServerPackageInfo> = {}): ServerPackageInfo {
38
+ return {
39
+ name: "test-server",
40
+ dir: "/packages/test-server",
41
+ config: {
42
+ target: "server",
43
+ env: { DB_HOST: "localhost" },
44
+ configs: { port: 3000 },
45
+ externals: ["bcrypt"],
46
+ pm2: { name: "test-app" },
47
+ packageManager: "mise",
48
+ } as any,
49
+ ...overrides,
50
+ };
51
+ }
52
+
53
+ function setupDefaultBuildResult(): void {
54
+ mockWorker.build.mockResolvedValue({
55
+ js: { success: true, errors: undefined, warnings: undefined },
56
+ dts: { success: true, errors: undefined, diagnostics: [] },
57
+ mainJsPath: "/packages/test-server/dist/main.js",
58
+ });
59
+ mockWorker.terminate.mockResolvedValue(undefined);
60
+ mockWorker.stopWatch.mockResolvedValue(undefined);
61
+ }
62
+
63
+ // --- Tests ---
64
+
65
+ beforeEach(() => {
66
+ vi.clearAllMocks();
67
+ setupDefaultBuildResult();
68
+ });
69
+
70
+ describe("ServerEsbuildEngine", () => {
71
+ describe("run()", () => {
72
+ // Acceptance: creates single worker and calls build with server config
73
+ it("creates worker and passes server config to build", async () => {
74
+ const { Worker } = await import("@simplysm/core-node");
75
+ const pkg = createMockPkg();
76
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg });
77
+
78
+ const result = await engine.run({ js: true, dts: false });
79
+
80
+ expect(Worker.create).toHaveBeenCalledTimes(1);
81
+ expect(mockWorker.build).toHaveBeenCalledWith(
82
+ expect.objectContaining({
83
+ name: "test-server",
84
+ pkgDir: "/packages/test-server",
85
+ output: { js: true, dts: false },
86
+ env: { DB_HOST: "localhost" },
87
+ configs: { port: 3000 },
88
+ externals: ["bcrypt"],
89
+ pm2: { name: "test-app" },
90
+ packageManager: "mise",
91
+ }),
92
+ );
93
+ expect(result.success).toBe(true);
94
+ expect(result.js.success).toBe(true);
95
+ expect(result.dts.success).toBe(true);
96
+ await engine.stop();
97
+ });
98
+
99
+ // Acceptance: maps ServerBuildResult to EngineResult
100
+ it("maps worker result to EngineResult with js/dts separation", async () => {
101
+ mockWorker.build.mockResolvedValue({
102
+ js: { success: true, errors: undefined, warnings: ["warn1"] },
103
+ dts: { success: false, errors: ["type error"], diagnostics: [{ code: 2345, category: 1 }] },
104
+ mainJsPath: "/packages/test-server/dist/main.js",
105
+ });
106
+
107
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg: createMockPkg() });
108
+ const result = await engine.run({ js: true, dts: false });
109
+
110
+ expect(result.success).toBe(false);
111
+ expect(result.js.warnings).toEqual(["warn1"]);
112
+ expect(result.dts.success).toBe(false);
113
+ expect(result.dts.diagnostics).toEqual([{ code: 2345, category: 1 }]);
114
+ await engine.stop();
115
+ });
116
+
117
+ // Unit: JS failure
118
+ it("reflects JS build failure in result", async () => {
119
+ mockWorker.build.mockResolvedValue({
120
+ js: { success: false, errors: ["esbuild error"], warnings: undefined },
121
+ dts: { success: true, errors: undefined, diagnostics: [] },
122
+ mainJsPath: "/packages/test-server/dist/main.js",
123
+ });
124
+
125
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg: createMockPkg() });
126
+ const result = await engine.run({ js: true, dts: false });
127
+
128
+ expect(result.success).toBe(false);
129
+ expect(result.js.success).toBe(false);
130
+ expect(result.js.errors).toEqual(["esbuild error"]);
131
+ expect(result.dts.success).toBe(true);
132
+ await engine.stop();
133
+ });
134
+ });
135
+
136
+ describe("startWatch()", () => {
137
+ // Acceptance: resolves when initial build event arrives
138
+ it("resolves when initial build event arrives", async () => {
139
+ mockWorker.startWatch.mockImplementation(() => {
140
+ const buildHandler = mockWorker.on.mock.calls.find(
141
+ (call: any[]) => call[0] === "build",
142
+ )?.[1];
143
+ buildHandler?.({
144
+ js: { success: true },
145
+ dts: { success: true },
146
+ mainJsPath: "/packages/test-server/dist/main.js",
147
+ });
148
+ });
149
+
150
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg: createMockPkg() });
151
+ await engine.startWatch({ js: true, dts: false });
152
+
153
+ expect(mockWorker.on).toHaveBeenCalledWith("build", expect.any(Function));
154
+ expect(mockWorker.on).toHaveBeenCalledWith("buildStart", expect.any(Function));
155
+ expect(mockWorker.on).toHaveBeenCalledWith("error", expect.any(Function));
156
+
157
+ await engine.stop();
158
+ });
159
+
160
+ // Acceptance: reports to ResultCollector
161
+ it("reports build and dts results separately to ResultCollector", async () => {
162
+ const mockResultCollector = { add: vi.fn() };
163
+
164
+ mockWorker.startWatch.mockImplementation(() => {
165
+ const buildHandler = mockWorker.on.mock.calls.find(
166
+ (call: any[]) => call[0] === "build",
167
+ )?.[1];
168
+ buildHandler?.({
169
+ js: { success: true, errors: undefined },
170
+ dts: { success: false, errors: ["type error"] },
171
+ mainJsPath: "/packages/test-server/dist/main.js",
172
+ });
173
+ });
174
+
175
+ const engine = new ServerEsbuildEngine({
176
+ cwd: "/root",
177
+ pkg: createMockPkg(),
178
+ resultCollector: mockResultCollector as any,
179
+ });
180
+
181
+ await engine.startWatch({ js: true, dts: false });
182
+
183
+ const addCalls = mockResultCollector.add.mock.calls;
184
+ const buildResult = addCalls.find((c: any[]) => c[0].type === "build");
185
+ const dtsResult = addCalls.find((c: any[]) => c[0].type === "dts");
186
+
187
+ expect(buildResult).toBeDefined();
188
+ expect(buildResult![0].status).toBe("success");
189
+ expect(dtsResult).toBeDefined();
190
+ expect(dtsResult![0].status).toBe("error");
191
+
192
+ await engine.stop();
193
+ });
194
+
195
+ // Unit: passes server-specific config to worker
196
+ it("passes server config to worker startWatch", async () => {
197
+ mockWorker.startWatch.mockImplementation(() => {
198
+ const buildHandler = mockWorker.on.mock.calls.find(
199
+ (call: any[]) => call[0] === "build",
200
+ )?.[1];
201
+ buildHandler?.({
202
+ js: { success: true },
203
+ dts: { success: true },
204
+ mainJsPath: "/packages/test-server/dist/main.js",
205
+ });
206
+ });
207
+
208
+ const pkg = createMockPkg();
209
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg });
210
+ await engine.startWatch({ js: true, dts: false });
211
+
212
+ expect(mockWorker.startWatch).toHaveBeenCalledWith(
213
+ expect.objectContaining({
214
+ name: "test-server",
215
+ env: { DB_HOST: "localhost" },
216
+ configs: { port: 3000 },
217
+ externals: ["bcrypt"],
218
+ }),
219
+ );
220
+
221
+ await engine.stop();
222
+ });
223
+ });
224
+
225
+ describe("stop()", () => {
226
+ it("calls stopWatch and terminate on worker", async () => {
227
+ mockWorker.startWatch.mockImplementation(() => {
228
+ const buildHandler = mockWorker.on.mock.calls.find(
229
+ (call: any[]) => call[0] === "build",
230
+ )?.[1];
231
+ buildHandler?.({ js: { success: true }, dts: { success: true }, mainJsPath: "x" });
232
+ });
233
+
234
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg: createMockPkg() });
235
+ await engine.startWatch({ js: true, dts: false });
236
+ await engine.stop();
237
+
238
+ expect(mockWorker.stopWatch).toHaveBeenCalled();
239
+ expect(mockWorker.terminate).toHaveBeenCalled();
240
+ });
241
+
242
+ it("handles stop without prior run/startWatch", async () => {
243
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg: createMockPkg() });
244
+ await expect(engine.stop()).resolves.toBeUndefined();
245
+ });
246
+
247
+ it("skips stopWatch in run mode", async () => {
248
+ const engine = new ServerEsbuildEngine({ cwd: "/root", pkg: createMockPkg() });
249
+ await engine.run({ js: true, dts: false });
250
+ await engine.stop();
251
+
252
+ expect(mockWorker.stopWatch).not.toHaveBeenCalled();
253
+ expect(mockWorker.terminate).toHaveBeenCalled();
254
+ });
255
+ });
256
+ });