@capuchoo/cli 0.8.0 → 0.9.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 (74) hide show
  1. package/README.md +211 -23
  2. package/dist/cli/members.d.ts +23 -0
  3. package/dist/cli/members.d.ts.map +1 -0
  4. package/dist/cli/members.js +38 -0
  5. package/dist/cli/members.js.map +1 -0
  6. package/dist/cli/onboarding.d.ts +41 -0
  7. package/dist/cli/onboarding.d.ts.map +1 -0
  8. package/dist/cli/onboarding.js +94 -0
  9. package/dist/cli/onboarding.js.map +1 -0
  10. package/dist/cli/team.d.ts +16 -0
  11. package/dist/cli/team.d.ts.map +1 -0
  12. package/dist/cli/team.js +32 -0
  13. package/dist/cli/team.js.map +1 -0
  14. package/dist/commands/app/grant.d.ts +11 -0
  15. package/dist/commands/app/grant.d.ts.map +1 -0
  16. package/dist/commands/app/grant.js +31 -0
  17. package/dist/commands/app/grant.js.map +1 -0
  18. package/dist/commands/app/revoke.d.ts +13 -0
  19. package/dist/commands/app/revoke.d.ts.map +1 -0
  20. package/dist/commands/app/revoke.js +40 -0
  21. package/dist/commands/app/revoke.js.map +1 -0
  22. package/dist/commands/app/roles.d.ts +7 -0
  23. package/dist/commands/app/roles.d.ts.map +1 -0
  24. package/dist/commands/app/roles.js +30 -0
  25. package/dist/commands/app/roles.js.map +1 -0
  26. package/dist/commands/auth/issue.d.ts +12 -0
  27. package/dist/commands/auth/issue.d.ts.map +1 -0
  28. package/dist/commands/auth/issue.js +52 -0
  29. package/dist/commands/auth/issue.js.map +1 -0
  30. package/dist/commands/auth/keys.d.ts +7 -0
  31. package/dist/commands/auth/keys.d.ts.map +1 -0
  32. package/dist/commands/auth/keys.js +39 -0
  33. package/dist/commands/auth/keys.js.map +1 -0
  34. package/dist/commands/auth/login.d.ts +20 -0
  35. package/dist/commands/auth/login.d.ts.map +1 -1
  36. package/dist/commands/auth/login.js +90 -11
  37. package/dist/commands/auth/login.js.map +1 -1
  38. package/dist/commands/auth/revoke.d.ts +13 -0
  39. package/dist/commands/auth/revoke.d.ts.map +1 -0
  40. package/dist/commands/auth/revoke.js +48 -0
  41. package/dist/commands/auth/revoke.js.map +1 -0
  42. package/dist/commands/doctor.d.ts.map +1 -1
  43. package/dist/commands/doctor.js +1 -1
  44. package/dist/commands/doctor.js.map +1 -1
  45. package/dist/commands/init.d.ts +13 -0
  46. package/dist/commands/init.d.ts.map +1 -1
  47. package/dist/commands/init.js +69 -11
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/menu.d.ts +3 -0
  50. package/dist/commands/menu.d.ts.map +1 -1
  51. package/dist/commands/menu.js +70 -15
  52. package/dist/commands/menu.js.map +1 -1
  53. package/dist/commands/org/invite.d.ts +14 -0
  54. package/dist/commands/org/invite.d.ts.map +1 -0
  55. package/dist/commands/org/invite.js +52 -0
  56. package/dist/commands/org/invite.js.map +1 -0
  57. package/dist/commands/org/members.d.ts +10 -0
  58. package/dist/commands/org/members.d.ts.map +1 -0
  59. package/dist/commands/org/members.js +49 -0
  60. package/dist/commands/org/members.js.map +1 -0
  61. package/dist/pipeline/app-identity.d.ts +35 -0
  62. package/dist/pipeline/app-identity.d.ts.map +1 -0
  63. package/dist/pipeline/app-identity.js +109 -0
  64. package/dist/pipeline/app-identity.js.map +1 -0
  65. package/dist/services/cloud.d.ts +69 -1
  66. package/dist/services/cloud.d.ts.map +1 -1
  67. package/dist/services/cloud.js +67 -1
  68. package/dist/services/cloud.js.map +1 -1
  69. package/dist/utils/http.d.ts +5 -0
  70. package/dist/utils/http.d.ts.map +1 -1
  71. package/dist/utils/http.js +13 -2
  72. package/dist/utils/http.js.map +1 -1
  73. package/oclif.manifest.json +374 -84
  74. package/package.json +5 -5
