@leonxin/meetgames 0.1.11 → 0.1.13
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 +9 -9
- package/dist/cache.d.ts +44 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +101 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +43 -37
- package/dist/cli.js.map +1 -1
- package/dist/config/meetSdkDefaultConfig.d.ts +1 -1
- package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
- package/dist/config/meetSdkDefaultConfig.js +4 -3
- package/dist/config/meetSdkDefaultConfig.js.map +1 -1
- package/dist/config/meetSdkIosConfig.d.ts.map +1 -1
- package/dist/config/meetSdkIosConfig.js +3 -1
- package/dist/config/meetSdkIosConfig.js.map +1 -1
- package/dist/config/meetSdkRemoteConfig.d.ts +1 -0
- package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -1
- package/dist/config/meetSdkRemoteConfig.js +4 -1
- package/dist/config/meetSdkRemoteConfig.js.map +1 -1
- package/dist/contracts/types.d.ts +11 -0
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/core/doctor.js +7 -7
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +3 -0
- package/dist/core/pipeline.js.map +1 -1
- package/dist/core/previewPatches.d.ts +1 -1
- package/dist/core/previewPatches.js +2 -2
- package/dist/core/previewPatches.js.map +1 -1
- package/dist/core/reporter.d.ts.map +1 -1
- package/dist/core/reporter.js +4 -0
- package/dist/core/reporter.js.map +1 -1
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +2 -0
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ios/channelConfig.js +1 -1
- package/dist/ios/channelConfig.js.map +1 -1
- package/dist/ios/codeUtils.d.ts +1 -0
- package/dist/ios/codeUtils.d.ts.map +1 -1
- package/dist/ios/codeUtils.js +3 -0
- package/dist/ios/codeUtils.js.map +1 -1
- package/dist/ios/integrate.d.ts.map +1 -1
- package/dist/ios/integrate.js +97 -23
- package/dist/ios/integrate.js.map +1 -1
- package/dist/ios/pbxprojEditor.d.ts.map +1 -1
- package/dist/ios/pbxprojEditor.js +123 -6
- package/dist/ios/pbxprojEditor.js.map +1 -1
- package/dist/ios/sdkBundle.d.ts +1 -6
- package/dist/ios/sdkBundle.d.ts.map +1 -1
- package/dist/ios/sdkBundle.js +44 -16
- package/dist/ios/sdkBundle.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +12 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/service.d.ts +3 -0
- package/dist/mcp/service.d.ts.map +1 -1
- package/dist/mcp/service.js +31 -8
- package/dist/mcp/service.js.map +1 -1
- package/dist/ops/handlers.d.ts.map +1 -1
- package/dist/ops/handlers.js +24 -19
- package/dist/ops/handlers.js.map +1 -1
- package/dist/remote/sdkHomeDownload.d.ts +1 -1
- package/dist/remote/sdkHomeDownload.d.ts.map +1 -1
- package/dist/remote/sdkHomeDownload.js +27 -6
- package/dist/remote/sdkHomeDownload.js.map +1 -1
- package/docs/API.md +16 -16
- package/docs/CLI.md +21 -22
- package/docs/INTEGRATION.md +30 -11
- package/docs/MCP.md +1 -1
- package/docs/README.md +0 -1
- package/docs/archive/api/downloadSDKConfig.md +2 -2
- package/docs/archive/api/getChannelConfig-meetgames.md +1 -1
- package/docs/archive/product//351/234/200/346/261/202/346/226/207/346/241/243.md +1 -1
- package/package.json +2 -5
- package/recipes/android-default.yaml +0 -5
- package/recipes/integrate-default.yaml +0 -5
- package/src/cache.ts +164 -0
- package/src/cli.ts +46 -38
- package/src/config/meetSdkDefaultConfig.ts +4 -3
- package/src/config/meetSdkIosConfig.ts +3 -1
- package/src/config/meetSdkRemoteConfig.ts +5 -1
- package/src/contracts/types.ts +11 -0
- package/src/core/doctor.ts +7 -7
- package/src/core/pipeline.ts +3 -0
- package/src/core/previewPatches.ts +2 -2
- package/src/core/reporter.ts +3 -0
- package/src/core/workspace.ts +2 -0
- package/src/index.ts +7 -0
- package/src/ios/channelConfig.ts +1 -1
- package/src/ios/codeUtils.ts +4 -0
- package/src/ios/integrate.ts +110 -27
- package/src/ios/pbxprojEditor.ts +121 -4
- package/src/ios/sdkBundle.ts +41 -18
- package/src/mcp/server.ts +12 -6
- package/src/mcp/service.ts +39 -8
- package/src/ops/handlers.ts +23 -19
- package/src/remote/sdkHomeDownload.ts +28 -7
- package/tests/doctor.test.ts +4 -2
- package/tests/{test-projects-hosts.test.ts → fixtures-hosts.test.ts} +2 -2
- package/tests/ios.sdkBundle.test.ts +10 -5
- package/tests/mcp.e2e.ts +2 -5
- package/tests/meetSdkRemoteConfig.test.ts +25 -0
- package/tests/pipeline.android.test.ts +1 -2
- package/tests/pipeline.ios.test.ts +133 -20
- package/tests/pipeline.preview.patch.test.ts +2 -2
- package/tests/sdkVersionConfig.test.ts +3 -2
- package/dist/aab-converter/aab-entry.d.ts +0 -3
- package/dist/aab-converter/aab-entry.d.ts.map +0 -1
- package/dist/aab-converter/aab-entry.js +0 -49
- package/dist/aab-converter/aab-entry.js.map +0 -1
- package/dist/aab-converter/apksExtractor.d.ts +0 -2
- package/dist/aab-converter/apksExtractor.d.ts.map +0 -1
- package/dist/aab-converter/apksExtractor.js +0 -108
- package/dist/aab-converter/apksExtractor.js.map +0 -1
- package/dist/aab-converter/bundletoolRunner.d.ts +0 -15
- package/dist/aab-converter/bundletoolRunner.d.ts.map +0 -1
- package/dist/aab-converter/bundletoolRunner.js +0 -46
- package/dist/aab-converter/bundletoolRunner.js.map +0 -1
- package/dist/aab-converter/cliArgs.d.ts +0 -27
- package/dist/aab-converter/cliArgs.d.ts.map +0 -1
- package/dist/aab-converter/cliArgs.js +0 -170
- package/dist/aab-converter/cliArgs.js.map +0 -1
- package/dist/aab-converter/convertAabToApk.d.ts +0 -7
- package/dist/aab-converter/convertAabToApk.d.ts.map +0 -1
- package/dist/aab-converter/convertAabToApk.js +0 -69
- package/dist/aab-converter/convertAabToApk.js.map +0 -1
- package/dist/aab-converter/resourcePaths.d.ts +0 -4
- package/dist/aab-converter/resourcePaths.d.ts.map +0 -1
- package/dist/aab-converter/resourcePaths.js +0 -42
- package/dist/aab-converter/resourcePaths.js.map +0 -1
- package/dist/aab-converter/signingOptions.d.ts +0 -9
- package/dist/aab-converter/signingOptions.d.ts.map +0 -1
- package/dist/aab-converter/signingOptions.js +0 -21
- package/dist/aab-converter/signingOptions.js.map +0 -1
- package/dist/aab-converter/types.d.ts +0 -24
- package/dist/aab-converter/types.d.ts.map +0 -1
- package/dist/aab-converter/types.js +0 -2
- package/dist/aab-converter/types.js.map +0 -1
- package/dist/shared/fileUtils.d.ts +0 -5
- package/dist/shared/fileUtils.d.ts.map +0 -1
- package/dist/shared/fileUtils.js +0 -35
- package/dist/shared/fileUtils.js.map +0 -1
- package/dist/shared/logger.d.ts +0 -10
- package/dist/shared/logger.d.ts.map +0 -1
- package/dist/shared/logger.js +0 -37
- package/dist/shared/logger.js.map +0 -1
- package/dist/shared/pathUtils.d.ts +0 -4
- package/dist/shared/pathUtils.d.ts.map +0 -1
- package/dist/shared/pathUtils.js +0 -22
- package/dist/shared/pathUtils.js.map +0 -1
- package/dist/shared/processRunner.d.ts +0 -12
- package/dist/shared/processRunner.d.ts.map +0 -1
- package/dist/shared/processRunner.js +0 -31
- package/dist/shared/processRunner.js.map +0 -1
- package/docs/AAB_CONVERTER_CLI_PLAN.md +0 -392
- package/logs/convert-20260622-155037.log +0 -5
- package/logs/convert-20260622-155226.log +0 -6
- package/scripts/package-aab-cli-win.mjs +0 -193
- package/src/aab-converter/aab-entry.ts +0 -48
- package/src/aab-converter/apksExtractor.ts +0 -119
- package/src/aab-converter/bundletoolRunner.ts +0 -63
- package/src/aab-converter/cliArgs.ts +0 -194
- package/src/aab-converter/convertAabToApk.ts +0 -81
- package/src/aab-converter/resourcePaths.ts +0 -43
- package/src/aab-converter/signingOptions.ts +0 -29
- package/src/aab-converter/types.ts +0 -26
- package/src/shared/fileUtils.ts +0 -41
- package/src/shared/logger.ts +0 -49
- package/src/shared/pathUtils.ts +0 -24
- package/src/shared/processRunner.ts +0 -43
- package/test-projects/README.md +0 -51
- package/test-projects/_preview/pipeline.patch +0 -281
- package/tests/aab-converter.test.ts +0 -213
- /package/{meetsdk-android.json → config/meetsdk-android.json} +0 -0
- /package/{meetsdk-ios.json → config/meetsdk-ios.json} +0 -0
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { UserFacingError } from "../shared/errors.js";
|
|
3
|
-
import { toAbsolutePath } from "../shared/pathUtils.js";
|
|
4
|
-
import { resolveSigningOptions } from "./signingOptions.js";
|
|
5
|
-
function valueAfter(args, index, flag) {
|
|
6
|
-
const value = args[index + 1] ?? "";
|
|
7
|
-
if (!value || value.startsWith("--")) {
|
|
8
|
-
throw new UserFacingError("INVALID_ARGS", `${flag} requires a value`);
|
|
9
|
-
}
|
|
10
|
-
return value;
|
|
11
|
-
}
|
|
12
|
-
function passwordFromEnv(envName, flag) {
|
|
13
|
-
const value = process.env[envName];
|
|
14
|
-
if (!value) {
|
|
15
|
-
throw new UserFacingError("ENV_PASSWORD_MISSING", `${flag} points to an empty or missing environment variable: ${envName}`);
|
|
16
|
-
}
|
|
17
|
-
return value;
|
|
18
|
-
}
|
|
19
|
-
export function printAabHelp() {
|
|
20
|
-
console.log(`
|
|
21
|
-
aab2apk — Convert Android App Bundle (.aab) to signed universal APK
|
|
22
|
-
|
|
23
|
-
Usage:
|
|
24
|
-
aab2apk.cmd convert --aab <file.aab> --out-dir <dir> --ks <file.jks> --ks-key-alias <alias> [password options]
|
|
25
|
-
|
|
26
|
-
Required:
|
|
27
|
-
--aab AAB file path
|
|
28
|
-
--out-dir Output directory
|
|
29
|
-
--ks Keystore/JKS file path
|
|
30
|
-
--ks-key-alias Key alias in keystore
|
|
31
|
-
|
|
32
|
-
Password options:
|
|
33
|
-
--ks-pass-env Read keystore password from environment variable (recommended)
|
|
34
|
-
--key-pass-env Read key password from environment variable (recommended)
|
|
35
|
-
--ks-pass Keystore password as command argument (not recommended)
|
|
36
|
-
--key-pass Key password as command argument (not recommended)
|
|
37
|
-
|
|
38
|
-
Other options:
|
|
39
|
-
--apk-name Output APK file name
|
|
40
|
-
--keep-apks Keep intermediate .apks file
|
|
41
|
-
--no-overwrite Fail if output already exists (default is overwrite)
|
|
42
|
-
--verbose Print detailed logs
|
|
43
|
-
--help, -h Show help
|
|
44
|
-
`);
|
|
45
|
-
}
|
|
46
|
-
export function parseAabCliArgv(argv) {
|
|
47
|
-
const rest = argv.slice(2);
|
|
48
|
-
if (!rest.length || rest[0] === "--help" || rest[0] === "-h") {
|
|
49
|
-
return {
|
|
50
|
-
help: true,
|
|
51
|
-
command: "",
|
|
52
|
-
aabPath: "",
|
|
53
|
-
outDir: "",
|
|
54
|
-
keyStorePath: "",
|
|
55
|
-
keyAlias: "",
|
|
56
|
-
keepApks: false,
|
|
57
|
-
overwrite: true,
|
|
58
|
-
verbose: false,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
const parsed = {
|
|
62
|
-
help: false,
|
|
63
|
-
command: rest[0] ?? "",
|
|
64
|
-
aabPath: "",
|
|
65
|
-
outDir: "",
|
|
66
|
-
keyStorePath: "",
|
|
67
|
-
keyAlias: "",
|
|
68
|
-
keepApks: false,
|
|
69
|
-
overwrite: true,
|
|
70
|
-
verbose: false,
|
|
71
|
-
};
|
|
72
|
-
if (parsed.command !== "convert") {
|
|
73
|
-
throw new UserFacingError("INVALID_COMMAND", `Unknown command: ${parsed.command}`);
|
|
74
|
-
}
|
|
75
|
-
for (let i = 1; i < rest.length; i += 1) {
|
|
76
|
-
const flag = rest[i];
|
|
77
|
-
if (flag === "--help" || flag === "-h") {
|
|
78
|
-
parsed.help = true;
|
|
79
|
-
return parsed;
|
|
80
|
-
}
|
|
81
|
-
if (flag === "--keep-apks") {
|
|
82
|
-
parsed.keepApks = true;
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
if (flag === "--verbose") {
|
|
86
|
-
parsed.verbose = true;
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (flag === "--no-overwrite") {
|
|
90
|
-
parsed.overwrite = false;
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
if (flag === "--overwrite") {
|
|
94
|
-
parsed.overwrite = true;
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
if (flag === "--aab") {
|
|
98
|
-
parsed.aabPath = valueAfter(rest, i, flag);
|
|
99
|
-
i += 1;
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
if (flag === "--out-dir") {
|
|
103
|
-
parsed.outDir = valueAfter(rest, i, flag);
|
|
104
|
-
i += 1;
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (flag === "--ks") {
|
|
108
|
-
parsed.keyStorePath = valueAfter(rest, i, flag);
|
|
109
|
-
i += 1;
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
if (flag === "--ks-key-alias") {
|
|
113
|
-
parsed.keyAlias = valueAfter(rest, i, flag);
|
|
114
|
-
i += 1;
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
if (flag === "--ks-pass-env") {
|
|
118
|
-
parsed.keyStorePassword = passwordFromEnv(valueAfter(rest, i, flag), flag);
|
|
119
|
-
i += 1;
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
if (flag === "--key-pass-env") {
|
|
123
|
-
parsed.keyPassword = passwordFromEnv(valueAfter(rest, i, flag), flag);
|
|
124
|
-
i += 1;
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
if (flag === "--ks-pass") {
|
|
128
|
-
parsed.keyStorePassword = valueAfter(rest, i, flag);
|
|
129
|
-
i += 1;
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
if (flag === "--key-pass") {
|
|
133
|
-
parsed.keyPassword = valueAfter(rest, i, flag);
|
|
134
|
-
i += 1;
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
if (flag === "--apk-name") {
|
|
138
|
-
parsed.apkName = valueAfter(rest, i, flag);
|
|
139
|
-
i += 1;
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
throw new UserFacingError("INVALID_ARGS", `Unsupported argument: ${flag}`);
|
|
143
|
-
}
|
|
144
|
-
return parsed;
|
|
145
|
-
}
|
|
146
|
-
export function validateConvertArgs(parsed) {
|
|
147
|
-
if (!parsed.aabPath)
|
|
148
|
-
throw new UserFacingError("INVALID_ARGS", "Missing --aab");
|
|
149
|
-
if (!parsed.outDir)
|
|
150
|
-
throw new UserFacingError("INVALID_ARGS", "Missing --out-dir");
|
|
151
|
-
if (!parsed.keyStorePath)
|
|
152
|
-
throw new UserFacingError("INVALID_ARGS", "Missing --ks");
|
|
153
|
-
if (!parsed.keyAlias)
|
|
154
|
-
throw new UserFacingError("INVALID_ARGS", "Missing --ks-key-alias");
|
|
155
|
-
return {
|
|
156
|
-
aabPath: toAbsolutePath(parsed.aabPath),
|
|
157
|
-
outDir: path.resolve(parsed.outDir),
|
|
158
|
-
signing: resolveSigningOptions({
|
|
159
|
-
keyStorePath: parsed.keyStorePath,
|
|
160
|
-
keyAlias: parsed.keyAlias,
|
|
161
|
-
keyStorePassword: parsed.keyStorePassword,
|
|
162
|
-
keyPassword: parsed.keyPassword,
|
|
163
|
-
}),
|
|
164
|
-
apkName: parsed.apkName,
|
|
165
|
-
keepApks: parsed.keepApks,
|
|
166
|
-
overwrite: parsed.overwrite,
|
|
167
|
-
verbose: parsed.verbose,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=cliArgs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cliArgs.js","sourceRoot":"","sources":["../../src/aab-converter/cliArgs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAkB5D,SAAS,UAAU,CAAC,IAAc,EAAE,KAAa,EAAE,IAAY;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,eAAe,CAAC,cAAc,EAAE,GAAG,IAAI,mBAAmB,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,IAAY;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,eAAe,CAAC,sBAAsB,EAAE,GAAG,IAAI,wDAAwD,OAAO,EAAE,CAAC,CAAC;IAC9H,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7D,OAAO;YACL,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAiB;QAC3B,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,KAAK;KACf,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAC7B,MAAM,CAAC,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,MAAM,CAAC,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YACtE,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,CAAC,gBAAgB,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,IAAI,eAAe,CAAC,cAAc,EAAE,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IAStD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,eAAe,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;IACnF,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,MAAM,IAAI,eAAe,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,IAAI,eAAe,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;IAC1F,OAAO;QACL,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,qBAAqB,CAAC;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;QACF,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { ConvertAabToApkOptions, ConvertAabToApkResult } from "./types.js";
|
|
2
|
-
export declare function resolveOutputPaths(options: Pick<ConvertAabToApkOptions, "aabPath" | "outDir" | "apkName">): {
|
|
3
|
-
apksPath: string;
|
|
4
|
-
apkPath: string;
|
|
5
|
-
};
|
|
6
|
-
export declare function convertAabToApk(options: ConvertAabToApkOptions): Promise<ConvertAabToApkResult>;
|
|
7
|
-
//# sourceMappingURL=convertAabToApk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertAabToApk.d.ts","sourceRoot":"","sources":["../../src/aab-converter/convertAabToApk.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC,GAAG;IAC3G,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAOA;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2DrG"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { UserFacingError } from "../shared/errors.js";
|
|
4
|
-
import { assertCanWriteFile, assertFileExists, assertWritableDirectory } from "../shared/fileUtils.js";
|
|
5
|
-
import { baseNameWithoutExt, toAbsolutePath, validateOutputFileName } from "../shared/pathUtils.js";
|
|
6
|
-
import { buildUniversalApks } from "./bundletoolRunner.js";
|
|
7
|
-
import { extractUniversalApk } from "./apksExtractor.js";
|
|
8
|
-
export function resolveOutputPaths(options) {
|
|
9
|
-
const aabBase = baseNameWithoutExt(options.aabPath, ".aab");
|
|
10
|
-
const apkName = options.apkName ? validateOutputFileName(options.apkName) : `${aabBase}_universal.apk`;
|
|
11
|
-
return {
|
|
12
|
-
apksPath: path.join(options.outDir, `${aabBase}.apks`),
|
|
13
|
-
apkPath: path.join(options.outDir, apkName),
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
export async function convertAabToApk(options) {
|
|
17
|
-
const aabPath = toAbsolutePath(options.aabPath);
|
|
18
|
-
const outDir = toAbsolutePath(options.outDir);
|
|
19
|
-
const javaPath = options.javaPath;
|
|
20
|
-
const bundletoolPath = toAbsolutePath(options.bundletoolPath);
|
|
21
|
-
const signing = {
|
|
22
|
-
...options.signing,
|
|
23
|
-
keyStorePath: toAbsolutePath(options.signing.keyStorePath),
|
|
24
|
-
};
|
|
25
|
-
assertFileExists(aabPath, "AAB_NOT_FOUND", "AAB file");
|
|
26
|
-
baseNameWithoutExt(aabPath, ".aab");
|
|
27
|
-
assertFileExists(signing.keyStorePath, "KEYSTORE_NOT_FOUND", "Keystore file");
|
|
28
|
-
assertFileExists(bundletoolPath, "BUNDLETOOL_NOT_FOUND", "bundletool.jar");
|
|
29
|
-
if (javaPath.includes("/") || javaPath.includes("\\")) {
|
|
30
|
-
assertFileExists(javaPath, "JAVA_NOT_FOUND", "Java executable");
|
|
31
|
-
}
|
|
32
|
-
assertWritableDirectory(outDir);
|
|
33
|
-
const { apksPath, apkPath } = resolveOutputPaths({ aabPath, outDir, apkName: options.apkName });
|
|
34
|
-
assertCanWriteFile(apksPath, options.overwrite, "APK set");
|
|
35
|
-
assertCanWriteFile(apkPath, options.overwrite, "Output APK");
|
|
36
|
-
options.logger?.info(`AAB: ${aabPath}`);
|
|
37
|
-
options.logger?.info(`Output directory: ${outDir}`);
|
|
38
|
-
options.logger?.info(`APK set: ${apksPath}`);
|
|
39
|
-
options.logger?.info(`Output APK: ${apkPath}`);
|
|
40
|
-
await buildUniversalApks({
|
|
41
|
-
javaPath,
|
|
42
|
-
bundletoolPath,
|
|
43
|
-
aabPath,
|
|
44
|
-
apksPath,
|
|
45
|
-
signing,
|
|
46
|
-
overwrite: options.overwrite,
|
|
47
|
-
logger: options.logger,
|
|
48
|
-
});
|
|
49
|
-
await extractUniversalApk(apksPath, apkPath, options.overwrite);
|
|
50
|
-
options.logger?.info(`Extracted universal APK: ${apkPath}`);
|
|
51
|
-
if (!options.keepApks) {
|
|
52
|
-
try {
|
|
53
|
-
fs.unlinkSync(apksPath);
|
|
54
|
-
options.logger?.info(`Removed intermediate APK set: ${apksPath}`);
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
options.logger?.warn(`Failed to remove intermediate APK set: ${e instanceof Error ? e.message : String(e)}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (!fs.existsSync(apkPath)) {
|
|
61
|
-
throw new UserFacingError("APK_OUTPUT_MISSING", `Output APK was not created: ${apkPath}`);
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
apkPath,
|
|
65
|
-
apksPath: options.keepApks ? apksPath : undefined,
|
|
66
|
-
logPath: options.logger?.logPath,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=convertAabToApk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertAabToApk.js","sourceRoot":"","sources":["../../src/aab-converter/convertAabToApk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resourcePaths.d.ts","sourceRoot":"","sources":["../../src/aab-converter/resourcePaths.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AASD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWxD"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { UserFacingError } from "../shared/errors.js";
|
|
5
|
-
export function resolveToolRoot(metaUrl) {
|
|
6
|
-
const here = path.dirname(fileURLToPath(metaUrl));
|
|
7
|
-
return path.resolve(here, "..", "..");
|
|
8
|
-
}
|
|
9
|
-
function firstExisting(candidates) {
|
|
10
|
-
for (const candidate of candidates) {
|
|
11
|
-
if (fs.existsSync(candidate))
|
|
12
|
-
return candidate;
|
|
13
|
-
}
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
export function resolveBundletoolPath(toolRoot) {
|
|
17
|
-
const envPath = process.env.AAB2APK_BUNDLETOOL_PATH?.trim();
|
|
18
|
-
if (envPath)
|
|
19
|
-
return path.resolve(envPath);
|
|
20
|
-
const found = firstExisting([
|
|
21
|
-
path.join(toolRoot, "tools", "bundletool.jar"),
|
|
22
|
-
path.join(toolRoot, "bundled", "android", "bundletool.jar"),
|
|
23
|
-
]);
|
|
24
|
-
if (found)
|
|
25
|
-
return found;
|
|
26
|
-
throw new UserFacingError("BUNDLETOOL_NOT_FOUND", `bundletool.jar not found. Expected ${path.join(toolRoot, "tools", "bundletool.jar")}`);
|
|
27
|
-
}
|
|
28
|
-
export function resolveJavaPath(toolRoot) {
|
|
29
|
-
const envPath = process.env.AAB2APK_JAVA_PATH?.trim();
|
|
30
|
-
if (envPath)
|
|
31
|
-
return path.resolve(envPath);
|
|
32
|
-
const exe = process.platform === "win32" ? "java.exe" : "java";
|
|
33
|
-
const candidates = [path.join(toolRoot, "runtime", "jre", "bin", exe)];
|
|
34
|
-
if (process.platform === "win32") {
|
|
35
|
-
candidates.push(path.join(toolRoot, "runtime", "win-x64", "jre", "bin", "java.exe"));
|
|
36
|
-
}
|
|
37
|
-
const found = firstExisting(candidates);
|
|
38
|
-
if (found)
|
|
39
|
-
return found;
|
|
40
|
-
return exe;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=resourcePaths.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resourcePaths.js","sourceRoot":"","sources":["../../src/aab-converter/resourcePaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,UAAoB;IACzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;KAC5D,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,IAAI,eAAe,CACvB,sBAAsB,EACtB,sCAAsC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,CACvF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { SigningOptions } from "./types.js";
|
|
2
|
-
export interface SigningInput {
|
|
3
|
-
keyStorePath: string;
|
|
4
|
-
keyAlias: string;
|
|
5
|
-
keyStorePassword?: string;
|
|
6
|
-
keyPassword?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function resolveSigningOptions(input: SigningInput): SigningOptions;
|
|
9
|
-
//# sourceMappingURL=signingOptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signingOptions.d.ts","sourceRoot":"","sources":["../../src/aab-converter/signingOptions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAezE"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { UserFacingError } from "../shared/errors.js";
|
|
3
|
-
import { assertFileExists } from "../shared/fileUtils.js";
|
|
4
|
-
import { toAbsolutePath } from "../shared/pathUtils.js";
|
|
5
|
-
export function resolveSigningOptions(input) {
|
|
6
|
-
const keyStorePath = toAbsolutePath(input.keyStorePath);
|
|
7
|
-
assertFileExists(keyStorePath, "KEYSTORE_NOT_FOUND", "Keystore file");
|
|
8
|
-
if (!input.keyAlias.trim()) {
|
|
9
|
-
throw new UserFacingError("SIGNING_ALIAS_MISSING", "Missing --ks-key-alias");
|
|
10
|
-
}
|
|
11
|
-
if (!input.keyStorePassword) {
|
|
12
|
-
throw new UserFacingError("SIGNING_PASSWORD_MISSING", "Missing keystore password");
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
keyStorePath: path.resolve(keyStorePath),
|
|
16
|
-
keyAlias: input.keyAlias,
|
|
17
|
-
keyStorePassword: input.keyStorePassword,
|
|
18
|
-
keyPassword: input.keyPassword || undefined,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=signingOptions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signingOptions.js","sourceRoot":"","sources":["../../src/aab-converter/signingOptions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAUxD,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxD,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CAAC,0BAA0B,EAAE,2BAA2B,CAAC,CAAC;IACrF,CAAC;IACD,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS;KAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Logger } from "../shared/logger.js";
|
|
2
|
-
export interface SigningOptions {
|
|
3
|
-
keyStorePath: string;
|
|
4
|
-
keyAlias: string;
|
|
5
|
-
keyStorePassword: string;
|
|
6
|
-
keyPassword?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface ConvertAabToApkOptions {
|
|
9
|
-
aabPath: string;
|
|
10
|
-
outDir: string;
|
|
11
|
-
signing: SigningOptions;
|
|
12
|
-
javaPath: string;
|
|
13
|
-
bundletoolPath: string;
|
|
14
|
-
apkName?: string;
|
|
15
|
-
keepApks: boolean;
|
|
16
|
-
overwrite: boolean;
|
|
17
|
-
logger?: Logger;
|
|
18
|
-
}
|
|
19
|
-
export interface ConvertAabToApkResult {
|
|
20
|
-
apkPath: string;
|
|
21
|
-
apksPath?: string;
|
|
22
|
-
logPath?: string;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/aab-converter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/aab-converter/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare function assertFileExists(filePath: string, code: string, label: string): void;
|
|
2
|
-
export declare function ensureDirectory(dirPath: string): void;
|
|
3
|
-
export declare function assertWritableDirectory(dirPath: string): void;
|
|
4
|
-
export declare function assertCanWriteFile(filePath: string, overwrite: boolean, label: string): void;
|
|
5
|
-
//# sourceMappingURL=fileUtils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fileUtils.d.ts","sourceRoot":"","sources":["../../src/shared/fileUtils.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAOpF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAa7D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK5F"}
|
package/dist/shared/fileUtils.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { UserFacingError } from "./errors.js";
|
|
4
|
-
export function assertFileExists(filePath, code, label) {
|
|
5
|
-
if (!fs.existsSync(filePath)) {
|
|
6
|
-
throw new UserFacingError(code, `${label} does not exist: ${filePath}`);
|
|
7
|
-
}
|
|
8
|
-
if (!fs.statSync(filePath).isFile()) {
|
|
9
|
-
throw new UserFacingError(code, `${label} is not a file: ${filePath}`);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export function ensureDirectory(dirPath) {
|
|
13
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
14
|
-
if (!fs.statSync(dirPath).isDirectory()) {
|
|
15
|
-
throw new UserFacingError("OUTPUT_DIR_INVALID", `Output path is not a directory: ${dirPath}`);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export function assertWritableDirectory(dirPath) {
|
|
19
|
-
ensureDirectory(dirPath);
|
|
20
|
-
try {
|
|
21
|
-
const probe = path.join(dirPath, `.write-test-${Date.now()}-${Math.random().toString(16).slice(2)}`);
|
|
22
|
-
fs.writeFileSync(probe, "");
|
|
23
|
-
fs.unlinkSync(probe);
|
|
24
|
-
}
|
|
25
|
-
catch (e) {
|
|
26
|
-
throw new UserFacingError("OUTPUT_DIR_NOT_WRITABLE", `Output directory is not writable: ${dirPath}`, e instanceof Error ? e.message : String(e));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export function assertCanWriteFile(filePath, overwrite, label) {
|
|
30
|
-
if (!overwrite && fs.existsSync(filePath)) {
|
|
31
|
-
throw new UserFacingError("OUTPUT_EXISTS", `${label} already exists: ${filePath}`);
|
|
32
|
-
}
|
|
33
|
-
ensureDirectory(path.dirname(filePath));
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=fileUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fileUtils.js","sourceRoot":"","sources":["../../src/shared/fileUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,IAAY,EAAE,KAAa;IAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,GAAG,KAAK,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,GAAG,KAAK,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAE,mCAAmC,OAAO,EAAE,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,eAAe,CACvB,yBAAyB,EACzB,qCAAqC,OAAO,EAAE,EAC9C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,SAAkB,EAAE,KAAa;IACpF,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,eAAe,CAAC,eAAe,EAAE,GAAG,KAAK,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/shared/logger.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface Logger {
|
|
2
|
-
readonly logPath?: string;
|
|
3
|
-
info(message: string): void;
|
|
4
|
-
warn(message: string): void;
|
|
5
|
-
error(message: string): void;
|
|
6
|
-
close(): void;
|
|
7
|
-
}
|
|
8
|
-
export declare function createFileLogger(logDir: string): Logger;
|
|
9
|
-
export declare function createConsoleLogger(verbose: boolean): Logger;
|
|
10
|
-
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;CACf;AAcD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAcvD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAS5D"}
|
package/dist/shared/logger.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
function timestamp() {
|
|
4
|
-
return new Date().toISOString();
|
|
5
|
-
}
|
|
6
|
-
function logFileName() {
|
|
7
|
-
const d = new Date();
|
|
8
|
-
const pad = (n) => String(n).padStart(2, "0");
|
|
9
|
-
return `convert-${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}-${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}.log`;
|
|
10
|
-
}
|
|
11
|
-
export function createFileLogger(logDir) {
|
|
12
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
13
|
-
const logPath = path.join(logDir, logFileName());
|
|
14
|
-
const stream = fs.createWriteStream(logPath, { flags: "a", encoding: "utf8" });
|
|
15
|
-
const write = (level, message) => {
|
|
16
|
-
stream.write(`[${timestamp()}] [${level}] ${message}\n`);
|
|
17
|
-
};
|
|
18
|
-
return {
|
|
19
|
-
logPath,
|
|
20
|
-
info: (message) => write("INFO", message),
|
|
21
|
-
warn: (message) => write("WARN", message),
|
|
22
|
-
error: (message) => write("ERROR", message),
|
|
23
|
-
close: () => stream.end(),
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
export function createConsoleLogger(verbose) {
|
|
27
|
-
return {
|
|
28
|
-
info: (message) => {
|
|
29
|
-
if (verbose)
|
|
30
|
-
console.log(message);
|
|
31
|
-
},
|
|
32
|
-
warn: (message) => console.warn(message),
|
|
33
|
-
error: (message) => console.error(message),
|
|
34
|
-
close: () => undefined,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,SAAS,SAAS;IAChB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,WAAW,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CACrG,CAAC,CAAC,UAAU,EAAE,CACf,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE;QAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC;IACF,OAAO;QACL,OAAO;QACP,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;QACzC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;QACzC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;QACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC1C,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare function toAbsolutePath(value: string, baseDir?: string): string;
|
|
2
|
-
export declare function baseNameWithoutExt(filePath: string, expectedExt: string): string;
|
|
3
|
-
export declare function validateOutputFileName(fileName: string): string;
|
|
4
|
-
//# sourceMappingURL=pathUtils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathUtils.d.ts","sourceRoot":"","sources":["../../src/shared/pathUtils.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAgB,GAAG,MAAM,CAE7E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/D"}
|
package/dist/shared/pathUtils.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { UserFacingError } from "./errors.js";
|
|
3
|
-
export function toAbsolutePath(value, baseDir = process.cwd()) {
|
|
4
|
-
return path.resolve(baseDir, value);
|
|
5
|
-
}
|
|
6
|
-
export function baseNameWithoutExt(filePath, expectedExt) {
|
|
7
|
-
const parsed = path.parse(filePath);
|
|
8
|
-
if (parsed.ext.toLowerCase() !== expectedExt.toLowerCase()) {
|
|
9
|
-
throw new UserFacingError("INVALID_EXTENSION", `Expected ${expectedExt} file: ${filePath}`);
|
|
10
|
-
}
|
|
11
|
-
return parsed.name;
|
|
12
|
-
}
|
|
13
|
-
export function validateOutputFileName(fileName) {
|
|
14
|
-
if (!fileName.trim()) {
|
|
15
|
-
throw new UserFacingError("INVALID_APK_NAME", "--apk-name cannot be empty");
|
|
16
|
-
}
|
|
17
|
-
if (fileName.includes("/") || fileName.includes("\\") || path.basename(fileName) !== fileName) {
|
|
18
|
-
throw new UserFacingError("INVALID_APK_NAME", "--apk-name must be a file name, not a path");
|
|
19
|
-
}
|
|
20
|
-
return fileName.toLowerCase().endsWith(".apk") ? fileName : `${fileName}.apk`;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=pathUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathUtils.js","sourceRoot":"","sources":["../../src/shared/pathUtils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,YAAY,WAAW,UAAU,QAAQ,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC9F,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,4CAA4C,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,CAAC;AAChF,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface RunProcessOptions {
|
|
2
|
-
cwd?: string;
|
|
3
|
-
onStdout?: (chunk: string) => void;
|
|
4
|
-
onStderr?: (chunk: string) => void;
|
|
5
|
-
}
|
|
6
|
-
export interface RunProcessResult {
|
|
7
|
-
exitCode: number;
|
|
8
|
-
stdout: string;
|
|
9
|
-
stderr: string;
|
|
10
|
-
}
|
|
11
|
-
export declare function runProcess(file: string, args: string[], options?: RunProcessOptions): Promise<RunProcessResult>;
|
|
12
|
-
//# sourceMappingURL=processRunner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processRunner.d.ts","sourceRoot":"","sources":["../../src/shared/processRunner.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4BnH"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
export function runProcess(file, args, options = {}) {
|
|
3
|
-
return new Promise((resolve, reject) => {
|
|
4
|
-
const child = spawn(file, args, {
|
|
5
|
-
cwd: options.cwd,
|
|
6
|
-
windowsHide: true,
|
|
7
|
-
shell: false,
|
|
8
|
-
});
|
|
9
|
-
let stdout = "";
|
|
10
|
-
let stderr = "";
|
|
11
|
-
child.stdout?.on("data", (buf) => {
|
|
12
|
-
const text = buf.toString("utf8");
|
|
13
|
-
stdout += text;
|
|
14
|
-
options.onStdout?.(text);
|
|
15
|
-
});
|
|
16
|
-
child.stderr?.on("data", (buf) => {
|
|
17
|
-
const text = buf.toString("utf8");
|
|
18
|
-
stderr += text;
|
|
19
|
-
options.onStderr?.(text);
|
|
20
|
-
});
|
|
21
|
-
child.on("error", reject);
|
|
22
|
-
child.on("close", (exitCode) => {
|
|
23
|
-
resolve({
|
|
24
|
-
exitCode: exitCode ?? 1,
|
|
25
|
-
stdout,
|
|
26
|
-
stderr,
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=processRunner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processRunner.js","sourceRoot":"","sources":["../../src/shared/processRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAc3C,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAc,EAAE,UAA6B,EAAE;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,IAAI,CAAC;YACf,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,IAAI,CAAC;YACf,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC7B,OAAO,CAAC;gBACN,QAAQ,EAAE,QAAQ,IAAI,CAAC;gBACvB,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|