@otakit/cli 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/compatibility.d.ts +3 -0
- package/dist/commands/compatibility.d.ts.map +1 -0
- package/dist/commands/compatibility.js +40 -0
- package/dist/commands/compatibility.js.map +1 -0
- package/dist/commands/config.js +1 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/generate-encryption-key.d.ts +3 -0
- package/dist/commands/generate-encryption-key.d.ts.map +1 -0
- package/dist/commands/generate-encryption-key.js +31 -0
- package/dist/commands/generate-encryption-key.js.map +1 -0
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +7 -4
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/releases.d.ts.map +1 -1
- package/dist/commands/releases.js +2 -1
- package/dist/commands/releases.js.map +1 -1
- package/dist/commands/upload.d.ts.map +1 -1
- package/dist/commands/upload.js +49 -1
- package/dist/commands/upload.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +1 -4
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +18 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +9 -2
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/capacitor-config.d.ts +1 -1
- package/dist/lib/capacitor-config.d.ts.map +1 -1
- package/dist/lib/capacitor-config.js +63 -21
- package/dist/lib/capacitor-config.js.map +1 -1
- package/dist/lib/compat-check.d.ts +16 -0
- package/dist/lib/compat-check.d.ts.map +1 -0
- package/dist/lib/compat-check.js +26 -0
- package/dist/lib/compat-check.js.map +1 -0
- package/dist/lib/config.d.ts +2 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +8 -16
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/crypto.d.ts +32 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +67 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/native-deps.d.ts +42 -0
- package/dist/lib/native-deps.d.ts.map +1 -0
- package/dist/lib/native-deps.js +233 -0
- package/dist/lib/native-deps.js.map +1 -0
- package/dist/lib/upload-workflow.d.ts +12 -0
- package/dist/lib/upload-workflow.d.ts.map +1 -1
- package/dist/lib/upload-workflow.js +51 -7
- package/dist/lib/upload-workflow.js.map +1 -1
- package/package.json +6 -4
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
2
3
|
import { dirname, extname, resolve } from 'node:path';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
3
5
|
export const CAPACITOR_CONFIG_FILE_NAMES = [
|
|
4
6
|
'capacitor.config.ts',
|
|
5
7
|
'capacitor.config.js',
|
|
@@ -7,12 +9,13 @@ export const CAPACITOR_CONFIG_FILE_NAMES = [
|
|
|
7
9
|
'capacitor.config.cjs',
|
|
8
10
|
'capacitor.config.json',
|
|
9
11
|
];
|
|
10
|
-
|
|
12
|
+
const baseRequire = createRequire(import.meta.url);
|
|
13
|
+
export async function readCapacitorProjectConfig(cwd = process.cwd()) {
|
|
11
14
|
const configPath = findCapacitorConfigPath(cwd);
|
|
12
15
|
if (!configPath) {
|
|
13
16
|
return null;
|
|
14
17
|
}
|
|
15
|
-
const rawConfig = loadCapacitorConfigFile(configPath);
|
|
18
|
+
const rawConfig = await loadCapacitorConfigFile(configPath);
|
|
16
19
|
return extractProjectConfig(configPath, rawConfig);
|
|
17
20
|
}
|
|
18
21
|
export function findCapacitorConfigPath(cwd = process.cwd()) {
|
|
@@ -31,39 +34,78 @@ export function findCapacitorConfigPath(cwd = process.cwd()) {
|
|
|
31
34
|
currentDir = parentDir;
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
|
-
function loadCapacitorConfigFile(configPath) {
|
|
37
|
+
async function loadCapacitorConfigFile(configPath) {
|
|
35
38
|
const extension = extname(configPath).toLowerCase();
|
|
36
|
-
const source = readFileSync(configPath, 'utf-8');
|
|
37
39
|
if (extension === '.json') {
|
|
38
40
|
try {
|
|
39
|
-
return JSON.parse(
|
|
41
|
+
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
40
42
|
}
|
|
41
43
|
catch (error) {
|
|
42
44
|
const reason = error instanceof Error ? error.message : 'Unknown parse error';
|
|
43
45
|
throw new Error(`${configPath} is not valid JSON: ${reason}`);
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
|
-
|
|
48
|
+
if (extension === '.ts') {
|
|
49
|
+
return loadTypeScriptConfigModule(configPath);
|
|
50
|
+
}
|
|
51
|
+
return loadJavaScriptConfigModule(configPath);
|
|
52
|
+
}
|
|
53
|
+
function loadTypeScriptConfigModule(configPath) {
|
|
54
|
+
const source = readFileSync(configPath, 'utf-8').replace(/^\uFEFF/, '');
|
|
55
|
+
const tsPath = resolveNode(dirname(configPath), 'typescript');
|
|
56
|
+
if (!tsPath) {
|
|
57
|
+
throw new Error(`Could not find installation of TypeScript. To use ${configPath}, install TypeScript in your project.`);
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const ts = baseRequire(tsPath);
|
|
61
|
+
const transpiled = ts.transpileModule(source, {
|
|
62
|
+
fileName: configPath,
|
|
63
|
+
compilerOptions: {
|
|
64
|
+
module: ts.ModuleKind.CommonJS,
|
|
65
|
+
moduleResolution: ts.ModuleResolutionKind.NodeJs,
|
|
66
|
+
esModuleInterop: true,
|
|
67
|
+
strict: true,
|
|
68
|
+
target: ts.ScriptTarget.ES2017,
|
|
69
|
+
},
|
|
70
|
+
reportDiagnostics: true,
|
|
71
|
+
});
|
|
72
|
+
return unwrapModuleExport(compileCommonJsModule(configPath, transpiled.outputText));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const reason = error instanceof Error ? error.message : 'Unknown evaluation error';
|
|
76
|
+
throw new Error(`${configPath} could not be loaded. ${reason}`);
|
|
77
|
+
}
|
|
47
78
|
}
|
|
48
|
-
function
|
|
49
|
-
let normalizedSource = source.replace(/^\uFEFF/, '');
|
|
50
|
-
normalizedSource = normalizedSource.replace(/^\s*import\s+type[\s\S]*?;?\s*$/gm, '');
|
|
51
|
-
normalizedSource = normalizedSource.replace(/\b(const|let|var)\s+([A-Za-z_$][\w$]*)\s*:\s*[^=;\n]+=/g, '$1 $2 =');
|
|
52
|
-
normalizedSource = normalizedSource.replace(/\s+satisfies\s+[^;\n]+/g, '');
|
|
53
|
-
normalizedSource = normalizedSource.replace(/\s+as\s+const\b/g, '');
|
|
54
|
-
if (/^\s*import\s/m.test(normalizedSource)) {
|
|
55
|
-
throw new Error(`${configPath} uses runtime imports. OtaKit can read capacitor config files that only use inline values, process.env, and type-only imports.`);
|
|
56
|
-
}
|
|
57
|
-
normalizedSource = normalizedSource.replace(/\bexport\s+default\b/, 'return');
|
|
58
|
-
normalizedSource = normalizedSource.replace(/\bmodule\.exports\s*=\s*/g, 'return ');
|
|
59
|
-
normalizedSource = normalizedSource.replace(/\bexports\.default\s*=\s*/g, 'return ');
|
|
79
|
+
async function loadJavaScriptConfigModule(configPath) {
|
|
60
80
|
try {
|
|
61
|
-
const
|
|
62
|
-
return
|
|
81
|
+
const loaded = await import(`${pathToFileURL(configPath).href}?otakit=${Date.now()}`);
|
|
82
|
+
return unwrapModuleExport(loaded);
|
|
63
83
|
}
|
|
64
84
|
catch (error) {
|
|
65
85
|
const reason = error instanceof Error ? error.message : 'Unknown evaluation error';
|
|
66
|
-
throw new Error(`${configPath} could not be
|
|
86
|
+
throw new Error(`${configPath} could not be loaded. ${reason}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function compileCommonJsModule(configPath, sourceText) {
|
|
90
|
+
const Module = baseRequire('node:module');
|
|
91
|
+
const mod = new Module(configPath);
|
|
92
|
+
mod.filename = configPath;
|
|
93
|
+
mod.paths = Module._nodeModulePaths(dirname(configPath));
|
|
94
|
+
mod._compile(sourceText, configPath);
|
|
95
|
+
return mod.exports;
|
|
96
|
+
}
|
|
97
|
+
function unwrapModuleExport(loaded) {
|
|
98
|
+
if (loaded && typeof loaded === 'object' && 'default' in loaded) {
|
|
99
|
+
return loaded.default;
|
|
100
|
+
}
|
|
101
|
+
return loaded;
|
|
102
|
+
}
|
|
103
|
+
function resolveNode(rootDir, id) {
|
|
104
|
+
try {
|
|
105
|
+
return baseRequire.resolve(id, { paths: [rootDir] });
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
67
109
|
}
|
|
68
110
|
}
|
|
69
111
|
function extractProjectConfig(configPath, rawConfig) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor-config.js","sourceRoot":"","sources":["../../src/lib/capacitor-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"capacitor-config.js","sourceRoot":"","sources":["../../src/lib/capacitor-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;CACf,CAAC;AAaX,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC5D,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE9B,OAAO,IAAI,EAAE,CAAC;QACZ,KAAK,MAAM,QAAQ,IAAI,2BAA2B,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,UAAkB;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAEpD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAY,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,uBAAuB,MAAM,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,0BAA0B,CAAC,UAAkB;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,qDAAqD,UAAU,uCAAuC,CACvG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAY5B,CAAC;QAEF,MAAM,UAAU,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE;YAC5C,QAAQ,EAAE,UAAU;YACpB,eAAe,EAAE;gBACf,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ;gBAC9B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM;gBAChD,eAAe,EAAE,IAAI;gBACrB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;aAC/B;YACD,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,yBAAyB,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,UAAkB;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,yBAAyB,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkB,EAAE,UAAkB;IACnE,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAQvC,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC1B,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QAChE,OAAQ,MAA+B,CAAC,OAAO,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,EAAU;IAC9C,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,SAAkB;IAClE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,+BAA+B,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,UAAU,UAAU,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC;IAEvF,OAAO;QACL,UAAU;QACV,KAAK,EAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,UAAU,uBAAuB,CAAC;QACpF,OAAO,EAAE,kBAAkB,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,UAAU,yBAAyB,CAAC;QAC1F,cAAc,EAAE,kBAAkB,CAChC,YAAY,EAAE,cAAc,EAC5B,GAAG,UAAU,gCAAgC,CAC9C;QACD,mBAAmB,EAAE,kBAAkB,CACrC,YAAY,EAAE,SAAS,EACvB,GAAG,UAAU,2BAA2B,CACzC;QACD,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,UAAU,SAAS,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,SAAiB;IACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,qBAAqB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,SAAiB;IAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,oBAAoB,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ApiClient } from './api.js';
|
|
2
|
+
import { type CompatibilityResult, type NativePackage } from './native-deps.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the channel's current (non-reverted) release in the same
|
|
5
|
+
* runtimeVersion lane and compare the local native set against its bundle.
|
|
6
|
+
*
|
|
7
|
+
* Returns `skipped` when the channel has no current release in this lane or
|
|
8
|
+
* the current bundle predates native package capture.
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkCompatibilityAgainstChannel(options: {
|
|
11
|
+
api: ApiClient;
|
|
12
|
+
channel: string | null;
|
|
13
|
+
runtimeVersion: string | undefined;
|
|
14
|
+
nativePackages: NativePackage[];
|
|
15
|
+
}): Promise<CompatibilityResult>;
|
|
16
|
+
//# sourceMappingURL=compat-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compat-check.d.ts","sourceRoot":"","sources":["../../src/lib/compat-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAiB,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE/F;;;;;;GAMG;AACH,wBAAsB,gCAAgC,CAAC,OAAO,EAAE;IAC9D,GAAG,EAAE,SAAS,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqB/B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { compareNative } from './native-deps.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the channel's current (non-reverted) release in the same
|
|
4
|
+
* runtimeVersion lane and compare the local native set against its bundle.
|
|
5
|
+
*
|
|
6
|
+
* Returns `skipped` when the channel has no current release in this lane or
|
|
7
|
+
* the current bundle predates native package capture.
|
|
8
|
+
*/
|
|
9
|
+
export async function checkCompatibilityAgainstChannel(options) {
|
|
10
|
+
const { api, channel, runtimeVersion, nativePackages } = options;
|
|
11
|
+
// 200 is the API's max page size; a channel whose lane baseline sits
|
|
12
|
+
// deeper than 200 releases back is treated as skipped (no baseline).
|
|
13
|
+
const { releases } = await api.listReleases(channel, { limit: 200 });
|
|
14
|
+
const lane = runtimeVersion ?? null;
|
|
15
|
+
const currentRelease = releases.find((release) => !release.revertedAt && (release.runtimeVersion ?? null) === lane);
|
|
16
|
+
if (!currentRelease) {
|
|
17
|
+
return { status: 'skipped', findings: [] };
|
|
18
|
+
}
|
|
19
|
+
const bundle = await api.getBundle(currentRelease.bundleId);
|
|
20
|
+
const remote = bundle.nativePackages;
|
|
21
|
+
if (remote === null || remote === undefined) {
|
|
22
|
+
return { status: 'skipped', findings: [] };
|
|
23
|
+
}
|
|
24
|
+
return compareNative(nativePackages, remote);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=compat-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compat-check.js","sourceRoot":"","sources":["../../src/lib/compat-check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAgD,MAAM,kBAAkB,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,OAKtD;IACC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEjE,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,cAAc,IAAI,IAAI,CAAC;IACpC,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,IAAI,CAC9E,CAAC;IACF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -56,8 +56,8 @@ export declare function requireServerAndAuth(options?: {
|
|
|
56
56
|
serverUrl?: string;
|
|
57
57
|
projectServerUrl?: string;
|
|
58
58
|
}): Promise<ServerAuthConfig>;
|
|
59
|
-
export declare function readProjectConfig(cwd?: string): ProjectConfig | null
|
|
60
|
-
export declare function requireProjectConfig(cwd?: string): ProjectConfig
|
|
59
|
+
export declare function readProjectConfig(cwd?: string): Promise<ProjectConfig | null>;
|
|
60
|
+
export declare function requireProjectConfig(cwd?: string): Promise<ProjectConfig>;
|
|
61
61
|
export declare function resolveConfigSnapshot(options?: ConfigResolveOptions): Promise<ConfigResolveSnapshot>;
|
|
62
62
|
export declare function requireConfig(options?: ConfigResolveOptions): Promise<CliConfig>;
|
|
63
63
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAKzD,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAEtF,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExF,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,OAAO,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtC,cAAc,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,SAAS,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAetD;AAsBD,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,MAAsB,EAC5B,iBAAiB,CAAC,EAAE,MAAM,EAC1B,mBAAmB,CAAC,EAAE,MAAM,GAC3B,MAAM,CAQR;AAED,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAY3F;AAED,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
CHANGED
|
@@ -62,11 +62,7 @@ export async function requireServerAndAuth(options) {
|
|
|
62
62
|
const serverUrl = resolveServerUrl(cwd, options?.serverUrl, options?.projectServerUrl);
|
|
63
63
|
const auth = await resolveAuthToken(serverUrl);
|
|
64
64
|
if (!auth) {
|
|
65
|
-
throw new Error([
|
|
66
|
-
'Missing authentication:',
|
|
67
|
-
'- Run `otakit login`',
|
|
68
|
-
'- or set OTAKIT_TOKEN env var',
|
|
69
|
-
].join('\n'));
|
|
65
|
+
throw new Error(['Missing authentication:', '- Run `otakit login`', '- or set OTAKIT_TOKEN env var'].join('\n'));
|
|
70
66
|
}
|
|
71
67
|
return {
|
|
72
68
|
serverUrl,
|
|
@@ -74,8 +70,8 @@ export async function requireServerAndAuth(options) {
|
|
|
74
70
|
authSource: auth.source,
|
|
75
71
|
};
|
|
76
72
|
}
|
|
77
|
-
export function readProjectConfig(cwd = process.cwd()) {
|
|
78
|
-
const projectConfig = readCapacitorProjectConfig(cwd);
|
|
73
|
+
export async function readProjectConfig(cwd = process.cwd()) {
|
|
74
|
+
const projectConfig = await readCapacitorProjectConfig(cwd);
|
|
79
75
|
if (!projectConfig) {
|
|
80
76
|
return null;
|
|
81
77
|
}
|
|
@@ -89,8 +85,8 @@ export function readProjectConfig(cwd = process.cwd()) {
|
|
|
89
85
|
outputDir: projectConfig.outputDir,
|
|
90
86
|
};
|
|
91
87
|
}
|
|
92
|
-
export function requireProjectConfig(cwd = process.cwd()) {
|
|
93
|
-
const config = readProjectConfig(cwd);
|
|
88
|
+
export async function requireProjectConfig(cwd = process.cwd()) {
|
|
89
|
+
const config = await readProjectConfig(cwd);
|
|
94
90
|
if (!config) {
|
|
95
91
|
throw new Error([
|
|
96
92
|
`No ${PROJECT_CONFIG_LABEL} found in the current directory or its parents.`,
|
|
@@ -115,9 +111,9 @@ function toAuthValueSource(source) {
|
|
|
115
111
|
}
|
|
116
112
|
export async function resolveConfigSnapshot(options) {
|
|
117
113
|
const cwd = options?.cwd ?? process.cwd();
|
|
118
|
-
const capacitorProjectConfig = readCapacitorProjectConfig(cwd);
|
|
114
|
+
const capacitorProjectConfig = await readCapacitorProjectConfig(cwd);
|
|
119
115
|
const configPath = capacitorProjectConfig?.configPath ?? resolve(cwd, CAPACITOR_CONFIG_FILE_NAMES[0]);
|
|
120
|
-
const projectConfig = readProjectConfig(cwd);
|
|
116
|
+
const projectConfig = await readProjectConfig(cwd);
|
|
121
117
|
if (options?.requireProjectConfig && !projectConfig) {
|
|
122
118
|
throw new Error([
|
|
123
119
|
`No ${PROJECT_CONFIG_LABEL} found in the current directory or its parents.`,
|
|
@@ -208,11 +204,7 @@ export async function resolveConfigSnapshot(options) {
|
|
|
208
204
|
export async function requireConfig(options) {
|
|
209
205
|
const snapshot = await resolveConfigSnapshot(options);
|
|
210
206
|
if (!snapshot.authToken.value || !snapshot.authSource) {
|
|
211
|
-
throw new Error([
|
|
212
|
-
'Missing authentication:',
|
|
213
|
-
'- Run `otakit login`',
|
|
214
|
-
'- or set OTAKIT_TOKEN env var',
|
|
215
|
-
].join('\n'));
|
|
207
|
+
throw new Error(['Missing authentication:', '- Run `otakit login`', '- or set OTAKIT_TOKEN env var'].join('\n'));
|
|
216
208
|
}
|
|
217
209
|
if (!snapshot.appId.value) {
|
|
218
210
|
throw new Error([
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const ENCRYPTION_ALG = "AES-256-GCM";
|
|
2
|
+
export interface BundleEncryptionParams {
|
|
3
|
+
alg: string;
|
|
4
|
+
kid: string;
|
|
5
|
+
wrapNonce: string;
|
|
6
|
+
wrappedDek: string;
|
|
7
|
+
nonce: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Derive the key ID from a bundle encryption key: first 16 hex chars of
|
|
11
|
+
* sha256(key bytes). Must match generate-encryption-key output.
|
|
12
|
+
*/
|
|
13
|
+
export declare function deriveKid(key: Buffer): string;
|
|
14
|
+
export declare function generateEncryptionKey(): {
|
|
15
|
+
kid: string;
|
|
16
|
+
key: Buffer;
|
|
17
|
+
};
|
|
18
|
+
export declare function parseEncryptionKey(base64: string): Buffer;
|
|
19
|
+
/**
|
|
20
|
+
* Wrap a per-bundle DEK under the app KEK with AES-256-GCM.
|
|
21
|
+
* Returns base64 wrapNonce and wrappedDek (ciphertext with tag appended).
|
|
22
|
+
*/
|
|
23
|
+
export declare function wrapDek(kek: Buffer, dek: Buffer): {
|
|
24
|
+
wrapNonce: string;
|
|
25
|
+
wrappedDek: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Encrypt a file with AES-256-GCM under a fresh random DEK, streaming
|
|
29
|
+
* plaintext through the cipher and appending the GCM tag to the output.
|
|
30
|
+
*/
|
|
31
|
+
export declare function encryptFile(kek: Buffer, inputPath: string, outputPath: string): Promise<BundleEncryptionParams>;
|
|
32
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/lib/crypto.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,qBAAqB,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAGpE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAQ3F;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC,CAyBjC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { createCipheriv, createHash, randomBytes } from 'node:crypto';
|
|
2
|
+
import { createReadStream, createWriteStream } from 'node:fs';
|
|
3
|
+
import { pipeline } from 'node:stream/promises';
|
|
4
|
+
import { Transform } from 'node:stream';
|
|
5
|
+
const ALGORITHM = 'aes-256-gcm';
|
|
6
|
+
const NONCE_LENGTH = 12;
|
|
7
|
+
const KEY_LENGTH = 32;
|
|
8
|
+
export const ENCRYPTION_ALG = 'AES-256-GCM';
|
|
9
|
+
/**
|
|
10
|
+
* Derive the key ID from a bundle encryption key: first 16 hex chars of
|
|
11
|
+
* sha256(key bytes). Must match generate-encryption-key output.
|
|
12
|
+
*/
|
|
13
|
+
export function deriveKid(key) {
|
|
14
|
+
return createHash('sha256').update(key).digest('hex').slice(0, 16);
|
|
15
|
+
}
|
|
16
|
+
export function generateEncryptionKey() {
|
|
17
|
+
const key = randomBytes(KEY_LENGTH);
|
|
18
|
+
return { kid: deriveKid(key), key };
|
|
19
|
+
}
|
|
20
|
+
export function parseEncryptionKey(base64) {
|
|
21
|
+
const key = Buffer.from(base64.trim(), 'base64');
|
|
22
|
+
if (key.length !== KEY_LENGTH) {
|
|
23
|
+
throw new Error(`Invalid encryption key: expected ${KEY_LENGTH} bytes (base64), got ${key.length} bytes.`);
|
|
24
|
+
}
|
|
25
|
+
return key;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Wrap a per-bundle DEK under the app KEK with AES-256-GCM.
|
|
29
|
+
* Returns base64 wrapNonce and wrappedDek (ciphertext with tag appended).
|
|
30
|
+
*/
|
|
31
|
+
export function wrapDek(kek, dek) {
|
|
32
|
+
const wrapNonce = randomBytes(NONCE_LENGTH);
|
|
33
|
+
const cipher = createCipheriv(ALGORITHM, kek, wrapNonce);
|
|
34
|
+
const wrapped = Buffer.concat([cipher.update(dek), cipher.final(), cipher.getAuthTag()]);
|
|
35
|
+
return {
|
|
36
|
+
wrapNonce: wrapNonce.toString('base64'),
|
|
37
|
+
wrappedDek: wrapped.toString('base64'),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Encrypt a file with AES-256-GCM under a fresh random DEK, streaming
|
|
42
|
+
* plaintext through the cipher and appending the GCM tag to the output.
|
|
43
|
+
*/
|
|
44
|
+
export async function encryptFile(kek, inputPath, outputPath) {
|
|
45
|
+
const dek = randomBytes(KEY_LENGTH);
|
|
46
|
+
const nonce = randomBytes(NONCE_LENGTH);
|
|
47
|
+
const cipher = createCipheriv(ALGORITHM, dek, nonce);
|
|
48
|
+
const appendTag = new Transform({
|
|
49
|
+
transform(chunk, _encoding, callback) {
|
|
50
|
+
callback(null, chunk);
|
|
51
|
+
},
|
|
52
|
+
flush(callback) {
|
|
53
|
+
// cipher.final() has run by the time flush is reached in the pipeline
|
|
54
|
+
callback(null, cipher.getAuthTag());
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
await pipeline(createReadStream(inputPath), cipher, appendTag, createWriteStream(outputPath));
|
|
58
|
+
const { wrapNonce, wrappedDek } = wrapDek(kek, dek);
|
|
59
|
+
return {
|
|
60
|
+
alg: ENCRYPTION_ALG,
|
|
61
|
+
kid: deriveKid(kek),
|
|
62
|
+
wrapNonce,
|
|
63
|
+
wrappedDek,
|
|
64
|
+
nonce: nonce.toString('base64'),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/lib/crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A dependency that ships native (iOS/Android) code, captured at upload time
|
|
3
|
+
* so later uploads can detect native changes that require a store build.
|
|
4
|
+
*/
|
|
5
|
+
export interface NativePackage {
|
|
6
|
+
name: string;
|
|
7
|
+
version: string;
|
|
8
|
+
requestedVersion?: string;
|
|
9
|
+
iosChecksum?: string;
|
|
10
|
+
androidChecksum?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CollectNativePackagesOptions {
|
|
13
|
+
/** Path to the project package.json. Defaults to ./package.json. */
|
|
14
|
+
packageJsonPath?: string;
|
|
15
|
+
/** Path to the resolved node_modules. Defaults to a sibling of package.json. */
|
|
16
|
+
nodeModulesPath?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function collectNativePackages(options?: CollectNativePackagesOptions): NativePackage[];
|
|
19
|
+
export type CompatibilityStatus = 'compatible' | 'incompatible' | 'skipped';
|
|
20
|
+
export type FindingKind = 'new_plugin' | 'native_code_changed' | 'version_mismatch' | 'range_changed' | 'removed' | 'unchanged';
|
|
21
|
+
export interface CompatibilityFinding {
|
|
22
|
+
name: string;
|
|
23
|
+
kind: FindingKind;
|
|
24
|
+
incompatible: boolean;
|
|
25
|
+
localVersion?: string;
|
|
26
|
+
remoteVersion?: string;
|
|
27
|
+
note?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface CompatibilityResult {
|
|
30
|
+
status: CompatibilityStatus;
|
|
31
|
+
findings: CompatibilityFinding[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Compare the local native set against the channel's current bundle.
|
|
35
|
+
*
|
|
36
|
+
* The checksum is the authoritative "native code actually changed" signal;
|
|
37
|
+
* a changed requested-version range that resolves to identical native code
|
|
38
|
+
* is reported as informational only.
|
|
39
|
+
*/
|
|
40
|
+
export declare function compareNative(local: NativePackage[], remote: NativePackage[] | null | undefined): CompatibilityResult;
|
|
41
|
+
export declare function formatCompatibilityReport(result: CompatibilityResult): string;
|
|
42
|
+
//# sourceMappingURL=native-deps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-deps.d.ts","sourceRoot":"","sources":["../../src/lib/native-deps.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AASD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,aAAa,EAAE,CAqEjG;AAgDD,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAE5E,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,qBAAqB,GACrB,kBAAkB,GAClB,eAAe,GACf,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,SAAS,GACzC,mBAAmB,CAsCrB;AA4ED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAqC7E"}
|