@otakit/cli 1.4.0 → 1.6.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/README.md +41 -3
- package/dist/commands/connect.d.ts +3 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +216 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +40 -48
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/mcp.d.ts +4 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +122 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/organization.d.ts +3 -0
- package/dist/commands/organization.d.ts.map +1 -0
- package/dist/commands/organization.js +44 -0
- package/dist/commands/organization.js.map +1 -0
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +71 -16
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +8 -2
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/upload.d.ts.map +1 -1
- package/dist/commands/upload.js +8 -2
- package/dist/commands/upload.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +59 -17
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +4584 -21
- package/dist/index.js.map +7 -1
- package/dist/lib/api.d.ts +23 -6
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +46 -15
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/artifact-preflight.d.ts +21 -0
- package/dist/lib/artifact-preflight.d.ts.map +1 -0
- package/dist/lib/artifact-preflight.js +74 -0
- package/dist/lib/artifact-preflight.js.map +1 -0
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +18 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/login-flow.d.ts +13 -0
- package/dist/lib/login-flow.d.ts.map +1 -0
- package/dist/lib/login-flow.js +89 -0
- package/dist/lib/login-flow.js.map +1 -0
- package/dist/lib/native-deps.d.ts +2 -0
- package/dist/lib/native-deps.d.ts.map +1 -1
- package/dist/lib/native-deps.js +12 -2
- package/dist/lib/native-deps.js.map +1 -1
- package/dist/lib/organization.d.ts +27 -0
- package/dist/lib/organization.d.ts.map +1 -0
- package/dist/lib/organization.js +86 -0
- package/dist/lib/organization.js.map +1 -0
- package/dist/lib/project-inspect.d.ts +27 -0
- package/dist/lib/project-inspect.d.ts.map +1 -0
- package/dist/lib/project-inspect.js +131 -0
- package/dist/lib/project-inspect.js.map +1 -0
- package/dist/lib/token-store.d.ts +8 -2
- package/dist/lib/token-store.d.ts.map +1 -1
- package/dist/lib/token-store.js +105 -67
- package/dist/lib/token-store.js.map +1 -1
- package/dist/lib/upload-workflow.d.ts +9 -1
- package/dist/lib/upload-workflow.d.ts.map +1 -1
- package/dist/lib/upload-workflow.js +55 -13
- package/dist/lib/upload-workflow.js.map +1 -1
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +16 -5
- package/dist/lib/version.js.map +1 -1
- package/dist/lib/zip.d.ts.map +1 -1
- package/dist/lib/zip.js +3 -0
- package/dist/lib/zip.js.map +1 -1
- package/dist/mcp/local-adapter.d.ts +97 -0
- package/dist/mcp/local-adapter.d.ts.map +1 -0
- package/dist/mcp/local-adapter.js +664 -0
- package/dist/mcp/local-adapter.js.map +1 -0
- package/package.json +15 -5
package/dist/lib/api.d.ts
CHANGED
|
@@ -48,13 +48,29 @@ export interface Release {
|
|
|
48
48
|
promotedBy?: string;
|
|
49
49
|
revertedAt?: string | null;
|
|
50
50
|
}
|
|
51
|
+
export interface ReleaseResult {
|
|
52
|
+
operationId: string;
|
|
53
|
+
idempotencyKey: string;
|
|
54
|
+
publicationStatus: 'published' | 'manifest_sync_pending';
|
|
55
|
+
release: Release;
|
|
56
|
+
previousRelease: Release | null;
|
|
57
|
+
}
|
|
58
|
+
export declare class OtaKitApiError extends Error {
|
|
59
|
+
readonly status: number;
|
|
60
|
+
readonly code?: string;
|
|
61
|
+
readonly nextStep?: string;
|
|
62
|
+
constructor(status: number, message: string, code?: string, nextStep?: string);
|
|
63
|
+
}
|
|
51
64
|
export declare class ApiClient {
|
|
52
65
|
private readonly baseUrl;
|
|
53
66
|
private readonly authToken;
|
|
54
67
|
private readonly appId;
|
|
55
68
|
private readonly version;
|
|
56
|
-
|
|
57
|
-
|
|
69
|
+
private readonly organizationId?;
|
|
70
|
+
constructor(config: CliConfig, version?: string, options?: {
|
|
71
|
+
organizationId?: string;
|
|
72
|
+
});
|
|
73
|
+
request<T>(path: string, options?: RequestInit): Promise<T>;
|
|
58
74
|
private appPath;
|
|
59
75
|
initiateUpload(options: {
|
|
60
76
|
version: string;
|
|
@@ -78,6 +94,7 @@ export declare class ApiClient {
|
|
|
78
94
|
version: string;
|
|
79
95
|
runtimeVersion?: string;
|
|
80
96
|
files: DeltaFileDescriptor[];
|
|
97
|
+
nativePackages?: NativePackage[];
|
|
81
98
|
}): Promise<DeltaUploadInitResponse>;
|
|
82
99
|
finalizeDeltaUpload(options: {
|
|
83
100
|
uploadId: string;
|
|
@@ -95,10 +112,10 @@ export declare class ApiClient {
|
|
|
95
112
|
autoRevert?: boolean;
|
|
96
113
|
autoRevertRatePercent?: number;
|
|
97
114
|
autoRevertMinSample?: number;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}>;
|
|
115
|
+
expectedCurrentReleaseId?: string | null;
|
|
116
|
+
idempotencyKey?: string;
|
|
117
|
+
compatibilityDecision?: 'block' | 'proceed' | 'skip';
|
|
118
|
+
}): Promise<ReleaseResult>;
|
|
102
119
|
listReleases(channel: string | null | undefined, options?: {
|
|
103
120
|
limit?: number;
|
|
104
121
|
offset?: number;
|
package/dist/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,WAAW,GAAG,uBAAuB,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEf,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAO9E;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;gBAGvC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,MAAoB,EAC7B,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAO;IASrC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAkErE,OAAO,CAAC,OAAO;IAIT,cAAc,CAAC,OAAO,EAAE;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;QACjC,UAAU,CAAC,EAAE;YACX,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;YACnB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAOzB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIlD,cAAc,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAO9D,mBAAmB,CAAC,OAAO,EAAE;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAC7B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;KAClC,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAO9B,mBAAmB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAOnE,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAS3C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,OAAO,CACX,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;KACtD,GACA,OAAO,CAAC,aAAa,CAAC;IAyBnB,YAAY,CAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAUnD"}
|
package/dist/lib/api.js
CHANGED
|
@@ -1,22 +1,40 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
1
2
|
import { fetchCli } from './http.js';
|
|
2
3
|
import { CLI_VERSION, getCliUserAgent } from './version.js';
|
|
4
|
+
export class OtaKitApiError extends Error {
|
|
5
|
+
status;
|
|
6
|
+
code;
|
|
7
|
+
nextStep;
|
|
8
|
+
constructor(status, message, code, nextStep) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'OtaKitApiError';
|
|
11
|
+
this.status = status;
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.nextStep = nextStep;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
3
16
|
export class ApiClient {
|
|
4
17
|
baseUrl;
|
|
5
18
|
authToken;
|
|
6
19
|
appId;
|
|
7
20
|
version;
|
|
8
|
-
|
|
21
|
+
organizationId;
|
|
22
|
+
constructor(config, version = CLI_VERSION, options = {}) {
|
|
9
23
|
this.baseUrl = config.serverUrl.replace(/\/$/, '');
|
|
10
24
|
this.authToken = config.authToken;
|
|
11
25
|
this.appId = config.appId;
|
|
12
26
|
this.version = version;
|
|
27
|
+
this.organizationId = options.organizationId;
|
|
13
28
|
}
|
|
14
|
-
async
|
|
29
|
+
async request(path, options = {}) {
|
|
15
30
|
const url = `${this.baseUrl}${path}`;
|
|
16
31
|
const hasBody = options.body !== undefined;
|
|
17
32
|
const headers = new Headers(options.headers);
|
|
18
33
|
headers.set('Authorization', `Bearer ${this.authToken}`);
|
|
19
34
|
headers.set('User-Agent', getCliUserAgent(this.version));
|
|
35
|
+
if (this.organizationId) {
|
|
36
|
+
headers.set('X-OtaKit-Organization-Id', this.organizationId);
|
|
37
|
+
}
|
|
20
38
|
if (hasBody && !headers.has('Content-Type')) {
|
|
21
39
|
headers.set('Content-Type', 'application/json');
|
|
22
40
|
}
|
|
@@ -33,14 +51,22 @@ export class ApiClient {
|
|
|
33
51
|
if (typeof parsed.error === 'string') {
|
|
34
52
|
errorMessage = parsed.error;
|
|
35
53
|
}
|
|
54
|
+
throw new OtaKitApiError(response.status, errorMessage, typeof parsed.code === 'string' ? parsed.code : undefined, typeof parsed.nextStep === 'string' ? parsed.nextStep : undefined);
|
|
36
55
|
}
|
|
37
56
|
else {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
57
|
+
// A proxy, a captive portal, or a wrong origin answers with HTML. Dumping
|
|
58
|
+
// a whole page at the user helps nobody, so keep the status and say where
|
|
59
|
+
// it came from instead.
|
|
60
|
+
const text = (await response.text()).trim();
|
|
61
|
+
const looksLikeMarkup = text.startsWith('<');
|
|
62
|
+
if (text.length > 0 && !looksLikeMarkup) {
|
|
63
|
+
errorMessage = text.length > 500 ? `${text.slice(0, 500)}…` : text;
|
|
64
|
+
}
|
|
65
|
+
else if (looksLikeMarkup) {
|
|
66
|
+
errorMessage = `${url} returned HTML with status ${response.status}, not the OtaKit API. Check the server URL.`;
|
|
41
67
|
}
|
|
42
68
|
}
|
|
43
|
-
throw new
|
|
69
|
+
throw new OtaKitApiError(response.status, errorMessage);
|
|
44
70
|
}
|
|
45
71
|
if (response.status === 204) {
|
|
46
72
|
return undefined;
|
|
@@ -54,28 +80,28 @@ export class ApiClient {
|
|
|
54
80
|
return `/api/v1/apps/${encodeURIComponent(this.appId)}${suffix}`;
|
|
55
81
|
}
|
|
56
82
|
async initiateUpload(options) {
|
|
57
|
-
return this.
|
|
83
|
+
return this.request(this.appPath('/bundles/initiate'), {
|
|
58
84
|
method: 'POST',
|
|
59
85
|
body: JSON.stringify(options),
|
|
60
86
|
});
|
|
61
87
|
}
|
|
62
88
|
async getBundle(bundleId) {
|
|
63
|
-
return this.
|
|
89
|
+
return this.request(this.appPath(`/bundles/${encodeURIComponent(bundleId)}`));
|
|
64
90
|
}
|
|
65
91
|
async finalizeUpload(options) {
|
|
66
|
-
return this.
|
|
92
|
+
return this.request(this.appPath('/bundles/finalize'), {
|
|
67
93
|
method: 'POST',
|
|
68
94
|
body: JSON.stringify(options),
|
|
69
95
|
});
|
|
70
96
|
}
|
|
71
97
|
async initiateDeltaUpload(options) {
|
|
72
|
-
return this.
|
|
98
|
+
return this.request(this.appPath('/bundles/initiate-delta'), {
|
|
73
99
|
method: 'POST',
|
|
74
100
|
body: JSON.stringify(options),
|
|
75
101
|
});
|
|
76
102
|
}
|
|
77
103
|
async finalizeDeltaUpload(options) {
|
|
78
|
-
return this.
|
|
104
|
+
return this.request(this.appPath('/bundles/finalize-delta'), {
|
|
79
105
|
method: 'POST',
|
|
80
106
|
body: JSON.stringify(options),
|
|
81
107
|
});
|
|
@@ -87,22 +113,27 @@ export class ApiClient {
|
|
|
87
113
|
if (options?.offset)
|
|
88
114
|
params.set('offset', String(options.offset));
|
|
89
115
|
const query = params.toString();
|
|
90
|
-
return this.
|
|
116
|
+
return this.request(this.appPath(`/bundles${query ? `?${query}` : ''}`));
|
|
91
117
|
}
|
|
92
118
|
async deleteBundle(bundleId) {
|
|
93
|
-
await this.
|
|
119
|
+
await this.request(this.appPath(`/bundles/${encodeURIComponent(bundleId)}`), {
|
|
94
120
|
method: 'DELETE',
|
|
95
121
|
});
|
|
96
122
|
}
|
|
97
123
|
async release(channel, bundleId, options) {
|
|
98
124
|
const autoRevert = options?.autoRevert === true;
|
|
99
|
-
return this.
|
|
125
|
+
return this.request(this.appPath('/releases'), {
|
|
100
126
|
method: 'POST',
|
|
127
|
+
headers: { 'Idempotency-Key': options?.idempotencyKey ?? randomUUID() },
|
|
101
128
|
body: JSON.stringify({
|
|
102
129
|
bundleId,
|
|
103
130
|
channel,
|
|
131
|
+
...(options && 'expectedCurrentReleaseId' in options
|
|
132
|
+
? { expectedCurrentReleaseId: options.expectedCurrentReleaseId }
|
|
133
|
+
: {}),
|
|
104
134
|
forceImmediate: options?.forceImmediate ?? false,
|
|
105
135
|
autoRevert,
|
|
136
|
+
compatibilityDecision: options?.compatibilityDecision,
|
|
106
137
|
// The server rejects threshold fields unless autoRevert is true.
|
|
107
138
|
...(autoRevert
|
|
108
139
|
? {
|
|
@@ -124,7 +155,7 @@ export class ApiClient {
|
|
|
124
155
|
if (options?.offset)
|
|
125
156
|
params.set('offset', String(options.offset));
|
|
126
157
|
const query = params.toString();
|
|
127
|
-
return this.
|
|
158
|
+
return this.request(this.appPath(`/releases${query ? `?${query}` : ''}`));
|
|
128
159
|
}
|
|
129
160
|
}
|
|
130
161
|
//# sourceMappingURL=api.js.map
|
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type Artifact = {
|
|
2
|
+
path: string;
|
|
3
|
+
bytes: number;
|
|
4
|
+
};
|
|
5
|
+
export type ArtifactInspection = {
|
|
6
|
+
fileCount: number;
|
|
7
|
+
totalBytes: number;
|
|
8
|
+
largestFiles: Artifact[];
|
|
9
|
+
nativeArtifacts: Artifact[];
|
|
10
|
+
warnings: string[];
|
|
11
|
+
};
|
|
12
|
+
/** Inspect metadata only; never remove or silently exclude application assets. */
|
|
13
|
+
export declare function inspectArtifacts(directory: string, strategy?: 'zip' | 'deltas'): ArtifactInspection;
|
|
14
|
+
export declare function preflightArtifacts(directory: string, options?: {
|
|
15
|
+
strategy?: 'zip' | 'deltas';
|
|
16
|
+
strict?: boolean;
|
|
17
|
+
onWarning?: (message: string) => void;
|
|
18
|
+
}): ArtifactInspection;
|
|
19
|
+
export declare function validateEncryptedArchiveSize(zipBytes: number): void;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=artifact-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-preflight.d.ts","sourceRoot":"","sources":["../../src/lib/artifact-preflight.ts"],"names":[],"mappings":"AASA,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,QAAQ,EAAE,CAAC;IACzB,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,KAAK,GAAG,QAAgB,GACjC,kBAAkB,CA2DpB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,GACL,kBAAkB,CAOpB;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMnE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { lstatSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join, posix } from 'node:path';
|
|
3
|
+
import { CliError } from './errors.js';
|
|
4
|
+
import { validateBundleDirectory } from './zip.js';
|
|
5
|
+
const MIB = 1024 * 1024;
|
|
6
|
+
const MAX_UNPACKED_BYTES = 500_000_000;
|
|
7
|
+
const INSTALLER = /\.(exe|msi|dmg|pkg|apk|ipa|appx|msix|deb|rpm)$/i;
|
|
8
|
+
/** Inspect metadata only; never remove or silently exclude application assets. */
|
|
9
|
+
export function inspectArtifacts(directory, strategy = 'zip') {
|
|
10
|
+
validateBundleDirectory(directory);
|
|
11
|
+
const files = [];
|
|
12
|
+
const maximumFiles = strategy === 'deltas' ? 5000 : 10_000;
|
|
13
|
+
let totalBytes = 0;
|
|
14
|
+
const walk = (relative) => {
|
|
15
|
+
for (const entry of readdirSync(join(directory, relative), { withFileTypes: true })) {
|
|
16
|
+
const path = relative ? posix.join(relative, entry.name) : entry.name;
|
|
17
|
+
if (entry.isSymbolicLink()) {
|
|
18
|
+
throw new CliError(`Unsupported symlink in bundle output: ${JSON.stringify(path)}`);
|
|
19
|
+
}
|
|
20
|
+
if (entry.isDirectory()) {
|
|
21
|
+
walk(path);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (!entry.isFile()) {
|
|
25
|
+
throw new CliError(`Unsupported non-file artifact: ${JSON.stringify(path)}`);
|
|
26
|
+
}
|
|
27
|
+
const bytes = lstatSync(join(directory, path)).size;
|
|
28
|
+
totalBytes += bytes;
|
|
29
|
+
files.push({ path, bytes });
|
|
30
|
+
if (files.length > maximumFiles) {
|
|
31
|
+
throw new CliError(`Bundle exceeds the ${strategy} limit of ${maximumFiles} files.`);
|
|
32
|
+
}
|
|
33
|
+
if (totalBytes > MAX_UNPACKED_BYTES) {
|
|
34
|
+
throw new CliError('Bundle exceeds the native extraction limit of 500,000,000 bytes. Reduce its assets before uploading.');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
walk('');
|
|
39
|
+
const largestFiles = [...files]
|
|
40
|
+
.sort((a, b) => b.bytes - a.bytes || a.path.localeCompare(b.path))
|
|
41
|
+
.slice(0, 5);
|
|
42
|
+
const nativeArtifacts = files.filter((file) => INSTALLER.test(file.path) ||
|
|
43
|
+
file.path.split('/').some((part) => part.toLowerCase().endsWith('.app')));
|
|
44
|
+
const warnings = [];
|
|
45
|
+
if (nativeArtifacts.length > 0) {
|
|
46
|
+
const examples = nativeArtifacts
|
|
47
|
+
.slice(0, 5)
|
|
48
|
+
.map((file) => `${JSON.stringify(file.path)} (${(file.bytes / MIB).toFixed(1)} MiB)`)
|
|
49
|
+
.join(', ');
|
|
50
|
+
warnings.push(`Bundle contains ${nativeArtifacts.length} native installer/artifact file(s): ${examples}. Confirm these belong in the mobile web bundle; otherwise publish them separately.`);
|
|
51
|
+
}
|
|
52
|
+
if (totalBytes >= 50 * MIB || largestFiles.some((file) => file.bytes >= 10 * MIB)) {
|
|
53
|
+
const examples = largestFiles
|
|
54
|
+
.map((file) => `${JSON.stringify(file.path)} (${(file.bytes / MIB).toFixed(1)} MiB)`)
|
|
55
|
+
.join(', ');
|
|
56
|
+
warnings.push(`Large bundle: ${(totalBytes / MIB).toFixed(1)} MiB across ${files.length} files. Large downloads increase timeout, storage, and memory pressure. Largest files: ${examples}.`);
|
|
57
|
+
}
|
|
58
|
+
return { fileCount: files.length, totalBytes, largestFiles, nativeArtifacts, warnings };
|
|
59
|
+
}
|
|
60
|
+
export function preflightArtifacts(directory, options = {}) {
|
|
61
|
+
const inspection = inspectArtifacts(directory, options.strategy);
|
|
62
|
+
if (options.strict && inspection.warnings.length > 0) {
|
|
63
|
+
throw new CliError(`Artifact preflight failed:\n${inspection.warnings.join('\n')}`);
|
|
64
|
+
}
|
|
65
|
+
for (const warning of inspection.warnings)
|
|
66
|
+
(options.onWarning ?? console.warn)(warning);
|
|
67
|
+
return inspection;
|
|
68
|
+
}
|
|
69
|
+
export function validateEncryptedArchiveSize(zipBytes) {
|
|
70
|
+
if (zipBytes + 16 > 128 * MIB) {
|
|
71
|
+
throw new CliError('Encrypted bundle exceeds the native 128 MiB limit (including its authentication tag). Reduce the bundle before uploading.');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=artifact-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-preflight.js","sourceRoot":"","sources":["../../src/lib/artifact-preflight.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -8,11 +8,15 @@ export interface ResolvedValue<T> {
|
|
|
8
8
|
export interface ResolvedAuthToken {
|
|
9
9
|
token: string;
|
|
10
10
|
source: AuthSource;
|
|
11
|
+
userId?: string;
|
|
12
|
+
organizationId?: string;
|
|
11
13
|
}
|
|
12
14
|
export interface ServerAuthConfig {
|
|
13
15
|
serverUrl: string;
|
|
14
16
|
authToken: string;
|
|
15
17
|
authSource: AuthSource;
|
|
18
|
+
authUserId?: string;
|
|
19
|
+
authOrganizationId?: string;
|
|
16
20
|
}
|
|
17
21
|
export interface ProjectConfig {
|
|
18
22
|
appId?: string;
|
|
@@ -50,10 +54,13 @@ export interface ConfigResolveSnapshot {
|
|
|
50
54
|
updateStrategy: ResolvedValue<'zip' | 'deltas' | null>;
|
|
51
55
|
authToken: ResolvedValue<string | null>;
|
|
52
56
|
authSource: AuthSource | null;
|
|
57
|
+
authUserId: string | null;
|
|
58
|
+
authOrganizationId: string | null;
|
|
53
59
|
}
|
|
54
60
|
export declare function normalizeServerUrl(url: string): string;
|
|
55
61
|
export declare function resolveServerUrl(_cwd?: string, explicitServerUrl?: string, configuredServerUrl?: string): string;
|
|
56
62
|
export declare function resolveAuthToken(serverUrl: string): Promise<ResolvedAuthToken | null>;
|
|
63
|
+
export declare function resolveOrganizationOverride(explicitOrganizationId?: string): string | undefined;
|
|
57
64
|
export declare function requireServerAndAuth(options?: {
|
|
58
65
|
cwd?: string;
|
|
59
66
|
serverUrl?: string;
|
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;
|
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { CAPACITOR_CONFIG_FILE_NAMES, readCapacitorProjectConfig } from './capacitor-config.js';
|
|
3
|
-
import {
|
|
3
|
+
import { readStoredAuthProfile } from './token-store.js';
|
|
4
4
|
const API_PATH_SUFFIX = '/api/v1';
|
|
5
5
|
const DEFAULT_SERVER_URL = 'https://console.otakit.app';
|
|
6
6
|
export const PROJECT_CONFIG_LABEL = 'capacitor.config.*';
|
|
@@ -51,12 +51,20 @@ export async function resolveAuthToken(serverUrl) {
|
|
|
51
51
|
if (token) {
|
|
52
52
|
return { token, source: 'env_token' };
|
|
53
53
|
}
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
return {
|
|
54
|
+
const storedProfile = await readStoredAuthProfile(serverUrl);
|
|
55
|
+
if (storedProfile) {
|
|
56
|
+
return {
|
|
57
|
+
token: storedProfile.token,
|
|
58
|
+
source: 'file',
|
|
59
|
+
...(storedProfile.userId ? { userId: storedProfile.userId } : {}),
|
|
60
|
+
...(storedProfile.organizationId ? { organizationId: storedProfile.organizationId } : {}),
|
|
61
|
+
};
|
|
57
62
|
}
|
|
58
63
|
return null;
|
|
59
64
|
}
|
|
65
|
+
export function resolveOrganizationOverride(explicitOrganizationId) {
|
|
66
|
+
return (toNonEmptyString(explicitOrganizationId) ?? toNonEmptyString(process.env.OTAKIT_ORGANIZATION_ID));
|
|
67
|
+
}
|
|
60
68
|
export async function requireServerAndAuth(options) {
|
|
61
69
|
const cwd = options?.cwd ?? process.cwd();
|
|
62
70
|
const serverUrl = resolveServerUrl(cwd, options?.serverUrl, options?.projectServerUrl);
|
|
@@ -68,6 +76,8 @@ export async function requireServerAndAuth(options) {
|
|
|
68
76
|
serverUrl,
|
|
69
77
|
authToken: auth.token,
|
|
70
78
|
authSource: auth.source,
|
|
79
|
+
...(auth.userId ? { authUserId: auth.userId } : {}),
|
|
80
|
+
...(auth.organizationId ? { authOrganizationId: auth.organizationId } : {}),
|
|
71
81
|
};
|
|
72
82
|
}
|
|
73
83
|
export async function readProjectConfig(cwd = process.cwd()) {
|
|
@@ -207,6 +217,8 @@ export async function resolveConfigSnapshot(options) {
|
|
|
207
217
|
source: authTokenSource,
|
|
208
218
|
},
|
|
209
219
|
authSource: auth?.source ?? null,
|
|
220
|
+
authUserId: auth?.userId ?? null,
|
|
221
|
+
authOrganizationId: auth?.organizationId ?? null,
|
|
210
222
|
};
|
|
211
223
|
}
|
|
212
224
|
export async function requireConfig(options) {
|
|
@@ -231,6 +243,8 @@ export async function requireConfig(options) {
|
|
|
231
243
|
serverUrl: snapshot.serverUrl.value,
|
|
232
244
|
authToken: snapshot.authToken.value,
|
|
233
245
|
authSource: snapshot.authSource,
|
|
246
|
+
...(snapshot.authUserId ? { authUserId: snapshot.authUserId } : {}),
|
|
247
|
+
...(snapshot.authOrganizationId ? { authOrganizationId: snapshot.authOrganizationId } : {}),
|
|
234
248
|
};
|
|
235
249
|
}
|
|
236
250
|
function parseServerUrl(value, cwd) {
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AACxD,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAEzD,MAAM,mBAAmB,GAAG,YAAY,CAAC;AACzC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type SignInResult = {
|
|
2
|
+
token: string;
|
|
3
|
+
email: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Interactive email-OTP sign-in.
|
|
7
|
+
*
|
|
8
|
+
* A mistyped code used to end the process, forcing a fresh `otakit login` and a
|
|
9
|
+
* newly emailed code. Three attempts and an inline resend cost nothing and stop
|
|
10
|
+
* a typo from being a restart.
|
|
11
|
+
*/
|
|
12
|
+
export declare function signInWithEmailOtp(serverUrl: string, providedEmail?: string): Promise<SignInResult>;
|
|
13
|
+
//# sourceMappingURL=login-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-flow.d.ts","sourceRoot":"","sources":["../../src/lib/login-flow.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAgBF;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,CAAC,CAqDvB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { CliError } from './errors.js';
|
|
3
|
+
import { fetchCli, parseApiError } from './http.js';
|
|
4
|
+
import { ask } from './prompt.js';
|
|
5
|
+
const OTP_REGEX = /^\d{6}$/;
|
|
6
|
+
/**
|
|
7
|
+
* Better Auth 1.7 rejects a request that looks browser-originated but carries
|
|
8
|
+
* no Origin, and Node's fetch always sends Sec-Fetch-* headers — so without
|
|
9
|
+
* this the CLI gets MISSING_OR_NULL_ORIGIN on every sign-in. The CLI is a
|
|
10
|
+
* first-party client of the console it was pointed at, so it declares that
|
|
11
|
+
* origin rather than pretending to be something else.
|
|
12
|
+
*/
|
|
13
|
+
function authHeaders(serverUrl) {
|
|
14
|
+
return {
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
Origin: new URL(serverUrl).origin,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const MAX_CODE_ATTEMPTS = 3;
|
|
20
|
+
// Malformed entries and resends do not burn an attempt, so bound the loop
|
|
21
|
+
// itself rather than trusting the user to stop.
|
|
22
|
+
const MAX_PROMPTS = 12;
|
|
23
|
+
async function sendCode(serverUrl, email) {
|
|
24
|
+
const spinner = ora('Sending verification code...').start();
|
|
25
|
+
const response = await fetchCli(`${serverUrl}/api/auth/email-otp/send-verification-otp`, {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
headers: authHeaders(serverUrl),
|
|
28
|
+
body: JSON.stringify({ email, type: 'sign-in' }),
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
spinner.fail('Could not send verification code');
|
|
32
|
+
throw new CliError(await parseApiError(response));
|
|
33
|
+
}
|
|
34
|
+
spinner.succeed(`Verification code sent to ${email}`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Interactive email-OTP sign-in.
|
|
38
|
+
*
|
|
39
|
+
* A mistyped code used to end the process, forcing a fresh `otakit login` and a
|
|
40
|
+
* newly emailed code. Three attempts and an inline resend cost nothing and stop
|
|
41
|
+
* a typo from being a restart.
|
|
42
|
+
*/
|
|
43
|
+
export async function signInWithEmailOtp(serverUrl, providedEmail) {
|
|
44
|
+
const email = (providedEmail?.trim() || (await ask('Email: ')).trim()).toLowerCase();
|
|
45
|
+
if (!email)
|
|
46
|
+
throw new CliError('Email is required.');
|
|
47
|
+
await sendCode(serverUrl, email);
|
|
48
|
+
let attemptsLeft = MAX_CODE_ATTEMPTS;
|
|
49
|
+
let prompts = 0;
|
|
50
|
+
while (attemptsLeft > 0 && prompts < MAX_PROMPTS) {
|
|
51
|
+
prompts += 1;
|
|
52
|
+
const answer = (await ask('Verification code (or "r" to resend): ')).trim();
|
|
53
|
+
if (answer.toLowerCase() === 'r') {
|
|
54
|
+
await sendCode(serverUrl, email);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (!OTP_REGEX.test(answer)) {
|
|
58
|
+
console.error('Enter the 6-digit code from the email, or "r" to resend.');
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const spinner = ora('Verifying code...').start();
|
|
62
|
+
const response = await fetchCli(`${serverUrl}/api/auth/sign-in/email-otp`, {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
headers: authHeaders(serverUrl),
|
|
65
|
+
body: JSON.stringify({ email, otp: answer }),
|
|
66
|
+
});
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
attemptsLeft -= 1;
|
|
69
|
+
const message = await parseApiError(response);
|
|
70
|
+
spinner.fail(attemptsLeft > 0
|
|
71
|
+
? `${message} (${attemptsLeft} ${attemptsLeft === 1 ? 'attempt' : 'attempts'} left)`
|
|
72
|
+
: message);
|
|
73
|
+
if (attemptsLeft === 0) {
|
|
74
|
+
throw new CliError('Sign-in failed. Run the command again to request a new code.');
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const payload = (await response.json());
|
|
79
|
+
const token = typeof payload.token === 'string' ? payload.token.trim() : '';
|
|
80
|
+
if (!token) {
|
|
81
|
+
spinner.fail('Sign-in failed');
|
|
82
|
+
throw new CliError('Server returned an invalid auth response.');
|
|
83
|
+
}
|
|
84
|
+
spinner.succeed('Signed in');
|
|
85
|
+
return { token, email: payload.user?.email || email };
|
|
86
|
+
}
|
|
87
|
+
throw new CliError('Sign-in failed. Run the command again to request a new code.');
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=login-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-flow.js","sourceRoot":"","sources":["../../src/lib/login-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,8 @@ export interface CompatibilityFinding {
|
|
|
29
29
|
export interface CompatibilityResult {
|
|
30
30
|
status: CompatibilityStatus;
|
|
31
31
|
findings: CompatibilityFinding[];
|
|
32
|
+
/** Why a `skipped` result could not be determined. */
|
|
33
|
+
reason?: 'no_remote_baseline' | 'no_local_native_packages';
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Compare the local native set against the channel's current bundle.
|