@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.
- package/dist/commands/build.js +29 -19
- package/dist/commands/build.js.map +1 -6
- package/dist/commands/check.d.ts +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +130 -115
- package/dist/commands/check.js.map +1 -6
- package/dist/commands/dev.d.ts +6 -7
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +24 -14
- package/dist/commands/dev.js.map +1 -6
- package/dist/commands/lint.d.ts +1 -1
- package/dist/commands/lint.js +158 -116
- package/dist/commands/lint.js.map +1 -6
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +637 -510
- package/dist/commands/publish.js.map +1 -6
- package/dist/commands/replace-deps.js +12 -12
- package/dist/commands/replace-deps.js.map +1 -6
- package/dist/commands/typecheck.d.ts +5 -30
- package/dist/commands/typecheck.d.ts.map +1 -1
- package/dist/commands/typecheck.js +144 -207
- package/dist/commands/typecheck.js.map +1 -6
- package/dist/commands/watch.d.ts +6 -4
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +25 -16
- package/dist/commands/watch.js.map +1 -6
- package/dist/engines/NgtscEngine.d.ts +47 -0
- package/dist/engines/NgtscEngine.d.ts.map +1 -0
- package/dist/engines/NgtscEngine.js +151 -0
- package/dist/engines/NgtscEngine.js.map +1 -0
- package/dist/engines/ServerEsbuildEngine.d.ts +47 -0
- package/dist/engines/ServerEsbuildEngine.d.ts.map +1 -0
- package/dist/engines/ServerEsbuildEngine.js +159 -0
- package/dist/engines/ServerEsbuildEngine.js.map +1 -0
- package/dist/engines/TscEngine.d.ts +47 -0
- package/dist/engines/TscEngine.d.ts.map +1 -0
- package/dist/engines/TscEngine.js +153 -0
- package/dist/engines/TscEngine.js.map +1 -0
- package/dist/engines/ViteEngine.d.ts +49 -0
- package/dist/engines/ViteEngine.d.ts.map +1 -0
- package/dist/engines/ViteEngine.js +161 -0
- package/dist/engines/ViteEngine.js.map +1 -0
- package/dist/engines/index.d.ts +26 -0
- package/dist/engines/index.d.ts.map +1 -0
- package/dist/engines/index.js +30 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/types.d.ts +77 -0
- package/dist/engines/types.d.ts.map +1 -0
- package/dist/engines/types.js +2 -0
- package/dist/engines/types.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -6
- package/dist/infra/ResultCollector.d.ts +1 -1
- package/dist/infra/ResultCollector.d.ts.map +1 -1
- package/dist/infra/ResultCollector.js +30 -27
- package/dist/infra/ResultCollector.js.map +1 -6
- package/dist/infra/SignalHandler.js +45 -42
- package/dist/infra/SignalHandler.js.map +1 -6
- package/dist/infra/WorkerManager.js +56 -53
- package/dist/infra/WorkerManager.js.map +1 -6
- package/dist/orchestrators/BuildOrchestrator.d.ts +33 -1
- package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +314 -309
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -6
- package/dist/orchestrators/DevWatchOrchestrator.d.ts +60 -0
- package/dist/orchestrators/DevWatchOrchestrator.d.ts.map +1 -0
- package/dist/orchestrators/DevWatchOrchestrator.js +465 -0
- package/dist/orchestrators/DevWatchOrchestrator.js.map +1 -0
- package/dist/sd-cli-entry.d.ts.map +1 -1
- package/dist/sd-cli-entry.js +190 -266
- package/dist/sd-cli-entry.js.map +1 -6
- package/dist/sd-cli.js +77 -49
- package/dist/sd-cli.js.map +1 -6
- package/dist/sd-config.types.d.ts +2 -0
- package/dist/sd-config.types.d.ts.map +1 -1
- package/dist/sd-config.types.js +2 -1
- package/dist/sd-config.types.js.map +1 -6
- package/dist/utils/angular-build.d.ts +77 -0
- package/dist/utils/angular-build.d.ts.map +1 -0
- package/dist/utils/angular-build.js +84 -0
- package/dist/utils/angular-build.js.map +1 -0
- package/dist/utils/build-env.js +9 -9
- package/dist/utils/build-env.js.map +1 -6
- package/dist/utils/concurrency.d.ts +15 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +38 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/copy-public.js +104 -87
- package/dist/utils/copy-public.js.map +1 -6
- package/dist/utils/copy-src.js +49 -35
- package/dist/utils/copy-src.js.map +1 -6
- package/dist/utils/esbuild-config.d.ts +0 -29
- package/dist/utils/esbuild-config.d.ts.map +1 -1
- package/dist/utils/esbuild-config.js +151 -218
- package/dist/utils/esbuild-config.js.map +1 -6
- package/dist/utils/ngtsc-build-core.d.ts +49 -0
- package/dist/utils/ngtsc-build-core.d.ts.map +1 -0
- package/dist/utils/ngtsc-build-core.js +250 -0
- package/dist/utils/ngtsc-build-core.js.map +1 -0
- package/dist/utils/output-path-rewriter.d.ts +23 -0
- package/dist/utils/output-path-rewriter.d.ts.map +1 -0
- package/dist/utils/output-path-rewriter.js +74 -0
- package/dist/utils/output-path-rewriter.js.map +1 -0
- package/dist/utils/output-utils.js +55 -40
- package/dist/utils/output-utils.js.map +1 -6
- package/dist/utils/package-utils.d.ts +8 -0
- package/dist/utils/package-utils.d.ts.map +1 -1
- package/dist/utils/package-utils.js +103 -73
- package/dist/utils/package-utils.js.map +1 -6
- package/dist/utils/rebuild-manager.js +41 -44
- package/dist/utils/rebuild-manager.js.map +1 -6
- package/dist/utils/replace-deps.js +283 -184
- package/dist/utils/replace-deps.js.map +1 -6
- package/dist/utils/scss-compiler.d.ts +10 -0
- package/dist/utils/scss-compiler.d.ts.map +1 -0
- package/dist/utils/scss-compiler.js +36 -0
- package/dist/utils/scss-compiler.js.map +1 -0
- package/dist/utils/sd-config.js +29 -19
- package/dist/utils/sd-config.js.map +1 -6
- package/dist/utils/tsc-build.d.ts +36 -0
- package/dist/utils/tsc-build.d.ts.map +1 -0
- package/dist/utils/tsc-build.js +130 -0
- package/dist/utils/tsc-build.js.map +1 -0
- package/dist/utils/tsconfig.d.ts +7 -26
- package/dist/utils/tsconfig.d.ts.map +1 -1
- package/dist/utils/tsconfig.js +39 -64
- package/dist/utils/tsconfig.js.map +1 -6
- package/dist/utils/typecheck-non-package.d.ts +18 -0
- package/dist/utils/typecheck-non-package.d.ts.map +1 -0
- package/dist/utils/typecheck-non-package.js +64 -0
- package/dist/utils/typecheck-non-package.js.map +1 -0
- package/dist/utils/typecheck-serialization.js +58 -40
- package/dist/utils/typecheck-serialization.js.map +1 -6
- package/dist/utils/worker-events.js +48 -40
- package/dist/utils/worker-events.js.map +1 -6
- package/dist/utils/worker-utils.js +48 -28
- package/dist/utils/worker-utils.js.map +1 -6
- package/dist/vitest-plugin.d.ts +9 -0
- package/dist/vitest-plugin.d.ts.map +1 -0
- package/dist/vitest-plugin.js +85 -0
- package/dist/vitest-plugin.js.map +1 -0
- package/dist/workers/library-build.worker.d.ts +54 -0
- package/dist/workers/library-build.worker.d.ts.map +1 -0
- package/dist/workers/library-build.worker.js +97 -0
- package/dist/workers/library-build.worker.js.map +1 -0
- package/dist/workers/lint.worker.js +9 -6
- package/dist/workers/lint.worker.js.map +1 -6
- package/dist/workers/ngtsc-build.worker.d.ts +23 -0
- package/dist/workers/ngtsc-build.worker.d.ts.map +1 -0
- package/dist/workers/ngtsc-build.worker.js +98 -0
- package/dist/workers/ngtsc-build.worker.js.map +1 -0
- package/dist/workers/{server.worker.d.ts → server-build.worker.d.ts} +39 -29
- package/dist/workers/server-build.worker.d.ts.map +1 -0
- package/dist/workers/server-build.worker.js +399 -0
- package/dist/workers/server-build.worker.js.map +1 -0
- package/dist/workers/server-runtime.worker.d.ts +3 -2
- package/dist/workers/server-runtime.worker.d.ts.map +1 -1
- package/dist/workers/server-runtime.worker.js +100 -95
- package/dist/workers/server-runtime.worker.js.map +1 -6
- package/dist/workers/vite-build.worker.d.ts +56 -0
- package/dist/workers/vite-build.worker.d.ts.map +1 -0
- package/dist/workers/vite-build.worker.js +167 -0
- package/dist/workers/vite-build.worker.js.map +1 -0
- package/package.json +10 -16
- package/src/commands/check.ts +21 -3
- package/src/commands/dev.ts +10 -8
- package/src/commands/lint.ts +1 -1
- package/src/commands/publish.ts +4 -0
- package/src/commands/typecheck.ts +89 -256
- package/src/commands/watch.ts +9 -8
- package/src/engines/NgtscEngine.ts +190 -0
- package/src/engines/ServerEsbuildEngine.ts +195 -0
- package/src/engines/TscEngine.ts +189 -0
- package/src/engines/ViteEngine.ts +203 -0
- package/src/engines/index.ts +49 -0
- package/src/engines/types.ts +79 -0
- package/src/index.ts +0 -3
- package/src/infra/ResultCollector.ts +1 -1
- package/src/orchestrators/BuildOrchestrator.ts +87 -157
- package/src/orchestrators/DevWatchOrchestrator.ts +573 -0
- package/src/sd-cli-entry.ts +13 -116
- package/src/sd-config.types.ts +2 -0
- package/src/utils/angular-build.ts +157 -0
- package/src/utils/concurrency.ts +43 -0
- package/src/utils/esbuild-config.ts +1 -122
- package/src/utils/ngtsc-build-core.ts +379 -0
- package/src/utils/output-path-rewriter.ts +82 -0
- package/src/utils/package-utils.ts +20 -0
- package/src/utils/scss-compiler.ts +58 -0
- package/src/utils/tsc-build.ts +175 -0
- package/src/utils/tsconfig.ts +27 -95
- package/src/utils/typecheck-non-package.ts +87 -0
- package/src/vitest-plugin.ts +118 -0
- package/src/workers/library-build.worker.ts +153 -0
- package/src/workers/ngtsc-build.worker.ts +146 -0
- package/src/workers/server-build.worker.ts +565 -0
- package/src/workers/server-runtime.worker.ts +17 -26
- package/src/workers/vite-build.worker.ts +252 -0
- package/tests/commands/check.spec.ts +276 -0
- package/tests/commands/dev.spec.ts +53 -0
- package/tests/commands/lint.spec.ts +243 -0
- package/tests/commands/publish.spec.ts +1159 -0
- package/tests/commands/typecheck.spec.ts +294 -0
- package/tests/commands/watch.spec.ts +53 -0
- package/tests/engines/engine-selection.spec.ts +247 -0
- package/tests/engines/ngtsc-engine.spec.ts +274 -0
- package/tests/engines/server-esbuild-engine.spec.ts +256 -0
- package/tests/engines/tsc-engine.spec.ts +213 -0
- package/tests/engines/vite-engine.spec.ts +358 -0
- package/tests/infra/result-collector.spec.ts +46 -0
- package/tests/infra/signal-handler.spec.ts +32 -0
- package/tests/infra/worker-manager.spec.ts +63 -0
- package/tests/orchestrators/build-orchestrator.spec.ts +772 -0
- package/tests/orchestrators/dev-watch-orchestrator.spec.ts +1173 -0
- package/tests/sd-cli-entry.spec.ts +49 -0
- package/tests/utils/angular-build.spec.ts +251 -0
- package/tests/utils/build-env.spec.ts +33 -0
- package/tests/utils/concurrency.spec.ts +65 -0
- package/tests/utils/copy-src.spec.ts +144 -0
- package/tests/utils/esbuild-config.spec.ts +186 -0
- package/tests/utils/external-modules.spec.ts +161 -0
- package/tests/utils/ngtsc-scss-refactor.spec.ts +66 -0
- package/tests/utils/output-path-rewriter.spec.ts +165 -0
- package/tests/utils/output-utils.spec.ts +104 -0
- package/tests/utils/package-utils.spec.ts +52 -0
- package/tests/utils/rebuild-manager.spec.ts +30 -27
- package/tests/utils/replace-deps.spec.ts +69 -0
- package/tests/utils/scss-compiler.spec.ts +131 -0
- package/tests/utils/sd-config.spec.ts +77 -0
- package/tests/utils/tsc-build.spec.ts +358 -0
- package/tests/utils/tsconfig-angular.spec.ts +71 -0
- package/tests/utils/typecheck-non-package.spec.ts +120 -0
- package/tests/utils/worker-events.spec.ts +155 -0
- package/tests/utils/worker-utils.spec.ts +43 -0
- package/tests/vitest-plugin-cwd.spec.ts +68 -0
- package/tests/vitest-plugin.spec.ts +103 -0
- package/tests/workers/library-build-worker.spec.ts +258 -0
- package/tests/workers/ngtsc-build-worker.spec.ts +187 -0
- package/tests/workers/server-build-worker.spec.ts +566 -0
- package/tests/workers/server-runtime-worker.spec.ts +251 -0
- package/README.md +0 -295
- package/dist/builders/BaseBuilder.d.ts +0 -88
- package/dist/builders/BaseBuilder.d.ts.map +0 -1
- package/dist/builders/BaseBuilder.js +0 -142
- package/dist/builders/BaseBuilder.js.map +0 -6
- package/dist/builders/DtsBuilder.d.ts +0 -22
- package/dist/builders/DtsBuilder.d.ts.map +0 -1
- package/dist/builders/DtsBuilder.js +0 -72
- package/dist/builders/DtsBuilder.js.map +0 -6
- package/dist/builders/LibraryBuilder.d.ts +0 -22
- package/dist/builders/LibraryBuilder.d.ts.map +0 -1
- package/dist/builders/LibraryBuilder.js +0 -85
- package/dist/builders/LibraryBuilder.js.map +0 -6
- package/dist/builders/types.d.ts +0 -55
- package/dist/builders/types.d.ts.map +0 -1
- package/dist/builders/types.js +0 -1
- package/dist/builders/types.js.map +0 -6
- package/dist/capacitor/capacitor.d.ts +0 -151
- package/dist/capacitor/capacitor.d.ts.map +0 -1
- package/dist/capacitor/capacitor.js +0 -694
- package/dist/capacitor/capacitor.js.map +0 -6
- package/dist/commands/device.d.ts +0 -22
- package/dist/commands/device.d.ts.map +0 -1
- package/dist/commands/device.js +0 -98
- package/dist/commands/device.js.map +0 -6
- package/dist/commands/init.d.ts +0 -14
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -72
- package/dist/commands/init.js.map +0 -6
- package/dist/electron/electron.d.ts +0 -84
- package/dist/electron/electron.d.ts.map +0 -1
- package/dist/electron/electron.js +0 -263
- package/dist/electron/electron.js.map +0 -6
- package/dist/orchestrators/DevOrchestrator.d.ts +0 -83
- package/dist/orchestrators/DevOrchestrator.d.ts.map +0 -1
- package/dist/orchestrators/DevOrchestrator.js +0 -540
- package/dist/orchestrators/DevOrchestrator.js.map +0 -6
- package/dist/orchestrators/WatchOrchestrator.d.ts +0 -57
- package/dist/orchestrators/WatchOrchestrator.d.ts.map +0 -1
- package/dist/orchestrators/WatchOrchestrator.js +0 -199
- package/dist/orchestrators/WatchOrchestrator.js.map +0 -6
- package/dist/utils/tailwind-config-deps.d.ts +0 -8
- package/dist/utils/tailwind-config-deps.d.ts.map +0 -1
- package/dist/utils/tailwind-config-deps.js +0 -82
- package/dist/utils/tailwind-config-deps.js.map +0 -6
- package/dist/utils/template.d.ts +0 -14
- package/dist/utils/template.d.ts.map +0 -1
- package/dist/utils/template.js +0 -33
- package/dist/utils/template.js.map +0 -6
- package/dist/utils/vite-config.d.ts +0 -35
- package/dist/utils/vite-config.d.ts.map +0 -1
- package/dist/utils/vite-config.js +0 -259
- package/dist/utils/vite-config.js.map +0 -6
- package/dist/workers/client.worker.d.ts +0 -83
- package/dist/workers/client.worker.d.ts.map +0 -1
- package/dist/workers/client.worker.js +0 -111
- package/dist/workers/client.worker.js.map +0 -6
- package/dist/workers/dts.worker.d.ts +0 -75
- package/dist/workers/dts.worker.d.ts.map +0 -1
- package/dist/workers/dts.worker.js +0 -270
- package/dist/workers/dts.worker.js.map +0 -6
- package/dist/workers/library.worker.d.ts +0 -75
- package/dist/workers/library.worker.d.ts.map +0 -1
- package/dist/workers/library.worker.js +0 -166
- package/dist/workers/library.worker.js.map +0 -6
- package/dist/workers/server.worker.d.ts.map +0 -1
- package/dist/workers/server.worker.js +0 -482
- package/dist/workers/server.worker.js.map +0 -6
- package/src/builders/BaseBuilder.ts +0 -218
- package/src/builders/DtsBuilder.ts +0 -92
- package/src/builders/LibraryBuilder.ts +0 -110
- package/src/builders/types.ts +0 -60
- package/src/capacitor/capacitor.ts +0 -931
- package/src/commands/device.ts +0 -140
- package/src/commands/init.ts +0 -113
- package/src/electron/electron.ts +0 -362
- package/src/orchestrators/DevOrchestrator.ts +0 -744
- package/src/orchestrators/WatchOrchestrator.ts +0 -277
- package/src/utils/tailwind-config-deps.ts +0 -98
- package/src/utils/template.ts +0 -56
- package/src/utils/vite-config.ts +0 -390
- package/src/workers/client.worker.ts +0 -250
- package/src/workers/dts.worker.ts +0 -453
- package/src/workers/library.worker.ts +0 -316
- package/src/workers/server.worker.ts +0 -734
- package/templates/init/.gitignore.hbs +0 -34
- package/templates/init/.npmrc.hbs +0 -1
- package/templates/init/.prettierignore +0 -1
- package/templates/init/.prettierrc.yaml +0 -12
- package/templates/init/eslint.config.ts +0 -15
- package/templates/init/mise.toml +0 -3
- package/templates/init/package.json.hbs +0 -32
- package/templates/init/packages/client-admin/index.html.hbs +0 -144
- package/templates/init/packages/client-admin/package.json.hbs +0 -27
- package/templates/init/packages/client-admin/public/assets/logo-landscape.png +0 -0
- package/templates/init/packages/client-admin/public/assets/logo.png +0 -0
- package/templates/init/packages/client-admin/public/favicon.ico +0 -0
- package/templates/init/packages/client-admin/src/App.tsx +0 -42
- package/templates/init/packages/client-admin/src/dev/DevDialog.tsx +0 -34
- package/templates/init/packages/client-admin/src/events/AuthChangeEvent.ts +0 -3
- package/templates/init/packages/client-admin/src/main.css +0 -4
- package/templates/init/packages/client-admin/src/main.tsx.hbs +0 -146
- package/templates/init/packages/client-admin/src/providers/AppServiceProvider.tsx.hbs +0 -103
- package/templates/init/packages/client-admin/src/providers/AppStructureProvider.tsx +0 -84
- package/templates/init/packages/client-admin/src/providers/AuthProvider.tsx.hbs +0 -96
- package/templates/init/packages/client-admin/src/providers/configureSharedData.ts.hbs +0 -67
- package/templates/init/packages/client-admin/src/views/auth/LoginView.tsx +0 -132
- package/templates/init/packages/client-admin/src/views/home/HomeView.tsx +0 -108
- package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeDetail.tsx.hbs +0 -243
- package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeSheet.tsx.hbs +0 -271
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleDetail.tsx.hbs +0 -146
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RolePermissionDetail.tsx.hbs +0 -121
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RolePermissionView.tsx +0 -52
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleSheet.tsx.hbs +0 -125
- package/templates/init/packages/client-admin/src/views/home/main/MainView.tsx.hbs +0 -13
- package/templates/init/packages/client-admin/src/views/home/my-info/MyInfoDetail.tsx.hbs +0 -241
- package/templates/init/packages/client-admin/src/views/home/system/system-log/SystemLogSheet.tsx.hbs +0 -169
- package/templates/init/packages/client-admin/src/views/not-found/NotFoundView.tsx +0 -15
- package/templates/init/packages/client-admin/tailwind.config.ts +0 -10
- package/templates/init/packages/db-main/package.json.hbs +0 -13
- package/templates/init/packages/db-main/src/MainDbContext.ts +0 -22
- package/templates/init/packages/db-main/src/dataLogExt.ts +0 -127
- package/templates/init/packages/db-main/src/index.ts +0 -14
- package/templates/init/packages/db-main/src/tables/base/Employee.ts +0 -24
- package/templates/init/packages/db-main/src/tables/base/EmployeeConfig.ts +0 -13
- package/templates/init/packages/db-main/src/tables/base/Role.ts +0 -9
- package/templates/init/packages/db-main/src/tables/base/RolePermission.ts +0 -13
- package/templates/init/packages/db-main/src/tables/system/_DataLog.ts +0 -19
- package/templates/init/packages/db-main/src/tables/system/_Log.ts +0 -16
- package/templates/init/packages/server/package.json.hbs +0 -20
- package/templates/init/packages/server/public-dev/dev//354/264/210/352/270/260/355/231/224.xlsx +0 -0
- package/templates/init/packages/server/src/index.ts +0 -4
- package/templates/init/packages/server/src/main.ts.hbs +0 -34
- package/templates/init/packages/server/src/services/AuthService.ts.hbs +0 -171
- package/templates/init/packages/server/src/services/DevService.ts.hbs +0 -94
- package/templates/init/packages/server/src/services/EmployeeService.ts.hbs +0 -122
- package/templates/init/packages/server/src/services/RoleService.ts.hbs +0 -59
- package/templates/init/pnpm-workspace.yaml +0 -15
- package/templates/init/sd.config.ts.hbs +0 -48
- package/templates/init/tsconfig.json.hbs +0 -39
- package/templates/init/vitest.config.ts +0 -36
- package/tests/capacitor-exclude.spec.ts +0 -78
- package/tests/capacitor.spec.ts +0 -49
- package/tests/copy-src.spec.ts +0 -50
- package/tests/electron-exclude.spec.ts +0 -61
- package/tests/get-compiler-options-for-package.spec.ts +0 -80
- package/tests/get-package-source-files.spec.ts +0 -139
- package/tests/get-types-from-package-json.spec.ts +0 -92
- package/tests/infra/ResultCollector.spec.ts +0 -30
- package/tests/infra/SignalHandler.spec.ts +0 -38
- package/tests/infra/WorkerManager.spec.ts +0 -63
- package/tests/load-ignore-patterns.spec.ts +0 -163
- package/tests/load-sd-config.spec.ts +0 -100
- package/tests/package-utils.spec.ts +0 -188
- package/tests/parse-root-tsconfig.spec.ts +0 -89
- package/tests/publish-config-narrowing.spec.ts +0 -20
- package/tests/replace-deps.spec.ts +0 -308
- package/tests/run-lint.spec.ts +0 -366
- package/tests/run-typecheck.spec.ts +0 -544
- package/tests/run-watch.spec.ts +0 -76
- package/tests/sd-cli.spec.ts +0 -265
- package/tests/sd-public-dev-plugin-mime.spec.ts +0 -19
- package/tests/tailwind-config-deps.spec.ts +0 -30
- package/tests/template.spec.ts +0 -70
- package/tests/vite-config-exclude.spec.ts +0 -35
- package/tests/vite-config-outdir.spec.ts +0 -38
- package/tests/write-changed-output-files.spec.ts +0 -97
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { spawn } from "child_process";
|
|
3
|
-
import { consola } from "consola";
|
|
4
|
-
import type { BuildTarget, SdBuildPackageConfig, SdConfig, SdScriptsPackageConfig } from "../sd-config.types";
|
|
5
|
-
import { loadSdConfig } from "../utils/sd-config";
|
|
6
|
-
import { filterPackagesByTargets } from "../utils/package-utils";
|
|
7
|
-
import { watchReplaceDeps, type WatchReplaceDepResult } from "../utils/replace-deps";
|
|
8
|
-
import { printErrors } from "../utils/output-utils";
|
|
9
|
-
import { RebuildManager } from "../utils/rebuild-manager";
|
|
10
|
-
import { ResultCollector } from "../infra/ResultCollector";
|
|
11
|
-
import { SignalHandler } from "../infra/SignalHandler";
|
|
12
|
-
import { LibraryBuilder } from "../builders/LibraryBuilder";
|
|
13
|
-
import { DtsBuilder } from "../builders/DtsBuilder";
|
|
14
|
-
import type { BuildPackageInfo } from "../builders/types";
|
|
15
|
-
import { watchCopySrcFiles } from "../utils/copy-src";
|
|
16
|
-
import { FsWatcher } from "@simplysm/core-node";
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Watch command options
|
|
20
|
-
*/
|
|
21
|
-
export interface WatchOrchestratorOptions {
|
|
22
|
-
targets: string[];
|
|
23
|
-
options: string[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Orchestrator that coordinates watch mode execution
|
|
28
|
-
*
|
|
29
|
-
* Manages watch mode execution for Library packages (node/browser/neutral).
|
|
30
|
-
* - LibraryBuilder: esbuild watch
|
|
31
|
-
* - DtsBuilder: .d.ts generation
|
|
32
|
-
*/
|
|
33
|
-
export class WatchOrchestrator {
|
|
34
|
-
private readonly _cwd: string;
|
|
35
|
-
private readonly _options: WatchOrchestratorOptions;
|
|
36
|
-
private readonly _logger = consola.withTag("sd:cli:watch");
|
|
37
|
-
|
|
38
|
-
private _resultCollector!: ResultCollector;
|
|
39
|
-
private _signalHandler!: SignalHandler;
|
|
40
|
-
private _rebuildManager!: RebuildManager;
|
|
41
|
-
private _libraryBuilder!: LibraryBuilder;
|
|
42
|
-
private _dtsBuilder!: DtsBuilder;
|
|
43
|
-
private _packages: BuildPackageInfo[] = [];
|
|
44
|
-
private _copySrcWatchers: FsWatcher[] = [];
|
|
45
|
-
private _replaceDepWatcher: WatchReplaceDepResult | undefined;
|
|
46
|
-
private readonly _watchHookPackages: Array<{ name: string; dir: string; config: SdScriptsPackageConfig }> = [];
|
|
47
|
-
private readonly _watchHookWatchers: FsWatcher[] = [];
|
|
48
|
-
|
|
49
|
-
constructor(options: WatchOrchestratorOptions) {
|
|
50
|
-
this._cwd = process.cwd();
|
|
51
|
-
this._options = options;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Initialize Orchestrator
|
|
56
|
-
* - Load sd.config.ts
|
|
57
|
-
* - Classify packages
|
|
58
|
-
* - Create and initialize builders
|
|
59
|
-
*/
|
|
60
|
-
async initialize(): Promise<void> {
|
|
61
|
-
this._logger.debug("watch start", { targets: this._options.targets });
|
|
62
|
-
|
|
63
|
-
// Load sd.config.ts
|
|
64
|
-
let sdConfig: SdConfig;
|
|
65
|
-
try {
|
|
66
|
-
sdConfig = await loadSdConfig({
|
|
67
|
-
cwd: this._cwd,
|
|
68
|
-
dev: true,
|
|
69
|
-
options: this._options.options,
|
|
70
|
-
});
|
|
71
|
-
this._logger.debug("sd.config.ts loaded");
|
|
72
|
-
} catch (err) {
|
|
73
|
-
this._logger.error(`Failed to load sd.config.ts: ${err instanceof Error ? err.message : err}`);
|
|
74
|
-
process.exitCode = 1;
|
|
75
|
-
throw err;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Start watch if replaceDeps config exists (initial replacement handled in sd-cli.ts)
|
|
79
|
-
if (sdConfig.replaceDeps != null) {
|
|
80
|
-
this._replaceDepWatcher = await watchReplaceDeps(this._cwd, sdConfig.replaceDeps);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Filter by targets
|
|
84
|
-
const allPackages = filterPackagesByTargets(sdConfig.packages, this._options.targets);
|
|
85
|
-
|
|
86
|
-
// Classify packages: library (node/browser/neutral) vs scripts+watch
|
|
87
|
-
const isLibraryTarget = (target: string): target is BuildTarget =>
|
|
88
|
-
target === "node" || target === "browser" || target === "neutral";
|
|
89
|
-
|
|
90
|
-
const libraryConfigs: Record<string, SdBuildPackageConfig> = {};
|
|
91
|
-
for (const [name, config] of Object.entries(allPackages)) {
|
|
92
|
-
if (isLibraryTarget(config.target)) {
|
|
93
|
-
libraryConfigs[name] = config as SdBuildPackageConfig;
|
|
94
|
-
} else if (config.target === "scripts" && config.watch != null) {
|
|
95
|
-
this._watchHookPackages.push({
|
|
96
|
-
name,
|
|
97
|
-
dir: path.join(this._cwd, "packages", name),
|
|
98
|
-
config: config,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (Object.keys(libraryConfigs).length === 0 && this._watchHookPackages.length === 0) {
|
|
104
|
-
process.stdout.write("⚠ No packages to watch.\n");
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Create PackageInfo array for library packages
|
|
109
|
-
this._packages = Object.entries(libraryConfigs).map(([name, config]) => ({
|
|
110
|
-
name,
|
|
111
|
-
dir: path.join(this._cwd, "packages", name),
|
|
112
|
-
config,
|
|
113
|
-
}));
|
|
114
|
-
|
|
115
|
-
// Initialize infrastructure
|
|
116
|
-
this._signalHandler = new SignalHandler();
|
|
117
|
-
|
|
118
|
-
// Initialize library builders only if there are library packages
|
|
119
|
-
if (this._packages.length > 0) {
|
|
120
|
-
this._resultCollector = new ResultCollector();
|
|
121
|
-
this._rebuildManager = new RebuildManager(this._logger);
|
|
122
|
-
|
|
123
|
-
// Print errors on batch completion
|
|
124
|
-
this._rebuildManager.on("batchComplete", () => {
|
|
125
|
-
printErrors(this._resultCollector.toMap());
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
// Create builders
|
|
129
|
-
const builderOptions = {
|
|
130
|
-
cwd: this._cwd,
|
|
131
|
-
packages: this._packages,
|
|
132
|
-
resultCollector: this._resultCollector,
|
|
133
|
-
rebuildManager: this._rebuildManager,
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
this._libraryBuilder = new LibraryBuilder(builderOptions);
|
|
137
|
-
this._dtsBuilder = new DtsBuilder(builderOptions);
|
|
138
|
-
|
|
139
|
-
// Initialize builders
|
|
140
|
-
await Promise.all([this._libraryBuilder.initialize(), this._dtsBuilder.initialize()]);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Start watch mode
|
|
146
|
-
* - Run initial build
|
|
147
|
-
* - Start watch hook watchers
|
|
148
|
-
* - Output results
|
|
149
|
-
*/
|
|
150
|
-
async start(): Promise<void> {
|
|
151
|
-
if (this._packages.length === 0 && this._watchHookPackages.length === 0) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// Start library build if there are library packages
|
|
156
|
-
if (this._packages.length > 0) {
|
|
157
|
-
// Set up initial build promises
|
|
158
|
-
const buildPromises = this._libraryBuilder.getInitialBuildPromises();
|
|
159
|
-
const dtsPromises = this._dtsBuilder.getInitialBuildPromises();
|
|
160
|
-
|
|
161
|
-
// Start copySrc watch
|
|
162
|
-
for (const pkg of this._packages) {
|
|
163
|
-
if (pkg.config.copySrc != null && pkg.config.copySrc.length > 0) {
|
|
164
|
-
const watcher = await watchCopySrcFiles(pkg.dir, pkg.config.copySrc);
|
|
165
|
-
this._copySrcWatchers.push(watcher);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
// Start watch (run in background)
|
|
170
|
-
void this._libraryBuilder.startWatch();
|
|
171
|
-
void this._dtsBuilder.startWatch();
|
|
172
|
-
|
|
173
|
-
// Start initial build
|
|
174
|
-
this._logger.start("Running initial build...");
|
|
175
|
-
|
|
176
|
-
// Set up complete promise array for library build and DTS build
|
|
177
|
-
const allBuildTasks: Array<{ name: string; promise: Promise<void> }> = [];
|
|
178
|
-
|
|
179
|
-
// Library build tasks
|
|
180
|
-
for (const pkg of this._packages) {
|
|
181
|
-
const promise = buildPromises.get(`${pkg.name}:build`) ?? Promise.resolve();
|
|
182
|
-
allBuildTasks.push({
|
|
183
|
-
name: `${pkg.name}:build`,
|
|
184
|
-
promise,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// DTS tasks
|
|
189
|
-
for (const pkg of this._packages) {
|
|
190
|
-
const promise = dtsPromises.get(`${pkg.name}:dts`) ?? Promise.resolve();
|
|
191
|
-
allBuildTasks.push({
|
|
192
|
-
name: `${pkg.name}:dts`,
|
|
193
|
-
promise,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// Run all build tasks concurrently (wait until initial build completes)
|
|
198
|
-
await Promise.allSettled(allBuildTasks.map((task) => task.promise));
|
|
199
|
-
|
|
200
|
-
this._logger.success("Initial build completed");
|
|
201
|
-
|
|
202
|
-
// Output initial build results
|
|
203
|
-
printErrors(this._resultCollector.toMap());
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Start watch hook watchers for scripts+watch packages
|
|
207
|
-
for (const pkg of this._watchHookPackages) {
|
|
208
|
-
const watchConfig = pkg.config.watch!;
|
|
209
|
-
const watchTargets = watchConfig.target.map((t) => path.resolve(pkg.dir, t));
|
|
210
|
-
|
|
211
|
-
// Run initial hook
|
|
212
|
-
this._runWatchHookCmd(pkg.name, pkg.dir, watchConfig.cmd, watchConfig.args);
|
|
213
|
-
|
|
214
|
-
// Start watching
|
|
215
|
-
const watcher = await FsWatcher.watch(watchTargets);
|
|
216
|
-
watcher.onChange({ delay: 300 }, () => {
|
|
217
|
-
this._runWatchHookCmd(pkg.name, pkg.dir, watchConfig.cmd, watchConfig.args);
|
|
218
|
-
});
|
|
219
|
-
this._watchHookWatchers.push(watcher);
|
|
220
|
-
|
|
221
|
-
this._logger.success(`Watch hook started: ${pkg.name}`);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Run watch hook command
|
|
227
|
-
*/
|
|
228
|
-
private _runWatchHookCmd(pkgName: string, cwd: string, cmd: string, args?: string[]): void {
|
|
229
|
-
const child = spawn(cmd, args ?? [], { cwd, stdio: "inherit", shell: true });
|
|
230
|
-
child.on("error", (err) => {
|
|
231
|
-
this._logger.error(`Watch hook error (${pkgName}): ${err.message}`);
|
|
232
|
-
});
|
|
233
|
-
child.on("close", (code) => {
|
|
234
|
-
if (code !== 0 && code !== null) {
|
|
235
|
-
this._logger.warn(`Watch hook (${pkgName}) exited with code ${String(code)}`);
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Wait for termination signal
|
|
242
|
-
*/
|
|
243
|
-
async awaitTermination(): Promise<void> {
|
|
244
|
-
if (this._packages.length === 0 && this._watchHookPackages.length === 0) {
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
await this._signalHandler.waitForTermination();
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Shutdown Orchestrator
|
|
252
|
-
*/
|
|
253
|
-
async shutdown(): Promise<void> {
|
|
254
|
-
if (this._packages.length === 0 && this._watchHookPackages.length === 0) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
process.stdout.write("⏳ Shutting down...\n");
|
|
259
|
-
|
|
260
|
-
const shutdownTasks: Array<Promise<void>> = [];
|
|
261
|
-
|
|
262
|
-
if (this._packages.length > 0) {
|
|
263
|
-
shutdownTasks.push(this._libraryBuilder.shutdown());
|
|
264
|
-
shutdownTasks.push(this._dtsBuilder.shutdown());
|
|
265
|
-
shutdownTasks.push(...this._copySrcWatchers.map((w) => w.close()));
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
shutdownTasks.push(...this._watchHookWatchers.map((w) => w.close()));
|
|
269
|
-
|
|
270
|
-
await Promise.all(shutdownTasks);
|
|
271
|
-
this._copySrcWatchers = [];
|
|
272
|
-
this._watchHookWatchers.length = 0;
|
|
273
|
-
this._replaceDepWatcher?.dispose();
|
|
274
|
-
|
|
275
|
-
process.stdout.write("✔ Done\n");
|
|
276
|
-
}
|
|
277
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
|
|
4
|
-
const jsExtensions = [".js", ".cjs", ".mjs"];
|
|
5
|
-
|
|
6
|
-
const jsResolutionOrder = ["", ".js", ".cjs", ".mjs", ".ts", ".cts", ".mts", ".jsx", ".tsx"];
|
|
7
|
-
const tsResolutionOrder = ["", ".ts", ".cts", ".mts", ".tsx", ".js", ".cjs", ".mjs", ".jsx"];
|
|
8
|
-
|
|
9
|
-
function resolveWithExtension(file: string, extensions: string[]): string | null {
|
|
10
|
-
for (const ext of extensions) {
|
|
11
|
-
const full = `${file}${ext}`;
|
|
12
|
-
if (fs.existsSync(full) && fs.statSync(full).isFile()) {
|
|
13
|
-
return full;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
for (const ext of extensions) {
|
|
17
|
-
const full = `${file}/index${ext}`;
|
|
18
|
-
if (fs.existsSync(full) && fs.statSync(full).isFile()) {
|
|
19
|
-
return full;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function resolvePackageFile(specifier: string, fromDir: string): string | null {
|
|
26
|
-
const parts = specifier.split("/");
|
|
27
|
-
const pkgName = specifier.startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
|
|
28
|
-
const subPath = specifier.startsWith("@") ? parts.slice(2).join("/") : parts.slice(1).join("/");
|
|
29
|
-
|
|
30
|
-
let searchDir = fromDir;
|
|
31
|
-
while (true) {
|
|
32
|
-
const candidate = path.join(searchDir, "node_modules", pkgName);
|
|
33
|
-
if (fs.existsSync(candidate)) {
|
|
34
|
-
const realDir = fs.realpathSync(candidate);
|
|
35
|
-
if (subPath) {
|
|
36
|
-
return resolveWithExtension(path.join(realDir, subPath), tsResolutionOrder);
|
|
37
|
-
}
|
|
38
|
-
return resolveWithExtension(path.join(realDir, "index"), tsResolutionOrder);
|
|
39
|
-
}
|
|
40
|
-
const parent = path.dirname(searchDir);
|
|
41
|
-
if (parent === searchDir) break;
|
|
42
|
-
searchDir = parent;
|
|
43
|
-
}
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Recursively collect dependencies of Tailwind config file
|
|
49
|
-
*
|
|
50
|
-
* Tailwind built-in `getModuleDependencies` only tracks relative path imports,
|
|
51
|
-
* but this function also resolves `node_modules` symlinks to track actual files for packages in specified scope.
|
|
52
|
-
*/
|
|
53
|
-
export function getTailwindConfigDeps(configPath: string, replaceDeps: string[]): string[] {
|
|
54
|
-
const seen = new Set<string>();
|
|
55
|
-
|
|
56
|
-
function isReplaceDepImport(specifier: string): boolean {
|
|
57
|
-
return replaceDeps.some((dep) => specifier === dep || specifier.startsWith(dep + "/"));
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function walk(absoluteFile: string): void {
|
|
61
|
-
if (seen.has(absoluteFile)) return;
|
|
62
|
-
if (!fs.existsSync(absoluteFile)) return;
|
|
63
|
-
seen.add(absoluteFile);
|
|
64
|
-
|
|
65
|
-
const base = path.dirname(absoluteFile);
|
|
66
|
-
const ext = path.extname(absoluteFile);
|
|
67
|
-
const extensions = jsExtensions.includes(ext) ? jsResolutionOrder : tsResolutionOrder;
|
|
68
|
-
|
|
69
|
-
let contents: string;
|
|
70
|
-
try {
|
|
71
|
-
contents = fs.readFileSync(absoluteFile, "utf-8");
|
|
72
|
-
} catch {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
for (const match of [
|
|
77
|
-
...contents.matchAll(/import[\s\S]*?['"](.{3,}?)['"]/gi),
|
|
78
|
-
...contents.matchAll(/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi),
|
|
79
|
-
...contents.matchAll(/require\(['"`](.+)['"`]\)/gi),
|
|
80
|
-
]) {
|
|
81
|
-
const specifier = match[1];
|
|
82
|
-
let resolved: string | null = null;
|
|
83
|
-
|
|
84
|
-
if (specifier.startsWith(".")) {
|
|
85
|
-
resolved = resolveWithExtension(path.resolve(base, specifier), extensions);
|
|
86
|
-
} else if (isReplaceDepImport(specifier)) {
|
|
87
|
-
resolved = resolvePackageFile(specifier, base);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (resolved != null) {
|
|
91
|
-
walk(resolved);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
walk(path.resolve(configPath));
|
|
97
|
-
return [...seen];
|
|
98
|
-
}
|
package/src/utils/template.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import Handlebars from "handlebars";
|
|
3
|
-
import { fsx } from "@simplysm/core-node";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Recursively traverse template directory, render with Handlebars, and generate files
|
|
7
|
-
*
|
|
8
|
-
* - `.hbs` extension files: Compile with Handlebars → save with `.hbs` removed from name
|
|
9
|
-
* - If `.hbs` result is empty string/whitespace only: skip file creation
|
|
10
|
-
* - Other files: copy as-is (binary)
|
|
11
|
-
*
|
|
12
|
-
* @param srcDir - Template source directory
|
|
13
|
-
* @param destDir - Output destination directory
|
|
14
|
-
* @param context - Handlebars template variables
|
|
15
|
-
* @param dirReplacements - Directory name substitution map (e.g., `{ __CLIENT__: "client-admin" }`)
|
|
16
|
-
*/
|
|
17
|
-
export async function renderTemplateDir(
|
|
18
|
-
srcDir: string,
|
|
19
|
-
destDir: string,
|
|
20
|
-
context: Record<string, unknown>,
|
|
21
|
-
dirReplacements?: Record<string, string>,
|
|
22
|
-
): Promise<void> {
|
|
23
|
-
await fsx.mkdir(destDir);
|
|
24
|
-
|
|
25
|
-
const entries = await fsx.readdir(srcDir);
|
|
26
|
-
|
|
27
|
-
for (const entry of entries) {
|
|
28
|
-
const srcPath = path.join(srcDir, entry);
|
|
29
|
-
const stat = await fsx.stat(srcPath);
|
|
30
|
-
|
|
31
|
-
if (stat.isDirectory()) {
|
|
32
|
-
// Apply directory name substitution
|
|
33
|
-
const destName = dirReplacements?.[entry] ?? entry;
|
|
34
|
-
await renderTemplateDir(
|
|
35
|
-
path.join(srcDir, entry),
|
|
36
|
-
path.join(destDir, destName),
|
|
37
|
-
context,
|
|
38
|
-
dirReplacements,
|
|
39
|
-
);
|
|
40
|
-
} else if (entry.endsWith(".hbs")) {
|
|
41
|
-
// Render Handlebars template
|
|
42
|
-
const source = await fsx.read(srcPath);
|
|
43
|
-
const template = Handlebars.compile(source, { noEscape: true });
|
|
44
|
-
const result = template(context);
|
|
45
|
-
|
|
46
|
-
// Skip file creation if result is empty or whitespace-only
|
|
47
|
-
if (result.trim().length === 0) continue;
|
|
48
|
-
|
|
49
|
-
const destFileName = entry.slice(0, -4); // Remove .hbs
|
|
50
|
-
await fsx.write(path.join(destDir, destFileName), result);
|
|
51
|
-
} else {
|
|
52
|
-
// Copy binary files as-is
|
|
53
|
-
await fsx.copy(srcPath, path.join(destDir, entry));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|