@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.
Files changed (104) hide show
  1. package/dist/__tests__/integration/custom-domain.integration.test.js +4 -4
  2. package/dist/__tests__/integration/custom-domain.integration.test.js.map +1 -1
  3. package/dist/__tests__/integration/jest-mocks-setup.js +1 -0
  4. package/dist/__tests__/integration/jest-mocks-setup.js.map +1 -1
  5. package/dist/__tests__/integration/list.integration.test.js +2 -2
  6. package/dist/__tests__/integration/list.integration.test.js.map +1 -1
  7. package/dist/__tests__/integration/tunnel.integration.test.js +14 -14
  8. package/dist/__tests__/integration/tunnel.integration.test.js.map +1 -1
  9. package/dist/__tests__/integration/variable.integration.test.js +4 -4
  10. package/dist/__tests__/integration/variable.integration.test.js.map +1 -1
  11. package/dist/__tests__/integration/whoami.integration.test.js +2 -5
  12. package/dist/__tests__/integration/whoami.integration.test.js.map +1 -1
  13. package/dist/cli.js +12 -6
  14. package/dist/cli.js.map +1 -1
  15. package/dist/common/api/client.d.ts +40 -0
  16. package/dist/common/api/client.d.ts.map +1 -0
  17. package/dist/common/api/client.js +92 -0
  18. package/dist/common/api/client.js.map +1 -0
  19. package/dist/common/output.d.ts +4 -0
  20. package/dist/common/output.d.ts.map +1 -1
  21. package/dist/common/output.js +4 -1
  22. package/dist/common/output.js.map +1 -1
  23. package/dist/custom-domain/create/handler.d.ts.map +1 -1
  24. package/dist/custom-domain/create/handler.js +12 -27
  25. package/dist/custom-domain/create/handler.js.map +1 -1
  26. package/dist/custom-domain/delete/handler.d.ts.map +1 -1
  27. package/dist/custom-domain/delete/handler.js +25 -54
  28. package/dist/custom-domain/delete/handler.js.map +1 -1
  29. package/dist/custom-domain/list/handler.d.ts.map +1 -1
  30. package/dist/custom-domain/list/handler.js +15 -29
  31. package/dist/custom-domain/list/handler.js.map +1 -1
  32. package/dist/custom-domain/update/handler.d.ts.map +1 -1
  33. package/dist/custom-domain/update/handler.js +12 -27
  34. package/dist/custom-domain/update/handler.js.map +1 -1
  35. package/dist/list/handler.d.ts.map +1 -1
  36. package/dist/list/handler.js +41 -59
  37. package/dist/list/handler.js.map +1 -1
  38. package/dist/mtls-certificates/create/handler.d.ts.map +1 -1
  39. package/dist/mtls-certificates/create/handler.js +9 -23
  40. package/dist/mtls-certificates/create/handler.js.map +1 -1
  41. package/dist/mtls-certificates/delete/handler.d.ts.map +1 -1
  42. package/dist/mtls-certificates/delete/handler.js +8 -20
  43. package/dist/mtls-certificates/delete/handler.js.map +1 -1
  44. package/dist/mtls-certificates/describe/handler.d.ts.map +1 -1
  45. package/dist/mtls-certificates/describe/handler.js +17 -31
  46. package/dist/mtls-certificates/describe/handler.js.map +1 -1
  47. package/dist/mtls-certificates/disable/handler.d.ts.map +1 -1
  48. package/dist/mtls-certificates/disable/handler.js +9 -26
  49. package/dist/mtls-certificates/disable/handler.js.map +1 -1
  50. package/dist/mtls-certificates/list/handler.d.ts.map +1 -1
  51. package/dist/mtls-certificates/list/handler.js +22 -36
  52. package/dist/mtls-certificates/list/handler.js.map +1 -1
  53. package/dist/mtls-certificates/update/handler.d.ts.map +1 -1
  54. package/dist/mtls-certificates/update/handler.js +14 -29
  55. package/dist/mtls-certificates/update/handler.js.map +1 -1
  56. package/dist/proxies/create/handler.d.ts.map +1 -1
  57. package/dist/proxies/create/handler.js +9 -22
  58. package/dist/proxies/create/handler.js.map +1 -1
  59. package/dist/proxies/delete/handler.d.ts.map +1 -1
  60. package/dist/proxies/delete/handler.js +8 -21
  61. package/dist/proxies/delete/handler.js.map +1 -1
  62. package/dist/proxies/describe/handler.d.ts.map +1 -1
  63. package/dist/proxies/describe/handler.js +7 -22
  64. package/dist/proxies/describe/handler.js.map +1 -1
  65. package/dist/proxies/update/handler.d.ts.map +1 -1
  66. package/dist/proxies/update/handler.js +9 -22
  67. package/dist/proxies/update/handler.js.map +1 -1
  68. package/dist/tsconfig.tsbuildinfo +1 -1
  69. package/dist/tunnel/create/handler.d.ts.map +1 -1
  70. package/dist/tunnel/create/handler.js +8 -22
  71. package/dist/tunnel/create/handler.js.map +1 -1
  72. package/dist/tunnel/delete/handler.d.ts.map +1 -1
  73. package/dist/tunnel/delete/handler.js +16 -30
  74. package/dist/tunnel/delete/handler.js.map +1 -1
  75. package/dist/tunnel/describe/handler.d.ts.map +1 -1
  76. package/dist/tunnel/describe/handler.js +7 -21
  77. package/dist/tunnel/describe/handler.js.map +1 -1
  78. package/dist/tunnel/list/handler.d.ts.map +1 -1
  79. package/dist/tunnel/list/handler.js +13 -28
  80. package/dist/tunnel/list/handler.js.map +1 -1
  81. package/dist/tunnel/rotate-token/handler.d.ts.map +1 -1
  82. package/dist/tunnel/rotate-token/handler.js +7 -21
  83. package/dist/tunnel/rotate-token/handler.js.map +1 -1
  84. package/dist/tunnel/services/describe/handler.d.ts.map +1 -1
  85. package/dist/tunnel/services/describe/handler.js +7 -21
  86. package/dist/tunnel/services/describe/handler.js.map +1 -1
  87. package/dist/tunnel/services/update/handler.d.ts.map +1 -1
  88. package/dist/tunnel/services/update/handler.js +18 -32
  89. package/dist/tunnel/services/update/handler.js.map +1 -1
  90. package/dist/variable/create/handler.d.ts.map +1 -1
  91. package/dist/variable/create/handler.js +9 -24
  92. package/dist/variable/create/handler.js.map +1 -1
  93. package/dist/variable/update/handler.d.ts.map +1 -1
  94. package/dist/variable/update/handler.js +9 -24
  95. package/dist/variable/update/handler.js.map +1 -1
  96. package/dist/whoami/handler.d.ts.map +1 -1
  97. package/dist/whoami/handler.js +6 -18
  98. package/dist/whoami/handler.js.map +1 -1
  99. package/node_modules/@zuplo/core/package.json +1 -1
  100. package/node_modules/@zuplo/graphql/package.json +1 -1
  101. package/node_modules/@zuplo/openapi-tools/package.json +1 -1
  102. package/node_modules/@zuplo/otel/package.json +1 -1
  103. package/node_modules/@zuplo/runtime/package.json +1 -1
  104. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/update/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,mCAAmC,EACnC,oCAAoC,EACpC,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAWhD,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,GAGN,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,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,iBAAiB,EAChF;QACE,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YAEP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE;YACzC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,MAAM,GAA+B,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACvE,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,mCAAmC,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,oCAAoC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,CACV;QACE,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,QAAQ;KACT,EACD,4CAA4C,CAC7C,CAAC;IACF,yBAAyB,CACvB,8EAA8E,EAC9E,QAAQ,CACT,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printJsonToConsoleAndExitGracefully,\n printTableToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { CustomDomainMutationResult } 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\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 update(argv: Arguments) {\n const { account, hostname } = argv;\n const body: {\n hostname: string;\n deploymentName?: string;\n } = { hostname };\n\n if (argv[\"deployment-name\"]) {\n body.deploymentName = argv[\"deployment-name\"];\n }\n\n const updateResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/custom-domains`,\n {\n method: \"PATCH\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n\n if (updateResponse.ok) {\n const result: CustomDomainMutationResult = await updateResponse.json();\n if (argv.output === \"json\") {\n await printJsonToConsoleAndExitGracefully(result);\n } else {\n await printTableToConsoleAndExitGracefully(toMutationTable(result));\n }\n return;\n }\n\n const response = textOrJson(await updateResponse.text());\n logger.error(\n {\n status: updateResponse.status,\n statusText: updateResponse.statusText,\n response,\n },\n \"Failed to update custom domain for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to update custom domain for your account. Check the arguments.\",\n response\n );\n process.exit(1);\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/custom-domain/update/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACL,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,wBAAwB,CAAC;AAWhC,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,GAGN,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,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,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 } 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\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 update(argv: Arguments) {\n const { account, hostname } = argv;\n const body: {\n hostname: string;\n deploymentName?: string;\n } = { hostname };\n\n if (argv[\"deployment-name\"]) {\n body.deploymentName = argv[\"deployment-name\"];\n }\n\n const client = createApiClient({ authToken: argv.authToken });\n const result = await client.patch<CustomDomainMutationResult>(\n `/v1/accounts/${account}/custom-domains`,\n {\n operation: \"Failed to update custom domain for account\",\n errorMessage:\n \"Error: Failed to update 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/list/handler.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAkDD,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,iBAOzC;AA2DD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/list/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAkDD,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,iBAOzC;AAuCD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -1,6 +1,5 @@
1
- import { logger } from "../common/logger.js";
2
- import { printCriticalFailureToConsoleAndExit, printDiagnosticsToConsole, printJsonToConsoleAndExitGracefully, printResultToConsoleAndExitGracefully, printTableToConsoleAndExitGracefully, textOrJson, } from "../common/output.js";
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
  import { normalizeUrl } from "../common/utils/urls.js";
5
4
  function toDetailedDeployments(deployments) {
6
5
  return deployments
@@ -29,41 +28,29 @@ export async function list(argv) {
29
28
  }
30
29
  async function listFromSaas(argv) {
31
30
  const { account, project } = argv;
32
- const listResponse = await fetch(`${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployments`, {
33
- method: "GET",
34
- headers: {
35
- Authorization: `Bearer ${argv.authToken}`,
36
- },
31
+ const client = createApiClient({ authToken: argv.authToken });
32
+ const { data: deployments } = await client.get(`/v1/accounts/${account}/projects/${project}/deployments`, {
33
+ operation: "Failed to list deployed APIs",
34
+ errorMessage: "Error: Failed to list deployed APIs. Try again later.",
37
35
  });
38
- if (listResponse.ok) {
39
- const { data: deployments } = await listResponse.json();
40
- const detailedDeployments = toDetailedDeployments(deployments);
41
- if (argv.output === "json") {
42
- if (argv["show-details"]) {
43
- await printJsonToConsoleAndExitGracefully(detailedDeployments);
44
- }
45
- else {
46
- await printJsonToConsoleAndExitGracefully(detailedDeployments.map((deployment) => deployment.url));
47
- }
48
- return;
49
- }
36
+ const detailedDeployments = toDetailedDeployments(deployments);
37
+ if (argv.output === "json") {
50
38
  if (argv["show-details"]) {
51
- await printTableToConsoleAndExitGracefully(toDeploymentTableRows(detailedDeployments));
52
- return;
39
+ await printJsonToConsoleAndExitGracefully(detailedDeployments);
40
+ }
41
+ else {
42
+ await printJsonToConsoleAndExitGracefully(detailedDeployments.map((deployment) => deployment.url));
53
43
  }
54
- const output = detailedDeployments
55
- .map((deployment) => deployment.url)
56
- .join("\n");
57
- await printResultToConsoleAndExitGracefully(output);
44
+ return;
58
45
  }
59
- else {
60
- logger.error({
61
- status: listResponse.status,
62
- statusText: listResponse.statusText,
63
- response: textOrJson(await listResponse.text()),
64
- }, "Failed to list deployed APIs");
65
- printDiagnosticsToConsole("Error: Failed to list deployed APIs. Try again later.");
46
+ if (argv["show-details"]) {
47
+ await printTableToConsoleAndExitGracefully(toDeploymentTableRows(detailedDeployments));
48
+ return;
66
49
  }
50
+ const output = detailedDeployments
51
+ .map((deployment) => deployment.url)
52
+ .join("\n");
53
+ await printResultToConsoleAndExitGracefully(output);
67
54
  }
68
55
  function toSelfHostedDetailedDeployments(deployments) {
69
56
  return deployments
@@ -76,36 +63,31 @@ function toSelfHostedDetailedDeployments(deployments) {
76
63
  }
77
64
  async function listFromSelfHosted(argv) {
78
65
  const endpoint = normalizeUrl(argv["self-hosted-endpoint"]);
79
- const listResponse = await fetch(`${endpoint}/v1/deployments`, {
80
- method: "GET",
81
- headers: {
82
- Authorization: `Bearer ${argv.authToken}`,
83
- },
66
+ const client = createApiClient({
67
+ authToken: argv.authToken,
68
+ baseUrl: endpoint,
84
69
  });
85
- if (listResponse.ok) {
86
- const { data: deployments } = await listResponse.json();
87
- const detailedDeployments = toSelfHostedDetailedDeployments(deployments);
88
- if (argv.output === "json") {
89
- if (argv["show-details"]) {
90
- await printJsonToConsoleAndExitGracefully(detailedDeployments);
91
- }
92
- else {
93
- await printJsonToConsoleAndExitGracefully(detailedDeployments.map((deployment) => deployment.url));
94
- }
95
- return;
96
- }
70
+ const { data: deployments } = await client.get("/v1/deployments", {
71
+ operation: "Failed to list deployments at self-hosted build endpoint",
72
+ errorMessage: "Error: Failed to list deployments at self-hosted build endpoint",
73
+ });
74
+ const detailedDeployments = toSelfHostedDetailedDeployments(deployments);
75
+ if (argv.output === "json") {
97
76
  if (argv["show-details"]) {
98
- await printTableToConsoleAndExitGracefully(toDeploymentTableRows(detailedDeployments));
99
- return;
77
+ await printJsonToConsoleAndExitGracefully(detailedDeployments);
78
+ }
79
+ else {
80
+ await printJsonToConsoleAndExitGracefully(detailedDeployments.map((deployment) => deployment.url));
100
81
  }
101
- const output = detailedDeployments
102
- .map((deployment) => deployment.url)
103
- .join("\n");
104
- await printResultToConsoleAndExitGracefully(output);
82
+ return;
105
83
  }
106
- else {
107
- logger.error(JSON.stringify(await listResponse.json(), null, 2), "Failed to list deployments at self-hosted build endpoint");
108
- await printCriticalFailureToConsoleAndExit("Error: Failed to list deployments at self-hosted build endpoint");
84
+ if (argv["show-details"]) {
85
+ await printTableToConsoleAndExitGracefully(toDeploymentTableRows(detailedDeployments));
86
+ return;
109
87
  }
88
+ const output = detailedDeployments
89
+ .map((deployment) => deployment.url)
90
+ .join("\n");
91
+ await printResultToConsoleAndExitGracefully(output);
110
92
  }
111
93
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/list/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printJsonToConsoleAndExitGracefully,\n printResultToConsoleAndExitGracefully,\n printTableToConsoleAndExitGracefully,\n textOrJson,\n} from \"../common/output.js\";\nimport settings from \"../common/settings.js\";\nimport { RequiredProperties } from \"../common/utils/types.js\";\nimport { normalizeUrl } from \"../common/utils/urls.js\";\n\nexport interface Arguments {\n account: string;\n project: string;\n authToken: string;\n \"show-details\"?: boolean;\n output?: \"default\" | \"json\";\n \"self-hosted-endpoint\"?: string;\n}\n\ninterface Deployment {\n name: string;\n createdOn: string;\n loggingId: string;\n environment: string;\n accountName: string;\n projectName: string;\n state: \"IS_STARTING\" | \"STARTED\" | \"STOPPED\" | \"ERRORED\";\n message: null;\n branchName: string;\n userSub: string;\n url: string;\n environmentType: \"PRODUCTION\" | \"PREVIEW\" | \"WORKING_COPY\";\n}\n\ninterface DetailedDeployment\n extends Pick<Deployment, \"projectName\" | \"name\" | \"url\"> {}\n\ninterface DeploymentTableRow {\n \"project-name\": string;\n name: string;\n url: string;\n}\n\ntype SelfHostedArgs = RequiredProperties<Arguments, \"self-hosted-endpoint\">;\n\nfunction toDetailedDeployments(\n deployments: Pick<Deployment, \"projectName\" | \"name\" | \"url\">[]\n): DetailedDeployment[] {\n return deployments\n .filter((deployment) => deployment.url)\n .map((deployment) => ({\n projectName: deployment.projectName,\n name: deployment.name,\n url: deployment.url,\n }));\n}\n\nfunction toDeploymentTableRows(\n deployments: DetailedDeployment[]\n): DeploymentTableRow[] {\n return deployments.map((deployment) => ({\n \"project-name\": deployment.projectName,\n name: deployment.name,\n url: deployment.url,\n }));\n}\n\nexport async function list(argv: Arguments) {\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await listFromSelfHosted(args);\n } else {\n await listFromSaas(argv);\n }\n}\n\nasync function listFromSaas(argv: Arguments) {\n const { account, project } = argv;\n const listResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployments`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (listResponse.ok) {\n const { data: deployments }: { data: DetailedDeployment[] } =\n await listResponse.json();\n\n const detailedDeployments = toDetailedDeployments(deployments);\n\n if (argv.output === \"json\") {\n if (argv[\"show-details\"]) {\n await printJsonToConsoleAndExitGracefully(detailedDeployments);\n } else {\n await printJsonToConsoleAndExitGracefully(\n detailedDeployments.map((deployment) => deployment.url)\n );\n }\n return;\n }\n\n if (argv[\"show-details\"]) {\n await printTableToConsoleAndExitGracefully(\n toDeploymentTableRows(detailedDeployments)\n );\n return;\n }\n\n const output = detailedDeployments\n .map((deployment) => deployment.url)\n .join(\"\\n\");\n\n await printResultToConsoleAndExitGracefully(output);\n } else {\n logger.error(\n {\n status: listResponse.status,\n statusText: listResponse.statusText,\n response: textOrJson(await listResponse.text()),\n },\n \"Failed to list deployed APIs\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to list deployed APIs. Try again later.\"\n );\n }\n}\n\nexport interface SelfHostedDeployment {\n projectName: string;\n deploymentName: string;\n deploymentUrl: string;\n}\n\ninterface SelfHostedDetailedDeployment {\n projectName: string;\n name: string;\n url: string;\n}\n\nfunction toSelfHostedDetailedDeployments(\n deployments: SelfHostedDeployment[]\n): SelfHostedDetailedDeployment[] {\n return deployments\n .filter((deployment) => deployment.deploymentUrl)\n .map((deployment) => ({\n projectName: deployment.projectName,\n name: deployment.deploymentName,\n url: deployment.deploymentUrl,\n }));\n}\n\nasync function listFromSelfHosted(argv: SelfHostedArgs) {\n const endpoint = normalizeUrl(argv[\"self-hosted-endpoint\"]);\n\n const listResponse = await fetch(`${endpoint}/v1/deployments`, {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n });\n\n if (listResponse.ok) {\n const { data: deployments }: { data: SelfHostedDeployment[] } =\n await listResponse.json();\n\n const detailedDeployments = toSelfHostedDetailedDeployments(deployments);\n\n if (argv.output === \"json\") {\n if (argv[\"show-details\"]) {\n await printJsonToConsoleAndExitGracefully(detailedDeployments);\n } else {\n await printJsonToConsoleAndExitGracefully(\n detailedDeployments.map((deployment) => deployment.url)\n );\n }\n return;\n }\n\n if (argv[\"show-details\"]) {\n await printTableToConsoleAndExitGracefully(\n toDeploymentTableRows(detailedDeployments)\n );\n return;\n }\n\n const output = detailedDeployments\n .map((deployment) => deployment.url)\n .join(\"\\n\");\n\n await printResultToConsoleAndExitGracefully(output);\n } else {\n logger.error(\n JSON.stringify(await listResponse.json(), null, 2),\n \"Failed to list deployments at self-hosted build endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to list deployments at self-hosted build endpoint\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/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 { RequiredProperties } from \"../common/utils/types.js\";\nimport { normalizeUrl } from \"../common/utils/urls.js\";\n\nexport interface Arguments {\n account: string;\n project: string;\n authToken: string;\n \"show-details\"?: boolean;\n output?: \"default\" | \"json\";\n \"self-hosted-endpoint\"?: string;\n}\n\ninterface Deployment {\n name: string;\n createdOn: string;\n loggingId: string;\n environment: string;\n accountName: string;\n projectName: string;\n state: \"IS_STARTING\" | \"STARTED\" | \"STOPPED\" | \"ERRORED\";\n message: null;\n branchName: string;\n userSub: string;\n url: string;\n environmentType: \"PRODUCTION\" | \"PREVIEW\" | \"WORKING_COPY\";\n}\n\ninterface DetailedDeployment\n extends Pick<Deployment, \"projectName\" | \"name\" | \"url\"> {}\n\ninterface DeploymentTableRow {\n \"project-name\": string;\n name: string;\n url: string;\n}\n\ntype SelfHostedArgs = RequiredProperties<Arguments, \"self-hosted-endpoint\">;\n\nfunction toDetailedDeployments(\n deployments: Pick<Deployment, \"projectName\" | \"name\" | \"url\">[]\n): DetailedDeployment[] {\n return deployments\n .filter((deployment) => deployment.url)\n .map((deployment) => ({\n projectName: deployment.projectName,\n name: deployment.name,\n url: deployment.url,\n }));\n}\n\nfunction toDeploymentTableRows(\n deployments: DetailedDeployment[]\n): DeploymentTableRow[] {\n return deployments.map((deployment) => ({\n \"project-name\": deployment.projectName,\n name: deployment.name,\n url: deployment.url,\n }));\n}\n\nexport async function list(argv: Arguments) {\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await listFromSelfHosted(args);\n } else {\n await listFromSaas(argv);\n }\n}\n\nasync function listFromSaas(argv: Arguments) {\n const { account, project } = argv;\n const client = createApiClient({ authToken: argv.authToken });\n const { data: deployments } = await client.get<{\n data: DetailedDeployment[];\n }>(`/v1/accounts/${account}/projects/${project}/deployments`, {\n operation: \"Failed to list deployed APIs\",\n errorMessage: \"Error: Failed to list deployed APIs. Try again later.\",\n });\n\n const detailedDeployments = toDetailedDeployments(deployments);\n\n if (argv.output === \"json\") {\n if (argv[\"show-details\"]) {\n await printJsonToConsoleAndExitGracefully(detailedDeployments);\n } else {\n await printJsonToConsoleAndExitGracefully(\n detailedDeployments.map((deployment) => deployment.url)\n );\n }\n return;\n }\n\n if (argv[\"show-details\"]) {\n await printTableToConsoleAndExitGracefully(\n toDeploymentTableRows(detailedDeployments)\n );\n return;\n }\n\n const output = detailedDeployments\n .map((deployment) => deployment.url)\n .join(\"\\n\");\n\n await printResultToConsoleAndExitGracefully(output);\n}\n\nexport interface SelfHostedDeployment {\n projectName: string;\n deploymentName: string;\n deploymentUrl: string;\n}\n\ninterface SelfHostedDetailedDeployment {\n projectName: string;\n name: string;\n url: string;\n}\n\nfunction toSelfHostedDetailedDeployments(\n deployments: SelfHostedDeployment[]\n): SelfHostedDetailedDeployment[] {\n return deployments\n .filter((deployment) => deployment.deploymentUrl)\n .map((deployment) => ({\n projectName: deployment.projectName,\n name: deployment.deploymentName,\n url: deployment.deploymentUrl,\n }));\n}\n\nasync function listFromSelfHosted(argv: SelfHostedArgs) {\n const endpoint = normalizeUrl(argv[\"self-hosted-endpoint\"]);\n\n const client = createApiClient({\n authToken: argv.authToken,\n baseUrl: endpoint,\n });\n const { data: deployments } = await client.get<{\n data: SelfHostedDeployment[];\n }>(\"/v1/deployments\", {\n operation: \"Failed to list deployments at self-hosted build endpoint\",\n errorMessage:\n \"Error: Failed to list deployments at self-hosted build endpoint\",\n });\n\n const detailedDeployments = toSelfHostedDetailedDeployments(deployments);\n\n if (argv.output === \"json\") {\n if (argv[\"show-details\"]) {\n await printJsonToConsoleAndExitGracefully(detailedDeployments);\n } else {\n await printJsonToConsoleAndExitGracefully(\n detailedDeployments.map((deployment) => deployment.url)\n );\n }\n return;\n }\n\n if (argv[\"show-details\"]) {\n await printTableToConsoleAndExitGracefully(\n toDeploymentTableRows(detailedDeployments)\n );\n return;\n }\n\n const output = detailedDeployments\n .map((deployment) => deployment.url)\n .join(\"\\n\");\n\n await printResultToConsoleAndExitGracefully(output);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/create/handler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAmB,MAAM,cAAc,CAAC;AAEhE,wBAAsB,MAAM,CAAC,IAAI,EAAE,eAAe,iBAkEjD"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/create/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAmB,MAAM,cAAc,CAAC;AAEhE,wBAAsB,MAAM,CAAC,IAAI,EAAE,eAAe,iBA+CjD"}
@@ -1,7 +1,7 @@
1
1
  import { readFileSync } from "node:fs";
2
+ import { createApiClient } from "../../common/api/client.js";
2
3
  import { logger } from "../../common/logger.js";
3
- import { printDiagnosticsToConsole, printResultToConsole, textOrJson, } from "../../common/output.js";
4
- import settings from "../../common/settings.js";
4
+ import { printDiagnosticsToConsole, printResultToConsole, } from "../../common/output.js";
5
5
  export async function create(argv) {
6
6
  const { account, project } = argv;
7
7
  let certificate;
@@ -22,31 +22,17 @@ export async function create(argv) {
22
22
  printDiagnosticsToConsole(`Error: Failed to read key file at ${argv.key}`, error instanceof Error ? error.message : String(error));
23
23
  return;
24
24
  }
25
- const createResponse = await fetch(`${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates`, {
26
- method: "POST",
27
- headers: {
28
- Authorization: `Bearer ${argv.authToken}`,
29
- "Content-Type": "application/json",
30
- },
31
- body: JSON.stringify({
25
+ const client = createApiClient({ authToken: argv.authToken });
26
+ const cert = await client.post(`/v1/accounts/${account}/projects/${project}/mtls-certificates`, {
27
+ operation: "Failed to create mTLS certificate",
28
+ errorMessage: "Error: Failed to create mTLS certificate. Check the arguments.",
29
+ body: {
32
30
  name: argv.name,
33
31
  certificate,
34
32
  key,
35
33
  environments: argv["environment-type"],
36
- }),
34
+ },
37
35
  });
38
- if (createResponse.ok) {
39
- const cert = await createResponse.json();
40
- printResultToConsole(`mTLS certificate '${cert.name}' (${cert.id}) created successfully`);
41
- }
42
- else {
43
- const problem = textOrJson(await createResponse.text());
44
- logger.error({
45
- status: createResponse.status,
46
- statusText: createResponse.statusText,
47
- response: problem,
48
- }, "Failed to create mTLS certificate");
49
- printDiagnosticsToConsole("Error: Failed to create mTLS certificate. Check the arguments.", problem);
50
- }
36
+ printResultToConsole(`mTLS certificate '${cert.name}' (${cert.id}) created successfully`);
51
37
  }
52
38
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/create/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAqB;IAChD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAElC,IAAI,WAAmB,CAAC;IACxB,IAAI,GAAW,CAAC;IAEhB,IAAI,CAAC;QACH,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;QACvD,yBAAyB,CACvB,6CAA6C,IAAI,CAAC,IAAI,EAAE,EACxD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;QAC/C,yBAAyB,CACvB,qCAAqC,IAAI,CAAC,GAAG,EAAE,EAC/C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,aAAa,OAAO,oBAAoB,EACvG;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YAEP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE;YACzC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW;YACX,GAAG;YACH,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC;SACvC,CAAC;KACH,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,GAAoB,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC1D,oBAAoB,CAClB,qBAAqB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,wBAAwB,CACpE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,OAAO;SAClB,EACD,mCAAmC,CACpC,CAAC;QACF,yBAAyB,CACvB,gEAAgE,EAChE,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsole,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { CreateArguments, MtlsCertificate } from \"../models.js\";\n\nexport async function create(argv: CreateArguments) {\n const { account, project } = argv;\n\n let certificate: string;\n let key: string;\n\n try {\n certificate = readFileSync(argv.cert, \"utf-8\");\n } catch (error) {\n logger.error(error, \"Failed to read certificate file\");\n printDiagnosticsToConsole(\n `Error: Failed to read certificate file at ${argv.cert}`,\n error instanceof Error ? error.message : String(error)\n );\n return;\n }\n\n try {\n key = readFileSync(argv.key, \"utf-8\");\n } catch (error) {\n logger.error(error, \"Failed to read key file\");\n printDiagnosticsToConsole(\n `Error: Failed to read key file at ${argv.key}`,\n error instanceof Error ? error.message : String(error)\n );\n return;\n }\n\n const createResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates`,\n {\n method: \"POST\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n name: argv.name,\n certificate,\n key,\n environments: argv[\"environment-type\"],\n }),\n }\n );\n\n if (createResponse.ok) {\n const cert: MtlsCertificate = await createResponse.json();\n printResultToConsole(\n `mTLS certificate '${cert.name}' (${cert.id}) created successfully`\n );\n } else {\n const problem = textOrJson(await createResponse.text());\n logger.error(\n {\n status: createResponse.status,\n statusText: createResponse.statusText,\n response: problem,\n },\n \"Failed to create mTLS certificate\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to create mTLS certificate. Check the arguments.\",\n problem\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/create/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAqB;IAChD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAElC,IAAI,WAAmB,CAAC;IACxB,IAAI,GAAW,CAAC;IAEhB,IAAI,CAAC;QACH,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;QACvD,yBAAyB,CACvB,6CAA6C,IAAI,CAAC,IAAI,EAAE,EACxD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;QAC/C,yBAAyB,CACvB,qCAAqC,IAAI,CAAC,GAAG,EAAE,EAC/C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC5B,gBAAgB,OAAO,aAAa,OAAO,oBAAoB,EAC/D;QACE,SAAS,EAAE,mCAAmC;QAC9C,YAAY,EACV,gEAAgE;QAClE,IAAI,EAAE;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW;YACX,GAAG;YACH,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC;SACvC;KACF,CACF,CAAC;IAEF,oBAAoB,CAClB,qBAAqB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,wBAAwB,CACpE,CAAC;AACJ,CAAC","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { createApiClient } from \"../../common/api/client.js\";\nimport { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsole,\n} from \"../../common/output.js\";\nimport { CreateArguments, MtlsCertificate } from \"../models.js\";\n\nexport async function create(argv: CreateArguments) {\n const { account, project } = argv;\n\n let certificate: string;\n let key: string;\n\n try {\n certificate = readFileSync(argv.cert, \"utf-8\");\n } catch (error) {\n logger.error(error, \"Failed to read certificate file\");\n printDiagnosticsToConsole(\n `Error: Failed to read certificate file at ${argv.cert}`,\n error instanceof Error ? error.message : String(error)\n );\n return;\n }\n\n try {\n key = readFileSync(argv.key, \"utf-8\");\n } catch (error) {\n logger.error(error, \"Failed to read key file\");\n printDiagnosticsToConsole(\n `Error: Failed to read key file at ${argv.key}`,\n error instanceof Error ? error.message : String(error)\n );\n return;\n }\n\n const client = createApiClient({ authToken: argv.authToken });\n const cert = await client.post<MtlsCertificate>(\n `/v1/accounts/${account}/projects/${project}/mtls-certificates`,\n {\n operation: \"Failed to create mTLS certificate\",\n errorMessage:\n \"Error: Failed to create mTLS certificate. Check the arguments.\",\n body: {\n name: argv.name,\n certificate,\n key,\n environments: argv[\"environment-type\"],\n },\n }\n );\n\n printResultToConsole(\n `mTLS certificate '${cert.name}' (${cert.id}) created successfully`\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/delete/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,wBAAsB,aAAa,CAAC,IAAI,EAAE,eAAe,iBAgCxD"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/delete/handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,wBAAsB,aAAa,CAAC,IAAI,EAAE,eAAe,iBAexD"}
@@ -1,26 +1,14 @@
1
- import { logger } from "../../common/logger.js";
2
- import { printDiagnosticsToConsole, printResultToConsole, textOrJson, } from "../../common/output.js";
3
- import settings from "../../common/settings.js";
1
+ import { createApiClient } from "../../common/api/client.js";
2
+ import { printResultToConsole } from "../../common/output.js";
4
3
  export async function deleteCommand(argv) {
5
4
  const { account, project } = argv;
6
5
  const certId = argv["cert-id"];
7
- const deleteResponse = await fetch(`${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`, {
8
- method: "DELETE",
9
- headers: {
10
- Authorization: `Bearer ${argv.authToken}`,
11
- },
6
+ const client = createApiClient({ authToken: argv.authToken });
7
+ await client.delete(`/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`, {
8
+ operation: "Failed to delete mTLS certificate",
9
+ errorMessage: "Error: Failed to delete mTLS certificate.",
10
+ emptyResponse: true,
12
11
  });
13
- if (deleteResponse.ok || deleteResponse.status === 204) {
14
- printResultToConsole(`mTLS certificate ${certId} deleted successfully`);
15
- }
16
- else {
17
- const problem = textOrJson(await deleteResponse.text());
18
- logger.error({
19
- status: deleteResponse.status,
20
- statusText: deleteResponse.statusText,
21
- response: problem,
22
- }, "Failed to delete mTLS certificate");
23
- printDiagnosticsToConsole("Error: Failed to delete mTLS certificate.", problem);
24
- }
12
+ printResultToConsole(`mTLS certificate ${certId} deleted successfully`);
25
13
  }
26
14
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/delete/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAqB;IACvD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/B,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,aAAa,OAAO,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EACrI;QACE,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE;YAEP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE;SAC1C;KACF,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvD,oBAAoB,CAAC,oBAAoB,MAAM,uBAAuB,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,OAAO;SAClB,EACD,mCAAmC,CACpC,CAAC;QACF,yBAAyB,CACvB,2CAA2C,EAC3C,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsole,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { DeleteArguments } from \"../models.js\";\n\nexport async function deleteCommand(argv: DeleteArguments) {\n const { account, project } = argv;\n const certId = argv[\"cert-id\"];\n\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok || deleteResponse.status === 204) {\n printResultToConsole(`mTLS certificate ${certId} deleted successfully`);\n } else {\n const problem = textOrJson(await deleteResponse.text());\n logger.error(\n {\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n response: problem,\n },\n \"Failed to delete mTLS certificate\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to delete mTLS certificate.\",\n problem\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/delete/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAqB;IACvD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,CAAC,MAAM,CACjB,gBAAgB,OAAO,aAAa,OAAO,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC7F;QACE,SAAS,EAAE,mCAAmC;QAC9C,YAAY,EAAE,2CAA2C;QACzD,aAAa,EAAE,IAAI;KACpB,CACF,CAAC;IAEF,oBAAoB,CAAC,oBAAoB,MAAM,uBAAuB,CAAC,CAAC;AAC1E,CAAC","sourcesContent":["import { createApiClient } from \"../../common/api/client.js\";\nimport { printResultToConsole } from \"../../common/output.js\";\nimport { DeleteArguments } from \"../models.js\";\n\nexport async function deleteCommand(argv: DeleteArguments) {\n const { account, project } = argv;\n const certId = argv[\"cert-id\"];\n\n const client = createApiClient({ authToken: argv.authToken });\n await client.delete(\n `/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`,\n {\n operation: \"Failed to delete mTLS certificate\",\n errorMessage: \"Error: Failed to delete mTLS certificate.\",\n emptyResponse: true,\n }\n );\n\n printResultToConsole(`mTLS certificate ${certId} deleted successfully`);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/describe/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAElE,wBAAsB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,iBAiDrD"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/describe/handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAElE,wBAAsB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,iBA6BrD"}
@@ -1,37 +1,23 @@
1
- import { logger } from "../../common/logger.js";
2
- import { printDiagnosticsToConsole, printResultToConsole, textOrJson, } from "../../common/output.js";
3
- import settings from "../../common/settings.js";
1
+ import { createApiClient } from "../../common/api/client.js";
2
+ import { printResultToConsole } from "../../common/output.js";
4
3
  export async function describe(argv) {
5
4
  const { account, project } = argv;
6
5
  const certId = argv["cert-id"];
7
- const describeResponse = await fetch(`${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`, {
8
- method: "GET",
9
- headers: {
10
- Authorization: `Bearer ${argv.authToken}`,
11
- },
6
+ const client = createApiClient({ authToken: argv.authToken });
7
+ const cert = await client.get(`/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`, {
8
+ operation: "Failed to describe mTLS certificate",
9
+ errorMessage: "Error: Failed to describe mTLS certificate.",
12
10
  });
13
- if (describeResponse.ok) {
14
- const cert = await describeResponse.json();
15
- const envs = Object.entries(cert.environments)
16
- .filter(([, enabled]) => enabled)
17
- .map(([env]) => env)
18
- .join(", ");
19
- const subject = cert.certificateInfo.subject.replace(/\n/g, ", ");
20
- printResultToConsole(` ID: ${cert.id}\n` +
21
- ` Name: ${cert.name}\n` +
22
- ` Subject: ${subject}\n` +
23
- ` Valid from: ${cert.certificateInfo.validFrom}\n` +
24
- ` Valid to: ${cert.certificateInfo.validTo}\n` +
25
- ` Environment types: ${envs}`);
26
- }
27
- else {
28
- const problem = textOrJson(await describeResponse.text());
29
- logger.error({
30
- status: describeResponse.status,
31
- statusText: describeResponse.statusText,
32
- response: problem,
33
- }, "Failed to describe mTLS certificate");
34
- printDiagnosticsToConsole("Error: Failed to describe mTLS certificate.", problem);
35
- }
11
+ const envs = Object.entries(cert.environments)
12
+ .filter(([, enabled]) => enabled)
13
+ .map(([env]) => env)
14
+ .join(", ");
15
+ const subject = cert.certificateInfo.subject.replace(/\n/g, ", ");
16
+ printResultToConsole(` ID: ${cert.id}\n` +
17
+ ` Name: ${cert.name}\n` +
18
+ ` Subject: ${subject}\n` +
19
+ ` Valid from: ${cert.certificateInfo.validFrom}\n` +
20
+ ` Valid to: ${cert.certificateInfo.validTo}\n` +
21
+ ` Environment types: ${envs}`);
36
22
  }
37
23
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/describe/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAuB;IACpD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/B,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,aAAa,OAAO,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EACrI;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YAEP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE;SAC1C;KACF,CACF,CAAC;IAEF,IAAI,gBAAgB,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,GAAoB,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;aACnB,IAAI,CAAC,IAAI,CAAC,CAAC;QAGd,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAElE,oBAAoB,CAClB,SAAS,IAAI,CAAC,EAAE,IAAI;YAClB,WAAW,IAAI,CAAC,IAAI,IAAI;YACxB,cAAc,OAAO,IAAI;YACzB,iBAAiB,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI;YACnD,eAAe,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI;YAC/C,wBAAwB,IAAI,EAAE,CACjC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,QAAQ,EAAE,OAAO;SAClB,EACD,qCAAqC,CACtC,CAAC;QACF,yBAAyB,CACvB,6CAA6C,EAC7C,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsole,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { DescribeArguments, MtlsCertificate } from \"../models.js\";\n\nexport async function describe(argv: DescribeArguments) {\n const { account, project } = argv;\n const certId = argv[\"cert-id\"];\n\n const describeResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (describeResponse.ok) {\n const cert: MtlsCertificate = await describeResponse.json();\n\n const envs = Object.entries(cert.environments)\n .filter(([, enabled]) => enabled)\n .map(([env]) => env)\n .join(\", \");\n\n // Replace newlines in subject with comma-space for cleaner display\n const subject = cert.certificateInfo.subject.replace(/\\n/g, \", \");\n\n printResultToConsole(\n ` ID: ${cert.id}\\n` +\n ` Name: ${cert.name}\\n` +\n ` Subject: ${subject}\\n` +\n ` Valid from: ${cert.certificateInfo.validFrom}\\n` +\n ` Valid to: ${cert.certificateInfo.validTo}\\n` +\n ` Environment types: ${envs}`\n );\n } else {\n const problem = textOrJson(await describeResponse.text());\n logger.error(\n {\n status: describeResponse.status,\n statusText: describeResponse.statusText,\n response: problem,\n },\n \"Failed to describe mTLS certificate\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to describe mTLS certificate.\",\n problem\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/describe/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAuB;IACpD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAC3B,gBAAgB,OAAO,aAAa,OAAO,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC7F;QACE,SAAS,EAAE,qCAAqC;QAChD,YAAY,EAAE,6CAA6C;KAC5D,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;SACnB,IAAI,CAAC,IAAI,CAAC,CAAC;IAGd,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAElE,oBAAoB,CAClB,SAAS,IAAI,CAAC,EAAE,IAAI;QAClB,WAAW,IAAI,CAAC,IAAI,IAAI;QACxB,cAAc,OAAO,IAAI;QACzB,iBAAiB,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI;QACnD,eAAe,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI;QAC/C,wBAAwB,IAAI,EAAE,CACjC,CAAC;AACJ,CAAC","sourcesContent":["import { createApiClient } from \"../../common/api/client.js\";\nimport { printResultToConsole } from \"../../common/output.js\";\nimport { DescribeArguments, MtlsCertificate } from \"../models.js\";\n\nexport async function describe(argv: DescribeArguments) {\n const { account, project } = argv;\n const certId = argv[\"cert-id\"];\n\n const client = createApiClient({ authToken: argv.authToken });\n const cert = await client.get<MtlsCertificate>(\n `/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`,\n {\n operation: \"Failed to describe mTLS certificate\",\n errorMessage: \"Error: Failed to describe mTLS certificate.\",\n }\n );\n\n const envs = Object.entries(cert.environments)\n .filter(([, enabled]) => enabled)\n .map(([env]) => env)\n .join(\", \");\n\n // Replace newlines in subject with comma-space for cleaner display\n const subject = cert.certificateInfo.subject.replace(/\\n/g, \", \");\n\n printResultToConsole(\n ` ID: ${cert.id}\\n` +\n ` Name: ${cert.name}\\n` +\n ` Subject: ${subject}\\n` +\n ` Valid from: ${cert.certificateInfo.validFrom}\\n` +\n ` Valid to: ${cert.certificateInfo.validTo}\\n` +\n ` Environment types: ${envs}`\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/disable/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AAEjE,wBAAsB,OAAO,CAAC,IAAI,EAAE,gBAAgB,iBAyCnD"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/disable/handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AAEjE,wBAAsB,OAAO,CAAC,IAAI,EAAE,gBAAgB,iBAkBnD"}
@@ -1,32 +1,15 @@
1
- import { logger } from "../../common/logger.js";
2
- import { printDiagnosticsToConsole, printResultToConsole, textOrJson, } from "../../common/output.js";
3
- import settings from "../../common/settings.js";
1
+ import { createApiClient } from "../../common/api/client.js";
2
+ import { printResultToConsole } from "../../common/output.js";
4
3
  export async function disable(argv) {
5
4
  const { account, project } = argv;
6
5
  const certId = argv["cert-id"];
7
- const disableResponse = await fetch(`${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`, {
8
- method: "PATCH",
9
- headers: {
10
- Authorization: `Bearer ${argv.authToken}`,
11
- "Content-Type": "application/json",
12
- },
13
- body: JSON.stringify({
14
- environments: [],
15
- }),
6
+ const client = createApiClient({ authToken: argv.authToken });
7
+ const cert = await client.patch(`/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`, {
8
+ operation: "Failed to disable mTLS certificate",
9
+ errorMessage: "Error: Failed to disable mTLS certificate.",
10
+ body: { environments: [] },
16
11
  });
17
- if (disableResponse.ok) {
18
- const cert = await disableResponse.json();
19
- printResultToConsole(`mTLS certificate '${cert.name}' (${cert.id}) disabled successfully\n` +
20
- `Certificate is now disabled for all environment types`);
21
- }
22
- else {
23
- const problem = textOrJson(await disableResponse.text());
24
- logger.error({
25
- status: disableResponse.status,
26
- statusText: disableResponse.statusText,
27
- response: problem,
28
- }, "Failed to disable mTLS certificate");
29
- printDiagnosticsToConsole("Error: Failed to disable mTLS certificate.", problem);
30
- }
12
+ printResultToConsole(`mTLS certificate '${cert.name}' (${cert.id}) disabled successfully\n` +
13
+ `Certificate is now disabled for all environment types`);
31
14
  }
32
15
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/disable/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAsB;IAClD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/B,MAAM,eAAe,GAAG,MAAM,KAAK,CACjC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,aAAa,OAAO,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EACrI;QACE,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YAEP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE;YACzC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,YAAY,EAAE,EAAE;SACjB,CAAC;KACH,CACF,CAAC;IAEF,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,GAAoB,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAE3D,oBAAoB,CAClB,qBAAqB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,2BAA2B;YACpE,uDAAuD,CAC1D,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,UAAU,EAAE,eAAe,CAAC,UAAU;YACtC,QAAQ,EAAE,OAAO;SAClB,EACD,oCAAoC,CACrC,CAAC;QACF,yBAAyB,CACvB,4CAA4C,EAC5C,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsole,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { DisableArguments, MtlsCertificate } from \"../models.js\";\n\nexport async function disable(argv: DisableArguments) {\n const { account, project } = argv;\n const certId = argv[\"cert-id\"];\n\n const disableResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`,\n {\n method: \"PATCH\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n environments: [],\n }),\n }\n );\n\n if (disableResponse.ok) {\n const cert: MtlsCertificate = await disableResponse.json();\n\n printResultToConsole(\n `mTLS certificate '${cert.name}' (${cert.id}) disabled successfully\\n` +\n `Certificate is now disabled for all environment types`\n );\n } else {\n const problem = textOrJson(await disableResponse.text());\n logger.error(\n {\n status: disableResponse.status,\n statusText: disableResponse.statusText,\n response: problem,\n },\n \"Failed to disable mTLS certificate\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to disable mTLS certificate.\",\n problem\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/disable/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAsB;IAClD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAC7B,gBAAgB,OAAO,aAAa,OAAO,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC7F;QACE,SAAS,EAAE,oCAAoC;QAC/C,YAAY,EAAE,4CAA4C;QAC1D,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;KAC3B,CACF,CAAC;IAEF,oBAAoB,CAClB,qBAAqB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,2BAA2B;QACpE,uDAAuD,CAC1D,CAAC;AACJ,CAAC","sourcesContent":["import { createApiClient } from \"../../common/api/client.js\";\nimport { printResultToConsole } from \"../../common/output.js\";\nimport { DisableArguments, MtlsCertificate } from \"../models.js\";\n\nexport async function disable(argv: DisableArguments) {\n const { account, project } = argv;\n const certId = argv[\"cert-id\"];\n\n const client = createApiClient({ authToken: argv.authToken });\n const cert = await client.patch<MtlsCertificate>(\n `/v1/accounts/${account}/projects/${project}/mtls-certificates/${encodeURIComponent(certId)}`,\n {\n operation: \"Failed to disable mTLS certificate\",\n errorMessage: \"Error: Failed to disable mTLS certificate.\",\n body: { environments: [] },\n }\n );\n\n printResultToConsole(\n `mTLS certificate '${cert.name}' (${cert.id}) disabled successfully\\n` +\n `Certificate is now disabled for all environment types`\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/list/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAA+B,MAAM,cAAc,CAAC;AAE1E,wBAAsB,IAAI,CAAC,IAAI,EAAE,aAAa,iBA2D7C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/mtls-certificates/list/handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA+B,MAAM,cAAc,CAAC;AAE1E,wBAAsB,IAAI,CAAC,IAAI,EAAE,aAAa,iBAqC7C"}
@@ -1,43 +1,29 @@
1
- import { logger } from "../../common/logger.js";
2
- import { printDiagnosticsToConsole, printResultToConsole, textOrJson, } from "../../common/output.js";
3
- import settings from "../../common/settings.js";
1
+ import { createApiClient } from "../../common/api/client.js";
2
+ import { printResultToConsole } from "../../common/output.js";
4
3
  export async function list(argv) {
5
4
  const { account, project } = argv;
6
- const listResponse = await fetch(`${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates`, {
7
- method: "GET",
8
- headers: {
9
- Authorization: `Bearer ${argv.authToken}`,
10
- },
5
+ const client = createApiClient({ authToken: argv.authToken });
6
+ const response = await client.get(`/v1/accounts/${account}/projects/${project}/mtls-certificates`, {
7
+ operation: "Failed to list mTLS certificates",
8
+ errorMessage: "Error: Failed to list mTLS certificates.",
11
9
  });
12
- if (listResponse.ok) {
13
- const response = await listResponse.json();
14
- if (response.data.length === 0) {
15
- printResultToConsole("No mTLS certificates found");
16
- return;
17
- }
18
- printResultToConsole(`Found ${response.data.length} mTLS certificate(s):\n`);
19
- for (const cert of response.data) {
20
- const envs = Object.entries(cert.environments)
21
- .filter(([, enabled]) => enabled)
22
- .map(([env]) => env)
23
- .join(", ");
24
- const subject = cert.certificateInfo.subject.replace(/\n/g, ", ");
25
- printResultToConsole(` ID: ${cert.id}\n` +
26
- ` Name: ${cert.name}\n` +
27
- ` Subject: ${subject}\n` +
28
- ` Valid from: ${cert.certificateInfo.validFrom}\n` +
29
- ` Valid to: ${cert.certificateInfo.validTo}\n` +
30
- ` Environment types: ${envs}\n`);
31
- }
10
+ if (response.data.length === 0) {
11
+ printResultToConsole("No mTLS certificates found");
12
+ return;
32
13
  }
33
- else {
34
- const problem = textOrJson(await listResponse.text());
35
- logger.error({
36
- status: listResponse.status,
37
- statusText: listResponse.statusText,
38
- response: problem,
39
- }, "Failed to list mTLS certificates");
40
- printDiagnosticsToConsole("Error: Failed to list mTLS certificates.", problem);
14
+ printResultToConsole(`Found ${response.data.length} mTLS certificate(s):\n`);
15
+ for (const cert of response.data) {
16
+ const envs = Object.entries(cert.environments)
17
+ .filter(([, enabled]) => enabled)
18
+ .map(([env]) => env)
19
+ .join(", ");
20
+ const subject = cert.certificateInfo.subject.replace(/\n/g, ", ");
21
+ printResultToConsole(` ID: ${cert.id}\n` +
22
+ ` Name: ${cert.name}\n` +
23
+ ` Subject: ${subject}\n` +
24
+ ` Valid from: ${cert.certificateInfo.validFrom}\n` +
25
+ ` Valid to: ${cert.certificateInfo.validTo}\n` +
26
+ ` Environment types: ${envs}\n`);
41
27
  }
42
28
  }
43
29
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/list/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAmB;IAC5C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAElC,MAAM,YAAY,GAAG,MAAM,KAAK,CAC9B,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,aAAa,OAAO,oBAAoB,EACvG;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YAEP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE;SAC1C;KACF,CACF,CAAC;IAEF,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAgC,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAExE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,oBAAoB,CAClB,SAAS,QAAQ,CAAC,IAAI,CAAC,MAAM,yBAAyB,CACvD,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;iBAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;iBAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;iBACnB,IAAI,CAAC,IAAI,CAAC,CAAC;YAGd,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAElE,oBAAoB,CAClB,SAAS,IAAI,CAAC,EAAE,IAAI;gBAClB,WAAW,IAAI,CAAC,IAAI,IAAI;gBACxB,cAAc,OAAO,IAAI;gBACzB,iBAAiB,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI;gBACnD,eAAe,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI;gBAC/C,wBAAwB,IAAI,IAAI,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,QAAQ,EAAE,OAAO;SAClB,EACD,kCAAkC,CACnC,CAAC;QACF,yBAAyB,CACvB,0CAA0C,EAC1C,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsole,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { ListArguments, MtlsCertificateListResponse } from \"../models.js\";\n\nexport async function list(argv: ListArguments) {\n const { account, project } = argv;\n\n const listResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/mtls-certificates`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (listResponse.ok) {\n const response: MtlsCertificateListResponse = await listResponse.json();\n\n if (response.data.length === 0) {\n printResultToConsole(\"No mTLS certificates found\");\n return;\n }\n\n printResultToConsole(\n `Found ${response.data.length} mTLS certificate(s):\\n`\n );\n\n for (const cert of response.data) {\n const envs = Object.entries(cert.environments)\n .filter(([, enabled]) => enabled)\n .map(([env]) => env)\n .join(\", \");\n\n // Replace newlines in subject with comma-space for cleaner display\n const subject = cert.certificateInfo.subject.replace(/\\n/g, \", \");\n\n printResultToConsole(\n ` ID: ${cert.id}\\n` +\n ` Name: ${cert.name}\\n` +\n ` Subject: ${subject}\\n` +\n ` Valid from: ${cert.certificateInfo.validFrom}\\n` +\n ` Valid to: ${cert.certificateInfo.validTo}\\n` +\n ` Environment types: ${envs}\\n`\n );\n }\n } else {\n const problem = textOrJson(await listResponse.text());\n logger.error(\n {\n status: listResponse.status,\n statusText: listResponse.statusText,\n response: problem,\n },\n \"Failed to list mTLS certificates\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to list mTLS certificates.\",\n problem\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/mtls-certificates/list/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAmB;IAC5C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAElC,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,gBAAgB,OAAO,aAAa,OAAO,oBAAoB,EAC/D;QACE,SAAS,EAAE,kCAAkC;QAC7C,YAAY,EAAE,0CAA0C;KACzD,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,oBAAoB,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,MAAM,yBAAyB,CAAC,CAAC;IAE7E,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;aACnB,IAAI,CAAC,IAAI,CAAC,CAAC;QAGd,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAElE,oBAAoB,CAClB,SAAS,IAAI,CAAC,EAAE,IAAI;YAClB,WAAW,IAAI,CAAC,IAAI,IAAI;YACxB,cAAc,OAAO,IAAI;YACzB,iBAAiB,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI;YACnD,eAAe,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI;YAC/C,wBAAwB,IAAI,IAAI,CACnC,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { createApiClient } from \"../../common/api/client.js\";\nimport { printResultToConsole } from \"../../common/output.js\";\nimport { ListArguments, MtlsCertificateListResponse } from \"../models.js\";\n\nexport async function list(argv: ListArguments) {\n const { account, project } = argv;\n\n const client = createApiClient({ authToken: argv.authToken });\n const response = await client.get<MtlsCertificateListResponse>(\n `/v1/accounts/${account}/projects/${project}/mtls-certificates`,\n {\n operation: \"Failed to list mTLS certificates\",\n errorMessage: \"Error: Failed to list mTLS certificates.\",\n }\n );\n\n if (response.data.length === 0) {\n printResultToConsole(\"No mTLS certificates found\");\n return;\n }\n\n printResultToConsole(`Found ${response.data.length} mTLS certificate(s):\\n`);\n\n for (const cert of response.data) {\n const envs = Object.entries(cert.environments)\n .filter(([, enabled]) => enabled)\n .map(([env]) => env)\n .join(\", \");\n\n // Replace newlines in subject with comma-space for cleaner display\n const subject = cert.certificateInfo.subject.replace(/\\n/g, \", \");\n\n printResultToConsole(\n ` ID: ${cert.id}\\n` +\n ` Name: ${cert.name}\\n` +\n ` Subject: ${subject}\\n` +\n ` Valid from: ${cert.certificateInfo.validFrom}\\n` +\n ` Valid to: ${cert.certificateInfo.validTo}\\n` +\n ` Environment types: ${envs}\\n`\n );\n }\n}\n"]}