@zuplo/cli 6.69.5 → 6.69.8

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 (222) hide show
  1. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts +2 -0
  2. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts.map +1 -0
  3. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js +184 -0
  4. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js.map +1 -0
  5. package/dist/__tests__/integration/custom-domain.integration.test.js +4 -4
  6. package/dist/__tests__/integration/custom-domain.integration.test.js.map +1 -1
  7. package/dist/__tests__/integration/deploy.integration.test.js +1 -0
  8. package/dist/__tests__/integration/deploy.integration.test.js.map +1 -1
  9. package/dist/__tests__/integration/jest-mocks-setup.js +4 -0
  10. package/dist/__tests__/integration/jest-mocks-setup.js.map +1 -1
  11. package/dist/__tests__/integration/list.integration.test.js +2 -2
  12. package/dist/__tests__/integration/list.integration.test.js.map +1 -1
  13. package/dist/__tests__/integration/tunnel.integration.test.js +14 -14
  14. package/dist/__tests__/integration/tunnel.integration.test.js.map +1 -1
  15. package/dist/__tests__/integration/variable.integration.test.js +4 -4
  16. package/dist/__tests__/integration/variable.integration.test.js.map +1 -1
  17. package/dist/__tests__/integration/whoami.integration.test.js +29 -5
  18. package/dist/__tests__/integration/whoami.integration.test.js.map +1 -1
  19. package/dist/bucket/list/handler.d.ts +8 -0
  20. package/dist/bucket/list/handler.d.ts.map +1 -0
  21. package/dist/bucket/list/handler.js +54 -0
  22. package/dist/bucket/list/handler.js.map +1 -0
  23. package/dist/bucket/models.d.ts +23 -0
  24. package/dist/bucket/models.d.ts.map +1 -0
  25. package/dist/bucket/models.js +2 -0
  26. package/dist/bucket/models.js.map +1 -0
  27. package/dist/cli.js +16 -6
  28. package/dist/cli.js.map +1 -1
  29. package/dist/cmds/bucket/index.d.ts +4 -0
  30. package/dist/cmds/bucket/index.d.ts.map +1 -0
  31. package/dist/cmds/bucket/index.js +9 -0
  32. package/dist/cmds/bucket/index.js.map +1 -0
  33. package/dist/cmds/bucket/list.d.ts +9 -0
  34. package/dist/cmds/bucket/list.d.ts.map +1 -0
  35. package/dist/cmds/bucket/list.js +60 -0
  36. package/dist/cmds/bucket/list.js.map +1 -0
  37. package/dist/cmds/deploy.d.ts.map +1 -1
  38. package/dist/cmds/deploy.js +4 -1
  39. package/dist/cmds/deploy.js.map +1 -1
  40. package/dist/cmds/logout.d.ts +9 -0
  41. package/dist/cmds/logout.d.ts.map +1 -0
  42. package/dist/cmds/logout.js +23 -0
  43. package/dist/cmds/logout.js.map +1 -0
  44. package/dist/cmds/whoami.d.ts.map +1 -1
  45. package/dist/cmds/whoami.js +1 -2
  46. package/dist/cmds/whoami.js.map +1 -1
  47. package/dist/common/api/client.d.ts +40 -0
  48. package/dist/common/api/client.d.ts.map +1 -0
  49. package/dist/common/api/client.js +92 -0
  50. package/dist/common/api/client.js.map +1 -0
  51. package/dist/common/middleware/confirm-production-deploy.d.ts +4 -0
  52. package/dist/common/middleware/confirm-production-deploy.d.ts.map +1 -0
  53. package/dist/common/middleware/confirm-production-deploy.js +49 -0
  54. package/dist/common/middleware/confirm-production-deploy.js.map +1 -0
  55. package/dist/common/middleware/get-environment-param.d.ts +6 -0
  56. package/dist/common/middleware/get-environment-param.d.ts.map +1 -1
  57. package/dist/common/middleware/get-environment-param.js +15 -0
  58. package/dist/common/middleware/get-environment-param.js.map +1 -1
  59. package/dist/common/middleware/get-environment-param.test.d.ts +2 -0
  60. package/dist/common/middleware/get-environment-param.test.d.ts.map +1 -0
  61. package/dist/common/middleware/get-environment-param.test.js +33 -0
  62. package/dist/common/middleware/get-environment-param.test.js.map +1 -0
  63. package/dist/common/output.d.ts +7 -0
  64. package/dist/common/output.d.ts.map +1 -1
  65. package/dist/common/output.js +15 -1
  66. package/dist/common/output.js.map +1 -1
  67. package/dist/common/read-linked-config.d.ts +6 -1
  68. package/dist/common/read-linked-config.d.ts.map +1 -1
  69. package/dist/common/read-linked-config.js +14 -4
  70. package/dist/common/read-linked-config.js.map +1 -1
  71. package/dist/common/read-linked-config.test.js +97 -0
  72. package/dist/common/read-linked-config.test.js.map +1 -1
  73. package/dist/custom-domain/create/handler.d.ts.map +1 -1
  74. package/dist/custom-domain/create/handler.js +12 -27
  75. package/dist/custom-domain/create/handler.js.map +1 -1
  76. package/dist/custom-domain/delete/handler.d.ts.map +1 -1
  77. package/dist/custom-domain/delete/handler.js +25 -54
  78. package/dist/custom-domain/delete/handler.js.map +1 -1
  79. package/dist/custom-domain/list/handler.d.ts.map +1 -1
  80. package/dist/custom-domain/list/handler.js +15 -29
  81. package/dist/custom-domain/list/handler.js.map +1 -1
  82. package/dist/custom-domain/update/handler.d.ts.map +1 -1
  83. package/dist/custom-domain/update/handler.js +12 -27
  84. package/dist/custom-domain/update/handler.js.map +1 -1
  85. package/dist/deploy/environments.d.ts +1 -0
  86. package/dist/deploy/environments.d.ts.map +1 -1
  87. package/dist/deploy/environments.js +11 -7
  88. package/dist/deploy/environments.js.map +1 -1
  89. package/dist/list/handler.d.ts.map +1 -1
  90. package/dist/list/handler.js +41 -59
  91. package/dist/list/handler.js.map +1 -1
  92. package/dist/login/logout.d.ts +5 -0
  93. package/dist/login/logout.d.ts.map +1 -0
  94. package/dist/login/logout.js +6 -0
  95. package/dist/login/logout.js.map +1 -0
  96. package/dist/login/tokens.d.ts +1 -0
  97. package/dist/login/tokens.d.ts.map +1 -1
  98. package/dist/login/tokens.js +16 -1
  99. package/dist/login/tokens.js.map +1 -1
  100. package/dist/mtls-certificates/create/handler.d.ts.map +1 -1
  101. package/dist/mtls-certificates/create/handler.js +9 -23
  102. package/dist/mtls-certificates/create/handler.js.map +1 -1
  103. package/dist/mtls-certificates/delete/handler.d.ts.map +1 -1
  104. package/dist/mtls-certificates/delete/handler.js +8 -20
  105. package/dist/mtls-certificates/delete/handler.js.map +1 -1
  106. package/dist/mtls-certificates/describe/handler.d.ts.map +1 -1
  107. package/dist/mtls-certificates/describe/handler.js +17 -31
  108. package/dist/mtls-certificates/describe/handler.js.map +1 -1
  109. package/dist/mtls-certificates/disable/handler.d.ts.map +1 -1
  110. package/dist/mtls-certificates/disable/handler.js +9 -26
  111. package/dist/mtls-certificates/disable/handler.js.map +1 -1
  112. package/dist/mtls-certificates/list/handler.d.ts.map +1 -1
  113. package/dist/mtls-certificates/list/handler.js +22 -36
  114. package/dist/mtls-certificates/list/handler.js.map +1 -1
  115. package/dist/mtls-certificates/update/handler.d.ts.map +1 -1
  116. package/dist/mtls-certificates/update/handler.js +14 -29
  117. package/dist/mtls-certificates/update/handler.js.map +1 -1
  118. package/dist/proxies/create/handler.d.ts.map +1 -1
  119. package/dist/proxies/create/handler.js +9 -22
  120. package/dist/proxies/create/handler.js.map +1 -1
  121. package/dist/proxies/delete/handler.d.ts.map +1 -1
  122. package/dist/proxies/delete/handler.js +8 -21
  123. package/dist/proxies/delete/handler.js.map +1 -1
  124. package/dist/proxies/describe/handler.d.ts.map +1 -1
  125. package/dist/proxies/describe/handler.js +7 -22
  126. package/dist/proxies/describe/handler.js.map +1 -1
  127. package/dist/proxies/update/handler.d.ts.map +1 -1
  128. package/dist/proxies/update/handler.js +9 -22
  129. package/dist/proxies/update/handler.js.map +1 -1
  130. package/dist/tsconfig.tsbuildinfo +1 -1
  131. package/dist/tunnel/create/handler.d.ts.map +1 -1
  132. package/dist/tunnel/create/handler.js +8 -22
  133. package/dist/tunnel/create/handler.js.map +1 -1
  134. package/dist/tunnel/delete/handler.d.ts.map +1 -1
  135. package/dist/tunnel/delete/handler.js +16 -30
  136. package/dist/tunnel/delete/handler.js.map +1 -1
  137. package/dist/tunnel/describe/handler.d.ts.map +1 -1
  138. package/dist/tunnel/describe/handler.js +7 -21
  139. package/dist/tunnel/describe/handler.js.map +1 -1
  140. package/dist/tunnel/list/handler.d.ts.map +1 -1
  141. package/dist/tunnel/list/handler.js +13 -28
  142. package/dist/tunnel/list/handler.js.map +1 -1
  143. package/dist/tunnel/rotate-token/handler.d.ts.map +1 -1
  144. package/dist/tunnel/rotate-token/handler.js +7 -21
  145. package/dist/tunnel/rotate-token/handler.js.map +1 -1
  146. package/dist/tunnel/services/describe/handler.d.ts.map +1 -1
  147. package/dist/tunnel/services/describe/handler.js +7 -21
  148. package/dist/tunnel/services/describe/handler.js.map +1 -1
  149. package/dist/tunnel/services/update/handler.d.ts.map +1 -1
  150. package/dist/tunnel/services/update/handler.js +18 -32
  151. package/dist/tunnel/services/update/handler.js.map +1 -1
  152. package/dist/variable/create/handler.d.ts.map +1 -1
  153. package/dist/variable/create/handler.js +9 -24
  154. package/dist/variable/create/handler.js.map +1 -1
  155. package/dist/variable/update/handler.d.ts.map +1 -1
  156. package/dist/variable/update/handler.js +9 -24
  157. package/dist/variable/update/handler.js.map +1 -1
  158. package/dist/whoami/handler.d.ts +1 -1
  159. package/dist/whoami/handler.d.ts.map +1 -1
  160. package/dist/whoami/handler.js +12 -17
  161. package/dist/whoami/handler.js.map +1 -1
  162. package/node_modules/@zuplo/core/customer.cli.minified.js +225 -211
  163. package/node_modules/@zuplo/core/index.minified.js +237 -223
  164. package/node_modules/@zuplo/core/package.json +1 -1
  165. package/node_modules/@zuplo/editor/node_modules/find-my-way/.github/workflows/node.js.yml +1 -1
  166. package/node_modules/@zuplo/editor/node_modules/find-my-way/README.md +10 -0
  167. package/node_modules/@zuplo/editor/node_modules/find-my-way/index.d.ts +6 -0
  168. package/node_modules/@zuplo/editor/node_modules/find-my-way/index.js +37 -4
  169. package/node_modules/@zuplo/editor/node_modules/find-my-way/lib/handler-storage.js +2 -2
  170. package/node_modules/@zuplo/editor/node_modules/find-my-way/package.json +3 -3
  171. package/node_modules/@zuplo/editor/node_modules/find-my-way/test/repro-issue-414.test.js +57 -0
  172. package/node_modules/@zuplo/editor/node_modules/find-my-way/test/types/router.test-d.ts +1 -0
  173. package/node_modules/@zuplo/graphql/package.json +1 -1
  174. package/node_modules/@zuplo/openapi-tools/package.json +1 -1
  175. package/node_modules/@zuplo/otel/package.json +1 -1
  176. package/node_modules/@zuplo/runtime/package.json +1 -1
  177. package/node_modules/graphql/index.d.ts +1 -0
  178. package/node_modules/graphql/language/ast.d.ts +10 -1
  179. package/node_modules/graphql/language/ast.js +8 -1
  180. package/node_modules/graphql/language/ast.mjs +8 -1
  181. package/node_modules/graphql/language/directiveLocation.d.ts +1 -0
  182. package/node_modules/graphql/language/directiveLocation.js +1 -0
  183. package/node_modules/graphql/language/directiveLocation.mjs +1 -0
  184. package/node_modules/graphql/language/index.d.ts +1 -0
  185. package/node_modules/graphql/language/kinds.d.ts +1 -0
  186. package/node_modules/graphql/language/kinds.js +1 -0
  187. package/node_modules/graphql/language/kinds.mjs +1 -0
  188. package/node_modules/graphql/language/parser.d.ts +14 -0
  189. package/node_modules/graphql/language/parser.js +33 -0
  190. package/node_modules/graphql/language/parser.mjs +33 -0
  191. package/node_modules/graphql/language/predicates.js +3 -1
  192. package/node_modules/graphql/language/predicates.mjs +5 -1
  193. package/node_modules/graphql/language/printer.js +13 -1
  194. package/node_modules/graphql/language/printer.mjs +13 -1
  195. package/node_modules/graphql/package.json +1 -1
  196. package/node_modules/graphql/type/directives.d.ts +9 -1
  197. package/node_modules/graphql/type/directives.js +10 -1
  198. package/node_modules/graphql/type/directives.mjs +10 -1
  199. package/node_modules/graphql/type/introspection.js +24 -1
  200. package/node_modules/graphql/type/introspection.mjs +24 -1
  201. package/node_modules/graphql/utilities/buildASTSchema.js +4 -0
  202. package/node_modules/graphql/utilities/buildASTSchema.mjs +4 -0
  203. package/node_modules/graphql/utilities/buildClientSchema.js +1 -0
  204. package/node_modules/graphql/utilities/buildClientSchema.mjs +1 -0
  205. package/node_modules/graphql/utilities/extendSchema.js +58 -3
  206. package/node_modules/graphql/utilities/extendSchema.mjs +58 -3
  207. package/node_modules/graphql/utilities/getIntrospectionQuery.d.ts +16 -0
  208. package/node_modules/graphql/utilities/getIntrospectionQuery.js +31 -38
  209. package/node_modules/graphql/utilities/getIntrospectionQuery.mjs +31 -38
  210. package/node_modules/graphql/utilities/introspectionFromSchema.js +1 -0
  211. package/node_modules/graphql/utilities/introspectionFromSchema.mjs +1 -0
  212. package/node_modules/graphql/utilities/printSchema.js +1 -0
  213. package/node_modules/graphql/utilities/printSchema.mjs +1 -0
  214. package/node_modules/graphql/utilities/valueFromAST.js +12 -2
  215. package/node_modules/graphql/utilities/valueFromAST.mjs +12 -2
  216. package/node_modules/graphql/validation/rules/KnownDirectivesRule.js +4 -0
  217. package/node_modules/graphql/validation/rules/KnownDirectivesRule.mjs +4 -0
  218. package/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js +12 -0
  219. package/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs +12 -0
  220. package/node_modules/graphql/version.js +3 -3
  221. package/node_modules/graphql/version.mjs +3 -3
  222. package/package.json +6 -6
