@simplysm/sd-cli 13.0.76 → 13.0.77
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 +341 -16
- package/dist/builders/DtsBuilder.js +2 -2
- package/dist/builders/DtsBuilder.js.map +1 -1
- package/dist/builders/LibraryBuilder.d.ts +3 -3
- package/dist/builders/LibraryBuilder.d.ts.map +1 -1
- package/dist/builders/LibraryBuilder.js +2 -2
- package/dist/builders/LibraryBuilder.js.map +1 -1
- package/dist/builders/types.d.ts +7 -1
- package/dist/builders/types.d.ts.map +1 -1
- package/dist/capacitor/capacitor.d.ts +5 -0
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +59 -59
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/check.js +4 -4
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/device.js +3 -3
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/lint.js +4 -4
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/publish.js +20 -20
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/replace-deps.js +1 -1
- package/dist/commands/replace-deps.js.map +1 -1
- package/dist/commands/typecheck.js +9 -9
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/electron/electron.js +16 -16
- package/dist/electron/electron.js.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +6 -6
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevOrchestrator.d.ts +7 -6
- package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevOrchestrator.js +157 -203
- package/dist/orchestrators/DevOrchestrator.js.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.js +3 -4
- package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
- package/dist/sd-cli.js +1 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/sd-config.types.d.ts +9 -3
- package/dist/sd-config.types.d.ts.map +1 -1
- package/dist/utils/copy-public.d.ts.map +1 -1
- package/dist/utils/copy-public.js +23 -27
- package/dist/utils/copy-public.js.map +1 -1
- package/dist/utils/copy-src.d.ts.map +1 -1
- package/dist/utils/copy-src.js +7 -7
- package/dist/utils/copy-src.js.map +1 -1
- package/dist/utils/esbuild-config.d.ts.map +1 -1
- package/dist/utils/esbuild-config.js +36 -42
- package/dist/utils/esbuild-config.js.map +1 -1
- package/dist/utils/replace-deps.js +7 -7
- package/dist/utils/replace-deps.js.map +1 -1
- package/dist/utils/sd-config.js +2 -2
- package/dist/utils/sd-config.js.map +1 -1
- package/dist/utils/template.js +7 -7
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/tsconfig.d.ts +1 -2
- package/dist/utils/tsconfig.d.ts.map +1 -1
- package/dist/utils/tsconfig.js +5 -8
- package/dist/utils/tsconfig.js.map +1 -1
- package/dist/utils/typecheck-serialization.js +2 -2
- package/dist/utils/typecheck-serialization.js.map +1 -1
- package/dist/utils/vite-config.d.ts +2 -0
- package/dist/utils/vite-config.d.ts.map +1 -1
- package/dist/utils/vite-config.js +36 -3
- package/dist/utils/vite-config.js.map +1 -1
- package/dist/utils/worker-events.d.ts +11 -1
- package/dist/utils/worker-events.d.ts.map +1 -1
- package/dist/utils/worker-events.js +3 -5
- package/dist/utils/worker-events.js.map +1 -1
- package/dist/utils/worker-utils.d.ts +2 -2
- package/dist/utils/worker-utils.d.ts.map +1 -1
- package/dist/utils/worker-utils.js +1 -1
- package/dist/utils/worker-utils.js.map +1 -1
- package/dist/workers/client.worker.d.ts +1 -1
- package/dist/workers/client.worker.js +3 -3
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/dts.worker.d.ts +1 -1
- package/dist/workers/dts.worker.d.ts.map +1 -1
- package/dist/workers/dts.worker.js +13 -28
- package/dist/workers/dts.worker.js.map +1 -1
- package/dist/workers/library.worker.d.ts +1 -1
- package/dist/workers/library.worker.js +4 -4
- 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 +1 -1
- package/dist/workers/server-runtime.worker.js +4 -4
- package/dist/workers/server-runtime.worker.js.map +1 -1
- package/dist/workers/server.worker.d.ts +1 -1
- package/dist/workers/server.worker.js +6 -6
- package/dist/workers/server.worker.js.map +1 -1
- package/package.json +4 -4
- package/src/builders/DtsBuilder.ts +2 -2
- package/src/builders/LibraryBuilder.ts +7 -10
- package/src/builders/types.ts +6 -1
- package/src/capacitor/capacitor.ts +61 -60
- package/src/commands/check.ts +4 -4
- package/src/commands/device.ts +3 -3
- package/src/commands/lint.ts +4 -4
- package/src/commands/publish.ts +20 -20
- package/src/commands/replace-deps.ts +1 -1
- package/src/commands/typecheck.ts +9 -9
- package/src/electron/electron.ts +16 -16
- package/src/orchestrators/BuildOrchestrator.ts +6 -6
- package/src/orchestrators/DevOrchestrator.ts +210 -256
- package/src/orchestrators/WatchOrchestrator.ts +8 -10
- package/src/sd-cli.ts +1 -1
- package/src/sd-config.types.ts +10 -3
- package/src/utils/copy-public.ts +22 -26
- package/src/utils/copy-src.ts +7 -7
- package/src/utils/esbuild-config.ts +51 -63
- package/src/utils/replace-deps.ts +7 -7
- package/src/utils/sd-config.ts +2 -2
- package/src/utils/template.ts +7 -7
- package/src/utils/tsconfig.ts +6 -10
- package/src/utils/typecheck-serialization.ts +2 -2
- package/src/utils/vite-config.ts +376 -341
- package/src/utils/worker-events.ts +13 -10
- package/src/utils/worker-utils.ts +45 -45
- package/src/workers/client.worker.ts +3 -3
- package/src/workers/dts.worker.ts +451 -467
- package/src/workers/library.worker.ts +4 -4
- package/src/workers/server-runtime.worker.ts +4 -4
- package/src/workers/server.worker.ts +572 -572
- package/templates/init/package.json.hbs +2 -2
- package/templates/init/packages/client-admin/package.json.hbs +5 -5
- package/templates/init/packages/client-admin/src/views/auth/LoginView.tsx +2 -2
- package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeSheet.tsx.hbs +1 -1
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleSheet.tsx.hbs +1 -1
- package/templates/init/packages/db-main/package.json.hbs +2 -2
- package/templates/init/packages/server/package.json.hbs +4 -4
- package/templates/init/tests/e2e/package.json.hbs +1 -1
- package/tests/get-compiler-options-for-package.spec.ts +13 -27
- package/tests/get-types-from-package-json.spec.ts +15 -11
- package/tests/load-ignore-patterns.spec.ts +15 -11
- package/tests/load-sd-config.spec.ts +16 -14
- package/tests/publish-config-narrowing.spec.ts +20 -0
- package/tests/run-lint.spec.ts +38 -34
- package/tests/run-typecheck.spec.ts +194 -135
- package/tests/sd-public-dev-plugin-mime.spec.ts +19 -0
- package/dist/builders/index.d.ts +0 -5
- package/dist/builders/index.d.ts.map +0 -1
- package/dist/builders/index.js +0 -5
- package/dist/builders/index.js.map +0 -6
- package/dist/infra/index.d.ts +0 -4
- package/dist/infra/index.d.ts.map +0 -1
- package/dist/infra/index.js +0 -4
- package/dist/infra/index.js.map +0 -6
- package/dist/orchestrators/index.d.ts +0 -4
- package/dist/orchestrators/index.d.ts.map +0 -1
- package/dist/orchestrators/index.js +0 -4
- package/dist/orchestrators/index.js.map +0 -6
- package/src/builders/index.ts +0 -4
- package/src/infra/index.ts +0 -3
- package/src/orchestrators/index.ts +0 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/workers/server.worker.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAS,iBAAiB;AAC1B,OAAO,aAAa;AACpB,SAAS,cAAc,WAAW,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/sd-cli",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.77",
|
|
4
4
|
"description": "Simplysm package - CLI tool",
|
|
5
5
|
"author": "simplysm",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"vite-plugin-solid": "^2.11.10",
|
|
43
43
|
"vite-tsconfig-paths": "^6.1.1",
|
|
44
44
|
"yargs": "^18.0.0",
|
|
45
|
-
"@simplysm/core-common": "13.0.
|
|
46
|
-
"@simplysm/
|
|
47
|
-
"@simplysm/
|
|
45
|
+
"@simplysm/core-common": "13.0.77",
|
|
46
|
+
"@simplysm/storage": "13.0.77",
|
|
47
|
+
"@simplysm/core-node": "13.0.77"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/semver": "^7.7.1",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type * as DtsWorkerModule from "../workers/dts.worker";
|
|
2
2
|
import type { BuildResult } from "../infra/ResultCollector";
|
|
3
|
-
import {
|
|
3
|
+
import { err as errNs } from "@simplysm/core-common";
|
|
4
4
|
import type { TypecheckEnv } from "../utils/tsconfig";
|
|
5
5
|
import { BaseBuilder } from "./BaseBuilder";
|
|
6
6
|
import type { PackageInfo } from "./types";
|
|
@@ -83,7 +83,7 @@ export class DtsBuilder extends BaseBuilder {
|
|
|
83
83
|
target: pkg.config.target,
|
|
84
84
|
type: "dts",
|
|
85
85
|
status: "error",
|
|
86
|
-
message:
|
|
86
|
+
message: errNs.message(err),
|
|
87
87
|
};
|
|
88
88
|
this.resultCollector.add(result);
|
|
89
89
|
this.completeBuild(pkg);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type * as LibraryWorkerModule from "../workers/library.worker";
|
|
2
2
|
import type { BuildResult } from "../infra/ResultCollector";
|
|
3
|
-
import {
|
|
4
|
-
import type { SdBuildPackageConfig } from "../sd-config.types";
|
|
3
|
+
import { err as errNs } from "@simplysm/core-common";
|
|
5
4
|
import { BaseBuilder } from "./BaseBuilder";
|
|
6
|
-
import type {
|
|
5
|
+
import type { BuildPackageInfo } from "./types";
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* Builder responsible for Library package builds
|
|
@@ -37,7 +36,7 @@ export class LibraryBuilder extends BaseBuilder {
|
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
protected async buildPackage(pkg:
|
|
39
|
+
protected async buildPackage(pkg: BuildPackageInfo): Promise<void> {
|
|
41
40
|
const worker = this.workerManager.get<typeof LibraryWorkerModule>(`${pkg.name}:build`)!;
|
|
42
41
|
|
|
43
42
|
// Create build completion Promise
|
|
@@ -50,10 +49,9 @@ export class LibraryBuilder extends BaseBuilder {
|
|
|
50
49
|
});
|
|
51
50
|
|
|
52
51
|
// Start build (without await - completion detected via events)
|
|
53
|
-
// LibraryBuilder only receives library packages (node/browser/neutral), so casting is safe
|
|
54
52
|
void worker.startWatch({
|
|
55
53
|
name: pkg.name,
|
|
56
|
-
config: pkg.config
|
|
54
|
+
config: pkg.config,
|
|
57
55
|
cwd: this.cwd,
|
|
58
56
|
pkgDir: pkg.dir,
|
|
59
57
|
});
|
|
@@ -61,14 +59,13 @@ export class LibraryBuilder extends BaseBuilder {
|
|
|
61
59
|
await buildPromise;
|
|
62
60
|
}
|
|
63
61
|
|
|
64
|
-
protected startWatchPackage(pkg:
|
|
62
|
+
protected startWatchPackage(pkg: BuildPackageInfo): void {
|
|
65
63
|
const worker = this.workerManager.get<typeof LibraryWorkerModule>(`${pkg.name}:build`)!;
|
|
66
64
|
|
|
67
|
-
// LibraryBuilder only receives library packages (node/browser/neutral), so casting is safe
|
|
68
65
|
worker
|
|
69
66
|
.startWatch({
|
|
70
67
|
name: pkg.name,
|
|
71
|
-
config: pkg.config
|
|
68
|
+
config: pkg.config,
|
|
72
69
|
cwd: this.cwd,
|
|
73
70
|
pkgDir: pkg.dir,
|
|
74
71
|
})
|
|
@@ -78,7 +75,7 @@ export class LibraryBuilder extends BaseBuilder {
|
|
|
78
75
|
target: pkg.config.target,
|
|
79
76
|
type: "build",
|
|
80
77
|
status: "error",
|
|
81
|
-
message:
|
|
78
|
+
message: errNs.message(err),
|
|
82
79
|
};
|
|
83
80
|
this.resultCollector.add(result);
|
|
84
81
|
this.completeBuild(pkg);
|
package/src/builders/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SdPackageConfig } from "../sd-config.types";
|
|
1
|
+
import type { SdBuildPackageConfig, SdPackageConfig } from "../sd-config.types";
|
|
2
2
|
import type { ResultCollector } from "../infra/ResultCollector";
|
|
3
3
|
import type { RebuildManager } from "../utils/rebuild-manager";
|
|
4
4
|
|
|
@@ -11,6 +11,11 @@ export interface PackageInfo {
|
|
|
11
11
|
config: SdPackageConfig;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* PackageInfo narrowed for build packages (node/browser/neutral)
|
|
16
|
+
*/
|
|
17
|
+
export type BuildPackageInfo = PackageInfo & { config: SdBuildPackageConfig };
|
|
18
|
+
|
|
14
19
|
/**
|
|
15
20
|
* Common Builder options
|
|
16
21
|
*/
|
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
-
import {
|
|
3
|
-
fsExists,
|
|
4
|
-
fsMkdir,
|
|
5
|
-
fsRead,
|
|
6
|
-
fsReadJson,
|
|
7
|
-
fsWrite,
|
|
8
|
-
fsWriteJson,
|
|
9
|
-
fsGlob,
|
|
10
|
-
fsCopy,
|
|
11
|
-
fsRm,
|
|
12
|
-
} from "@simplysm/core-node";
|
|
2
|
+
import { fsx } from "@simplysm/core-node";
|
|
13
3
|
import { env } from "@simplysm/core-common";
|
|
14
4
|
import { consola } from "consola";
|
|
15
5
|
import sharp from "sharp";
|
|
@@ -71,7 +61,7 @@ export class Capacitor {
|
|
|
71
61
|
// F5: validate runtime configuration
|
|
72
62
|
Capacitor._validateConfig(config);
|
|
73
63
|
|
|
74
|
-
const npmConfig = await
|
|
64
|
+
const npmConfig = await fsx.readJson<NpmConfig>(path.resolve(pkgPath, "package.json"));
|
|
75
65
|
return new Capacitor(pkgPath, config, npmConfig);
|
|
76
66
|
}
|
|
77
67
|
|
|
@@ -88,6 +78,9 @@ export class Capacitor {
|
|
|
88
78
|
if (typeof config.appName !== "string" || config.appName.trim() === "") {
|
|
89
79
|
throw new CapacitorConfigError("capacitor.appName is required.");
|
|
90
80
|
}
|
|
81
|
+
if (!/^[a-zA-Z0-9 \-]+$/.test(config.appName)) {
|
|
82
|
+
throw new CapacitorConfigError(`capacitor.appName contains invalid characters: ${config.appName}`);
|
|
83
|
+
}
|
|
91
84
|
if (config.platform != null) {
|
|
92
85
|
const platforms = Object.keys(config.platform);
|
|
93
86
|
for (const p of platforms) {
|
|
@@ -113,15 +106,15 @@ export class Capacitor {
|
|
|
113
106
|
*/
|
|
114
107
|
private async _acquireLock(): Promise<void> {
|
|
115
108
|
const lockPath = path.resolve(this._capPath, Capacitor._LOCK_FILE_NAME);
|
|
116
|
-
if (await
|
|
117
|
-
const lockContent = await
|
|
109
|
+
if (await fsx.exists(lockPath)) {
|
|
110
|
+
const lockContent = await fsx.read(lockPath);
|
|
118
111
|
throw new Error(
|
|
119
112
|
`Another Capacitor operation is in progress (PID: ${lockContent}). ` +
|
|
120
113
|
`If there's an issue, delete the ${lockPath} file.`,
|
|
121
114
|
);
|
|
122
115
|
}
|
|
123
|
-
await
|
|
124
|
-
await
|
|
116
|
+
await fsx.mkdir(this._capPath);
|
|
117
|
+
await fsx.write(lockPath, String(process.pid));
|
|
125
118
|
}
|
|
126
119
|
|
|
127
120
|
/**
|
|
@@ -129,7 +122,7 @@ export class Capacitor {
|
|
|
129
122
|
*/
|
|
130
123
|
private async _releaseLock(): Promise<void> {
|
|
131
124
|
const lockPath = path.resolve(this._capPath, Capacitor._LOCK_FILE_NAME);
|
|
132
|
-
await
|
|
125
|
+
await fsx.rm(lockPath);
|
|
133
126
|
}
|
|
134
127
|
|
|
135
128
|
/**
|
|
@@ -285,7 +278,7 @@ export class Capacitor {
|
|
|
285
278
|
|
|
286
279
|
// F12: cap init idempotency - execute only when capacitor.config.ts does not exist
|
|
287
280
|
const configPath = path.resolve(this._capPath, "capacitor.config.ts");
|
|
288
|
-
if (!(await
|
|
281
|
+
if (!(await fsx.exists(configPath))) {
|
|
289
282
|
await this._exec(
|
|
290
283
|
"npx",
|
|
291
284
|
["cap", "init", this._config.appName, this._config.appId],
|
|
@@ -295,8 +288,8 @@ export class Capacitor {
|
|
|
295
288
|
|
|
296
289
|
// Create default www/index.html
|
|
297
290
|
const wwwPath = path.resolve(this._capPath, "www");
|
|
298
|
-
await
|
|
299
|
-
await
|
|
291
|
+
await fsx.mkdir(wwwPath);
|
|
292
|
+
await fsx.write(
|
|
300
293
|
path.resolve(wwwPath, "index.html"),
|
|
301
294
|
"<!DOCTYPE html><html><head></head><body></body></html>",
|
|
302
295
|
);
|
|
@@ -311,15 +304,15 @@ export class Capacitor {
|
|
|
311
304
|
const projNpmConfigPath = path.resolve(this._pkgPath, "../../package.json");
|
|
312
305
|
|
|
313
306
|
// F3: Check if file exists
|
|
314
|
-
if (!(await
|
|
307
|
+
if (!(await fsx.exists(projNpmConfigPath))) {
|
|
315
308
|
throw new Error(`root package.json not found: ${projNpmConfigPath}`);
|
|
316
309
|
}
|
|
317
310
|
|
|
318
|
-
const projNpmConfig = await
|
|
311
|
+
const projNpmConfig = await fsx.readJson<NpmConfig>(projNpmConfigPath);
|
|
319
312
|
|
|
320
313
|
const capNpmConfPath = path.resolve(this._capPath, "package.json");
|
|
321
|
-
const orgCapNpmConf: NpmConfig = (await
|
|
322
|
-
? await
|
|
314
|
+
const orgCapNpmConf: NpmConfig = (await fsx.exists(capNpmConfPath))
|
|
315
|
+
? await fsx.readJson<NpmConfig>(capNpmConfPath)
|
|
323
316
|
: { name: "", version: "" };
|
|
324
317
|
|
|
325
318
|
const capNpmConf: NpmConfig = { ...orgCapNpmConf };
|
|
@@ -375,8 +368,8 @@ export class Capacitor {
|
|
|
375
368
|
}
|
|
376
369
|
|
|
377
370
|
// Save
|
|
378
|
-
await
|
|
379
|
-
await
|
|
371
|
+
await fsx.mkdir(this._capPath);
|
|
372
|
+
await fsx.writeJson(capNpmConfPath, capNpmConf, { space: 2 });
|
|
380
373
|
|
|
381
374
|
// Check if dependencies changed
|
|
382
375
|
const isChanged =
|
|
@@ -423,7 +416,7 @@ const config: CapacitorConfig = {
|
|
|
423
416
|
export default config;
|
|
424
417
|
`;
|
|
425
418
|
|
|
426
|
-
await
|
|
419
|
+
await fsx.write(confPath, configContent);
|
|
427
420
|
}
|
|
428
421
|
|
|
429
422
|
/**
|
|
@@ -432,7 +425,7 @@ export default config;
|
|
|
432
425
|
private async _addPlatforms(): Promise<void> {
|
|
433
426
|
for (const platform of this._platforms) {
|
|
434
427
|
const platformPath = path.resolve(this._capPath, platform);
|
|
435
|
-
if (await
|
|
428
|
+
if (await fsx.exists(platformPath)) {
|
|
436
429
|
Capacitor._logger.debug(`platform already exists: ${platform}`);
|
|
437
430
|
continue;
|
|
438
431
|
}
|
|
@@ -451,7 +444,7 @@ export default config;
|
|
|
451
444
|
const iconSource = path.resolve(this._pkgPath, this._config.icon);
|
|
452
445
|
|
|
453
446
|
// F6: Check if source icon exists
|
|
454
|
-
if (!(await
|
|
447
|
+
if (!(await fsx.exists(iconSource))) {
|
|
455
448
|
Capacitor._logger.warn(
|
|
456
449
|
`icon file not found: ${iconSource}. Using default icon.`,
|
|
457
450
|
);
|
|
@@ -459,7 +452,7 @@ export default config;
|
|
|
459
452
|
}
|
|
460
453
|
|
|
461
454
|
try {
|
|
462
|
-
await
|
|
455
|
+
await fsx.mkdir(assetsDirPath);
|
|
463
456
|
|
|
464
457
|
// Create icon
|
|
465
458
|
const logoPath = path.resolve(assetsDirPath, "logo.png");
|
|
@@ -501,7 +494,7 @@ export default config;
|
|
|
501
494
|
// F6: Continue even if it fails (use default icon)
|
|
502
495
|
}
|
|
503
496
|
} else {
|
|
504
|
-
await
|
|
497
|
+
await fsx.rm(assetsDirPath);
|
|
505
498
|
}
|
|
506
499
|
}
|
|
507
500
|
|
|
@@ -516,7 +509,7 @@ export default config;
|
|
|
516
509
|
const androidPath = path.resolve(this._capPath, "android");
|
|
517
510
|
|
|
518
511
|
// F3: Check if Android directory exists
|
|
519
|
-
if (!(await
|
|
512
|
+
if (!(await fsx.exists(androidPath))) {
|
|
520
513
|
throw new Error(`Android project directory not found: ${androidPath}`);
|
|
521
514
|
}
|
|
522
515
|
|
|
@@ -533,19 +526,19 @@ export default config;
|
|
|
533
526
|
const gradlePropsPath = path.resolve(androidPath, "gradle.properties");
|
|
534
527
|
|
|
535
528
|
// F3: Check if file exists
|
|
536
|
-
if (!(await
|
|
529
|
+
if (!(await fsx.exists(gradlePropsPath))) {
|
|
537
530
|
Capacitor._logger.warn(`gradle.properties file not found: ${gradlePropsPath}`);
|
|
538
531
|
return;
|
|
539
532
|
}
|
|
540
533
|
|
|
541
|
-
let content = await
|
|
534
|
+
let content = await fsx.read(gradlePropsPath);
|
|
542
535
|
|
|
543
536
|
const java21Path = await this._findJava21();
|
|
544
537
|
if (java21Path != null && !content.includes("org.gradle.java.home")) {
|
|
545
538
|
// F9: Improved Windows path escaping
|
|
546
539
|
const escapedPath = java21Path.replace(/\\/g, "\\\\");
|
|
547
540
|
content += `\norg.gradle.java.home=${escapedPath}\n`;
|
|
548
|
-
await
|
|
541
|
+
await fsx.write(gradlePropsPath, content);
|
|
549
542
|
}
|
|
550
543
|
}
|
|
551
544
|
|
|
@@ -563,7 +556,7 @@ export default config;
|
|
|
563
556
|
];
|
|
564
557
|
|
|
565
558
|
for (const pattern of patterns) {
|
|
566
|
-
const matches = await
|
|
559
|
+
const matches = await fsx.glob(pattern);
|
|
567
560
|
if (matches.length > 0) {
|
|
568
561
|
return matches.sort().at(-1);
|
|
569
562
|
}
|
|
@@ -581,7 +574,7 @@ export default config;
|
|
|
581
574
|
const sdkPath = await this._findAndroidSdk();
|
|
582
575
|
if (sdkPath != null) {
|
|
583
576
|
// F9: Always use forward slash (Gradle compatible)
|
|
584
|
-
await
|
|
577
|
+
await fsx.write(localPropsPath, `sdk.dir=${sdkPath.replace(/\\/g, "/")}\n`);
|
|
585
578
|
} else {
|
|
586
579
|
throw new Error(
|
|
587
580
|
"Android SDK not found.\n" +
|
|
@@ -596,7 +589,7 @@ export default config;
|
|
|
596
589
|
*/
|
|
597
590
|
private async _findAndroidSdk(): Promise<string | undefined> {
|
|
598
591
|
const fromEnv = (env["ANDROID_HOME"] ?? env["ANDROID_SDK_ROOT"]) as string | undefined;
|
|
599
|
-
if (fromEnv != null && (await
|
|
592
|
+
if (fromEnv != null && (await fsx.exists(fromEnv))) {
|
|
600
593
|
return fromEnv;
|
|
601
594
|
}
|
|
602
595
|
|
|
@@ -608,7 +601,7 @@ export default config;
|
|
|
608
601
|
];
|
|
609
602
|
|
|
610
603
|
for (const candidate of candidates) {
|
|
611
|
-
if (await
|
|
604
|
+
if (await fsx.exists(candidate)) {
|
|
612
605
|
return candidate;
|
|
613
606
|
}
|
|
614
607
|
}
|
|
@@ -623,11 +616,11 @@ export default config;
|
|
|
623
616
|
const manifestPath = path.resolve(androidPath, "app/src/main/AndroidManifest.xml");
|
|
624
617
|
|
|
625
618
|
// F3: Check if file exists
|
|
626
|
-
if (!(await
|
|
619
|
+
if (!(await fsx.exists(manifestPath))) {
|
|
627
620
|
throw new Error(`AndroidManifest.xml file not found: ${manifestPath}`);
|
|
628
621
|
}
|
|
629
622
|
|
|
630
|
-
let content = await
|
|
623
|
+
let content = await fsx.read(manifestPath);
|
|
631
624
|
|
|
632
625
|
// Configure usesCleartextTraffic
|
|
633
626
|
if (!content.includes("android:usesCleartextTraffic")) {
|
|
@@ -686,7 +679,7 @@ export default config;
|
|
|
686
679
|
}
|
|
687
680
|
}
|
|
688
681
|
|
|
689
|
-
await
|
|
682
|
+
await fsx.write(manifestPath, content);
|
|
690
683
|
}
|
|
691
684
|
|
|
692
685
|
/**
|
|
@@ -696,11 +689,11 @@ export default config;
|
|
|
696
689
|
const buildGradlePath = path.resolve(androidPath, "app/build.gradle");
|
|
697
690
|
|
|
698
691
|
// F3: Check if file exists
|
|
699
|
-
if (!(await
|
|
692
|
+
if (!(await fsx.exists(buildGradlePath))) {
|
|
700
693
|
throw new Error(`build.gradle file not found: ${buildGradlePath}`);
|
|
701
694
|
}
|
|
702
695
|
|
|
703
|
-
let content = await
|
|
696
|
+
let content = await fsx.read(buildGradlePath);
|
|
704
697
|
|
|
705
698
|
// Configure versionName and versionCode
|
|
706
699
|
const version = this._npmConfig.version;
|
|
@@ -733,10 +726,10 @@ export default config;
|
|
|
733
726
|
if (signConfig) {
|
|
734
727
|
const keystoreSource = path.resolve(this._pkgPath, signConfig.keystore);
|
|
735
728
|
// F3: Check if keystore file exists
|
|
736
|
-
if (!(await
|
|
729
|
+
if (!(await fsx.exists(keystoreSource))) {
|
|
737
730
|
throw new Error(`keystore file not found: ${keystoreSource}`);
|
|
738
731
|
}
|
|
739
|
-
await
|
|
732
|
+
await fsx.copy(keystoreSource, keystorePath);
|
|
740
733
|
|
|
741
734
|
// F9: Convert relative path to forward slash
|
|
742
735
|
const keystoreRelativePath = path
|
|
@@ -749,9 +742,9 @@ export default config;
|
|
|
749
742
|
signingConfigs {
|
|
750
743
|
release {
|
|
751
744
|
storeFile file("${keystoreRelativePath}")
|
|
752
|
-
storePassword '${signConfig.storePassword}'
|
|
753
|
-
keyAlias '${signConfig.alias}'
|
|
754
|
-
keyPassword '${signConfig.password}'
|
|
745
|
+
storePassword '${Capacitor._escapeGroovyString(signConfig.storePassword)}'
|
|
746
|
+
keyAlias '${Capacitor._escapeGroovyString(signConfig.alias)}'
|
|
747
|
+
keyPassword '${Capacitor._escapeGroovyString(signConfig.password)}'
|
|
755
748
|
storeType "${keystoreType}"
|
|
756
749
|
}
|
|
757
750
|
}
|
|
@@ -766,10 +759,18 @@ export default config;
|
|
|
766
759
|
);
|
|
767
760
|
}
|
|
768
761
|
} else {
|
|
769
|
-
await
|
|
762
|
+
await fsx.rm(keystorePath);
|
|
770
763
|
}
|
|
771
764
|
|
|
772
|
-
await
|
|
765
|
+
await fsx.write(buildGradlePath, content);
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* Escape single quotes in Groovy string (for use in single-quoted strings)
|
|
770
|
+
* Groovy: 'string with \'single quote\' inside'
|
|
771
|
+
*/
|
|
772
|
+
private static _escapeGroovyString(value: string): string {
|
|
773
|
+
return value.replace(/'/g, "\\'");
|
|
773
774
|
}
|
|
774
775
|
|
|
775
776
|
//#endregion
|
|
@@ -822,7 +823,7 @@ export default config;
|
|
|
822
823
|
fileName,
|
|
823
824
|
);
|
|
824
825
|
|
|
825
|
-
const actualPath = (await
|
|
826
|
+
const actualPath = (await fsx.exists(sourcePath))
|
|
826
827
|
? sourcePath
|
|
827
828
|
: path.resolve(
|
|
828
829
|
androidPath,
|
|
@@ -832,20 +833,20 @@ export default config;
|
|
|
832
833
|
`app-${buildType}.${ext}`,
|
|
833
834
|
);
|
|
834
835
|
|
|
835
|
-
if (!(await
|
|
836
|
+
if (!(await fsx.exists(actualPath))) {
|
|
836
837
|
Capacitor._logger.warn(`build output not found: ${actualPath}`);
|
|
837
838
|
return;
|
|
838
839
|
}
|
|
839
840
|
|
|
840
841
|
const outputFileName = `${this._config.appName}${isSigned ? "" : "-unsigned"}-latest.${ext}`;
|
|
841
842
|
|
|
842
|
-
await
|
|
843
|
-
await
|
|
843
|
+
await fsx.mkdir(targetOutPath);
|
|
844
|
+
await fsx.copy(actualPath, path.resolve(targetOutPath, outputFileName));
|
|
844
845
|
|
|
845
846
|
// Save per-version
|
|
846
847
|
const updatesPath = path.resolve(targetOutPath, "updates");
|
|
847
|
-
await
|
|
848
|
-
await
|
|
848
|
+
await fsx.mkdir(updatesPath);
|
|
849
|
+
await fsx.copy(actualPath, path.resolve(updatesPath, `${this._npmConfig.version}.${ext}`));
|
|
849
850
|
}
|
|
850
851
|
|
|
851
852
|
//#endregion
|
|
@@ -858,9 +859,9 @@ export default config;
|
|
|
858
859
|
private async _updateServerUrl(url: string): Promise<void> {
|
|
859
860
|
const configPath = path.resolve(this._capPath, "capacitor.config.ts");
|
|
860
861
|
|
|
861
|
-
if (!(await
|
|
862
|
+
if (!(await fsx.exists(configPath))) return;
|
|
862
863
|
|
|
863
|
-
let content = await
|
|
864
|
+
let content = await fsx.read(configPath);
|
|
864
865
|
|
|
865
866
|
if (content.includes("url:")) {
|
|
866
867
|
content = content.replace(/url:\s*"[^"]*"/, `url: "${url}"`);
|
|
@@ -868,7 +869,7 @@ export default config;
|
|
|
868
869
|
content = content.replace(/server:\s*\{/, `server: {\n url: "${url}",`);
|
|
869
870
|
}
|
|
870
871
|
|
|
871
|
-
await
|
|
872
|
+
await fsx.write(configPath, content);
|
|
872
873
|
}
|
|
873
874
|
|
|
874
875
|
//#endregion
|
package/src/commands/check.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { execa } from "execa";
|
|
2
2
|
import { Worker, type WorkerProxy } from "@simplysm/core-node";
|
|
3
|
-
import {
|
|
3
|
+
import { err as errNs } from "@simplysm/core-common";
|
|
4
4
|
import { executeTypecheck, type TypecheckResult } from "./typecheck";
|
|
5
5
|
import type { LintResult } from "./lint";
|
|
6
6
|
import type * as LintWorkerModule from "../workers/lint.worker";
|
|
@@ -53,7 +53,7 @@ async function spawnVitest(targets: string[]): Promise<CheckResult> {
|
|
|
53
53
|
success: false,
|
|
54
54
|
errorCount: 1,
|
|
55
55
|
warningCount: 0,
|
|
56
|
-
formattedOutput:
|
|
56
|
+
formattedOutput: errNs.message(err),
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -110,7 +110,7 @@ export async function runCheck(options: CheckOptions): Promise<void> {
|
|
|
110
110
|
|
|
111
111
|
tasks.push(
|
|
112
112
|
lintWorker
|
|
113
|
-
.lint({ targets, fix:
|
|
113
|
+
.lint({ targets, fix: false, timing: false })
|
|
114
114
|
.then(
|
|
115
115
|
(r: LintResult): CheckResult => ({
|
|
116
116
|
name: "LINT",
|
|
@@ -141,7 +141,7 @@ export async function runCheck(options: CheckOptions): Promise<void> {
|
|
|
141
141
|
success: false,
|
|
142
142
|
errorCount: 1,
|
|
143
143
|
warningCount: 0,
|
|
144
|
-
formattedOutput:
|
|
144
|
+
formattedOutput: errNs.message(r.reason),
|
|
145
145
|
};
|
|
146
146
|
});
|
|
147
147
|
|
package/src/commands/device.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
-
import {
|
|
2
|
+
import { fsx } from "@simplysm/core-node";
|
|
3
3
|
import { consola } from "consola";
|
|
4
4
|
import type { SdConfig, SdClientPackageConfig } from "../sd-config.types";
|
|
5
5
|
import { loadSdConfig } from "../utils/sd-config";
|
|
@@ -43,7 +43,7 @@ export async function runDevice(options: DeviceOptions): Promise<void> {
|
|
|
43
43
|
// Load sd.config.ts
|
|
44
44
|
let sdConfig: SdConfig;
|
|
45
45
|
try {
|
|
46
|
-
sdConfig = await loadSdConfig({ cwd, dev: true,
|
|
46
|
+
sdConfig = await loadSdConfig({ cwd, dev: true, options: options.options });
|
|
47
47
|
logger.debug("sd.config.ts loaded");
|
|
48
48
|
} catch (err) {
|
|
49
49
|
logger.error(`Failed to load sd.config.ts: ${err instanceof Error ? err.message : err}`);
|
|
@@ -114,7 +114,7 @@ export async function runDevice(options: DeviceOptions): Promise<void> {
|
|
|
114
114
|
logger.debug("development server URL", { serverUrl });
|
|
115
115
|
|
|
116
116
|
const capPath = path.join(pkgDir, ".capacitor");
|
|
117
|
-
if (!(await
|
|
117
|
+
if (!(await fsx.exists(capPath))) {
|
|
118
118
|
logger.error(
|
|
119
119
|
`Capacitor project is not initialized. First run 'pnpm watch ${packageName}'.`,
|
|
120
120
|
);
|
package/src/commands/lint.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ESLint } from "eslint";
|
|
2
2
|
import { createJiti } from "jiti";
|
|
3
3
|
import path from "path";
|
|
4
|
-
import {
|
|
4
|
+
import { fsx, pathx } from "@simplysm/core-node";
|
|
5
5
|
import "@simplysm/core-common";
|
|
6
6
|
import { SdError } from "@simplysm/core-common";
|
|
7
7
|
import { consola } from "consola";
|
|
@@ -67,7 +67,7 @@ export async function loadIgnorePatterns(cwd: string): Promise<string[]> {
|
|
|
67
67
|
let configPath: string | undefined;
|
|
68
68
|
for (const f of ESLINT_CONFIG_FILES) {
|
|
69
69
|
const p = path.join(cwd, f);
|
|
70
|
-
if (await
|
|
70
|
+
if (await fsx.exists(p)) {
|
|
71
71
|
configPath = p;
|
|
72
72
|
break;
|
|
73
73
|
}
|
|
@@ -139,13 +139,13 @@ export async function executeLint(options: LintOptions): Promise<LintResult> {
|
|
|
139
139
|
|
|
140
140
|
// Collect lint target files
|
|
141
141
|
logger.start("collecting lint target files");
|
|
142
|
-
let files = await
|
|
142
|
+
let files = await fsx.glob("**/*.{ts,tsx,js,jsx}", {
|
|
143
143
|
cwd,
|
|
144
144
|
ignore: ignorePatterns,
|
|
145
145
|
nodir: true,
|
|
146
146
|
absolute: true,
|
|
147
147
|
});
|
|
148
|
-
files =
|
|
148
|
+
files = pathx.filterByTargets(files, targets, cwd);
|
|
149
149
|
logger.debug("file collection complete", { fileCount: files.length });
|
|
150
150
|
logger.success(`collected lint target files (${files.length} files)`);
|
|
151
151
|
|