@simplysm/sd-cli 13.0.68 → 13.0.70
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/README.md +10 -957
- package/dist/builders/BaseBuilder.d.ts +23 -23
- package/dist/builders/BaseBuilder.d.ts.map +1 -1
- package/dist/builders/BaseBuilder.js +15 -15
- package/dist/builders/DtsBuilder.d.ts +4 -4
- package/dist/builders/DtsBuilder.js +1 -1
- package/dist/builders/LibraryBuilder.d.ts +3 -3
- package/dist/builders/types.d.ts +10 -10
- package/dist/capacitor/capacitor.d.ts +36 -36
- package/dist/capacitor/capacitor.js +63 -63
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/add-client.d.ts +8 -8
- package/dist/commands/add-client.js +15 -15
- package/dist/commands/add-client.js.map +1 -1
- package/dist/commands/add-server.d.ts +9 -9
- package/dist/commands/add-server.js +13 -13
- package/dist/commands/add-server.js.map +1 -1
- package/dist/commands/build.d.ts +9 -9
- package/dist/commands/check.js +3 -3
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/dev.d.ts +9 -9
- package/dist/commands/device.d.ts +9 -9
- package/dist/commands/device.d.ts.map +1 -1
- package/dist/commands/device.js +17 -17
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/init.d.ts +6 -6
- package/dist/commands/init.js +12 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lint.d.ts +23 -23
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +25 -25
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/publish.d.ts +13 -13
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +61 -61
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/replace-deps.d.ts +3 -3
- package/dist/commands/replace-deps.d.ts.map +1 -1
- package/dist/commands/replace-deps.js +1 -1
- package/dist/commands/replace-deps.js.map +1 -1
- package/dist/commands/typecheck.d.ts +20 -20
- package/dist/commands/typecheck.d.ts.map +1 -1
- package/dist/commands/typecheck.js +20 -20
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/commands/watch.d.ts +7 -7
- package/dist/electron/electron.d.ts +27 -27
- package/dist/electron/electron.js +32 -32
- package/dist/electron/electron.js.map +1 -1
- package/dist/infra/ResultCollector.d.ts +9 -9
- package/dist/infra/ResultCollector.js +5 -5
- package/dist/infra/SignalHandler.d.ts +7 -7
- package/dist/infra/SignalHandler.js +4 -4
- package/dist/infra/WorkerManager.d.ts +14 -14
- package/dist/infra/WorkerManager.js +11 -11
- package/dist/orchestrators/BuildOrchestrator.d.ts +19 -19
- package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +26 -26
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevOrchestrator.d.ts +25 -25
- package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevOrchestrator.js +30 -30
- package/dist/orchestrators/DevOrchestrator.js.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.d.ts +13 -13
- package/dist/orchestrators/WatchOrchestrator.js +17 -17
- package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
- package/dist/sd-cli-entry.d.ts +2 -2
- package/dist/sd-cli-entry.js +38 -38
- package/dist/sd-cli-entry.js.map +1 -1
- package/dist/sd-cli.d.ts +2 -2
- package/dist/sd-cli.js +1 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/sd-config.types.d.ts +84 -84
- package/dist/sd-config.types.d.ts.map +1 -1
- package/dist/utils/build-env.d.ts +1 -1
- package/dist/utils/config-editor.d.ts +5 -5
- package/dist/utils/config-editor.js +2 -2
- package/dist/utils/config-editor.js.map +1 -1
- package/dist/utils/copy-public.d.ts +9 -9
- package/dist/utils/copy-src.d.ts +9 -9
- package/dist/utils/esbuild-config.d.ts +30 -30
- package/dist/utils/esbuild-config.d.ts.map +1 -1
- package/dist/utils/output-utils.d.ts +6 -6
- package/dist/utils/package-utils.d.ts +6 -6
- package/dist/utils/package-utils.js +1 -1
- package/dist/utils/package-utils.js.map +1 -1
- package/dist/utils/rebuild-manager.js +3 -3
- package/dist/utils/rebuild-manager.js.map +1 -1
- package/dist/utils/replace-deps.d.ts +25 -25
- package/dist/utils/replace-deps.js +3 -3
- package/dist/utils/replace-deps.js.map +1 -1
- package/dist/utils/sd-config.d.ts +3 -3
- package/dist/utils/sd-config.js +3 -3
- package/dist/utils/sd-config.js.map +1 -1
- package/dist/utils/tailwind-config-deps.d.ts +3 -3
- package/dist/utils/template.d.ts +8 -8
- package/dist/utils/tsconfig.d.ts +16 -16
- package/dist/utils/tsconfig.js +2 -2
- package/dist/utils/tsconfig.js.map +1 -1
- package/dist/utils/typecheck-serialization.d.ts +8 -8
- package/dist/utils/vite-config.d.ts +8 -8
- package/dist/utils/vite-config.d.ts.map +1 -1
- package/dist/utils/vite-config.js +3 -3
- package/dist/utils/worker-events.d.ts +12 -12
- package/dist/utils/worker-events.d.ts.map +1 -1
- package/dist/utils/worker-utils.d.ts +3 -3
- package/dist/utils/worker-utils.js +2 -2
- package/dist/utils/worker-utils.js.map +1 -1
- package/dist/workers/client.worker.d.ts +14 -14
- package/dist/workers/client.worker.d.ts.map +1 -1
- package/dist/workers/client.worker.js +1 -1
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/dts.worker.d.ts +13 -13
- package/dist/workers/dts.worker.d.ts.map +1 -1
- package/dist/workers/dts.worker.js +3 -3
- package/dist/workers/dts.worker.js.map +1 -1
- package/dist/workers/library.worker.d.ts +12 -12
- package/dist/workers/library.worker.js +1 -1
- package/dist/workers/library.worker.js.map +1 -1
- package/dist/workers/lint.worker.d.ts +1 -1
- package/dist/workers/server-runtime.worker.d.ts +6 -6
- package/dist/workers/server-runtime.worker.js +6 -6
- package/dist/workers/server-runtime.worker.js.map +1 -1
- package/dist/workers/server.worker.d.ts +20 -20
- package/dist/workers/server.worker.d.ts.map +1 -1
- package/dist/workers/server.worker.js +6 -6
- package/dist/workers/server.worker.js.map +1 -1
- package/package.json +8 -7
- package/src/builders/BaseBuilder.ts +33 -33
- package/src/builders/DtsBuilder.ts +5 -5
- package/src/builders/LibraryBuilder.ts +9 -9
- package/src/builders/types.ts +10 -10
- package/src/capacitor/capacitor.ts +119 -119
- package/src/commands/add-client.ts +31 -31
- package/src/commands/add-server.ts +34 -34
- package/src/commands/build.ts +9 -9
- package/src/commands/check.ts +5 -5
- package/src/commands/dev.ts +9 -9
- package/src/commands/device.ts +30 -30
- package/src/commands/init.ts +25 -25
- package/src/commands/lint.ts +64 -64
- package/src/commands/publish.ts +139 -139
- package/src/commands/replace-deps.ts +4 -4
- package/src/commands/typecheck.ts +74 -74
- package/src/commands/watch.ts +7 -7
- package/src/electron/electron.ts +51 -51
- package/src/infra/ResultCollector.ts +9 -9
- package/src/infra/SignalHandler.ts +7 -7
- package/src/infra/WorkerManager.ts +14 -14
- package/src/orchestrators/BuildOrchestrator.ts +76 -76
- package/src/orchestrators/DevOrchestrator.ts +88 -88
- package/src/orchestrators/WatchOrchestrator.ts +39 -39
- package/src/sd-cli-entry.ts +43 -43
- package/src/sd-cli.ts +15 -15
- package/src/sd-config.types.ts +85 -85
- package/src/utils/build-env.ts +1 -1
- package/src/utils/config-editor.ts +19 -19
- package/src/utils/copy-public.ts +17 -17
- package/src/utils/copy-src.ts +11 -11
- package/src/utils/esbuild-config.ts +33 -33
- package/src/utils/output-utils.ts +11 -11
- package/src/utils/package-utils.ts +12 -12
- package/src/utils/rebuild-manager.ts +3 -3
- package/src/utils/replace-deps.ts +361 -361
- package/src/utils/sd-config.ts +44 -44
- package/src/utils/tailwind-config-deps.ts +98 -98
- package/src/utils/template.ts +56 -56
- package/src/utils/tsconfig.ts +127 -127
- package/src/utils/typecheck-serialization.ts +86 -86
- package/src/utils/vite-config.ts +341 -341
- package/src/utils/worker-events.ts +16 -16
- package/src/utils/worker-utils.ts +45 -45
- package/src/workers/client.worker.ts +34 -34
- package/src/workers/dts.worker.ts +467 -467
- package/src/workers/library.worker.ts +314 -314
- package/src/workers/lint.worker.ts +16 -16
- package/src/workers/server-runtime.worker.ts +157 -157
- package/src/workers/server.worker.ts +572 -572
- package/templates/add-client/__CLIENT__/package.json.hbs +1 -1
- package/templates/add-server/__SERVER__/package.json.hbs +2 -2
- package/templates/init/package.json.hbs +3 -3
- package/tests/config-editor.spec.ts +160 -0
- package/tests/copy-src.spec.ts +50 -0
- package/tests/get-compiler-options-for-package.spec.ts +139 -0
- package/tests/get-package-source-files.spec.ts +181 -0
- package/tests/get-types-from-package-json.spec.ts +107 -0
- package/tests/infra/ResultCollector.spec.ts +39 -0
- package/tests/infra/SignalHandler.spec.ts +38 -0
- package/tests/infra/WorkerManager.spec.ts +97 -0
- package/tests/load-ignore-patterns.spec.ts +188 -0
- package/tests/load-sd-config.spec.ts +137 -0
- package/tests/package-utils.spec.ts +188 -0
- package/tests/parse-root-tsconfig.spec.ts +89 -0
- package/tests/replace-deps.spec.ts +308 -0
- package/tests/run-lint.spec.ts +415 -0
- package/tests/run-typecheck.spec.ts +653 -0
- package/tests/run-watch.spec.ts +75 -0
- package/tests/sd-cli.spec.ts +330 -0
- package/tests/tailwind-config-deps.spec.ts +30 -0
- package/tests/template.spec.ts +70 -0
- package/tests/utils/rebuild-manager.spec.ts +43 -0
- package/tests/write-changed-output-files.spec.ts +97 -0
|
@@ -6,24 +6,24 @@ import { formatBuildMessages } from "./output-utils";
|
|
|
6
6
|
|
|
7
7
|
const workerEventsLogger = consola.withTag("sd:cli:worker-events");
|
|
8
8
|
|
|
9
|
-
/** Worker
|
|
9
|
+
/** Worker build completion event data */
|
|
10
10
|
export interface BuildEventData {
|
|
11
11
|
success: boolean;
|
|
12
12
|
errors?: string[];
|
|
13
13
|
warnings?: string[];
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
/** Worker
|
|
16
|
+
/** Worker error event data */
|
|
17
17
|
export interface ErrorEventData {
|
|
18
18
|
message: string;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
/** Worker
|
|
21
|
+
/** Worker server ready event data */
|
|
22
22
|
export interface ServerReadyEventData {
|
|
23
23
|
port: number;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
/** Server Build
|
|
26
|
+
/** Server Build completion event data */
|
|
27
27
|
export interface ServerBuildEventData {
|
|
28
28
|
success: boolean;
|
|
29
29
|
mainJsPath: string;
|
|
@@ -32,7 +32,7 @@ export interface ServerBuildEventData {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* Base Worker info type
|
|
36
36
|
*/
|
|
37
37
|
export interface BaseWorkerInfo<TEvents extends Record<string, unknown> = Record<string, unknown>> {
|
|
38
38
|
name: string;
|
|
@@ -46,7 +46,7 @@ export interface BaseWorkerInfo<TEvents extends Record<string, unknown> = Record
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
* Worker
|
|
49
|
+
* Worker event handler options
|
|
50
50
|
*/
|
|
51
51
|
export interface WorkerEventHandlerOptions {
|
|
52
52
|
resultKey: string;
|
|
@@ -55,13 +55,13 @@ export interface WorkerEventHandlerOptions {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
58
|
+
* Register common Worker event handlers (buildStart, build, error only - serverReady not included)
|
|
59
59
|
*
|
|
60
|
-
* @param workerInfo Worker
|
|
61
|
-
* @param opts
|
|
62
|
-
* @param results
|
|
63
|
-
* @param rebuildManager
|
|
64
|
-
* @returns completeTask
|
|
60
|
+
* @param workerInfo Worker info
|
|
61
|
+
* @param opts Handler options
|
|
62
|
+
* @param results Result map
|
|
63
|
+
* @param rebuildManager Rebuild manager
|
|
64
|
+
* @returns completeTask function (saves result and signals build completion)
|
|
65
65
|
*/
|
|
66
66
|
export function registerWorkerEventHandlers<
|
|
67
67
|
TEvents extends Record<string, unknown>,
|
|
@@ -79,19 +79,19 @@ export function registerWorkerEventHandlers<
|
|
|
79
79
|
workerInfo.isInitialBuild = false;
|
|
80
80
|
};
|
|
81
81
|
|
|
82
|
-
//
|
|
82
|
+
// Build start (on rebuild)
|
|
83
83
|
workerInfo.worker.on("buildStart", () => {
|
|
84
84
|
if (!workerInfo.isInitialBuild) {
|
|
85
85
|
workerInfo.buildResolver = rebuildManager.registerBuild(opts.resultKey, opts.listrTitle);
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
|
|
89
|
-
//
|
|
89
|
+
// Build completion
|
|
90
90
|
workerInfo.worker.on("build", (_data) => {
|
|
91
91
|
const data = _data as BuildEventData;
|
|
92
92
|
workerEventsLogger.debug(`[${workerInfo.name}] build: success=${String(data.success)}`);
|
|
93
93
|
|
|
94
|
-
// warnings
|
|
94
|
+
// Print warnings
|
|
95
95
|
if (data.warnings != null && data.warnings.length > 0) {
|
|
96
96
|
workerEventsLogger.warn(
|
|
97
97
|
formatBuildMessages(workerInfo.name, workerInfo.config.target, data.warnings),
|
|
@@ -107,7 +107,7 @@ export function registerWorkerEventHandlers<
|
|
|
107
107
|
});
|
|
108
108
|
});
|
|
109
109
|
|
|
110
|
-
//
|
|
110
|
+
// Error
|
|
111
111
|
workerInfo.worker.on("error", (_data) => {
|
|
112
112
|
const data = _data as ErrorEventData;
|
|
113
113
|
workerEventsLogger.debug(`[${workerInfo.name}] error: ${data.message}`);
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import type { ConsolaInstance } from "consola";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Register cleanup handlers for worker process shutdown signals
|
|
5
|
-
*
|
|
6
|
-
* Registers SIGINT and SIGTERM handlers to gracefully cleanup resources
|
|
7
|
-
* before process exit. Both handlers execute the cleanup function and
|
|
8
|
-
* exit with code 0.
|
|
9
|
-
*
|
|
10
|
-
* @param cleanup - Async cleanup function to execute on shutdown
|
|
11
|
-
* @param logger - Consola logger instance for error logging
|
|
12
|
-
*/
|
|
13
|
-
export function registerCleanupHandlers(
|
|
14
|
-
cleanup: () => Promise<void>,
|
|
15
|
-
logger: ConsolaInstance,
|
|
16
|
-
): void {
|
|
17
|
-
const handleSignal = () => {
|
|
18
|
-
cleanup()
|
|
19
|
-
.catch((err) => {
|
|
20
|
-
logger.error("cleanup
|
|
21
|
-
})
|
|
22
|
-
.finally(() => {
|
|
23
|
-
process.exit(0);
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
process.on("SIGTERM", handleSignal);
|
|
28
|
-
process.on("SIGINT", handleSignal);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* @param label -
|
|
35
|
-
* @returns
|
|
36
|
-
*/
|
|
37
|
-
export function createOnceGuard(label: string): () => void {
|
|
38
|
-
let called = false;
|
|
39
|
-
return () => {
|
|
40
|
-
if (called) {
|
|
41
|
-
throw new Error(`${label}
|
|
42
|
-
}
|
|
43
|
-
called = true;
|
|
44
|
-
};
|
|
45
|
-
}
|
|
1
|
+
import type { ConsolaInstance } from "consola";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Register cleanup handlers for worker process shutdown signals
|
|
5
|
+
*
|
|
6
|
+
* Registers SIGINT and SIGTERM handlers to gracefully cleanup resources
|
|
7
|
+
* before process exit. Both handlers execute the cleanup function and
|
|
8
|
+
* exit with code 0.
|
|
9
|
+
*
|
|
10
|
+
* @param cleanup - Async cleanup function to execute on shutdown
|
|
11
|
+
* @param logger - Consola logger instance for error logging
|
|
12
|
+
*/
|
|
13
|
+
export function registerCleanupHandlers(
|
|
14
|
+
cleanup: () => Promise<void>,
|
|
15
|
+
logger: ConsolaInstance,
|
|
16
|
+
): void {
|
|
17
|
+
const handleSignal = () => {
|
|
18
|
+
cleanup()
|
|
19
|
+
.catch((err) => {
|
|
20
|
+
logger.error("cleanup failed", err);
|
|
21
|
+
})
|
|
22
|
+
.finally(() => {
|
|
23
|
+
process.exit(0);
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
process.on("SIGTERM", handleSignal);
|
|
28
|
+
process.on("SIGINT", handleSignal);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Create guard to prevent duplicate calls to Worker function
|
|
33
|
+
*
|
|
34
|
+
* @param label - Function name to use in error message
|
|
35
|
+
* @returns Guard function that throws error if called twice
|
|
36
|
+
*/
|
|
37
|
+
export function createOnceGuard(label: string): () => void {
|
|
38
|
+
let called = false;
|
|
39
|
+
return () => {
|
|
40
|
+
if (called) {
|
|
41
|
+
throw new Error(`${label} can only be called once per Worker`);
|
|
42
|
+
}
|
|
43
|
+
called = true;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -13,7 +13,7 @@ import { registerCleanupHandlers, createOnceGuard } from "../utils/worker-utils"
|
|
|
13
13
|
//#region Types
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* Client
|
|
16
|
+
* Client build information (for one-time build)
|
|
17
17
|
*/
|
|
18
18
|
export interface ClientBuildInfo {
|
|
19
19
|
name: string;
|
|
@@ -23,7 +23,7 @@ export interface ClientBuildInfo {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* Client
|
|
26
|
+
* Client build result
|
|
27
27
|
*/
|
|
28
28
|
export interface ClientBuildResult {
|
|
29
29
|
success: boolean;
|
|
@@ -31,19 +31,19 @@ export interface ClientBuildResult {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* Client
|
|
34
|
+
* Client watch information
|
|
35
35
|
*/
|
|
36
36
|
export interface ClientWatchInfo {
|
|
37
37
|
name: string;
|
|
38
38
|
config: SdClientPackageConfig;
|
|
39
39
|
cwd: string;
|
|
40
40
|
pkgDir: string;
|
|
41
|
-
/** sd.config.ts
|
|
41
|
+
/** replaceDeps configuration from sd.config.ts */
|
|
42
42
|
replaceDeps?: Record<string, string>;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
46
|
+
* Build event
|
|
47
47
|
*/
|
|
48
48
|
export interface ClientBuildEvent {
|
|
49
49
|
success: boolean;
|
|
@@ -51,21 +51,21 @@ export interface ClientBuildEvent {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* Server ready event
|
|
55
55
|
*/
|
|
56
56
|
export interface ClientServerReadyEvent {
|
|
57
57
|
port: number;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
61
|
+
* Error event
|
|
62
62
|
*/
|
|
63
63
|
export interface ClientErrorEvent {
|
|
64
64
|
message: string;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* Worker
|
|
68
|
+
* Worker event types
|
|
69
69
|
*/
|
|
70
70
|
export interface ClientWorkerEvents extends Record<string, unknown> {
|
|
71
71
|
buildStart: Record<string, never>;
|
|
@@ -77,19 +77,19 @@ export interface ClientWorkerEvents extends Record<string, unknown> {
|
|
|
77
77
|
|
|
78
78
|
//#endregion
|
|
79
79
|
|
|
80
|
-
//#region
|
|
80
|
+
//#region Resource Management
|
|
81
81
|
|
|
82
82
|
const logger = consola.withTag("sd:cli:client:worker");
|
|
83
83
|
|
|
84
|
-
/** Vite dev server (
|
|
84
|
+
/** Vite dev server (to be cleaned up) */
|
|
85
85
|
let viteServer: ViteDevServer | undefined;
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
|
-
*
|
|
88
|
+
* Clean up resources
|
|
89
89
|
*/
|
|
90
90
|
async function cleanup(): Promise<void> {
|
|
91
|
-
//
|
|
92
|
-
// (
|
|
91
|
+
// Capture global variable to temporary variable and initialize
|
|
92
|
+
// (other calls can modify global variable while Promise.all is waiting)
|
|
93
93
|
const serverToClose = viteServer;
|
|
94
94
|
viteServer = undefined;
|
|
95
95
|
|
|
@@ -98,9 +98,9 @@ async function cleanup(): Promise<void> {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
//
|
|
101
|
+
// Clean up resources before process termination (SIGTERM/SIGINT)
|
|
102
|
+
// Note: worker.terminate() terminates immediately without calling these handlers.
|
|
103
|
+
// However, normal shutdown in watch mode is done through SIGINT/SIGTERM of main process, so no issues.
|
|
104
104
|
registerCleanupHandlers(cleanup, logger);
|
|
105
105
|
|
|
106
106
|
//#endregion
|
|
@@ -108,22 +108,22 @@ registerCleanupHandlers(cleanup, logger);
|
|
|
108
108
|
//#region Worker
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
|
-
*
|
|
111
|
+
* One-time build
|
|
112
112
|
*/
|
|
113
113
|
async function build(info: ClientBuildInfo): Promise<ClientBuildResult> {
|
|
114
114
|
try {
|
|
115
|
-
// tsconfig
|
|
115
|
+
// Parse tsconfig
|
|
116
116
|
const parsedConfig = parseRootTsconfig(info.cwd);
|
|
117
117
|
const tsconfigPath = path.join(info.cwd, "tsconfig.json");
|
|
118
118
|
|
|
119
|
-
//
|
|
119
|
+
// Create compilerOptions for browser target
|
|
120
120
|
const compilerOptions = await getCompilerOptionsForPackage(
|
|
121
121
|
parsedConfig.options,
|
|
122
122
|
"browser",
|
|
123
123
|
info.pkgDir,
|
|
124
124
|
);
|
|
125
125
|
|
|
126
|
-
// Vite
|
|
126
|
+
// Create Vite configuration and build
|
|
127
127
|
const viteConfig = createViteConfig({
|
|
128
128
|
pkgDir: info.pkgDir,
|
|
129
129
|
name: info.name,
|
|
@@ -151,33 +151,33 @@ async function build(info: ClientBuildInfo): Promise<ClientBuildResult> {
|
|
|
151
151
|
const guardStartWatch = createOnceGuard("startWatch");
|
|
152
152
|
|
|
153
153
|
/**
|
|
154
|
-
* watch
|
|
155
|
-
* @remarks
|
|
156
|
-
* @throws
|
|
154
|
+
* Start watch (Vite dev server)
|
|
155
|
+
* @remarks This function should be called only once per worker.
|
|
156
|
+
* @throws If watch is already started
|
|
157
157
|
*/
|
|
158
158
|
async function startWatch(info: ClientWatchInfo): Promise<void> {
|
|
159
159
|
guardStartWatch();
|
|
160
160
|
|
|
161
161
|
try {
|
|
162
|
-
// tsconfig
|
|
162
|
+
// Parse tsconfig
|
|
163
163
|
const parsedConfig = parseRootTsconfig(info.cwd);
|
|
164
164
|
const tsconfigPath = path.join(info.cwd, "tsconfig.json");
|
|
165
165
|
|
|
166
|
-
//
|
|
166
|
+
// Create compilerOptions for browser target
|
|
167
167
|
const compilerOptions = await getCompilerOptionsForPackage(
|
|
168
168
|
parsedConfig.options,
|
|
169
169
|
"browser",
|
|
170
170
|
info.pkgDir,
|
|
171
171
|
);
|
|
172
172
|
|
|
173
|
-
// server
|
|
174
|
-
// server
|
|
173
|
+
// If server is 0, auto-assign port (server-connected client)
|
|
174
|
+
// If server is a number, use that port (standalone client)
|
|
175
175
|
const serverPort = typeof info.config.server === "number" ? info.config.server : 0;
|
|
176
176
|
|
|
177
|
-
//
|
|
177
|
+
// Collect replaceDeps based on dependencies
|
|
178
178
|
const { replaceDeps } = collectDeps(info.pkgDir, info.cwd, info.replaceDeps);
|
|
179
179
|
|
|
180
|
-
// Vite
|
|
180
|
+
// Create Vite configuration
|
|
181
181
|
const viteConfig = createViteConfig({
|
|
182
182
|
pkgDir: info.pkgDir,
|
|
183
183
|
name: info.name,
|
|
@@ -190,7 +190,7 @@ async function startWatch(info: ClientWatchInfo): Promise<void> {
|
|
|
190
190
|
onScopeRebuild: () => sender.send("scopeRebuild", {}),
|
|
191
191
|
});
|
|
192
192
|
|
|
193
|
-
// Vite dev server
|
|
193
|
+
// Start Vite dev server
|
|
194
194
|
viteServer = await createServer(viteConfig);
|
|
195
195
|
await viteServer.listen();
|
|
196
196
|
|
|
@@ -199,12 +199,12 @@ async function startWatch(info: ClientWatchInfo): Promise<void> {
|
|
|
199
199
|
fs.mkdirSync(path.dirname(confDistPath), { recursive: true });
|
|
200
200
|
fs.writeFileSync(confDistPath, JSON.stringify(info.config.configs ?? {}, undefined, 2));
|
|
201
201
|
|
|
202
|
-
//
|
|
202
|
+
// Get actual assigned port (config.server.port is the configured value, so get actual port from httpServer)
|
|
203
203
|
const address = viteServer.httpServer?.address();
|
|
204
204
|
const actualPort = typeof address === "object" && address != null ? address.port : undefined;
|
|
205
205
|
|
|
206
206
|
if (actualPort == null) {
|
|
207
|
-
sender.send("error", { message: "Vite dev server port
|
|
207
|
+
sender.send("error", { message: "Unable to determine Vite dev server port." });
|
|
208
208
|
return;
|
|
209
209
|
}
|
|
210
210
|
|
|
@@ -217,8 +217,8 @@ async function startWatch(info: ClientWatchInfo): Promise<void> {
|
|
|
217
217
|
}
|
|
218
218
|
|
|
219
219
|
/**
|
|
220
|
-
* watch
|
|
221
|
-
* @remarks Vite dev server
|
|
220
|
+
* Stop watch
|
|
221
|
+
* @remarks Clean up Vite dev server.
|
|
222
222
|
*/
|
|
223
223
|
async function stopWatch(): Promise<void> {
|
|
224
224
|
await cleanup();
|