@@ -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"]}
@@ -0,0 +1,5 @@
1
+ export interface LogoutResult {
2
+ hadCredentials: boolean;
3
+ }
4
+ export declare function logout(): Promise<LogoutResult>;
5
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/login/logout.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAGpD"}
@@ -0,0 +1,6 @@
1
+ import { clearAuthState } from "./tokens.js";
2
+ export async function logout() {
3
+ const hadCredentials = await clearAuthState();
4
+ return { hadCredentials };
5
+ }
6
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/login/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,cAAc,GAAG,MAAM,cAAc,EAAE,CAAC;IAC9C,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["import { clearAuthState } from \"./tokens.js\";\n\nexport interface LogoutResult {\n hadCredentials: boolean;\n}\n\nexport async function logout(): Promise<LogoutResult> {\n const hadCredentials = await clearAuthState();\n return { hadCredentials };\n}\n"]}
@@ -11,4 +11,5 @@ export declare function refreshAccessToken(
11
11
  ): Promise<OAuthResponse>;
12
12
  export declare function getAuthToken(): Promise<string | undefined>;
13
13
  export declare function saveAuthState(result: OAuthResponse): Promise<void>;
14
+ export declare function clearAuthState(): Promise<boolean>;
14
15
  //# sourceMappingURL=tokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/login/tokens.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAE5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CA0DxB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8BhE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxE"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/login/tokens.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAE5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CA0DxB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8BhE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxE;AAMD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAevD"}
