@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.
Files changed (77) hide show
  1. package/README.md +41 -3
  2. package/dist/commands/connect.d.ts +3 -0
  3. package/dist/commands/connect.d.ts.map +1 -0
  4. package/dist/commands/connect.js +216 -0
  5. package/dist/commands/connect.js.map +1 -0
  6. package/dist/commands/login.d.ts.map +1 -1
  7. package/dist/commands/login.js +40 -48
  8. package/dist/commands/login.js.map +1 -1
  9. package/dist/commands/mcp.d.ts +4 -0
  10. package/dist/commands/mcp.d.ts.map +1 -0
  11. package/dist/commands/mcp.js +122 -0
  12. package/dist/commands/mcp.js.map +1 -0
  13. package/dist/commands/organization.d.ts +3 -0
  14. package/dist/commands/organization.d.ts.map +1 -0
  15. package/dist/commands/organization.js +44 -0
  16. package/dist/commands/organization.js.map +1 -0
  17. package/dist/commands/register.d.ts.map +1 -1
  18. package/dist/commands/register.js +71 -16
  19. package/dist/commands/register.js.map +1 -1
  20. package/dist/commands/release.d.ts.map +1 -1
  21. package/dist/commands/release.js +8 -2
  22. package/dist/commands/release.js.map +1 -1
  23. package/dist/commands/upload.d.ts.map +1 -1
  24. package/dist/commands/upload.js +8 -2
  25. package/dist/commands/upload.js.map +1 -1
  26. package/dist/commands/whoami.d.ts.map +1 -1
  27. package/dist/commands/whoami.js +59 -17
  28. package/dist/commands/whoami.js.map +1 -1
  29. package/dist/index.js +4584 -21
  30. package/dist/index.js.map +7 -1
  31. package/dist/lib/api.d.ts +23 -6
  32. package/dist/lib/api.d.ts.map +1 -1
  33. package/dist/lib/api.js +46 -15
  34. package/dist/lib/api.js.map +1 -1
  35. package/dist/lib/artifact-preflight.d.ts +21 -0
  36. package/dist/lib/artifact-preflight.d.ts.map +1 -0
  37. package/dist/lib/artifact-preflight.js +74 -0
  38. package/dist/lib/artifact-preflight.js.map +1 -0
  39. package/dist/lib/config.d.ts +7 -0
  40. package/dist/lib/config.d.ts.map +1 -1
  41. package/dist/lib/config.js +18 -4
  42. package/dist/lib/config.js.map +1 -1
  43. package/dist/lib/login-flow.d.ts +13 -0
  44. package/dist/lib/login-flow.d.ts.map +1 -0
  45. package/dist/lib/login-flow.js +89 -0
  46. package/dist/lib/login-flow.js.map +1 -0
  47. package/dist/lib/native-deps.d.ts +2 -0
  48. package/dist/lib/native-deps.d.ts.map +1 -1
  49. package/dist/lib/native-deps.js +12 -2
  50. package/dist/lib/native-deps.js.map +1 -1
  51. package/dist/lib/organization.d.ts +27 -0
  52. package/dist/lib/organization.d.ts.map +1 -0
  53. package/dist/lib/organization.js +86 -0
  54. package/dist/lib/organization.js.map +1 -0
  55. package/dist/lib/project-inspect.d.ts +27 -0
  56. package/dist/lib/project-inspect.d.ts.map +1 -0
  57. package/dist/lib/project-inspect.js +131 -0
  58. package/dist/lib/project-inspect.js.map +1 -0
  59. package/dist/lib/token-store.d.ts +8 -2
  60. package/dist/lib/token-store.d.ts.map +1 -1
  61. package/dist/lib/token-store.js +105 -67
  62. package/dist/lib/token-store.js.map +1 -1
  63. package/dist/lib/upload-workflow.d.ts +9 -1
  64. package/dist/lib/upload-workflow.d.ts.map +1 -1
  65. package/dist/lib/upload-workflow.js +55 -13
  66. package/dist/lib/upload-workflow.js.map +1 -1
  67. package/dist/lib/version.d.ts.map +1 -1
  68. package/dist/lib/version.js +16 -5
  69. package/dist/lib/version.js.map +1 -1
  70. package/dist/lib/zip.d.ts.map +1 -1
  71. package/dist/lib/zip.js +3 -0
  72. package/dist/lib/zip.js.map +1 -1
  73. package/dist/mcp/local-adapter.d.ts +97 -0
  74. package/dist/mcp/local-adapter.d.ts.map +1 -0
  75. package/dist/mcp/local-adapter.js +664 -0
  76. package/dist/mcp/local-adapter.js.map +1 -0
  77. package/package.json +15 -5
