@zuplo/cli 6.69.5 → 6.69.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/integration/custom-domain.integration.test.js +4 -4
- package/dist/__tests__/integration/custom-domain.integration.test.js.map +1 -1
- package/dist/__tests__/integration/jest-mocks-setup.js +1 -0
- package/dist/__tests__/integration/jest-mocks-setup.js.map +1 -1
- package/dist/__tests__/integration/list.integration.test.js +2 -2
- package/dist/__tests__/integration/list.integration.test.js.map +1 -1
- package/dist/__tests__/integration/tunnel.integration.test.js +14 -14
- package/dist/__tests__/integration/tunnel.integration.test.js.map +1 -1
- package/dist/__tests__/integration/variable.integration.test.js +4 -4
- package/dist/__tests__/integration/variable.integration.test.js.map +1 -1
- package/dist/__tests__/integration/whoami.integration.test.js +2 -5
- package/dist/__tests__/integration/whoami.integration.test.js.map +1 -1
- package/dist/cli.js +12 -6
- package/dist/cli.js.map +1 -1
- package/dist/common/api/client.d.ts +40 -0
- package/dist/common/api/client.d.ts.map +1 -0
- package/dist/common/api/client.js +92 -0
- package/dist/common/api/client.js.map +1 -0
- package/dist/common/output.d.ts +4 -0
- package/dist/common/output.d.ts.map +1 -1
- package/dist/common/output.js +4 -1
- package/dist/common/output.js.map +1 -1
- package/dist/custom-domain/create/handler.d.ts.map +1 -1
- package/dist/custom-domain/create/handler.js +12 -27
- package/dist/custom-domain/create/handler.js.map +1 -1
- package/dist/custom-domain/delete/handler.d.ts.map +1 -1
- package/dist/custom-domain/delete/handler.js +25 -54
- package/dist/custom-domain/delete/handler.js.map +1 -1
- package/dist/custom-domain/list/handler.d.ts.map +1 -1
- package/dist/custom-domain/list/handler.js +15 -29
- package/dist/custom-domain/list/handler.js.map +1 -1
- package/dist/custom-domain/update/handler.d.ts.map +1 -1
- package/dist/custom-domain/update/handler.js +12 -27
- package/dist/custom-domain/update/handler.js.map +1 -1
- package/dist/list/handler.d.ts.map +1 -1
- package/dist/list/handler.js +41 -59
- package/dist/list/handler.js.map +1 -1
- package/dist/mtls-certificates/create/handler.d.ts.map +1 -1
- package/dist/mtls-certificates/create/handler.js +9 -23
- package/dist/mtls-certificates/create/handler.js.map +1 -1
- package/dist/mtls-certificates/delete/handler.d.ts.map +1 -1
- package/dist/mtls-certificates/delete/handler.js +8 -20
- package/dist/mtls-certificates/delete/handler.js.map +1 -1
- package/dist/mtls-certificates/describe/handler.d.ts.map +1 -1
- package/dist/mtls-certificates/describe/handler.js +17 -31
- package/dist/mtls-certificates/describe/handler.js.map +1 -1
- package/dist/mtls-certificates/disable/handler.d.ts.map +1 -1
- package/dist/mtls-certificates/disable/handler.js +9 -26
- package/dist/mtls-certificates/disable/handler.js.map +1 -1
- package/dist/mtls-certificates/list/handler.d.ts.map +1 -1
- package/dist/mtls-certificates/list/handler.js +22 -36
- package/dist/mtls-certificates/list/handler.js.map +1 -1
- package/dist/mtls-certificates/update/handler.d.ts.map +1 -1
- package/dist/mtls-certificates/update/handler.js +14 -29
- package/dist/mtls-certificates/update/handler.js.map +1 -1
- package/dist/proxies/create/handler.d.ts.map +1 -1
- package/dist/proxies/create/handler.js +9 -22
- package/dist/proxies/create/handler.js.map +1 -1
- package/dist/proxies/delete/handler.d.ts.map +1 -1
- package/dist/proxies/delete/handler.js +8 -21
- package/dist/proxies/delete/handler.js.map +1 -1
- package/dist/proxies/describe/handler.d.ts.map +1 -1
- package/dist/proxies/describe/handler.js +7 -22
- package/dist/proxies/describe/handler.js.map +1 -1
- package/dist/proxies/update/handler.d.ts.map +1 -1
- package/dist/proxies/update/handler.js +9 -22
- package/dist/proxies/update/handler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tunnel/create/handler.d.ts.map +1 -1
- package/dist/tunnel/create/handler.js +8 -22
- package/dist/tunnel/create/handler.js.map +1 -1
- package/dist/tunnel/delete/handler.d.ts.map +1 -1
- package/dist/tunnel/delete/handler.js +16 -30
- package/dist/tunnel/delete/handler.js.map +1 -1
- package/dist/tunnel/describe/handler.d.ts.map +1 -1
- package/dist/tunnel/describe/handler.js +7 -21
- package/dist/tunnel/describe/handler.js.map +1 -1
- package/dist/tunnel/list/handler.d.ts.map +1 -1
- package/dist/tunnel/list/handler.js +13 -28
- package/dist/tunnel/list/handler.js.map +1 -1
- package/dist/tunnel/rotate-token/handler.d.ts.map +1 -1
- package/dist/tunnel/rotate-token/handler.js +7 -21
- package/dist/tunnel/rotate-token/handler.js.map +1 -1
- package/dist/tunnel/services/describe/handler.d.ts.map +1 -1
- package/dist/tunnel/services/describe/handler.js +7 -21
- package/dist/tunnel/services/describe/handler.js.map +1 -1
- package/dist/tunnel/services/update/handler.d.ts.map +1 -1
- package/dist/tunnel/services/update/handler.js +18 -32
- package/dist/tunnel/services/update/handler.js.map +1 -1
- package/dist/variable/create/handler.d.ts.map +1 -1
- package/dist/variable/create/handler.js +9 -24
- package/dist/variable/create/handler.js.map +1 -1
- package/dist/variable/update/handler.d.ts.map +1 -1
- package/dist/variable/update/handler.js +9 -24
- package/dist/variable/update/handler.js.map +1 -1
- package/dist/whoami/handler.d.ts.map +1 -1
- package/dist/whoami/handler.js +6 -18
- package/dist/whoami/handler.js.map +1 -1
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { logger } from "../logger.js";
|
|
2
|
+
import { printDiagnosticsToConsole, textOrJson } from "../output.js";
|
|
3
|
+
import settings from "../settings.js";
|
|
4
|
+
export class ApiError extends Error {
|
|
5
|
+
status;
|
|
6
|
+
statusText;
|
|
7
|
+
problem;
|
|
8
|
+
constructor(opts) {
|
|
9
|
+
super(`${opts.operation} (${opts.status} ${opts.statusText})`);
|
|
10
|
+
this.name = "ApiError";
|
|
11
|
+
this.status = opts.status;
|
|
12
|
+
this.statusText = opts.statusText;
|
|
13
|
+
this.problem = opts.problem;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function createApiClient({ authToken, baseUrl, }) {
|
|
17
|
+
const defaultBaseUrl = baseUrl ?? settings.ZUPLO_DEVELOPER_API_ENDPOINT;
|
|
18
|
+
function isSafeAbsoluteUrl(url) {
|
|
19
|
+
try {
|
|
20
|
+
const parsedUrl = new URL(url);
|
|
21
|
+
return parsedUrl.protocol === "https:";
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function request(method, path, options) {
|
|
28
|
+
const base = options.baseUrl ?? defaultBaseUrl;
|
|
29
|
+
const url = isSafeAbsoluteUrl(path)
|
|
30
|
+
? path
|
|
31
|
+
: `${base.replace(/\/+$/, "")}/${path.replace(/^\/+/, "")}`;
|
|
32
|
+
const headers = {
|
|
33
|
+
Authorization: `Bearer ${authToken}`,
|
|
34
|
+
...options.headers,
|
|
35
|
+
};
|
|
36
|
+
let body;
|
|
37
|
+
if (options.body !== undefined) {
|
|
38
|
+
if (!Object.keys(headers).some((h) => h.toLowerCase() === "content-type")) {
|
|
39
|
+
headers["Content-Type"] = "application/json";
|
|
40
|
+
}
|
|
41
|
+
body =
|
|
42
|
+
typeof options.body === "string"
|
|
43
|
+
? options.body
|
|
44
|
+
: JSON.stringify(options.body);
|
|
45
|
+
}
|
|
46
|
+
const response = await fetch(url, { method, headers, body });
|
|
47
|
+
if (response.ok) {
|
|
48
|
+
if (options.emptyResponse || response.status === 204) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const text = await response.text();
|
|
52
|
+
if (text.length === 0) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(text);
|
|
57
|
+
}
|
|
58
|
+
catch (cause) {
|
|
59
|
+
logger.error({ status: response.status, response: text, err: cause }, options.operation);
|
|
60
|
+
printDiagnosticsToConsole(options.errorMessage, text);
|
|
61
|
+
throw new ApiError({
|
|
62
|
+
operation: options.operation,
|
|
63
|
+
status: response.status,
|
|
64
|
+
statusText: response.statusText,
|
|
65
|
+
problem: text,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const problem = textOrJson(await response.text());
|
|
70
|
+
logger.error({
|
|
71
|
+
status: response.status,
|
|
72
|
+
statusText: response.statusText,
|
|
73
|
+
response: problem,
|
|
74
|
+
}, options.operation);
|
|
75
|
+
printDiagnosticsToConsole(options.errorMessage, problem);
|
|
76
|
+
throw new ApiError({
|
|
77
|
+
operation: options.operation,
|
|
78
|
+
status: response.status,
|
|
79
|
+
statusText: response.statusText,
|
|
80
|
+
problem,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
request: request,
|
|
85
|
+
get: (path, opts) => request("GET", path, opts),
|
|
86
|
+
post: (path, opts) => request("POST", path, opts),
|
|
87
|
+
put: (path, opts) => request("PUT", path, opts),
|
|
88
|
+
patch: (path, opts) => request("PATCH", path, opts),
|
|
89
|
+
delete: (path, opts) => request("DELETE", path, opts),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/common/api/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from \"../logger.js\";\nimport { printDiagnosticsToConsole, textOrJson } from \"../output.js\";\nimport settings from \"../settings.js\";\n\nexport type ApiMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport interface ApiCallOptions {\n /**\n * Operation label used in log lines and the ApiError message\n * (e.g. \"Failed to create proxy configuration\").\n */\n operation: string;\n /**\n * User-facing diagnostic message printed on failure\n * (e.g. \"Error: Failed to create proxy configuration. Check the arguments.\").\n */\n errorMessage: string;\n /** Override the base URL for this call (used for self-hosted endpoints). */\n baseUrl?: string;\n /** Extra headers to merge onto the request. */\n headers?: Record<string, string>;\n /**\n * Request body. Objects are JSON-stringified; strings are sent as-is.\n * If provided, Content-Type defaults to application/json (unless overridden).\n */\n body?: unknown;\n /**\n * When true, the response body is ignored and `undefined` is returned even\n * if the server replied with content. Defaults to false.\n */\n emptyResponse?: boolean;\n}\n\nexport class ApiError extends Error {\n readonly status: number;\n readonly statusText: string;\n readonly problem: unknown;\n\n constructor(opts: {\n operation: string;\n status: number;\n statusText: string;\n problem: unknown;\n }) {\n super(`${opts.operation} (${opts.status} ${opts.statusText})`);\n this.name = \"ApiError\";\n this.status = opts.status;\n this.statusText = opts.statusText;\n this.problem = opts.problem;\n }\n}\n\nexport interface ApiClient {\n request<T = unknown>(\n method: ApiMethod,\n path: string,\n options: ApiCallOptions\n ): Promise<T>;\n get<T = unknown>(path: string, options: ApiCallOptions): Promise<T>;\n post<T = unknown>(path: string, options: ApiCallOptions): Promise<T>;\n put<T = unknown>(path: string, options: ApiCallOptions): Promise<T>;\n patch<T = unknown>(path: string, options: ApiCallOptions): Promise<T>;\n delete<T = unknown>(path: string, options: ApiCallOptions): Promise<T>;\n}\n\nexport function createApiClient({\n authToken,\n baseUrl,\n}: {\n authToken: string;\n baseUrl?: string;\n}): ApiClient {\n const defaultBaseUrl = baseUrl ?? settings.ZUPLO_DEVELOPER_API_ENDPOINT;\n\n function isSafeAbsoluteUrl(url: string) {\n try {\n const parsedUrl = new URL(url);\n return parsedUrl.protocol === \"https:\";\n } catch {\n return false;\n }\n }\n\n async function request<T>(\n method: ApiMethod,\n path: string,\n options: ApiCallOptions\n ): Promise<T> {\n const base = options.baseUrl ?? defaultBaseUrl;\n const url = isSafeAbsoluteUrl(path)\n ? path\n : `${base.replace(/\\/+$/, \"\")}/${path.replace(/^\\/+/, \"\")}`;\n\n const headers: Record<string, string> = {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${authToken}`,\n ...options.headers,\n };\n\n let body: BodyInit | undefined;\n if (options.body !== undefined) {\n if (\n !Object.keys(headers).some((h) => h.toLowerCase() === \"content-type\")\n ) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n body =\n typeof options.body === \"string\"\n ? options.body\n : JSON.stringify(options.body);\n }\n\n const response = await fetch(url, { method, headers, body });\n\n if (response.ok) {\n if (options.emptyResponse || response.status === 204) {\n return undefined as T;\n }\n const text = await response.text();\n if (text.length === 0) {\n return undefined as T;\n }\n try {\n return JSON.parse(text) as T;\n } catch (cause) {\n logger.error(\n { status: response.status, response: text, err: cause },\n options.operation\n );\n printDiagnosticsToConsole(options.errorMessage, text);\n throw new ApiError({\n operation: options.operation,\n status: response.status,\n statusText: response.statusText,\n problem: text,\n });\n }\n }\n\n const problem = textOrJson(await response.text());\n logger.error(\n {\n status: response.status,\n statusText: response.statusText,\n response: problem,\n },\n options.operation\n );\n printDiagnosticsToConsole(options.errorMessage, problem);\n throw new ApiError({\n operation: options.operation,\n status: response.status,\n statusText: response.statusText,\n problem,\n });\n }\n\n return {\n request: request as ApiClient[\"request\"],\n get: (path, opts) => request(\"GET\", path, opts),\n post: (path, opts) => request(\"POST\", path, opts),\n put: (path, opts) => request(\"PUT\", path, opts),\n patch: (path, opts) => request(\"PATCH\", path, opts),\n delete: (path, opts) => request(\"DELETE\", path, opts),\n };\n}\n"]}
|
package/dist/common/output.d.ts
CHANGED
|
@@ -5,6 +5,10 @@ export declare function printDiagnosticsToConsole(
|
|
|
5
5
|
): void;
|
|
6
6
|
export declare function printSpinnerToConsole(message?: string): Ora;
|
|
7
7
|
export declare function printWarningToConsole(message?: any): void;
|
|
8
|
+
export declare function printCriticalFailureToConsole(
|
|
9
|
+
message?: any,
|
|
10
|
+
spinner?: Ora
|
|
11
|
+
): void;
|
|
8
12
|
export declare function printCriticalFailureToConsoleAndExit(
|
|
9
13
|
message?: any,
|
|
10
14
|
spinner?: Ora
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"AAIA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAS/B,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,QAwB1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,OAErD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,QAElD;AAGD,wBAAsB,oCAAoC,CACxD,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"AAIA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAS/B,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,QAwB1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,OAErD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,QAElD;AAKD,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,QASzE;AAGD,wBAAsB,oCAAoC,CACxD,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,iBAMd;AAID,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,GAAG,QAEjD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,OAAO,QAEjD;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,QAE7C;AAED,wBAAsB,qCAAqC,CACzD,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,iBAUd;AAED,wBAAsB,oCAAoC,CAAC,KAAK,EAAE,GAAG,iBAKpE;AAED,wBAAsB,mCAAmC,CAAC,KAAK,CAAC,EAAE,OAAO,iBAKxE;AAaD,MAAM,CAAC,OAAO,UAAU,WAAW,SAalC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,OAMtC;AAED,qBAAa,aAAa;IACxB,KAAK;wBACa,MAAM;wBACN,MAAM;yBACL,MAAM;MACtB;CACJ"}
|
package/dist/common/output.js
CHANGED
|
@@ -24,7 +24,7 @@ export function printSpinnerToConsole(message) {
|
|
|
24
24
|
export function printWarningToConsole(message) {
|
|
25
25
|
console.error(chalk.yellow(message));
|
|
26
26
|
}
|
|
27
|
-
export
|
|
27
|
+
export function printCriticalFailureToConsole(message, spinner) {
|
|
28
28
|
if (spinner) {
|
|
29
29
|
spinner?.fail(message);
|
|
30
30
|
}
|
|
@@ -34,6 +34,9 @@ export async function printCriticalFailureToConsoleAndExit(message, spinner) {
|
|
|
34
34
|
Sentry.captureMessage(message, {
|
|
35
35
|
level: "error",
|
|
36
36
|
});
|
|
37
|
+
}
|
|
38
|
+
export async function printCriticalFailureToConsoleAndExit(message, spinner) {
|
|
39
|
+
printCriticalFailureToConsole(message, spinner);
|
|
37
40
|
await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {
|
|
38
41
|
process.exit(1);
|
|
39
42
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAY,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAMzC,MAAM,UAAU,yBAAyB,CAAC,OAAa,EAAE,YAAkB;IACzE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAExC,IACE,YAAY;QACZ,OAAO,YAAY,KAAK,QAAQ;QAChC,QAAQ,IAAI,YAAY;QACxB,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,EACvC,CAAC;QAED,OAAO,CAAC,KAAK,CACX,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC;SAAM,IACL,YAAY;QACZ,OAAO,YAAY,KAAK,QAAQ;QAChC,OAAO,IAAI,YAAY;QACvB,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,EACtC,CAAC;QAED,OAAO,CAAC,KAAK,CACX,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAa;IACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"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","sourcesContent":["/** biome-ignore-all lint/suspicious/noConsole: CLI output file */\n// biome-ignore-all lint/suspicious/noExplicitAny: Lots of any here\nimport * as Sentry from \"@sentry/node\";\nimport chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\nimport { MAX_WAIT_PENDING_TIME_MS } from \"./constants.js\";\n\nconst indent = ` ${chalk.gray(\"|\")} `;\n\n// We standardize printing to the terminal with this module\n\n// According to https://unix.stackexchange.com/questions/331611/do-progress-reports-logging-information-belong-on-stderr-or-stdout\n// any diagnostic information should go to stderr, and only the actual output goes to stdout\nexport function printDiagnosticsToConsole(message?: any, maybeProblem?: any) {\n console.error(chalk.bold.blue(message));\n\n if (\n maybeProblem &&\n typeof maybeProblem === \"object\" &&\n \"detail\" in maybeProblem &&\n typeof maybeProblem.detail === \"string\"\n ) {\n // The details are better to log if we have it\n console.error(\n indent + chalk.bold.red(JSON.stringify(maybeProblem, null, 2))\n );\n } else if (\n maybeProblem &&\n typeof maybeProblem === \"object\" &&\n \"title\" in maybeProblem &&\n typeof maybeProblem.title === \"string\"\n ) {\n // If we dont have details then log the title\n console.error(\n indent + chalk.bold.red(JSON.stringify(maybeProblem.title, null, 2))\n );\n }\n}\n\nexport function printSpinnerToConsole(message?: string) {\n return ora(message).start();\n}\n\nexport function printWarningToConsole(message?: any) {\n console.error(chalk.yellow(message));\n}\n\n// Display a critical failure message without terminating the process.\n// Use this when the caller is responsible for exiting (e.g. cli.ts's catch\n// block needs the finally to run analytics shutdown before process.exit).\nexport function printCriticalFailureToConsole(message?: any, spinner?: Ora) {\n if (spinner) {\n spinner?.fail(message);\n } else {\n console.error(chalk.bold.red(message));\n }\n Sentry.captureMessage(message, {\n level: \"error\",\n });\n}\n\n// This information is displayed to the user, so it should be actionable.\nexport async function printCriticalFailureToConsoleAndExit(\n message?: any,\n spinner?: Ora\n) {\n printCriticalFailureToConsole(message, spinner);\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(1);\n });\n}\n\n// Only use this to output the actual result of a command\n// This outputs to STDOUT, which is reserved for the actual result of a command\nexport function printResultToConsole(message?: any) {\n console.log(chalk.bold.green(message));\n}\n\nexport function printJsonToConsole(value?: unknown) {\n console.log(JSON.stringify(value, null, 2));\n}\n\n// Only use this to output the actual result of a command\n// This outputs to STDOUT, which is reserved for the actual result of a command\nexport function printTableToConsole(table: any) {\n console.table(table);\n}\n\nexport async function printResultToConsoleAndExitGracefully(\n message?: any,\n spinner?: Ora\n) {\n if (spinner) {\n spinner?.succeed(message);\n } else {\n printResultToConsole(message);\n }\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n}\n\nexport async function printTableToConsoleAndExitGracefully(table: any) {\n printTableToConsole(table);\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n}\n\nexport async function printJsonToConsoleAndExitGracefully(value?: unknown) {\n printJsonToConsole(value);\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n}\n\n// See https://nodejs.org/docs/latest-v18.x/api/process.html#a-note-on-process-io\n// We want to deliberately have STDOUT flush synchronously, so we can pipe the output to another command\n\ninterface WriteStreamWithHandle {\n _handle: {\n // biome-ignore lint/complexity/noBannedTypes: Migrated from ESLint\n setBlocking: Function;\n };\n isTTY: boolean;\n}\n\nexport default function setBlocking() {\n // Deno and browser have no process object:\n if (typeof process === \"undefined\") return;\n [process.stdout, process.stderr].forEach((_stream) => {\n const stream = _stream as any as WriteStreamWithHandle;\n if (\n stream._handle &&\n stream.isTTY &&\n typeof stream._handle.setBlocking === \"function\"\n ) {\n stream._handle.setBlocking(true);\n }\n });\n}\n\nexport function textOrJson(text: string) {\n try {\n return JSON.parse(text);\n } catch (_e) {\n return text;\n }\n}\n\nexport class ConsoleOutput {\n child = () => ({\n info: (message: string) => console.log(message),\n warn: (message: string) => console.warn(message),\n error: (message: string) => console.error(message),\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/create/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/create/handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8B,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC7B;AAcD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,iBAgC3C"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import settings from "../../common/settings.js";
|
|
1
|
+
import { createApiClient } from "../../common/api/client.js";
|
|
2
|
+
import { printJsonToConsoleAndExitGracefully, printTableToConsoleAndExitGracefully, } from "../../common/output.js";
|
|
4
3
|
function toMutationTable(result) {
|
|
5
4
|
return {
|
|
6
5
|
hostname: result.hostname,
|
|
@@ -21,31 +20,17 @@ export async function create(argv) {
|
|
|
21
20
|
if (argv.stage) {
|
|
22
21
|
body.stage = argv.stage;
|
|
23
22
|
}
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
body: JSON.stringify(body),
|
|
23
|
+
const client = createApiClient({ authToken: argv.authToken });
|
|
24
|
+
const result = await client.post(`/v1/accounts/${account}/custom-domains`, {
|
|
25
|
+
operation: "Failed to create custom domain for account",
|
|
26
|
+
errorMessage: "Error: Failed to create custom domain for your account. Check the arguments.",
|
|
27
|
+
body,
|
|
31
28
|
});
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
else {
|
|
38
|
-
await printTableToConsoleAndExitGracefully(toMutationTable(result));
|
|
39
|
-
}
|
|
40
|
-
return;
|
|
29
|
+
if (argv.output === "json") {
|
|
30
|
+
await printJsonToConsoleAndExitGracefully(result);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
await printTableToConsoleAndExitGracefully(toMutationTable(result));
|
|
41
34
|
}
|
|
42
|
-
const response = textOrJson(await createResponse.text());
|
|
43
|
-
logger.error({
|
|
44
|
-
status: createResponse.status,
|
|
45
|
-
statusText: createResponse.statusText,
|
|
46
|
-
response,
|
|
47
|
-
}, "Failed to create custom domain for account");
|
|
48
|
-
printDiagnosticsToConsole("Error: Failed to create custom domain for your account. Check the arguments.", response);
|
|
49
|
-
process.exit(1);
|
|
50
35
|
}
|
|
51
36
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/create/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/create/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACL,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,wBAAwB,CAAC;AAYhC,SAAS,eAAe,CAAC,MAAkC;IACzD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,iBAAiB,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;QAC9C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;QACzB,6BAA6B,EAAE,MAAM,CAAC,qBAAqB,EAAE,IAAI,IAAI,EAAE;QACvE,6BAA6B,EAAE,MAAM,CAAC,qBAAqB,EAAE,IAAI,IAAI,EAAE;QACvE,8BAA8B,EAAE,MAAM,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAe;IAC1C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACnC,MAAM,IAAI,GAIN,EAAE,QAAQ,EAAE,CAAC;IAEjB,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,gBAAgB,OAAO,iBAAiB,EACxC;QACE,SAAS,EAAE,4CAA4C;QACvD,YAAY,EACV,8EAA8E;QAChF,IAAI;KACL,CACF,CAAC;IAEF,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,mCAAmC,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,MAAM,oCAAoC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC","sourcesContent":["import { createApiClient } from \"../../common/api/client.js\";\nimport {\n printJsonToConsoleAndExitGracefully,\n printTableToConsoleAndExitGracefully,\n} from \"../../common/output.js\";\nimport { CustomDomainMutationResult, CustomDomainStage } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n authToken: string;\n hostname: string;\n \"deployment-name\"?: string;\n stage?: CustomDomainStage;\n output?: \"default\" | \"json\";\n}\n\nfunction toMutationTable(result: CustomDomainMutationResult) {\n return {\n hostname: result.hostname,\n \"deployment-name\": result.deploymentName ?? \"\",\n stage: result.stage ?? \"\",\n cname: result.cname ?? \"\",\n \"ownership-verification-name\": result.ownershipVerification?.name ?? \"\",\n \"ownership-verification-type\": result.ownershipVerification?.type ?? \"\",\n \"ownership-verification-value\": result.ownershipVerification?.value ?? \"\",\n };\n}\n\nexport async function create(argv: Arguments) {\n const { account, hostname } = argv;\n const body: {\n hostname: string;\n deploymentName?: string;\n stage?: CustomDomainStage;\n } = { hostname };\n\n if (argv[\"deployment-name\"]) {\n body.deploymentName = argv[\"deployment-name\"];\n }\n\n if (argv.stage) {\n body.stage = argv.stage;\n }\n\n const client = createApiClient({ authToken: argv.authToken });\n const result = await client.post<CustomDomainMutationResult>(\n `/v1/accounts/${account}/custom-domains`,\n {\n operation: \"Failed to create custom domain for account\",\n errorMessage:\n \"Error: Failed to create custom domain for your account. Check the arguments.\",\n body,\n }\n );\n\n if (argv.output === \"json\") {\n await printJsonToConsoleAndExitGracefully(result);\n } else {\n await printTableToConsoleAndExitGracefully(toMutationTable(result));\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/delete/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/delete/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC7B;AAsDD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,iBAgCvD"}
|
|
@@ -1,32 +1,6 @@
|
|
|
1
|
+
import { createApiClient } from "../../common/api/client.js";
|
|
1
2
|
import { logger } from "../../common/logger.js";
|
|
2
|
-
import { printCriticalFailureToConsoleAndExit,
|
|
3
|
-
import settings from "../../common/settings.js";
|
|
4
|
-
async function exitWithLoggedFailure(genericMessage, logMessage, context = {}) {
|
|
5
|
-
logger.error(context, logMessage);
|
|
6
|
-
if (context.response !== undefined && context.response !== null) {
|
|
7
|
-
printDiagnosticsToConsole(genericMessage, context.response);
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
await printCriticalFailureToConsoleAndExit(genericMessage);
|
|
11
|
-
throw new Error("printCriticalFailureToConsoleAndExit returned unexpectedly");
|
|
12
|
-
}
|
|
13
|
-
async function fetchCustomDomains(account, authToken) {
|
|
14
|
-
const listResponse = await fetch(`${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/custom-domains`, {
|
|
15
|
-
method: "GET",
|
|
16
|
-
headers: {
|
|
17
|
-
Authorization: `Bearer ${authToken}`,
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
if (listResponse.ok) {
|
|
21
|
-
return (await listResponse.json());
|
|
22
|
-
}
|
|
23
|
-
const response = textOrJson(await listResponse.text());
|
|
24
|
-
return exitWithLoggedFailure("Error: Failed to look up custom domain assignments before deletion. Try again with --deployment-name.", "Failed to fetch custom domains for deletion preflight", {
|
|
25
|
-
status: listResponse.status,
|
|
26
|
-
statusText: listResponse.statusText,
|
|
27
|
-
response,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
3
|
+
import { printCriticalFailureToConsoleAndExit, printJsonToConsoleAndExitGracefully, printResultToConsoleAndExitGracefully, } from "../../common/output.js";
|
|
30
4
|
async function resolveDeploymentName(customDomain) {
|
|
31
5
|
if (customDomain.deployments.length === 0) {
|
|
32
6
|
return undefined;
|
|
@@ -34,16 +8,22 @@ async function resolveDeploymentName(customDomain) {
|
|
|
34
8
|
if (customDomain.deployments.length === 1) {
|
|
35
9
|
return customDomain.deployments[0].deploymentName ?? undefined;
|
|
36
10
|
}
|
|
37
|
-
|
|
11
|
+
logger.error({
|
|
38
12
|
hostname: customDomain.hostname,
|
|
39
13
|
deploymentCount: customDomain.deployments.length,
|
|
40
|
-
});
|
|
14
|
+
}, "Custom domain deletion requires an explicit deployment name");
|
|
15
|
+
await printCriticalFailureToConsoleAndExit(`Error: Custom domain ${customDomain.hostname} is assigned to multiple deployments. Rerun with --deployment-name.`);
|
|
16
|
+
throw new Error("printCriticalFailureToConsoleAndExit returned unexpectedly");
|
|
41
17
|
}
|
|
42
18
|
async function inferDeploymentName(argv) {
|
|
43
19
|
if (argv["deployment-name"]) {
|
|
44
20
|
return argv["deployment-name"];
|
|
45
21
|
}
|
|
46
|
-
const
|
|
22
|
+
const client = createApiClient({ authToken: argv.authToken });
|
|
23
|
+
const customDomains = await client.get(`/v1/accounts/${argv.account}/custom-domains`, {
|
|
24
|
+
operation: "Failed to fetch custom domains for deletion preflight",
|
|
25
|
+
errorMessage: "Error: Failed to look up custom domain assignments before deletion. Try again with --deployment-name.",
|
|
26
|
+
});
|
|
47
27
|
const matchingCustomDomain = customDomains.data.find((customDomain) => {
|
|
48
28
|
return customDomain.hostname === argv.hostname;
|
|
49
29
|
});
|
|
@@ -60,30 +40,21 @@ export async function deleteCustomDomain(argv) {
|
|
|
60
40
|
if (deploymentName) {
|
|
61
41
|
query.set("deploymentName", deploymentName);
|
|
62
42
|
}
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
43
|
+
const client = createApiClient({ authToken: argv.authToken });
|
|
44
|
+
await client.delete(`/v1/accounts/${account}/custom-domains?${query.toString()}`, {
|
|
45
|
+
operation: "Failed to delete custom domain for account",
|
|
46
|
+
errorMessage: "Error: Failed to delete custom domain for your account. Check the arguments.",
|
|
47
|
+
emptyResponse: true,
|
|
68
48
|
});
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
await printResultToConsoleAndExitGracefully(`Custom domain ${hostname} deleted successfully.`);
|
|
79
|
-
}
|
|
80
|
-
return;
|
|
49
|
+
if (argv.output === "json") {
|
|
50
|
+
await printJsonToConsoleAndExitGracefully({
|
|
51
|
+
deleted: true,
|
|
52
|
+
hostname,
|
|
53
|
+
deploymentName: deploymentName ?? null,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
await printResultToConsoleAndExitGracefully(`Custom domain ${hostname} deleted successfully.`);
|
|
81
58
|
}
|
|
82
|
-
const response = textOrJson(await deleteResponse.text());
|
|
83
|
-
await exitWithLoggedFailure("Error: Failed to delete custom domain for your account. Check the arguments.", "Failed to delete custom domain for account", {
|
|
84
|
-
status: deleteResponse.status,
|
|
85
|
-
statusText: deleteResponse.statusText,
|
|
86
|
-
response,
|
|
87
|
-
});
|
|
88
59
|
}
|
|
89
60
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/delete/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,oCAAoC,EACpC,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/delete/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createApiClient } from \"../../common/api/client.js\";\nimport { logger } from \"../../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printJsonToConsoleAndExitGracefully,\n printResultToConsoleAndExitGracefully,\n} from \"../../common/output.js\";\nimport { CustomDomainListItem, CustomDomainListResponse } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n authToken: string;\n hostname: string;\n \"deployment-name\"?: string;\n output?: \"default\" | \"json\";\n}\n\nasync function resolveDeploymentName(\n customDomain: CustomDomainListItem\n): Promise<string | undefined> {\n if (customDomain.deployments.length === 0) {\n return undefined;\n }\n\n if (customDomain.deployments.length === 1) {\n return customDomain.deployments[0].deploymentName ?? undefined;\n }\n\n logger.error(\n {\n hostname: customDomain.hostname,\n deploymentCount: customDomain.deployments.length,\n },\n \"Custom domain deletion requires an explicit deployment name\"\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Custom domain ${customDomain.hostname} is assigned to multiple deployments. Rerun with --deployment-name.`\n );\n throw new Error(\"printCriticalFailureToConsoleAndExit returned unexpectedly\");\n}\n\nasync function inferDeploymentName(\n argv: Arguments\n): Promise<string | undefined> {\n if (argv[\"deployment-name\"]) {\n return argv[\"deployment-name\"];\n }\n\n const client = createApiClient({ authToken: argv.authToken });\n const customDomains = await client.get<CustomDomainListResponse>(\n `/v1/accounts/${argv.account}/custom-domains`,\n {\n operation: \"Failed to fetch custom domains for deletion preflight\",\n errorMessage:\n \"Error: Failed to look up custom domain assignments before deletion. Try again with --deployment-name.\",\n }\n );\n\n const matchingCustomDomain = customDomains.data.find((customDomain) => {\n return customDomain.hostname === argv.hostname;\n });\n\n if (!matchingCustomDomain) {\n return undefined;\n }\n\n return resolveDeploymentName(matchingCustomDomain);\n}\n\nexport async function deleteCustomDomain(argv: Arguments) {\n const { account, hostname } = argv;\n const deploymentName = await inferDeploymentName(argv);\n\n const query = new URLSearchParams();\n query.set(\"hostname\", hostname);\n if (deploymentName) {\n query.set(\"deploymentName\", deploymentName);\n }\n\n const client = createApiClient({ authToken: argv.authToken });\n await client.delete(\n `/v1/accounts/${account}/custom-domains?${query.toString()}`,\n {\n operation: \"Failed to delete custom domain for account\",\n errorMessage:\n \"Error: Failed to delete custom domain for your account. Check the arguments.\",\n emptyResponse: true,\n }\n );\n\n if (argv.output === \"json\") {\n await printJsonToConsoleAndExitGracefully({\n deleted: true,\n hostname,\n deploymentName: deploymentName ?? null,\n });\n } else {\n await printResultToConsoleAndExitGracefully(\n `Custom domain ${hostname} deleted successfully.`\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/list/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/list/handler.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC7B;AAwGD,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,iBA2BzC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import settings from "../../common/settings.js";
|
|
1
|
+
import { createApiClient } from "../../common/api/client.js";
|
|
2
|
+
import { printJsonToConsoleAndExitGracefully, printResultToConsoleAndExitGracefully, printTableToConsoleAndExitGracefully, } from "../../common/output.js";
|
|
4
3
|
function toTableRows(customDomains) {
|
|
5
4
|
const rows = [];
|
|
6
5
|
customDomains.forEach((customDomain) => {
|
|
@@ -69,38 +68,25 @@ function toJsonRows(customDomains) {
|
|
|
69
68
|
}
|
|
70
69
|
export async function list(argv) {
|
|
71
70
|
const { account } = argv;
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
},
|
|
71
|
+
const client = createApiClient({ authToken: argv.authToken });
|
|
72
|
+
const customDomains = await client.get(`/v1/accounts/${account}/custom-domains`, {
|
|
73
|
+
operation: "Failed to list custom domains for account",
|
|
74
|
+
errorMessage: "Error: Failed to list custom domains for your account. Try again later.",
|
|
77
75
|
});
|
|
78
|
-
if (
|
|
79
|
-
const customDomains = await listResponse.json();
|
|
80
|
-
if (customDomains.data.length === 0) {
|
|
81
|
-
if (argv.output === "json") {
|
|
82
|
-
await printJsonToConsoleAndExitGracefully([]);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
await printResultToConsoleAndExitGracefully("No custom domains found");
|
|
86
|
-
}
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
76
|
+
if (customDomains.data.length === 0) {
|
|
89
77
|
if (argv.output === "json") {
|
|
90
|
-
await printJsonToConsoleAndExitGracefully(
|
|
78
|
+
await printJsonToConsoleAndExitGracefully([]);
|
|
91
79
|
}
|
|
92
80
|
else {
|
|
93
|
-
await
|
|
81
|
+
await printResultToConsoleAndExitGracefully("No custom domains found");
|
|
94
82
|
}
|
|
95
83
|
return;
|
|
96
84
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
printDiagnosticsToConsole("Error: Failed to list custom domains for your account. Try again later.", response);
|
|
104
|
-
process.exit(1);
|
|
85
|
+
if (argv.output === "json") {
|
|
86
|
+
await printJsonToConsoleAndExitGracefully(toJsonRows(customDomains.data));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
await printTableToConsoleAndExitGracefully(toTableRows(customDomains.data));
|
|
90
|
+
}
|
|
105
91
|
}
|
|
106
92
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/list/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/list/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createApiClient } from \"../../common/api/client.js\";\nimport {\n printJsonToConsoleAndExitGracefully,\n printResultToConsoleAndExitGracefully,\n printTableToConsoleAndExitGracefully,\n} from \"../../common/output.js\";\nimport { CustomDomainListItem, CustomDomainListResponse } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n authToken: string;\n output?: \"default\" | \"json\";\n}\n\ninterface CustomDomainTableRow {\n hostname: string;\n provider: string;\n \"project-name\": string;\n \"deployment-name\": string;\n branch: string;\n \"environment-type\": string;\n stage: string;\n \"is-default\": boolean | \"\";\n cname: string;\n}\n\ninterface CustomDomainJsonRow {\n hostname: string;\n provider: string;\n projectName: string;\n deploymentName: string | null;\n branch: string | null;\n environmentType: string | null;\n stage: string | null;\n isDefault: boolean | null;\n cname: string | null;\n}\n\nfunction toTableRows(\n customDomains: CustomDomainListItem[]\n): CustomDomainTableRow[] {\n const rows: CustomDomainTableRow[] = [];\n\n customDomains.forEach((customDomain) => {\n if (customDomain.deployments.length === 0) {\n rows.push({\n hostname: customDomain.hostname,\n provider: customDomain.provider,\n \"project-name\": customDomain.projectName,\n \"deployment-name\": \"\",\n branch: \"\",\n \"environment-type\": \"\",\n stage: \"\",\n \"is-default\": \"\",\n cname: \"\",\n });\n return;\n }\n\n customDomain.deployments.forEach((deployment) => {\n rows.push({\n hostname: customDomain.hostname,\n provider: customDomain.provider,\n \"project-name\": customDomain.projectName,\n \"deployment-name\": deployment.deploymentName ?? \"\",\n branch: deployment.branch ?? \"\",\n \"environment-type\": deployment.environmentType ?? \"\",\n stage: deployment.stage ?? \"\",\n \"is-default\": deployment.isDefault,\n cname: deployment.cname ?? \"\",\n });\n });\n });\n\n return rows;\n}\n\nfunction toJsonRows(\n customDomains: CustomDomainListItem[]\n): CustomDomainJsonRow[] {\n const rows: CustomDomainJsonRow[] = [];\n\n customDomains.forEach((customDomain) => {\n if (customDomain.deployments.length === 0) {\n rows.push({\n hostname: customDomain.hostname,\n provider: customDomain.provider,\n projectName: customDomain.projectName,\n deploymentName: null,\n branch: null,\n environmentType: null,\n stage: null,\n isDefault: null,\n cname: null,\n });\n return;\n }\n\n customDomain.deployments.forEach((deployment) => {\n rows.push({\n hostname: customDomain.hostname,\n provider: customDomain.provider,\n projectName: customDomain.projectName,\n deploymentName: deployment.deploymentName,\n branch: deployment.branch,\n environmentType: deployment.environmentType,\n stage: deployment.stage,\n isDefault: deployment.isDefault,\n cname: deployment.cname,\n });\n });\n });\n\n return rows;\n}\n\nexport async function list(argv: Arguments) {\n const { account } = argv;\n\n const client = createApiClient({ authToken: argv.authToken });\n const customDomains = await client.get<CustomDomainListResponse>(\n `/v1/accounts/${account}/custom-domains`,\n {\n operation: \"Failed to list custom domains for account\",\n errorMessage:\n \"Error: Failed to list custom domains for your account. Try again later.\",\n }\n );\n\n if (customDomains.data.length === 0) {\n if (argv.output === \"json\") {\n await printJsonToConsoleAndExitGracefully([]);\n } else {\n await printResultToConsoleAndExitGracefully(\"No custom domains found\");\n }\n return;\n }\n\n if (argv.output === \"json\") {\n await printJsonToConsoleAndExitGracefully(toJsonRows(customDomains.data));\n } else {\n await printTableToConsoleAndExitGracefully(toTableRows(customDomains.data));\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/update/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/custom-domain/update/handler.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC7B;AAcD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,iBA2B3C"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import settings from "../../common/settings.js";
|
|
1
|
+
import { createApiClient } from "../../common/api/client.js";
|
|
2
|
+
import { printJsonToConsoleAndExitGracefully, printTableToConsoleAndExitGracefully, } from "../../common/output.js";
|
|
4
3
|
function toMutationTable(result) {
|
|
5
4
|
return {
|
|
6
5
|
hostname: result.hostname,
|
|
@@ -18,31 +17,17 @@ export async function update(argv) {
|
|
|
18
17
|
if (argv["deployment-name"]) {
|
|
19
18
|
body.deploymentName = argv["deployment-name"];
|
|
20
19
|
}
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
body: JSON.stringify(body),
|
|
20
|
+
const client = createApiClient({ authToken: argv.authToken });
|
|
21
|
+
const result = await client.patch(`/v1/accounts/${account}/custom-domains`, {
|
|
22
|
+
operation: "Failed to update custom domain for account",
|
|
23
|
+
errorMessage: "Error: Failed to update custom domain for your account. Check the arguments.",
|
|
24
|
+
body,
|
|
28
25
|
});
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
else {
|
|
35
|
-
await printTableToConsoleAndExitGracefully(toMutationTable(result));
|
|
36
|
-
}
|
|
37
|
-
return;
|
|
26
|
+
if (argv.output === "json") {
|
|
27
|
+
await printJsonToConsoleAndExitGracefully(result);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
await printTableToConsoleAndExitGracefully(toMutationTable(result));
|
|
38
31
|
}
|
|
39
|
-
const response = textOrJson(await updateResponse.text());
|
|
40
|
-
logger.error({
|
|
41
|
-
status: updateResponse.status,
|
|
42
|
-
statusText: updateResponse.statusText,
|
|
43
|
-
response,
|
|
44
|
-
}, "Failed to update custom domain for account");
|
|
45
|
-
printDiagnosticsToConsole("Error: Failed to update custom domain for your account. Check the arguments.", response);
|
|
46
|
-
process.exit(1);
|
|
47
32
|
}
|
|
48
33
|
//# sourceMappingURL=handler.js.map
|