@@ -1,5 +1,5 @@
1
1
  import { existsSync, mkdirSync } from "node:fs";
2
- import { readFile, writeFile } from "node:fs/promises";
2
+ import { readFile, rm, writeFile } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { decodeJwt } from "jose";
5
5
  import { ZUPLO_AUTH_FILE_NAME } from "../common/constants.js";
@@ -84,4 +84,19 @@ export async function saveAuthState(result) {
84
84
  printDiagnosticsToConsole("Failed to save authorization state.");
85
85
  }
86
86
  }
87
+ export async function clearAuthState() {
88
+ const tokenPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME);
89
+ if (!existsSync(tokenPath)) {
90
+ return false;
91
+ }
92
+ try {
93
+ await rm(tokenPath, { force: true });
94
+ return true;
95
+ }
96
+ catch (error) {
97
+ logger.error({ error, tokenPath }, "Failed to remove auth state file");
98
+ printDiagnosticsToConsole(`Failed to remove the local credentials file at ${tokenPath}. You may need to remove it manually.`);
99
+ return false;
100
+ }
101
+ }
87
102
  //# sourceMappingURL=tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/login/tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { decodeJwt } from \"jose\";\nimport { ZUPLO_AUTH_FILE_NAME } from \"../common/constants.js\";\nimport { logger } from \"../common/logger.js\";\nimport { printDiagnosticsToConsole } from \"../common/output.js\";\nimport { ZUPLO_XDG_STATE_HOME } from \"../common/xdg/lib.js\";\nimport { AUTH0_DOMAIN, CLIENT_ID } from \"./login.js\";\n\nexport interface OAuthResponse {\n // biome-ignore lint/style/useNamingConvention: API field\n refresh_token?: string;\n // biome-ignore lint/style/useNamingConvention: API field\n access_token: string;\n // biome-ignore lint/style/useNamingConvention: API field\n id_token: string;\n // biome-ignore lint/style/useNamingConvention: API field\n expires_in: number;\n // biome-ignore lint/style/useNamingConvention: API field\n token_type: string;\n scope: string;\n}\n\n/**\n * Refreshes the access token using the provided refresh token.\n * @param refreshToken The refresh token to use for obtaining a new access token.\n * @returns A promise resolving to the new authentication state.\n */\nexport async function refreshAccessToken(\n refreshToken: string\n): Promise<OAuthResponse> {\n const response = await fetch(`https://${AUTH0_DOMAIN}/oauth/token`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n // biome-ignore lint/style/useNamingConvention: External API property\n grant_type: \"refresh_token\",\n // biome-ignore lint/style/useNamingConvention: External API property\n client_id: CLIENT_ID,\n // biome-ignore lint/style/useNamingConvention: External API property\n refresh_token: refreshToken,\n }),\n });\n\n if (!response.ok) {\n // Parse the error response if available\n // biome-ignore lint/suspicious/noExplicitAny: Migrated from ESLint\n let errorDetails: any = {};\n try {\n errorDetails = await response.json();\n } catch {\n // If response body is not JSON, continue with status text\n }\n\n const Sentry = await import(\"@sentry/node\");\n const errorMessage =\n errorDetails.error_description ||\n errorDetails.error ||\n response.statusText;\n\n Sentry.captureException(\n new Error(`Failed to refresh token: ${errorMessage}`),\n {\n tags: {\n // biome-ignore lint/style/useNamingConvention: External API property\n oauth_error: errorDetails.error || \"refresh_token_failed\",\n source: \"cli_refresh_token\",\n // biome-ignore lint/style/useNamingConvention: External API property\n status_code: response.status,\n },\n extra: {\n // biome-ignore lint/style/useNamingConvention: External API property\n error_description: errorDetails.error_description,\n // biome-ignore lint/style/useNamingConvention: External API property\n error_details: errorDetails,\n status: response.status,\n // biome-ignore lint/style/useNamingConvention: External API property\n status_text: response.statusText,\n },\n }\n );\n\n throw new Error(`Failed to refresh token: ${errorMessage}`);\n }\n\n return response.json();\n}\n\nexport async function getAuthToken(): Promise<string | undefined> {\n // The auth file doesn't exist.\n if (!existsSync(join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME))) {\n return;\n }\n\n const rawAuth = await readFile(\n join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME),\n \"utf-8\"\n );\n const authJson = JSON.parse(rawAuth);\n const jwt = decodeJwt(authJson.access_token);\n\n // The credentials have expired\n if (!jwt.exp || jwt.exp < Date.now() / 1000) {\n logger.debug(\"Access token expired, attempting to get a new one\");\n // If we have a refresh token try to refresh\n if (authJson.refresh_token) {\n try {\n const newAuth = await refreshAccessToken(authJson.refresh_token);\n await saveAuthState(newAuth);\n return newAuth.access_token;\n } catch (error) {\n logger.error(error, `Failed to refresh access token`);\n return;\n }\n }\n return;\n }\n return authJson.access_token;\n}\n\nexport async function saveAuthState(result: OAuthResponse): Promise<void> {\n try {\n if (!existsSync(ZUPLO_XDG_STATE_HOME)) {\n mkdirSync(ZUPLO_XDG_STATE_HOME, { recursive: true });\n }\n const tokenPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME);\n await writeFile(tokenPath, JSON.stringify(result));\n } catch (error) {\n logger.error(error, \"Failed to save auth state\");\n printDiagnosticsToConsole(\"Failed to save authorization state.\");\n }\n}\n"]}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/login/tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync } from \"node:fs\";\nimport { readFile, rm, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { decodeJwt } from \"jose\";\nimport { ZUPLO_AUTH_FILE_NAME } from \"../common/constants.js\";\nimport { logger } from \"../common/logger.js\";\nimport { printDiagnosticsToConsole } from \"../common/output.js\";\nimport { ZUPLO_XDG_STATE_HOME } from \"../common/xdg/lib.js\";\nimport { AUTH0_DOMAIN, CLIENT_ID } from \"./login.js\";\n\nexport interface OAuthResponse {\n // biome-ignore lint/style/useNamingConvention: API field\n refresh_token?: string;\n // biome-ignore lint/style/useNamingConvention: API field\n access_token: string;\n // biome-ignore lint/style/useNamingConvention: API field\n id_token: string;\n // biome-ignore lint/style/useNamingConvention: API field\n expires_in: number;\n // biome-ignore lint/style/useNamingConvention: API field\n token_type: string;\n scope: string;\n}\n\n/**\n * Refreshes the access token using the provided refresh token.\n * @param refreshToken The refresh token to use for obtaining a new access token.\n * @returns A promise resolving to the new authentication state.\n */\nexport async function refreshAccessToken(\n refreshToken: string\n): Promise<OAuthResponse> {\n const response = await fetch(`https://${AUTH0_DOMAIN}/oauth/token`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n // biome-ignore lint/style/useNamingConvention: External API property\n grant_type: \"refresh_token\",\n // biome-ignore lint/style/useNamingConvention: External API property\n client_id: CLIENT_ID,\n // biome-ignore lint/style/useNamingConvention: External API property\n refresh_token: refreshToken,\n }),\n });\n\n if (!response.ok) {\n // Parse the error response if available\n // biome-ignore lint/suspicious/noExplicitAny: Migrated from ESLint\n let errorDetails: any = {};\n try {\n errorDetails = await response.json();\n } catch {\n // If response body is not JSON, continue with status text\n }\n\n const Sentry = await import(\"@sentry/node\");\n const errorMessage =\n errorDetails.error_description ||\n errorDetails.error ||\n response.statusText;\n\n Sentry.captureException(\n new Error(`Failed to refresh token: ${errorMessage}`),\n {\n tags: {\n // biome-ignore lint/style/useNamingConvention: External API property\n oauth_error: errorDetails.error || \"refresh_token_failed\",\n source: \"cli_refresh_token\",\n // biome-ignore lint/style/useNamingConvention: External API property\n status_code: response.status,\n },\n extra: {\n // biome-ignore lint/style/useNamingConvention: External API property\n error_description: errorDetails.error_description,\n // biome-ignore lint/style/useNamingConvention: External API property\n error_details: errorDetails,\n status: response.status,\n // biome-ignore lint/style/useNamingConvention: External API property\n status_text: response.statusText,\n },\n }\n );\n\n throw new Error(`Failed to refresh token: ${errorMessage}`);\n }\n\n return response.json();\n}\n\nexport async function getAuthToken(): Promise<string | undefined> {\n // The auth file doesn't exist.\n if (!existsSync(join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME))) {\n return;\n }\n\n const rawAuth = await readFile(\n join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME),\n \"utf-8\"\n );\n const authJson = JSON.parse(rawAuth);\n const jwt = decodeJwt(authJson.access_token);\n\n // The credentials have expired\n if (!jwt.exp || jwt.exp < Date.now() / 1000) {\n logger.debug(\"Access token expired, attempting to get a new one\");\n // If we have a refresh token try to refresh\n if (authJson.refresh_token) {\n try {\n const newAuth = await refreshAccessToken(authJson.refresh_token);\n await saveAuthState(newAuth);\n return newAuth.access_token;\n } catch (error) {\n logger.error(error, `Failed to refresh access token`);\n return;\n }\n }\n return;\n }\n return authJson.access_token;\n}\n\nexport async function saveAuthState(result: OAuthResponse): Promise<void> {\n try {\n if (!existsSync(ZUPLO_XDG_STATE_HOME)) {\n mkdirSync(ZUPLO_XDG_STATE_HOME, { recursive: true });\n }\n const tokenPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME);\n await writeFile(tokenPath, JSON.stringify(result));\n } catch (error) {\n logger.error(error, \"Failed to save auth state\");\n printDiagnosticsToConsole(\"Failed to save authorization state.\");\n }\n}\n\n/**\n * Removes the persisted auth state from disk. Returns true if a credentials\n * file was removed, false if there was nothing to remove.\n */\nexport async function clearAuthState(): Promise<boolean> {\n const tokenPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_AUTH_FILE_NAME);\n if (!existsSync(tokenPath)) {\n return false;\n }\n try {\n await rm(tokenPath, { force: true });\n return true;\n } catch (error) {\n logger.error({ error, tokenPath }, \"Failed to remove auth state file\");\n printDiagnosticsToConsole(\n `Failed to remove the local credentials file at ${tokenPath}. You may need to remove it manually.`\n );\n return false;\n }\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"}