@@ -1 +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"}
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;IACjC,sDAAsD;IACtD,MAAM,CAAC,EAAE,oBAAoB,GAAG,0BAA0B,CAAC;CAC5D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,SAAS,GACzC,mBAAmB,CA+CrB;AA4ED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAuC7E"}
@@ -103,7 +103,15 @@ function checksumForPlatform(packageDir, sortedRelativePaths, sourceRegex, confi
103
103
  */
104
104
  export function compareNative(local, remote) {
105
105
  if (remote === null || remote === undefined) {
106
- return { status: 'skipped', findings: [] };
106
+ return { status: 'skipped', reason: 'no_remote_baseline', findings: [] };
107
+ }
108
+ // Every remote-only package reads as a safe removal, which is right for one
109
+ // plugin but wrong as a verdict when the local scan found nothing at all.
110
+ // A pruned install, a workspace subdirectory, or a plugin declared only in
111
+ // devDependencies all produce an empty set, and reporting that as
112
+ // "compatible" is a confident green light built on no evidence.
113
+ if (local.length === 0 && remote.length > 0) {
114
+ return { status: 'skipped', reason: 'no_local_native_packages', findings: [] };
107
115
  }
108
116
  const remoteByName = new Map(remote.map((entry) => [entry.name, entry]));
109
117
  const findings = [];
@@ -203,7 +211,9 @@ function versionsIntersect(local, remote) {
203
211
  }
204
212
  export function formatCompatibilityReport(result) {
205
213
  if (result.status === 'skipped') {
206
- return 'Compatibility check skipped: the current release has no native package baseline yet.';
214
+ return result.reason === 'no_local_native_packages'
215
+ ? 'Compatibility check skipped: no native packages were found locally, but the current release records some. Install dependencies, or point --package-json/--node-modules at the right directory.'
216
+ : 'Compatibility check skipped: the current release has no native package baseline yet.';
207
217
  }
208
218
  const lines = [];
209
219
  const rows = result.findings.map((finding) => [
@@ -1 +1 @@
1
- {"version":3,"file":"native-deps.js","sourceRoot":"","sources":["../../src/lib/native-deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-deps.js","sourceRoot":"","sources":["../../src/lib/native-deps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { StoredAuthProfile } from './token-store.js';
2
+ export type OrganizationMembership = {
3
+ id: string;
4
+ organizationId: string;
5
+ organizationName: string;
6
+ role: string;
7
+ };
8
+ export type AccountResponse = {
9
+ user: {
10
+ id: string;
11
+ email: string;
12
+ name: string;
13
+ activeOrganizationId: string | null;
14
+ };
15
+ memberships: OrganizationMembership[];
16
+ };
17
+ export declare function fetchAccount(serverUrl: string, token: string): Promise<AccountResponse>;
18
+ export declare function initialOrganizationId(account: AccountResponse, storedProfile?: StoredAuthProfile | null): string | undefined;
19
+ export declare function organizationById(memberships: readonly OrganizationMembership[], organizationId: string | undefined | null): OrganizationMembership | undefined;
20
+ export declare function organizationDisplayLabel(membership: OrganizationMembership, memberships: readonly OrganizationMembership[]): string;
21
+ export declare function organizationFromAnswer(memberships: readonly OrganizationMembership[], answer: string, defaultOrganizationId?: string): OrganizationMembership | undefined;
22
+ export declare function promptForOrganization(memberships: readonly OrganizationMembership[], options?: {
23
+ initialOrganizationId?: string;
24
+ message?: string;
25
+ }): Promise<OrganizationMembership>;
26
+ export declare function shellLiteral(value: string): string;
27
+ //# sourceMappingURL=organization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.d.ts","sourceRoot":"","sources":["../../src/lib/organization.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC,CAAC;IACF,WAAW,EAAE,sBAAsB,EAAE,CAAC;CACvC,CAAC;AAEF,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAW7F;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,aAAa,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACvC,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,SAAS,sBAAsB,EAAE,EAC9C,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACxC,sBAAsB,GAAG,SAAS,CAGpC;AAMD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,sBAAsB,EAClC,WAAW,EAAE,SAAS,sBAAsB,EAAE,GAC7C,MAAM,CAMR;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,sBAAsB,EAAE,EAC9C,MAAM,EAAE,MAAM,EACd,qBAAqB,CAAC,EAAE,MAAM,GAC7B,sBAAsB,GAAG,SAAS,CAQpC;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,SAAS,sBAAsB,EAAE,EAC9C,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjE,OAAO,CAAC,sBAAsB,CAAC,CAiCjC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,86 @@
1
+ import { CliError } from './errors.js';
2
+ import { fetchCli, parseApiError } from './http.js';
3
+ import { ask } from './prompt.js';
4
+ export async function fetchAccount(serverUrl, token) {
5
+ const response = await fetchCli(`${serverUrl}/api/v1/me`, {
6
+ headers: { Authorization: `Bearer ${token}` },
7
+ });
8
+ if (!response.ok)
9
+ throw new CliError(await parseApiError(response));
10
+ const payload = (await response.json());
11
+ if (!payload.user?.id || !payload.user.email || !Array.isArray(payload.memberships)) {
12
+ throw new CliError('Server returned an invalid account response.');
13
+ }
14
+ return payload;
15
+ }
16
+ export function initialOrganizationId(account, storedProfile) {
17
+ const membershipIds = new Set(account.memberships.map((membership) => membership.organizationId));
18
+ if (storedProfile?.userId === account.user.id &&
19
+ storedProfile.organizationId &&
20
+ membershipIds.has(storedProfile.organizationId)) {
21
+ return storedProfile.organizationId;
22
+ }
23
+ if (account.user.activeOrganizationId && membershipIds.has(account.user.activeOrganizationId)) {
24
+ return account.user.activeOrganizationId;
25
+ }
26
+ return account.memberships[0]?.organizationId;
27
+ }
28
+ export function organizationById(memberships, organizationId) {
29
+ if (!organizationId)
30
+ return undefined;
31
+ return memberships.find((membership) => membership.organizationId === organizationId);
32
+ }
33
+ function terminalSafe(value) {
34
+ return value.replace(/\p{Cc}/gu, (character) => JSON.stringify(character).slice(1, -1));
35
+ }
36
+ export function organizationDisplayLabel(membership, memberships) {
37
+ const duplicateName = memberships.filter((candidate) => candidate.organizationName === membership.organizationName)
38
+ .length > 1;
39
+ const suffix = duplicateName ? ` · ${membership.organizationId.slice(0, 8)}` : '';
40
+ return `${terminalSafe(membership.organizationName)} — ${terminalSafe(membership.role)}${suffix}`;
41
+ }
42
+ export function organizationFromAnswer(memberships, answer, defaultOrganizationId) {
43
+ const normalized = answer.trim();
44
+ if (!normalized) {
45
+ return organizationById(memberships, defaultOrganizationId) ?? memberships[0];
46
+ }
47
+ if (!/^\d+$/.test(normalized))
48
+ return undefined;
49
+ const index = Number.parseInt(normalized, 10) - 1;
50
+ return memberships[index];
51
+ }
52
+ export async function promptForOrganization(memberships, options = {}) {
53
+ if (memberships.length === 0) {
54
+ throw new CliError('This account does not belong to an OtaKit organization.');
55
+ }
56
+ if (memberships.length === 1)
57
+ return memberships[0];
58
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
59
+ throw new CliError([
60
+ 'Organization selection needs an interactive terminal.',
61
+ 'Run `otakit organization select` in a terminal, then retry.',
62
+ 'For automation, use the OTAKIT_ORGANIZATION_ID export it prints or an organization API key.',
63
+ ].join('\n'));
64
+ }
65
+ const defaultMembership = organizationById(memberships, options.initialOrganizationId) ?? memberships[0];
66
+ const defaultIndex = memberships.indexOf(defaultMembership);
67
+ console.log('');
68
+ console.log(options.message ?? 'Choose a default organization for commands not tied to an app:');
69
+ console.log('');
70
+ memberships.forEach((membership, index) => {
71
+ const marker = index === defaultIndex ? '*' : ' ';
72
+ console.log(` [${index + 1}]${marker} ${organizationDisplayLabel(membership, memberships)}`);
73
+ });
74
+ console.log('');
75
+ while (true) {
76
+ const answer = await ask(`Selection [${defaultIndex + 1}]: `);
77
+ const selected = organizationFromAnswer(memberships, answer, defaultMembership.organizationId);
78
+ if (selected)
79
+ return selected;
80
+ console.error(`Enter a number from 1 to ${memberships.length}.`);
81
+ }
82
+ }
83
+ export function shellLiteral(value) {
84
+ return `'${value.replace(/'/g, `'"'"'`)}'`;
85
+ }
86
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/lib/organization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export declare function inspectOtaKitProject(projectRoot: string): Promise<{
2
+ projectRoot: string;
3
+ capacitorConfig: {
4
+ path: string;
5
+ appId: string | null;
6
+ channel: string | null;
7
+ runtimeVersion: string | null;
8
+ updateStrategy: import("./capacitor-config.js").UpdateStrategy;
9
+ serverUrl: string;
10
+ serverUrlSource: import("./config.js").ConfigValueSource;
11
+ } | null;
12
+ pluginVersion: string | null;
13
+ buildOutput: {
14
+ path: string;
15
+ exists: boolean;
16
+ } | null;
17
+ notifyAppReady: {
18
+ found: boolean;
19
+ evidencePath: string | null;
20
+ };
21
+ authenticated: boolean;
22
+ findings: {
23
+ level: "error" | "warning" | "info";
24
+ message: string;
25
+ }[];
26
+ }>;
27
+ //# sourceMappingURL=project-inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-inspect.d.ts","sourceRoot":"","sources":["../../src/lib/project-inspect.ts"],"names":[],"mappings":"AA+EA,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;eAY7B,OAAO,GAAG,SAAS,GAAG,MAAM;iBAAW,MAAM;;GA8C7E"}
@@ -0,0 +1,131 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import { dirname, join, relative, resolve, sep } from 'node:path';
3
+ import { readCapacitorProjectConfig } from './capacitor-config.js';
4
+ import { resolveConfigSnapshot } from './config.js';
5
+ const SOURCE_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx', '.mjs', '.cjs']);
6
+ const SKIPPED_DIRECTORIES = new Set([
7
+ '.git',
8
+ '.next',
9
+ 'android',
10
+ 'build',
11
+ 'dist',
12
+ 'ios',
13
+ 'node_modules',
14
+ ]);
15
+ const MAX_SCANNED_FILES = 2_000;
16
+ const MAX_SOURCE_BYTES = 1_000_000;
17
+ function extension(path) {
18
+ const index = path.lastIndexOf('.');
19
+ return index >= 0 ? path.slice(index) : '';
20
+ }
21
+ function findNotifyAppReady(root) {
22
+ const queue = [root];
23
+ let scanned = 0;
24
+ while (queue.length > 0 && scanned < MAX_SCANNED_FILES) {
25
+ const directory = queue.shift();
26
+ if (!directory)
27
+ break;
28
+ let entries;
29
+ try {
30
+ entries = readdirSync(directory, { withFileTypes: true });
31
+ }
32
+ catch {
33
+ continue;
34
+ }
35
+ for (const entry of entries) {
36
+ const path = join(directory, entry.name);
37
+ if (entry.isDirectory() && !SKIPPED_DIRECTORIES.has(entry.name)) {
38
+ queue.push(path);
39
+ continue;
40
+ }
41
+ if (!entry.isFile() || !SOURCE_EXTENSIONS.has(extension(entry.name))) {
42
+ continue;
43
+ }
44
+ scanned += 1;
45
+ try {
46
+ if (statSync(path).size <= MAX_SOURCE_BYTES &&
47
+ readFileSync(path, 'utf8').includes('notifyAppReady')) {
48
+ return relative(root, path).split(sep).join('/');
49
+ }
50
+ }
51
+ catch {
52
+ // An unreadable source file is simply not evidence of integration.
53
+ }
54
+ }
55
+ }
56
+ return null;
57
+ }
58
+ function pluginVersion(projectRoot) {
59
+ const packageJsonPath = join(projectRoot, 'package.json');
60
+ if (!existsSync(packageJsonPath))
61
+ return null;
62
+ try {
63
+ const parsed = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
64
+ return (parsed.dependencies?.['@otakit/capacitor-updater'] ??
65
+ parsed.devDependencies?.['@otakit/capacitor-updater'] ??
66
+ null);
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ export async function inspectOtaKitProject(projectRoot) {
73
+ const root = resolve(projectRoot);
74
+ const [capacitor, snapshot] = await Promise.all([
75
+ readCapacitorProjectConfig(root),
76
+ resolveConfigSnapshot({ cwd: root }),
77
+ ]);
78
+ const configDirectory = capacitor ? dirname(capacitor.configPath) : root;
79
+ const outputPath = snapshot.outputDir.value
80
+ ? resolve(configDirectory, snapshot.outputDir.value)
81
+ : null;
82
+ const notifyAppReadyPath = findNotifyAppReady(root);
83
+ const installedPluginVersion = pluginVersion(root);
84
+ const findings = [];
85
+ if (!capacitor)
86
+ findings.push({ level: 'error', message: 'No capacitor.config.* file found.' });
87
+ if (!snapshot.appId.value) {
88
+ findings.push({ level: 'error', message: 'plugins.OtaKit.appId is not configured.' });
89
+ }
90
+ if (!installedPluginVersion) {
91
+ findings.push({ level: 'error', message: '@otakit/capacitor-updater is not in package.json.' });
92
+ }
93
+ if (!outputPath) {
94
+ findings.push({ level: 'warning', message: 'No Capacitor webDir/build output is configured.' });
95
+ }
96
+ else if (!existsSync(outputPath)) {
97
+ findings.push({
98
+ level: 'warning',
99
+ message: `Configured build output does not exist: ${outputPath}`,
100
+ });
101
+ }
102
+ if (!notifyAppReadyPath) {
103
+ findings.push({
104
+ level: 'warning',
105
+ message: 'No notifyAppReady() call was found in the bounded project source scan.',
106
+ });
107
+ }
108
+ return {
109
+ projectRoot: root,
110
+ capacitorConfig: capacitor
111
+ ? {
112
+ path: capacitor.configPath,
113
+ appId: capacitor.appId ?? null,
114
+ channel: capacitor.channel ?? null,
115
+ runtimeVersion: capacitor.runtimeVersion ?? null,
116
+ updateStrategy: capacitor.updateStrategy ?? 'zip',
117
+ serverUrl: snapshot.serverUrl.value,
118
+ serverUrlSource: snapshot.serverUrl.source,
119
+ }
120
+ : null,
121
+ pluginVersion: installedPluginVersion,
122
+ buildOutput: outputPath ? { path: outputPath, exists: existsSync(outputPath) } : null,
123
+ notifyAppReady: {
124
+ found: notifyAppReadyPath !== null,
125
+ evidencePath: notifyAppReadyPath,
126
+ },
127
+ authenticated: snapshot.authToken.value !== null,
128
+ findings,
129
+ };
130
+ }
131
+ //# sourceMappingURL=project-inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-inspect.js","sourceRoot":"","sources":["../../src/lib/project-inspect.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,14 @@ type TokenStoreOperationResult = {
5
5
  type TokenDeleteResult = TokenStoreOperationResult & {
6
6
  deleted: boolean;
7
7
  };
8
- export declare function readStoredAccessToken(serverUrl: string): Promise<string | null>;
9
- export declare function storeAccessToken(serverUrl: string, token: string): Promise<TokenStoreOperationResult>;
8
+ export type StoredAuthProfile = {
9
+ token: string;
10
+ userId?: string;
11
+ organizationId?: string;
12
+ };
13
+ export declare function readStoredAuthProfile(serverUrl: string): Promise<StoredAuthProfile | null>;
14
+ export declare function storeAuthProfile(serverUrl: string, profile: StoredAuthProfile): Promise<TokenStoreOperationResult>;
15
+ export declare function storeSelectedOrganization(serverUrl: string, userId: string, organizationId: string): Promise<TokenStoreOperationResult>;
10
16
  export declare function clearStoredAccessToken(serverUrl: string): Promise<TokenDeleteResult>;
11
17
  export {};
12
18
  //# sourceMappingURL=token-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../src/lib/token-store.ts"],"names":[],"mappings":"AAIA,KAAK,yBAAyB,GAAG;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,iBAAiB,GAAG,yBAAyB,GAAG;IACnD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AA6CF,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBrF;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,yBAAyB,CAAC,CA0BpC;AAED,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgD1F"}
1
+ {"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../src/lib/token-store.ts"],"names":[],"mappings":"AAKA,KAAK,yBAAyB,GAAG;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,iBAAiB,GAAG,yBAAyB,GAAG;IACnD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AA4GF,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAWhG;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,yBAAyB,CAAC,CAgBpC;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,yBAAyB,CAAC,CAIpC;AAED,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8B1F"}
@@ -1,6 +1,10 @@
1
- import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
1
+ import { randomUUID } from 'node:crypto';
2
+ import { chmod, mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
2
3
  import { homedir } from 'node:os';
3
4
  import { dirname, join } from 'node:path';
5
+ function emptyPayload() {
6
+ return { version: 2, profiles: {} };
7
+ }
4
8
  function getAuthFilePath() {
5
9
  if (process.platform === 'win32') {
6
10
  const appData = process.env.APPDATA?.trim();
@@ -11,70 +15,111 @@ function getAuthFilePath() {
11
15
  const baseDir = xdgConfigHome && xdgConfigHome.length > 0 ? xdgConfigHome : join(homedir(), '.config');
12
16
  return join(baseDir, 'otakit', 'auth.json');
13
17
  }
18
+ function normalizeProfile(value) {
19
+ if (!value || typeof value !== 'object' || Array.isArray(value))
20
+ return null;
21
+ const raw = value;
22
+ const token = typeof raw.token === 'string' ? raw.token.trim() : '';
23
+ if (!token)
24
+ return null;
25
+ const userId = typeof raw.userId === 'string' ? raw.userId.trim() : '';
26
+ const organizationId = typeof raw.organizationId === 'string' ? raw.organizationId.trim() : '';
27
+ return {
28
+ token,
29
+ ...(userId ? { userId } : {}),
30
+ ...(organizationId ? { organizationId } : {}),
31
+ };
32
+ }
33
+ function normalizeProfiles(value) {
34
+ if (!value || typeof value !== 'object' || Array.isArray(value))
35
+ return {};
36
+ const profiles = {};
37
+ for (const [serverUrl, rawProfile] of Object.entries(value)) {
38
+ const profile = normalizeProfile(rawProfile);
39
+ if (profile)
40
+ profiles[serverUrl] = profile;
41
+ }
42
+ return profiles;
43
+ }
44
+ function migrateLegacyTokens(value) {
45
+ if (!value || typeof value !== 'object' || Array.isArray(value))
46
+ return {};
47
+ const profiles = {};
48
+ for (const [serverUrl, rawToken] of Object.entries(value)) {
49
+ if (typeof rawToken === 'string' && rawToken.trim()) {
50
+ profiles[serverUrl] = { token: rawToken.trim() };
51
+ }
52
+ }
53
+ return profiles;
54
+ }
14
55
  async function readPayload(path) {
15
56
  const raw = await readFile(path, 'utf-8');
16
57
  const parsed = JSON.parse(raw);
17
- if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
18
- const tokens = parsed.tokens;
19
- if (tokens && typeof tokens === 'object' && !Array.isArray(tokens)) {
20
- const normalized = {};
21
- for (const [key, value] of Object.entries(tokens)) {
22
- if (typeof value === 'string' && value.trim().length > 0) {
23
- normalized[key] = value.trim();
24
- }
25
- }
26
- return { tokens: normalized };
27
- }
28
- }
29
- return { tokens: {} };
58
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
59
+ return emptyPayload();
60
+ const record = parsed;
61
+ const profiles = normalizeProfiles(record.profiles);
62
+ if (Object.keys(profiles).length > 0 || record.version === 2) {
63
+ return { version: 2, profiles };
64
+ }
65
+ return { version: 2, profiles: migrateLegacyTokens(record.tokens) };
30
66
  }
31
67
  async function writePayload(path, payload) {
32
- await mkdir(dirname(path), { recursive: true, mode: 0o700 });
33
- await writeFile(path, `${JSON.stringify(payload, null, 2)}\n`, {
34
- encoding: 'utf-8',
35
- mode: 0o600,
36
- });
37
- }
38
- export async function readStoredAccessToken(serverUrl) {
39
- const path = getAuthFilePath();
40
- let payload;
68
+ const directory = dirname(path);
69
+ await mkdir(directory, { recursive: true, mode: 0o700 });
70
+ await chmod(directory, 0o700);
71
+ const temporaryPath = join(directory, `.auth-${process.pid}-${randomUUID()}.tmp`);
72
+ const compatiblePayload = {
73
+ ...payload,
74
+ tokens: Object.fromEntries(Object.entries(payload.profiles).map(([serverUrl, profile]) => [serverUrl, profile.token])),
75
+ };
41
76
  try {
42
- payload = await readPayload(path);
77
+ await writeFile(temporaryPath, `${JSON.stringify(compatiblePayload, null, 2)}\n`, {
78
+ encoding: 'utf-8',
79
+ mode: 0o600,
80
+ flag: 'wx',
81
+ });
82
+ await rename(temporaryPath, path);
83
+ await chmod(path, 0o600);
43
84
  }
44
85
  catch (error) {
45
- if (error.code === 'ENOENT') {
46
- return null;
47
- }
48
- const reason = error instanceof Error ? error.message : 'unknown error';
49
- console.warn(`Warning: could not read auth file at ${path}: ${reason}`);
50
- return null;
86
+ await unlink(temporaryPath).catch(() => undefined);
87
+ throw error;
51
88
  }
52
- if (!payload) {
53
- return null;
89
+ }
90
+ async function readPayloadOrEmpty(path) {
91
+ try {
92
+ return await readPayload(path);
54
93
  }
55
- const direct = payload.tokens[serverUrl];
56
- if (direct) {
57
- return direct;
94
+ catch (error) {
95
+ if (error.code === 'ENOENT')
96
+ return emptyPayload();
97
+ const reason = error instanceof Error ? error.message : 'unknown error';
98
+ console.warn(`Warning: auth file at ${path} is unreadable, recreating it (${reason}).`);
99
+ return emptyPayload();
58
100
  }
59
- return null;
60
101
  }
61
- export async function storeAccessToken(serverUrl, token) {
102
+ export async function readStoredAuthProfile(serverUrl) {
62
103
  const path = getAuthFilePath();
63
- let payload;
64
104
  try {
65
- payload = (await readPayload(path)) ?? { tokens: {} };
105
+ const payload = await readPayload(path);
106
+ return payload.profiles[serverUrl] ?? null;
66
107
  }
67
108
  catch (error) {
68
- if (error.code === 'ENOENT') {
69
- payload = { tokens: {} };
70
- }
71
- else {
72
- const reason = error instanceof Error ? error.message : 'unknown error';
73
- console.warn(`Warning: auth file at ${path} is unreadable, recreating it (${reason}).`);
74
- payload = { tokens: {} };
75
- }
109
+ if (error.code === 'ENOENT')
110
+ return null;
111
+ const reason = error instanceof Error ? error.message : 'unknown error';
112
+ console.warn(`Warning: could not read auth file at ${path}: ${reason}`);
113
+ return null;
76
114
  }
77
- payload.tokens[serverUrl] = token.trim();
115
+ }
116
+ export async function storeAuthProfile(serverUrl, profile) {
117
+ const path = getAuthFilePath();
118
+ const normalized = normalizeProfile(profile);
119
+ if (!normalized)
120
+ return { ok: false, reason: 'Access token is required.' };
121
+ const payload = await readPayloadOrEmpty(path);
122
+ payload.profiles[serverUrl] = normalized;
78
123
  try {
79
124
  await writePayload(path, payload);
80
125
  return { ok: true };
@@ -82,10 +127,16 @@ export async function storeAccessToken(serverUrl, token) {
82
127
  catch (error) {
83
128
  return {
84
129
  ok: false,
85
- reason: error instanceof Error ? error.message : 'Failed to save token.',
130
+ reason: error instanceof Error ? error.message : 'Failed to save auth profile.',
86
131
  };
87
132
  }
88
133
  }
134
+ export async function storeSelectedOrganization(serverUrl, userId, organizationId) {
135
+ const existing = await readStoredAuthProfile(serverUrl);
136
+ if (!existing)
137
+ return { ok: false, reason: 'No stored login exists for this server.' };
138
+ return storeAuthProfile(serverUrl, { token: existing.token, userId, organizationId });
139
+ }
89
140
  export async function clearStoredAccessToken(serverUrl) {
90
141
  const path = getAuthFilePath();
91
142
  let payload;
@@ -102,34 +153,21 @@ export async function clearStoredAccessToken(serverUrl) {
102
153
  reason: error instanceof Error ? error.message : 'Failed to read auth store.',
103
154
  };
104
155
  }
105
- if (!payload) {
106
- return { ok: true, deleted: false };
107
- }
108
- const keysToDelete = [serverUrl];
109
- let deleted = false;
110
- for (const key of keysToDelete) {
111
- if (payload.tokens[key]) {
112
- delete payload.tokens[key];
113
- deleted = true;
114
- }
115
- }
116
- if (!deleted) {
156
+ if (!payload.profiles[serverUrl])
117
157
  return { ok: true, deleted: false };
118
- }
158
+ delete payload.profiles[serverUrl];
119
159
  try {
120
- if (Object.keys(payload.tokens).length === 0) {
160
+ if (Object.keys(payload.profiles).length === 0)
121
161
  await unlink(path);
122
- }
123
- else {
162
+ else
124
163
  await writePayload(path, payload);
125
- }
126
164
  return { ok: true, deleted: true };
127
165
  }
128
166
  catch (error) {
129
167
  return {
130
168
  ok: false,
131
169
  deleted: false,
132
- reason: error instanceof Error ? error.message : 'Failed to delete token.',
170
+ reason: error instanceof Error ? error.message : 'Failed to delete auth profile.',
133
171
  };
134
172
  }
135
173
  }