@@ -0,0 +1,35 @@
1
+ /** Where a detected value came from, so a prompt can say why it is suggesting it. */
2
+ export interface Detected {
3
+ value: string;
4
+ source: string;
5
+ }
6
+ export interface AppIdentity {
7
+ appId?: Detected;
8
+ appName?: Detected;
9
+ }
10
+ export interface ProjectFiles {
11
+ /** `capacitor.config.ts` / `.js` / `.json`. */
12
+ capacitorConfig?: string | undefined;
13
+ /** `android/app/build.gradle`. */
14
+ buildGradle?: string | undefined;
15
+ /** The production flavour's env file. */
16
+ envFile?: string | undefined;
17
+ packageJson?: string | undefined;
18
+ }
19
+ /**
20
+ * The bundle identifier and name this project already declares.
21
+ *
22
+ * Order is by authority: `applicationId` in Gradle is what actually ships in the
23
+ * APK and what a device reports, so it wins over the Capacitor config, which
24
+ * wins over an env file that only affects a build.
25
+ */
26
+ export declare function detectIdentity(files: ProjectFiles): AppIdentity;
27
+ /**
28
+ * Bundle ids found in the project that disagree with the chosen one.
29
+ *
30
+ * The device reports whatever is compiled into the binary, so a Gradle
31
+ * `applicationId` that differs from the linked app is a mismatch the server
32
+ * answers with "App not found" - and only on a device.
33
+ */
34
+ export declare function conflictingIds(files: ProjectFiles, chosen: string): Detected[];
35
+ //# sourceMappingURL=app-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-identity.d.ts","sourceRoot":"","sources":["../../src/pipeline/app-identity.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AA8BD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAgD/D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAqB9E"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * A string literal for `key`, including the fallback in
3
+ * `key: process.env.X ?? "literal"`.
4
+ */
5
+ function literalFor(source, key) {
6
+ const line = new RegExp(`\\b${key}\\s*:\\s*([^,\\n]+)`).exec(source);
7
+ if (!line)
8
+ return null;
9
+ // The last quoted string on the line: for a `??` chain that is the fallback,
10
+ // and for a plain assignment it is the value itself.
11
+ const quoted = [...line[1].matchAll(/["'`]([^"'`]+)["'`]/g)];
12
+ return quoted.length > 0 ? quoted[quoted.length - 1][1] : null;
13
+ }
14
+ function envValue(source, key) {
15
+ for (const line of source.split(/\r?\n/)) {
16
+ if (line.trimStart().startsWith("#"))
17
+ continue;
18
+ const match = new RegExp(`^\\s*${key}\\s*=\\s*(.*)$`).exec(line);
19
+ if (match) {
20
+ const value = match[1].trim().replace(/^(['"])(.*)\1$/, "$2");
21
+ if (value)
22
+ return value;
23
+ }
24
+ }
25
+ return null;
26
+ }
27
+ const BUNDLE_ID = /^[a-z][\w]*(\.[a-z][\w]*)+$/i;
28
+ /**
29
+ * The bundle identifier and name this project already declares.
30
+ *
31
+ * Order is by authority: `applicationId` in Gradle is what actually ships in the
32
+ * APK and what a device reports, so it wins over the Capacitor config, which
33
+ * wins over an env file that only affects a build.
34
+ */
35
+ export function detectIdentity(files) {
36
+ const identity = {};
37
+ const idCandidates = [];
38
+ if (files.buildGradle) {
39
+ const match = /\bapplicationId\s+["']([^"']+)["']/.exec(files.buildGradle);
40
+ if (match)
41
+ idCandidates.push({ value: match[1], source: "android/app/build.gradle" });
42
+ }
43
+ if (files.capacitorConfig) {
44
+ const value = literalFor(files.capacitorConfig, "appId");
45
+ if (value)
46
+ idCandidates.push({ value, source: "capacitor.config" });
47
+ }
48
+ if (files.envFile) {
49
+ const value = envValue(files.envFile, "VITE_APP_ID");
50
+ if (value)
51
+ idCandidates.push({ value, source: "the production env file" });
52
+ }
53
+ const appId = idCandidates.find((candidate) => BUNDLE_ID.test(candidate.value));
54
+ if (appId)
55
+ identity.appId = appId;
56
+ const nameCandidates = [];
57
+ if (files.capacitorConfig) {
58
+ const value = literalFor(files.capacitorConfig, "appName");
59
+ if (value)
60
+ nameCandidates.push({ value, source: "capacitor.config" });
61
+ }
62
+ if (files.envFile) {
63
+ const value = envValue(files.envFile, "VITE_APP_NAME");
64
+ if (value)
65
+ nameCandidates.push({ value, source: "the production env file" });
66
+ }
67
+ if (files.packageJson) {
68
+ try {
69
+ const parsed = JSON.parse(files.packageJson);
70
+ if (parsed.name)
71
+ nameCandidates.push({ value: parsed.name, source: "package.json" });
72
+ }
73
+ catch {
74
+ // A malformed package.json is not this function's problem.
75
+ }
76
+ }
77
+ const appName = nameCandidates[0];
78
+ if (appName)
79
+ identity.appName = appName;
80
+ return identity;
81
+ }
82
+ /**
83
+ * Bundle ids found in the project that disagree with the chosen one.
84
+ *
85
+ * The device reports whatever is compiled into the binary, so a Gradle
86
+ * `applicationId` that differs from the linked app is a mismatch the server
87
+ * answers with "App not found" - and only on a device.
88
+ */
89
+ export function conflictingIds(files, chosen) {
90
+ const found = [];
91
+ if (files.buildGradle) {
92
+ const match = /\bapplicationId\s+["']([^"']+)["']/.exec(files.buildGradle);
93
+ if (match && match[1] !== chosen) {
94
+ found.push({ value: match[1], source: "android/app/build.gradle" });
95
+ }
96
+ }
97
+ if (files.capacitorConfig) {
98
+ const value = literalFor(files.capacitorConfig, "appId");
99
+ if (value && value !== chosen)
100
+ found.push({ value, source: "capacitor.config" });
101
+ }
102
+ if (files.envFile) {
103
+ const value = envValue(files.envFile, "VITE_APP_ID");
104
+ if (value && value !== chosen)
105
+ found.push({ value, source: "the production env file" });
106
+ }
107
+ return found;
108
+ }
109
+ //# sourceMappingURL=app-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-identity.js","sourceRoot":"","sources":["../../src/pipeline/app-identity.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,26 @@
1
- import type { CloudApp, CloudChannel, CloudOrganization, CloudRelease, Environment, UserProfile } from "@capuchoo/core";
1
+ import type { AppRole, CloudApp, CloudChannel, CloudOrganization, CloudRelease, Environment, UserProfile } from "@capuchoo/core";
2
+ export type OrgRole = "owner" | "admin" | "member";
3
+ export type { AppRole } from "@capuchoo/core";
4
+ /** A row of organization_members or app_permissions, joined with its user. */
5
+ export interface Membership {
6
+ user_id: string;
7
+ role: string;
8
+ users?: {
9
+ id: string;
10
+ email: string;
11
+ full_name?: string | null;
12
+ } | null;
13
+ }
14
+ export interface ApiKeySummary {
15
+ id: string;
16
+ name: string;
17
+ key_prefix?: string;
18
+ app_id?: string | null;
19
+ /** Role ceiling, or null when the key carries the account's own rights. */
20
+ role?: string | null;
21
+ created_at?: string;
22
+ last_used_at?: string | null;
23
+ }
2
24
  /**
3
25
  * The Capuchoo API client.
4
26
  *
@@ -27,7 +49,53 @@ export declare class CloudClient {
27
49
  * sends you looking in the wrong place with confidence.
28
50
  */
29
51
  whoami(): Promise<UserProfile | null>;
52
+ /**
53
+ * Exchanges an email and password for a session token.
54
+ *
55
+ * Static because it runs before any credential exists: the whole point is to
56
+ * get one. `authenticate` accepts the returned Supabase JWT wherever it accepts
57
+ * an API key.
58
+ */
59
+ static login(endpoint: string, email: string, password: string, timeoutMs?: number): Promise<{
60
+ token: string;
61
+ user: {
62
+ id: string;
63
+ email: string;
64
+ };
65
+ }>;
66
+ /**
67
+ * Mints an API key for the signed-in account.
68
+ *
69
+ * A JWT expires; a key does not, so the CLI stores the key and forgets the
70
+ * token. Unscoped by default - the key acts as the account, and the app roles
71
+ * are what restrict it.
72
+ */
73
+ createApiKey(input: {
74
+ name: string;
75
+ appId?: string | undefined;
76
+ /** Ceiling on what the key may do. Omitted means the account's own rights. */
77
+ role?: AppRole | undefined;
78
+ }): Promise<{
79
+ key: string;
80
+ }>;
30
81
  organizations(): Promise<CloudOrganization[]>;
82
+ /**
83
+ * Keys belonging to this account. The plain key is never returned again.
84
+ *
85
+ * Unwrapped here: this endpoint answers `{ success, keys }` while the member
86
+ * and permission lists answer bare arrays.
87
+ */
88
+ apiKeys(): Promise<ApiKeySummary[]>;
89
+ revokeApiKey(id: string): Promise<void>;
90
+ orgMembers(organizationId: string): Promise<Membership[]>;
91
+ /** Adds by email; the server resolves it. Guarded by requireOrgAdmin. */
92
+ addOrgMember(organizationId: string, email: string, role: OrgRole): Promise<unknown>;
93
+ setOrgMemberRole(organizationId: string, userId: string, role: OrgRole): Promise<unknown>;
94
+ removeOrgMember(organizationId: string, userId: string): Promise<void>;
95
+ appPermissions(cloudAppId: string): Promise<Membership[]>;
96
+ /** Grants by email. Guarded by requireAppAdmin. */
97
+ grantAppRole(cloudAppId: string, email: string, role: AppRole): Promise<unknown>;
98
+ revokeAppRole(cloudAppId: string, userId: string): Promise<void>;
31
99
  apps(): Promise<CloudApp[]>;
32
100
  createApp(input: {
33
101
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/services/cloud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAI5C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;;;;;;;;;;OAYG;IACG,MAAM,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAW3C,aAAa,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI7C,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI3B,SAAS,CAAC,KAAK,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrB,gFAAgF;IAChF,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,kBAAkB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIvE;;;;;;;OAOG;IACH,aAAa,CAAC,KAAK,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,WAAW,CAAC;KAC1B,GAAG,OAAO,CAAC,YAAY,CAAC;IAIzB,sFAAsF;IACtF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIrD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKvE;;;;;;OAMG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB7E,YAAY,CAAC,KAAK,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;KACnB;IAiBD,YAAY,CAAC,KAAK,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;KACnB;CAiBF"}
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/services/cloud.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { HttpError, del, get, post, uploadArtifact } from "../utils/http.js";
1
+ import { HttpError, del, get, post, put, uploadArtifact } from "../utils/http.js";
2
2
  /**
3
3
  * The Capuchoo API client.
4
4
  *
@@ -41,9 +41,75 @@ export class CloudClient {
41
41
  throw error;
42
42
  }
43
43
  }
44
+ /**
45
+ * Exchanges an email and password for a session token.
46
+ *
47
+ * Static because it runs before any credential exists: the whole point is to
48
+ * get one. `authenticate` accepts the returned Supabase JWT wherever it accepts
49
+ * an API key.
50
+ */
51
+ static async login(endpoint, email, password, timeoutMs) {
52
+ const response = await post("/api/auth/login", { email, password }, { endpoint, apiKey: "", timeoutMs });
53
+ if (!response.token)
54
+ throw new Error("The backend accepted the sign-in but returned no token");
55
+ return {
56
+ token: response.token,
57
+ user: { id: response.user?.id ?? "", email: response.user?.email ?? email },
58
+ };
59
+ }
60
+ /**
61
+ * Mints an API key for the signed-in account.
62
+ *
63
+ * A JWT expires; a key does not, so the CLI stores the key and forgets the
64
+ * token. Unscoped by default - the key acts as the account, and the app roles
65
+ * are what restrict it.
66
+ */
67
+ createApiKey(input) {
68
+ return post("/api/api-keys", {
69
+ name: input.name,
70
+ ...(input.appId ? { app_id: input.appId } : {}),
71
+ ...(input.role ? { role: input.role } : {}),
72
+ }, this.options);
73
+ }
44
74
  organizations() {
45
75
  return get("/api/organizations", this.options);
46
76
  }
77
+ /**
78
+ * Keys belonging to this account. The plain key is never returned again.
79
+ *
80
+ * Unwrapped here: this endpoint answers `{ success, keys }` while the member
81
+ * and permission lists answer bare arrays.
82
+ */
83
+ async apiKeys() {
84
+ const response = await get("/api/api-keys", this.options);
85
+ return Array.isArray(response) ? response : (response.keys ?? []);
86
+ }
87
+ revokeApiKey(id) {
88
+ return del(`/api/api-keys/${id}`, this.options);
89
+ }
90
+ orgMembers(organizationId) {
91
+ return get(`/api/organizations/${organizationId}/members`, this.options);
92
+ }
93
+ /** Adds by email; the server resolves it. Guarded by requireOrgAdmin. */
94
+ addOrgMember(organizationId, email, role) {
95
+ return post(`/api/organizations/${organizationId}/members`, { email, role }, this.options);
96
+ }
97
+ setOrgMemberRole(organizationId, userId, role) {
98
+ return put(`/api/organizations/${organizationId}/members/${userId}`, { role }, this.options);
99
+ }
100
+ removeOrgMember(organizationId, userId) {
101
+ return del(`/api/organizations/${organizationId}/members/${userId}`, this.options);
102
+ }
103
+ appPermissions(cloudAppId) {
104
+ return get(`/api/apps/${cloudAppId}/permissions`, this.options);
105
+ }
106
+ /** Grants by email. Guarded by requireAppAdmin. */
107
+ grantAppRole(cloudAppId, email, role) {
108
+ return post(`/api/apps/${cloudAppId}/permissions`, { email, role }, this.options);
109
+ }
110
+ revokeAppRole(cloudAppId, userId) {
111
+ return del(`/api/apps/${cloudAppId}/permissions/${userId}`, this.options);
112
+ }
47
113
  apps() {
48
114
  return get("/api/apps", this.options);
49
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/services/cloud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/services/cloud.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,10 @@
7
7
  * the previous `fs.createReadStream` plus `maxBodyLength: Infinity` combination
8
8
  * worked, but only because the limit was disabled.
9
9
  */
10
+ /** A request that never came back. Distinguishable so a caller can retry it. */
11
+ export declare class TimeoutError extends Error {
12
+ constructor(url: string, timeoutMs: number);
13
+ }
10
14
  export declare class HttpError extends Error {
11
15
  readonly status: number;
12
16
  readonly body: unknown;
@@ -19,6 +23,7 @@ export interface HttpOptions {
19
23
  }
20
24
  export declare function get<T>(pathname: string, options: HttpOptions): Promise<T>;
21
25
  export declare function post<T>(pathname: string, body: unknown, options: HttpOptions): Promise<T>;
26
+ export declare function put<T>(pathname: string, body: unknown, options: HttpOptions): Promise<T>;
22
27
  /** A 204 is the success case here, so the caller gets nothing back. */
23
28
  export declare function del(pathname: string, options: HttpOptions): Promise<void>;
24
29
  export interface UploadResult {
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;CAM3D;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmFD,wBAAgB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzE;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzF;AAED,uEAAuE;AACvE,wBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,EAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,YAAY,CAAC,CA8CvB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,qBAAa,YAAa,SAAQ,KAAK;gBACzB,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAI3C;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;CAM3D;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoFD,wBAAgB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzE;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzF;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAExF;AAED,uEAAuE;AACvE,wBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,EAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,YAAY,CAAC,CA8CvB"}
@@ -10,6 +10,13 @@ import path from "node:path";
10
10
  * the previous `fs.createReadStream` plus `maxBodyLength: Infinity` combination
11
11
  * worked, but only because the limit was disabled.
12
12
  */
13
+ /** A request that never came back. Distinguishable so a caller can retry it. */
14
+ export class TimeoutError extends Error {
15
+ constructor(url, timeoutMs) {
16
+ super(`${url} did not respond within ${Math.round(timeoutMs / 1000)}s`);
17
+ this.name = "TimeoutError";
18
+ }
19
+ }
13
20
  export class HttpError extends Error {
14
21
  status;
15
22
  body;
@@ -58,7 +65,8 @@ function messageFrom(body, fallback) {
58
65
  }
59
66
  async function request(method, url, options) {
60
67
  const controller = new AbortController();
61
- const timer = setTimeout(() => controller.abort(), options.timeoutMs ?? 30_000);
68
+ const timeoutMs = options.timeoutMs ?? 30_000;
69
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
62
70
  try {
63
71
  const response = await fetch(url, {
64
72
  method,
@@ -81,7 +89,7 @@ async function request(method, url, options) {
81
89
  if (error instanceof HttpError)
82
90
  throw error;
83
91
  if (error instanceof Error && error.name === "AbortError") {
84
- throw new Error(`${url} did not respond within the timeout`);
92
+ throw new TimeoutError(url, timeoutMs);
85
93
  }
86
94
  // A DNS or TLS failure surfaces as an opaque "fetch failed"; say which host.
87
95
  if (error instanceof TypeError) {
@@ -99,6 +107,9 @@ export function get(pathname, options) {
99
107
  export function post(pathname, body, options) {
100
108
  return request("POST", `${options.endpoint}${pathname}`, { ...options, body });
101
109
  }
110
+ export function put(pathname, body, options) {
111
+ return request("PUT", `${options.endpoint}${pathname}`, { ...options, body });
112
+ }
102
113
  /** A 204 is the success case here, so the caller gets nothing back. */
103
114
  export async function del(pathname, options) {
104
115
  await request("DELETE", `${options.endpoint}${pathname}`, options);
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;GAQG;AAEH,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,MAAM,CAAS;IACf,IAAI,CAAU;IAEvB,YAAY,OAAe,EAAE,MAAc,EAAE,IAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAQD,KAAK,UAAU,QAAQ,CAAC,QAAkB;IACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,SAAS,WAAW,CAAC,IAAa,EAAE,QAAgB;IAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAA+B,CAAC;QAE/C,sEAAsE;QACtE,6EAA6E;QAC7E,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;aAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACzB,IAAI,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC;aACjC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACzB,IAAI,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEnF,IAAI,QAAQ,IAAI,MAAM;YAAE,OAAO,GAAG,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,MAAyC,EACzC,GAAW,EACX,OAAyC;IAEzC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAEhF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE;gBACzC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;aAC9E;YACD,yEAAyE;YACzE,yDAAyD;YACzD,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7E,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,SAAS,CACjB,WAAW,CAAC,IAAI,EAAE,GAAG,MAAM,IAAI,GAAG,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,EAClE,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;QACJ,CAAC;QAED,OAAO,IAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS;YAAE,MAAM,KAAK,CAAC;QAC5C,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,qCAAqC,CAAC,CAAC;QAC/D,CAAC;QACD,6EAA6E;QAC7E,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,CAAI,QAAgB,EAAE,OAAoB;IAC3D,OAAO,OAAO,CAAI,KAAK,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,IAAI,CAAI,QAAgB,EAAE,IAAa,EAAE,OAAoB;IAC3E,OAAO,OAAO,CAAI,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,QAAgB,EAAE,OAAoB;IAC9D,MAAM,OAAO,CAAU,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,QAAgB,EAChB,MAA8B,EAC9B,OAAiE;IAEjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,iBAAiB,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAExF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,sEAAsE;YACtE,oEAAoE;YACpE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,EAAE;YACtD,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,SAAS,CACjB,WAAW,CAAC,IAAI,EAAE,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,EAC5D,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS;YAAE,MAAM,KAAK,CAAC;QAC5C,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"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"}