@zuplo/cli 6.15.2 → 6.15.4

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 (41) hide show
  1. package/dist/build/handler.d.ts.map +1 -1
  2. package/dist/build/handler.js +9 -4
  3. package/dist/build/handler.js.map +1 -1
  4. package/dist/common/logger.d.ts.map +1 -1
  5. package/dist/common/logger.js +1 -10
  6. package/dist/common/logger.js.map +1 -1
  7. package/dist/common/output.d.ts +1 -1
  8. package/dist/common/output.d.ts.map +1 -1
  9. package/dist/common/output.js +14 -1
  10. package/dist/common/output.js.map +1 -1
  11. package/dist/compile/handler.d.ts.map +1 -1
  12. package/dist/compile/handler.js +6 -0
  13. package/dist/compile/handler.js.map +1 -1
  14. package/dist/dev/handler.d.ts.map +1 -1
  15. package/dist/dev/handler.js +6 -0
  16. package/dist/dev/handler.js.map +1 -1
  17. package/dist/tunnel/delete/handler.d.ts.map +1 -1
  18. package/dist/tunnel/delete/handler.js +3 -2
  19. package/dist/tunnel/delete/handler.js.map +1 -1
  20. package/dist/tunnel/describe/handler.d.ts.map +1 -1
  21. package/dist/tunnel/describe/handler.js +3 -2
  22. package/dist/tunnel/describe/handler.js.map +1 -1
  23. package/dist/tunnel/list/handler.d.ts.map +1 -1
  24. package/dist/tunnel/list/handler.js +3 -2
  25. package/dist/tunnel/list/handler.js.map +1 -1
  26. package/dist/tunnel/rotate-token/handler.d.ts.map +1 -1
  27. package/dist/tunnel/rotate-token/handler.js +3 -2
  28. package/dist/tunnel/rotate-token/handler.js.map +1 -1
  29. package/dist/tunnel/services/describe/handler.d.ts.map +1 -1
  30. package/dist/tunnel/services/describe/handler.js +3 -2
  31. package/dist/tunnel/services/describe/handler.js.map +1 -1
  32. package/dist/tunnel/services/update/handler.d.ts.map +1 -1
  33. package/dist/tunnel/services/update/handler.js +3 -2
  34. package/dist/tunnel/services/update/handler.js.map +1 -1
  35. package/dist/variable/create/handler.d.ts.map +1 -1
  36. package/dist/variable/create/handler.js +3 -2
  37. package/dist/variable/create/handler.js.map +1 -1
  38. package/dist/variable/update/handler.d.ts.map +1 -1
  39. package/dist/variable/update/handler.js +3 -2
  40. package/dist/variable/update/handler.js.map +1 -1
  41. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/build/handler.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,SAAS,iBAyB1C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/build/handler.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,SAAS,iBA2B1C"}
@@ -1,21 +1,26 @@
1
+ import { build as runBuild } from "@zuplo/core/cli";
2
+ import { randomUUID } from "node:crypto";
1
3
  import { join, relative, resolve } from "node:path";
2
- import { printDiagnosticsToConsole } from "../common/output.js";
4
+ import { ConsoleOutput } from "../../../logger/dist/interfaces.js";
3
5
  import { logger } from "../common/logger.js";
4
- import { runBuild } from "@zuplo/core/cli";
6
+ import { printDiagnosticsToConsole } from "../common/output.js";
5
7
  export async function build(argv) {
6
8
  const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));
7
9
  const generateSourceMaps = argv.generateSourceMaps ?? false;
8
10
  const customDomain = argv.customDomain ?? undefined;
11
+ const buildId = randomUUID();
12
+ const output = new ConsoleOutput();
9
13
  try {
10
14
  const result = await runBuild({
15
+ buildId,
16
+ output,
11
17
  sourceDirectory,
12
18
  command: "build",
13
19
  generateSourceMaps,
14
20
  logger,
15
21
  customDomain,
16
22
  });
17
- if (result.buildTaskResult.status === "Failed" ||
18
- result.compilerResult?.status === "Failed") {
23
+ if (result.status === "Failed") {
19
24
  process.exit(1);
20
25
  }
21
26
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/build/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQ3C,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAe;IACzC,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;YAC5B,eAAe;YACf,OAAO,EAAE,OAAO;YAChB,kBAAkB;YAClB,MAAM;YACN,YAAY;SACb,CAAC,CAAC;QACH,IACE,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,QAAQ;YAC1C,MAAM,CAAC,cAAc,EAAE,MAAM,KAAK,QAAQ,EAC1C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yBAAyB,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC","sourcesContent":["/* eslint-disable node/no-process-env */\nimport { join, relative, resolve } from \"node:path\";\nimport { printDiagnosticsToConsole } from \"../common/output.js\";\nimport { logger } from \"../common/logger.js\";\nimport { runBuild } from \"@zuplo/core/cli\";\n\nexport interface Arguments {\n dir: string;\n generateSourceMaps?: boolean;\n customDomain?: string;\n}\n\nexport async function build(argv: Arguments) {\n const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));\n\n const generateSourceMaps = argv.generateSourceMaps ?? false;\n const customDomain = argv.customDomain ?? undefined;\n\n try {\n const result = await runBuild({\n sourceDirectory,\n command: \"build\",\n generateSourceMaps,\n logger,\n customDomain,\n });\n if (\n result.buildTaskResult.status === \"Failed\" ||\n result.compilerResult?.status === \"Failed\"\n ) {\n process.exit(1);\n } else {\n process.exit();\n }\n } catch (err) {\n printDiagnosticsToConsole(`Build error occurred: ${err.message}`);\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/build/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAQhE,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAe;IACzC,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC;IAEpD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;YAC5B,OAAO;YACP,MAAM;YACN,eAAe;YACf,OAAO,EAAE,OAAO;YAChB,kBAAkB;YAClB,MAAM;YACN,YAAY;SACb,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yBAAyB,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC","sourcesContent":["/* eslint-disable node/no-process-env */\nimport { build as runBuild } from \"@zuplo/core/cli\";\nimport { randomUUID } from \"node:crypto\";\nimport { join, relative, resolve } from \"node:path\";\nimport { ConsoleOutput } from \"../../../logger/dist/interfaces.js\";\nimport { logger } from \"../common/logger.js\";\nimport { printDiagnosticsToConsole } from \"../common/output.js\";\n\nexport interface Arguments {\n dir: string;\n generateSourceMaps?: boolean;\n customDomain?: string;\n}\n\nexport async function build(argv: Arguments) {\n const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));\n\n const generateSourceMaps = argv.generateSourceMaps ?? false;\n const customDomain = argv.customDomain ?? undefined;\n\n const buildId = randomUUID();\n const output = new ConsoleOutput();\n\n try {\n const result = await runBuild({\n buildId,\n output,\n sourceDirectory,\n command: \"build\",\n generateSourceMaps,\n logger,\n customDomain,\n });\n if (result.status === \"Failed\") {\n process.exit(1);\n } else {\n process.exit();\n }\n } catch (err) {\n printDiagnosticsToConsole(`Build error occurred: ${err.message}`);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,eAAO,MAAM,MAAM,6BAYjB,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,eAAO,MAAM,MAAM,6BAGjB,CAAC"}
@@ -1,14 +1,5 @@
1
1
  import * as Pino from "pino";
2
2
  export const logger = Pino.pino({
3
- level: process.env.LOG_LEVEL || "info",
4
- transport: {
5
- targets: [
6
- {
7
- target: "@zuplo/pino-pretty-configurations",
8
- level: process.env.LOG_LEVEL || "info",
9
- options: {},
10
- },
11
- ],
12
- },
3
+ level: process.env.ZUPLO_CLI_LOG_LEVEL || "silent",
13
4
  });
14
5
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IAE9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IACtC,SAAS,EAAE;QACT,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,mCAAmC;gBAC3C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;gBACtC,OAAO,EAAE,EAAE;aACZ;SACF;KACF;CACF,CAAC,CAAC","sourcesContent":["/* eslint-disable node/no-process-env */\nimport * as Pino from \"pino\";\n\nexport const logger = Pino.pino({\n // eslint-disable-next-line node/no-process-env\n level: process.env.LOG_LEVEL || \"info\",\n transport: {\n targets: [\n {\n target: \"@zuplo/pino-pretty-configurations\",\n level: process.env.LOG_LEVEL || \"info\",\n options: {},\n },\n ],\n },\n});\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IAE9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,QAAQ;CACnD,CAAC,CAAC","sourcesContent":["/* eslint-disable node/no-process-env */\nimport * as Pino from \"pino\";\n\nexport const logger = Pino.pino({\n // eslint-disable-next-line node/no-process-env\n level: process.env.ZUPLO_CLI_LOG_LEVEL || \"silent\",\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Ora } from "ora";
2
- export declare function printDiagnosticsToConsole(message?: any): void;
2
+ export declare function printDiagnosticsToConsole(message?: any, maybeProblem?: any): void;
3
3
  export declare function printSpinnerToConsole(message?: string): Ora;
4
4
  export declare function printWarningToConsole(message?: any): void;
5
5
  export declare function printCriticalFailureToConsoleAndExit(message?: any, spinner?: Ora): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"AAKA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAO/B,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,GAAG,QAEtD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,OAErD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,QAElD;AAGD,wBAAsB,oCAAoC,CACxD,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,iBAUd;AAID,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,GAAG,QAEjD;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,QAE7C;AAED,wBAAsB,qCAAqC,CACzD,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,iBAUd;AAED,wBAAsB,oCAAoC,CAAC,KAAK,EAAE,GAAG,iBAKpE;AAaD,MAAM,CAAC,OAAO,UAAU,WAAW,SAalC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,OAOtC"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"AAKA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAS/B,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,QAwB1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,OAErD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,QAElD;AAGD,wBAAsB,oCAAoC,CACxD,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,iBAUd;AAID,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,GAAG,QAEjD;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,QAE7C;AAED,wBAAsB,qCAAqC,CACzD,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,iBAUd;AAED,wBAAsB,oCAAoC,CAAC,KAAK,EAAE,GAAG,iBAKpE;AAaD,MAAM,CAAC,OAAO,UAAU,WAAW,SAalC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,OAOtC"}
@@ -2,8 +2,21 @@ import * as Sentry from "@sentry/node";
2
2
  import chalk from "chalk";
3
3
  import ora from "ora";
4
4
  import { MAX_WAIT_PENDING_TIME_MS } from "./constants.js";
5
- export function printDiagnosticsToConsole(message) {
5
+ const indent = ` ${chalk.gray("|")} `;
6
+ export function printDiagnosticsToConsole(message, maybeProblem) {
6
7
  console.error(chalk.bold.blue(message));
8
+ if (maybeProblem &&
9
+ typeof maybeProblem === "object" &&
10
+ "detail" in maybeProblem &&
11
+ typeof maybeProblem.detail === "string") {
12
+ console.error(indent + chalk.bold.red(JSON.stringify(maybeProblem, null, 2)));
13
+ }
14
+ else if (maybeProblem &&
15
+ typeof maybeProblem === "object" &&
16
+ "title" in maybeProblem &&
17
+ typeof maybeProblem.title === "string") {
18
+ console.error(indent + chalk.bold.red(JSON.stringify(maybeProblem.title, null, 2)));
19
+ }
7
20
  }
8
21
  export function printSpinnerToConsole(message) {
9
22
  return ora(message).start();
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\n\nimport * as Sentry from \"@sentry/node\";\nimport chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\nimport { MAX_WAIT_PENDING_TIME_MS } from \"./constants.js\";\n\n// We standardize printing to the terminal with this module\n\n// According to https://unix.stackexchange.com/questions/331611/do-progress-reports-logging-information-belong-on-stderr-or-stdout\n// any diagnostic information should go to stderr, and only the actual output goes to stdout\nexport function printDiagnosticsToConsole(message?: any) {\n console.error(chalk.bold.blue(message));\n}\n\nexport function printSpinnerToConsole(message?: string) {\n return ora(message).start();\n}\n\nexport function printWarningToConsole(message?: any) {\n console.error(chalk.yellow(message));\n}\n\n// This information is displayed to the user, so it should be actionable.\nexport async function printCriticalFailureToConsoleAndExit(\n message?: any,\n spinner?: Ora\n) {\n if (spinner) {\n spinner?.fail(message);\n } else {\n console.error(chalk.bold.red(message));\n }\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(1);\n });\n}\n\n// Only use this to output the actual result of a command\n// This outputs to STDOUT, which is reserved for the actual result of a command\nexport function printResultToConsole(message?: any) {\n console.log(chalk.bold.green(message));\n}\n\n// Only use this to output the actual result of a command\n// This outputs to STDOUT, which is reserved for the actual result of a command\nexport function printTableToConsole(table: any) {\n console.table(table);\n}\n\nexport async function printResultToConsoleAndExitGracefully(\n message?: any,\n spinner?: Ora\n) {\n if (spinner) {\n spinner?.succeed(message);\n } else {\n printResultToConsole(message);\n }\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n}\n\nexport async function printTableToConsoleAndExitGracefully(table: any) {\n printTableToConsole(table);\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n}\n\n// See https://nodejs.org/docs/latest-v18.x/api/process.html#a-note-on-process-io\n// We want to deliberately have STDOUT flush synchronously, so we can pipe the output to another command\n\ninterface WriteStreamWithHandle {\n _handle: {\n // eslint-disable-next-line @typescript-eslint/ban-types\n setBlocking: Function;\n };\n isTTY: boolean;\n}\n\nexport default function setBlocking() {\n // Deno and browser have no process object:\n if (typeof process === \"undefined\") return;\n [process.stdout, process.stderr].forEach((_stream) => {\n const stream = _stream as any as WriteStreamWithHandle;\n if (\n stream._handle &&\n stream.isTTY &&\n typeof stream._handle.setBlocking === \"function\"\n ) {\n stream._handle.setBlocking(true);\n }\n });\n}\n\nexport function textOrJson(text: string) {\n try {\n return JSON.parse(text);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (_e) {\n return text;\n }\n}\n"]}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/common/output.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAY,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAMzC,MAAM,UAAU,yBAAyB,CAAC,OAAa,EAAE,YAAkB;IACzE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAExC,IACE,YAAY;QACZ,OAAO,YAAY,KAAK,QAAQ;QAChC,QAAQ,IAAI,YAAY;QACxB,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,EACvC,CAAC;QAED,OAAO,CAAC,KAAK,CACX,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC;SAAM,IACL,YAAY;QACZ,OAAO,YAAY,KAAK,QAAQ;QAChC,OAAO,IAAI,YAAY;QACvB,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,EACtC,CAAC;QAED,OAAO,CAAC,KAAK,CACX,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAa;IACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,OAAa,EACb,OAAa;IAEb,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAID,MAAM,UAAU,oBAAoB,CAAC,OAAa;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC;AAID,MAAM,UAAU,mBAAmB,CAAC,KAAU;IAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAa,EACb,OAAa;IAEb,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,KAAU;IACnE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,CAAC,OAAO,UAAU,WAAW;IAEjC,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,OAAO;IAC3C,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,OAAuC,CAAC;QACvD,IACE,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,KAAK;YACZ,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,UAAU,EAChD,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE1B,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\n\nimport * as Sentry from \"@sentry/node\";\nimport chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\nimport { MAX_WAIT_PENDING_TIME_MS } from \"./constants.js\";\n\nconst indent = ` ${chalk.gray(\"|\")} `;\n\n// We standardize printing to the terminal with this module\n\n// According to https://unix.stackexchange.com/questions/331611/do-progress-reports-logging-information-belong-on-stderr-or-stdout\n// any diagnostic information should go to stderr, and only the actual output goes to stdout\nexport function printDiagnosticsToConsole(message?: any, maybeProblem?: any) {\n console.error(chalk.bold.blue(message));\n\n if (\n maybeProblem &&\n typeof maybeProblem === \"object\" &&\n \"detail\" in maybeProblem &&\n typeof maybeProblem.detail === \"string\"\n ) {\n // The details are better to log if we have it\n console.error(\n indent + chalk.bold.red(JSON.stringify(maybeProblem, null, 2))\n );\n } else if (\n maybeProblem &&\n typeof maybeProblem === \"object\" &&\n \"title\" in maybeProblem &&\n typeof maybeProblem.title === \"string\"\n ) {\n // If we dont have details then log the title\n console.error(\n indent + chalk.bold.red(JSON.stringify(maybeProblem.title, null, 2))\n );\n }\n}\n\nexport function printSpinnerToConsole(message?: string) {\n return ora(message).start();\n}\n\nexport function printWarningToConsole(message?: any) {\n console.error(chalk.yellow(message));\n}\n\n// This information is displayed to the user, so it should be actionable.\nexport async function printCriticalFailureToConsoleAndExit(\n message?: any,\n spinner?: Ora\n) {\n if (spinner) {\n spinner?.fail(message);\n } else {\n console.error(chalk.bold.red(message));\n }\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(1);\n });\n}\n\n// Only use this to output the actual result of a command\n// This outputs to STDOUT, which is reserved for the actual result of a command\nexport function printResultToConsole(message?: any) {\n console.log(chalk.bold.green(message));\n}\n\n// Only use this to output the actual result of a command\n// This outputs to STDOUT, which is reserved for the actual result of a command\nexport function printTableToConsole(table: any) {\n console.table(table);\n}\n\nexport async function printResultToConsoleAndExitGracefully(\n message?: any,\n spinner?: Ora\n) {\n if (spinner) {\n spinner?.succeed(message);\n } else {\n printResultToConsole(message);\n }\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n}\n\nexport async function printTableToConsoleAndExitGracefully(table: any) {\n printTableToConsole(table);\n await Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n}\n\n// See https://nodejs.org/docs/latest-v18.x/api/process.html#a-note-on-process-io\n// We want to deliberately have STDOUT flush synchronously, so we can pipe the output to another command\n\ninterface WriteStreamWithHandle {\n _handle: {\n // eslint-disable-next-line @typescript-eslint/ban-types\n setBlocking: Function;\n };\n isTTY: boolean;\n}\n\nexport default function setBlocking() {\n // Deno and browser have no process object:\n if (typeof process === \"undefined\") return;\n [process.stdout, process.stderr].forEach((_stream) => {\n const stream = _stream as any as WriteStreamWithHandle;\n if (\n stream._handle &&\n stream.isTTY &&\n typeof stream._handle.setBlocking === \"function\"\n ) {\n stream._handle.setBlocking(true);\n }\n });\n}\n\nexport function textOrJson(text: string) {\n try {\n return JSON.parse(text);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (_e) {\n return text;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/compile/handler.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,SAAS,iBA0E5C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/compile/handler.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,SAAS,iBA+E5C"}
@@ -1,4 +1,6 @@
1
+ import { ConsoleOutput } from "@zuplo/logger";
1
2
  import dotenv from "dotenv";
3
+ import { randomUUID } from "node:crypto";
2
4
  import { cpSync, existsSync, readFileSync } from "node:fs";
3
5
  import { join, relative, resolve } from "node:path";
4
6
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -27,8 +29,12 @@ export async function compile(argv) {
27
29
  process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));
28
30
  const core = await import("@zuplo/core/cli");
29
31
  const zupPort = argv.port;
32
+ const buildId = randomUUID();
33
+ const output = new ConsoleOutput();
30
34
  try {
31
35
  await core.compileWorkerdServer({
36
+ buildId,
37
+ output,
32
38
  sourceDirectory,
33
39
  bundledDir: argv["bundled-dir"],
34
40
  port: zupPort,
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/compile/handler.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,oCAAoC,EACpC,yBAAyB,EACzB,qCAAqC,GACtC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAShE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAe;IAC3C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAMzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,mCAAmC,EACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;IACF,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,MAAM,CACJ,gBAAgB,EAChB,IAAI,CAAC,eAAe,EAAE,6BAA6B,CAAC,EACpD;YACE,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;SAClB,CACF,CAAC;IACJ,CAAC;IAGD,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,aAAa,CAChD,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC/C,CAAC;IAGF,IAAI,QAAQ,GAA6B,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QAC5C,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAGD,MAAM,MAAM,GAAG;QACb,gBAAgB,EAAE,aAAa,CAAC,eAAe,CAAC;KACjD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAG1D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,oBAAoB,CAAC;YAC9B,eAAe;YACf,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;YAC/B,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;YAC/B,+BAA+B,EAAE,QAAQ;gBACvC,CAAC,CAAC;oBACE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;oBAC/C,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;oBAC/C,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB;iBACxD;gBACH,CAAC;oBACC,SAAS;YACb,MAAM;YACN,kBAAkB;SACnB,CAAC,CAAC;QAEH,yBAAyB,CAAC,yCAAyC,CAAC,CAAC;QACrE,MAAM,qCAAqC,CACzC,8BAA8B,eAAe,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE,CAC5E,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,oCAAoC,CACxC,kCAAkC,CACnC,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["/* eslint-disable node/no-process-env */\nimport dotenv from \"dotenv\";\nimport { cpSync, existsSync, readFileSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n} from \"../common/output.js\";\nimport { handleRuntimeStdio } from \"../common/worker-output.js\";\n\nexport interface Arguments {\n dir: string;\n \"bundled-dir\": string;\n port: number;\n \"binary-name\": string;\n}\n\nexport async function compile(argv: Arguments) {\n const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));\n\n // When we build, we MIGHT need to use the @zuplo/runtime from the node_modules if the user\n // has installed our packages using https://www.npmjs.com/package/zuplo in a global directory\n\n // Try to copy the @zuplo/runtime locally\n const zuploRuntimePath = new URL(\n \"../../node_modules/@zuplo/runtime\",\n import.meta.url\n );\n if (existsSync(zuploRuntimePath)) {\n cpSync(\n zuploRuntimePath,\n join(sourceDirectory, \"node_modules/@zuplo/runtime\"),\n {\n recursive: true,\n dereference: true,\n }\n );\n }\n\n // Set GLOBAL_MODULE_LOCATION to the location of the CLIs node_modules\n process.env.GLOBAL_MODULE_LOCATION = fileURLToPath(\n new URL(\"../../node_modules\", import.meta.url)\n );\n\n // Check if the user has a .env.zuplo file\n let envZuplo: dotenv.DotenvParseOutput = {};\n const envZuploFile = join(sourceDirectory, \".env.zuplo\");\n if (existsSync(envZuploFile)) {\n const contents = readFileSync(envZuploFile);\n envZuplo = dotenv.parse(contents);\n }\n\n // Set other variables using __ZUPLO_CONFIG\n const config = {\n build_assets_url: pathToFileURL(sourceDirectory),\n };\n process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));\n\n // Use a dynamic import so that setting process.env has effect\n const core = await import(\"@zuplo/core/cli\");\n\n const zupPort = argv.port;\n\n try {\n await core.compileWorkerdServer({\n sourceDirectory,\n bundledDir: argv[\"bundled-dir\"],\n port: zupPort,\n binaryName: argv[\"binary-name\"],\n publicZuploEnvironmentVariables: envZuplo\n ? {\n ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,\n ZUPLO_PROJECT_NAME: envZuplo.ZUPLO_PROJECT_NAME,\n ZUPLO_ENVIRONMENT_TYPE: envZuplo.ZUPLO_ENVIRONMENT_TYPE,\n }\n : // Leave this as undefined to simulate the old behavior\n undefined,\n logger,\n handleRuntimeStdio,\n });\n\n printDiagnosticsToConsole(\"📦 Compiled a self-contained zup binary\");\n await printResultToConsoleAndExitGracefully(\n `The binary is available at ${sourceDirectory}/dist/${argv[\"binary-name\"]}`\n );\n } catch (err) {\n printDiagnosticsToConsole(err.message);\n await printCriticalFailureToConsoleAndExit(\n \"Failed to compile the zup binary\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/compile/handler.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable node/no-process-env */\nimport { ConsoleOutput } from \"@zuplo/logger\";\nimport dotenv from \"dotenv\";\nimport { randomUUID } from \"node:crypto\";\nimport { cpSync, existsSync, readFileSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n} from \"../common/output.js\";\nimport { handleRuntimeStdio } from \"../common/worker-output.js\";\n\nexport interface Arguments {\n dir: string;\n \"bundled-dir\": string;\n port: number;\n \"binary-name\": string;\n}\n\nexport async function compile(argv: Arguments) {\n const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));\n\n // When we build, we MIGHT need to use the @zuplo/runtime from the node_modules if the user\n // has installed our packages using https://www.npmjs.com/package/zuplo in a global directory\n\n // Try to copy the @zuplo/runtime locally\n const zuploRuntimePath = new URL(\n \"../../node_modules/@zuplo/runtime\",\n import.meta.url\n );\n if (existsSync(zuploRuntimePath)) {\n cpSync(\n zuploRuntimePath,\n join(sourceDirectory, \"node_modules/@zuplo/runtime\"),\n {\n recursive: true,\n dereference: true,\n }\n );\n }\n\n // Set GLOBAL_MODULE_LOCATION to the location of the CLIs node_modules\n process.env.GLOBAL_MODULE_LOCATION = fileURLToPath(\n new URL(\"../../node_modules\", import.meta.url)\n );\n\n // Check if the user has a .env.zuplo file\n let envZuplo: dotenv.DotenvParseOutput = {};\n const envZuploFile = join(sourceDirectory, \".env.zuplo\");\n if (existsSync(envZuploFile)) {\n const contents = readFileSync(envZuploFile);\n envZuplo = dotenv.parse(contents);\n }\n\n // Set other variables using __ZUPLO_CONFIG\n const config = {\n build_assets_url: pathToFileURL(sourceDirectory),\n };\n process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));\n\n // Use a dynamic import so that setting process.env has effect\n const core = await import(\"@zuplo/core/cli\");\n\n const zupPort = argv.port;\n\n const buildId = randomUUID();\n const output = new ConsoleOutput();\n\n try {\n await core.compileWorkerdServer({\n buildId,\n output,\n sourceDirectory,\n bundledDir: argv[\"bundled-dir\"],\n port: zupPort,\n binaryName: argv[\"binary-name\"],\n publicZuploEnvironmentVariables: envZuplo\n ? {\n ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,\n ZUPLO_PROJECT_NAME: envZuplo.ZUPLO_PROJECT_NAME,\n ZUPLO_ENVIRONMENT_TYPE: envZuplo.ZUPLO_ENVIRONMENT_TYPE,\n }\n : // Leave this as undefined to simulate the old behavior\n undefined,\n logger,\n handleRuntimeStdio,\n });\n\n printDiagnosticsToConsole(\"📦 Compiled a self-contained zup binary\");\n await printResultToConsoleAndExitGracefully(\n `The binary is available at ${sourceDirectory}/dist/${argv[\"binary-name\"]}`\n );\n } catch (err) {\n printDiagnosticsToConsole(err.message);\n await printCriticalFailureToConsoleAndExit(\n \"Failed to compile the zup binary\"\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,iBA6JxC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,iBAkKxC"}
@@ -1,4 +1,6 @@
1
+ import { ConsoleOutput } from "@zuplo/logger";
1
2
  import dotenv from "dotenv";
3
+ import { randomUUID } from "node:crypto";
2
4
  import { cpSync, existsSync, readFileSync } from "node:fs";
3
5
  import { join, relative, resolve } from "node:path";
4
6
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -52,8 +54,12 @@ export async function dev(argv) {
52
54
  await printCriticalFailureToConsoleAndExit(`Port ${zupDebugPort} is already in use. Please specify a different port using --debug-port.`);
53
55
  }
54
56
  }
57
+ const buildId = randomUUID();
58
+ const output = new ConsoleOutput();
55
59
  let firstLoad = true;
56
60
  await core.startDevServer({
61
+ buildId,
62
+ output,
57
63
  sourceDirectory,
58
64
  port: zupPort,
59
65
  debugPort: argv.debugPort ?? undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable node/no-process-env */\nimport dotenv from \"dotenv\";\nimport { cpSync, existsSync, readFileSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n} from \"../common/output.js\";\nimport { isPortAvailable } from \"../common/utils/ports.js\";\nimport { handleRuntimeStdio } from \"../common/worker-output.js\";\nimport { ApiServer } from \"../editor/server/server.js\";\n\nexport interface Arguments {\n dir: string;\n \"start-editor\": boolean;\n port: number;\n editorPort: number;\n debugPort?: number;\n}\n\nexport async function dev(argv: Arguments) {\n const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));\n\n // When we build, we MIGHT need to use the @zuplo/runtime from the node_modules if the user\n // has installed our packages using https://www.npmjs.com/package/zuplo in a global directory\n\n // Try to copy the @zuplo/runtime locally\n const zuploRuntimePath = new URL(\n \"../../node_modules/@zuplo/runtime\",\n import.meta.url\n );\n if (existsSync(zuploRuntimePath)) {\n cpSync(\n zuploRuntimePath,\n join(sourceDirectory, \"node_modules/@zuplo/runtime\"),\n {\n recursive: true,\n dereference: true,\n }\n );\n }\n\n // Set GLOBAL_MODULE_LOCATION to the location of the CLIs node_modules\n process.env.GLOBAL_MODULE_LOCATION = fileURLToPath(\n new URL(\"../../node_modules\", import.meta.url)\n );\n\n const loadedEnvFiles: string[] = [];\n\n // Check if the user has a .env file\n const envFile = join(sourceDirectory, \".env\");\n if (existsSync(envFile)) {\n loadedEnvFiles.push(\".env\");\n }\n\n // Check if the user has a .env.zuplo file\n let envZuplo: dotenv.DotenvParseOutput | undefined;\n const envZuploFile = join(sourceDirectory, \".env.zuplo\");\n if (existsSync(envZuploFile)) {\n const contents = readFileSync(envZuploFile);\n envZuplo = dotenv.parse(contents);\n loadedEnvFiles.push(\".env.zuplo\");\n }\n\n // Set other variables using __ZUPLO_CONFIG\n const config = {\n build_assets_url: pathToFileURL(sourceDirectory),\n };\n process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));\n process.env.ZUPLO_IS_LOCAL_DEVELOPMENT = \"true\";\n\n // Use a dynamic import so that setting process.env has effect\n const core = await import(\"@zuplo/core/cli\");\n\n const zupPort = argv.port;\n const zupEditorPort = argv.editorPort;\n const zupDebugPort = argv.debugPort;\n\n const isZupPortAvailable = await isPortAvailable(\"localhost\", zupPort);\n if (!isZupPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupPort} is already in use. Please specify a different port using --port.`\n );\n }\n\n const isZupEditorPortAvailable = await isPortAvailable(\n \"localhost\",\n zupEditorPort\n );\n if (!isZupEditorPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupEditorPort} is already in use. Please specify a different port using --editor-port.`\n );\n }\n\n if (zupDebugPort) {\n const isZupDebugPortAvailable = await isPortAvailable(\n \"localhost\",\n zupDebugPort\n );\n if (!isZupDebugPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupDebugPort} is already in use. Please specify a different port using --debug-port.`\n );\n }\n }\n\n let firstLoad = true;\n\n await core.startDevServer({\n sourceDirectory,\n port: zupPort,\n debugPort: argv.debugPort ?? undefined,\n publicZuploEnvironmentVariables: envZuplo\n ? {\n ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,\n ZUPLO_PROJECT_NAME: envZuplo.ZUPLO_PROJECT_NAME,\n ZUPLO_ENVIRONMENT_TYPE: envZuplo.ZUPLO_ENVIRONMENT_TYPE,\n }\n : // Leave this as undefined to simulate the old behavior\n undefined,\n logger,\n handleRuntimeStdio,\n onReload: () => {\n if (firstLoad) {\n firstLoad = false;\n } else {\n printDiagnosticsToConsole(\"Code changed. Server reloaded...\");\n }\n },\n });\n\n let editor: ApiServer;\n\n if (argv[\"start-editor\"]) {\n editor = new ApiServer({\n cliArgs: argv,\n workingDir: sourceDirectory,\n port: argv.editorPort,\n isStandalone: false,\n });\n editor.start().catch((err) => logger.error(err));\n }\n\n printDiagnosticsToConsole(\"Started local development setup\");\n printDiagnosticsToConsole(\"Ctrl+C to exit\");\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(`🚀 Zuplo Gateway: http://localhost:${zupPort}`);\n if (argv[\"start-editor\"]) {\n printDiagnosticsToConsole(\n `📘 Route Designer: http://localhost:${argv.editorPort}`\n );\n }\n if (loadedEnvFiles.length > 0) {\n printDiagnosticsToConsole(\n `⚙️ Loaded env files: \\n - ${loadedEnvFiles.join(\" \\n - \")}`\n );\n }\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"\");\n\n return new Promise<void>((resolve) => {\n async function exit() {\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"Stopping local development server...\");\n\n if (argv[\"start-editor\"]) {\n await editor.close();\n }\n resolve();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n process.on(\"SIGTERM\", exit);\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n process.on(\"SIGINT\", exit);\n });\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable node/no-process-env */\nimport { ConsoleOutput } from \"@zuplo/logger\";\nimport dotenv from \"dotenv\";\nimport { randomUUID } from \"node:crypto\";\nimport { cpSync, existsSync, readFileSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n} from \"../common/output.js\";\nimport { isPortAvailable } from \"../common/utils/ports.js\";\nimport { handleRuntimeStdio } from \"../common/worker-output.js\";\nimport { ApiServer } from \"../editor/server/server.js\";\n\nexport interface Arguments {\n dir: string;\n \"start-editor\": boolean;\n port: number;\n editorPort: number;\n debugPort?: number;\n}\n\nexport async function dev(argv: Arguments) {\n const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));\n\n // When we build, we MIGHT need to use the @zuplo/runtime from the node_modules if the user\n // has installed our packages using https://www.npmjs.com/package/zuplo in a global directory\n\n // Try to copy the @zuplo/runtime locally\n const zuploRuntimePath = new URL(\n \"../../node_modules/@zuplo/runtime\",\n import.meta.url\n );\n if (existsSync(zuploRuntimePath)) {\n cpSync(\n zuploRuntimePath,\n join(sourceDirectory, \"node_modules/@zuplo/runtime\"),\n {\n recursive: true,\n dereference: true,\n }\n );\n }\n\n // Set GLOBAL_MODULE_LOCATION to the location of the CLIs node_modules\n process.env.GLOBAL_MODULE_LOCATION = fileURLToPath(\n new URL(\"../../node_modules\", import.meta.url)\n );\n\n const loadedEnvFiles: string[] = [];\n\n // Check if the user has a .env file\n const envFile = join(sourceDirectory, \".env\");\n if (existsSync(envFile)) {\n loadedEnvFiles.push(\".env\");\n }\n\n // Check if the user has a .env.zuplo file\n let envZuplo: dotenv.DotenvParseOutput | undefined;\n const envZuploFile = join(sourceDirectory, \".env.zuplo\");\n if (existsSync(envZuploFile)) {\n const contents = readFileSync(envZuploFile);\n envZuplo = dotenv.parse(contents);\n loadedEnvFiles.push(\".env.zuplo\");\n }\n\n // Set other variables using __ZUPLO_CONFIG\n const config = {\n build_assets_url: pathToFileURL(sourceDirectory),\n };\n process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));\n process.env.ZUPLO_IS_LOCAL_DEVELOPMENT = \"true\";\n\n // Use a dynamic import so that setting process.env has effect\n const core = await import(\"@zuplo/core/cli\");\n\n const zupPort = argv.port;\n const zupEditorPort = argv.editorPort;\n const zupDebugPort = argv.debugPort;\n\n const isZupPortAvailable = await isPortAvailable(\"localhost\", zupPort);\n if (!isZupPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupPort} is already in use. Please specify a different port using --port.`\n );\n }\n\n const isZupEditorPortAvailable = await isPortAvailable(\n \"localhost\",\n zupEditorPort\n );\n if (!isZupEditorPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupEditorPort} is already in use. Please specify a different port using --editor-port.`\n );\n }\n\n if (zupDebugPort) {\n const isZupDebugPortAvailable = await isPortAvailable(\n \"localhost\",\n zupDebugPort\n );\n if (!isZupDebugPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupDebugPort} is already in use. Please specify a different port using --debug-port.`\n );\n }\n }\n\n const buildId = randomUUID();\n const output = new ConsoleOutput();\n\n let firstLoad = true;\n\n await core.startDevServer({\n buildId,\n output,\n sourceDirectory,\n port: zupPort,\n debugPort: argv.debugPort ?? undefined,\n publicZuploEnvironmentVariables: envZuplo\n ? {\n ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,\n ZUPLO_PROJECT_NAME: envZuplo.ZUPLO_PROJECT_NAME,\n ZUPLO_ENVIRONMENT_TYPE: envZuplo.ZUPLO_ENVIRONMENT_TYPE,\n }\n : // Leave this as undefined to simulate the old behavior\n undefined,\n logger,\n handleRuntimeStdio,\n onReload: () => {\n if (firstLoad) {\n firstLoad = false;\n } else {\n printDiagnosticsToConsole(\"Code changed. Server reloaded...\");\n }\n },\n });\n\n let editor: ApiServer;\n\n if (argv[\"start-editor\"]) {\n editor = new ApiServer({\n cliArgs: argv,\n workingDir: sourceDirectory,\n port: argv.editorPort,\n isStandalone: false,\n });\n editor.start().catch((err) => logger.error(err));\n }\n\n printDiagnosticsToConsole(\"Started local development setup\");\n printDiagnosticsToConsole(\"Ctrl+C to exit\");\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(`🚀 Zuplo Gateway: http://localhost:${zupPort}`);\n if (argv[\"start-editor\"]) {\n printDiagnosticsToConsole(\n `📘 Route Designer: http://localhost:${argv.editorPort}`\n );\n }\n if (loadedEnvFiles.length > 0) {\n printDiagnosticsToConsole(\n `⚙️ Loaded env files: \\n - ${loadedEnvFiles.join(\" \\n - \")}`\n );\n }\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"\");\n\n return new Promise<void>((resolve) => {\n async function exit() {\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"Stopping local development server...\");\n\n if (argv[\"start-editor\"]) {\n await editor.close();\n }\n resolve();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n process.on(\"SIGTERM\", exit);\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n process.on(\"SIGINT\", exit);\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/delete/handler.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,SAAS,iBAiDjD"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/delete/handler.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,SAAS,iBAmDjD"}
@@ -27,12 +27,13 @@ export async function deleteTunnel(argv) {
27
27
  }
28
28
  }
29
29
  else {
30
+ const response = textOrJson(await deleteResponse.text());
30
31
  logger.error({
31
32
  status: deleteResponse.status,
32
33
  statusText: deleteResponse.statusText,
33
- response: textOrJson(await deleteResponse.text()),
34
+ response,
34
35
  }, "Failed to delete tunnel for account");
35
- printDiagnosticsToConsole("Error: Failed to delete the tunnel for your account. Check the arguments.");
36
+ printDiagnosticsToConsole("Error: Failed to delete the tunnel for your account. Check the arguments.", response);
36
37
  }
37
38
  }
38
39
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/delete/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,oCAAoC,EACpC,yBAAyB,EACzB,qCAAqC,EACrC,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAQrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAe;IAEhD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,EAC9F;QACE,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,iBAAiB,GAAsB,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACzE,yBAAyB,CACvB,mBAAmB,IAAI,CAAC,WAAW,CAAC,eAAe,OAAO,KAAK,CAChE,CAAC;QAGF,MAAM,uBAAuB,GAAG,MAAM,qBAAqB,CAAC;YAC1D,IAAI;YACJ,OAAO;YACP,mBAAmB,EAAE,iBAAiB,CAAC,EAAE;SAC1C,CAAC,CAAC;QAEH,IAAI,uBAAuB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,qCAAqC,CACzC,UAAU,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACpD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yBAAyB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,oCAAoC,CACxC,UAAU,IAAI,CAAC,WAAW,CAAC,wCAAwC,uBAAuB,CAAC,OAAO,EAAE,CACrG,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;SAClD,EACD,qCAAqC,CACtC,CAAC;QACF,yBAAyB,CACvB,2EAA2E,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { TeardownOperation } from \"../models.js\";\nimport { pollTeardownOperation } from \"./poll-teardown-operation.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function deleteTunnel(argv: Arguments) {\n // 1. Initiate a deletion for the tunnel\n const { account } = argv;\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}`,\n {\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n const teardownOperation: TeardownOperation = await deleteResponse.json();\n printDiagnosticsToConsole(\n `Deleting tunnel ${argv[\"tunnel-id\"]} on account ${account}...`\n );\n\n // 2. Poll for status\n const polledTearDownOperation = await pollTeardownOperation({\n argv,\n account,\n teardownOperationId: teardownOperation.id,\n });\n\n if (polledTearDownOperation.status === \"success\") {\n await printResultToConsoleAndExitGracefully(\n `Tunnel ${argv[\"tunnel-id\"]} deleted successfully.`\n );\n } else {\n printDiagnosticsToConsole(polledTearDownOperation.details);\n await printCriticalFailureToConsoleAndExit(\n `Tunnel ${argv[\"tunnel-id\"]} failed to delete. Here's the error: ${polledTearDownOperation.message}`\n );\n }\n } else {\n logger.error(\n {\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n response: textOrJson(await deleteResponse.text()),\n },\n \"Failed to delete tunnel for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to delete the tunnel for your account. Check the arguments.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/delete/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,oCAAoC,EACpC,yBAAyB,EACzB,qCAAqC,EACrC,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAQrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAe;IAEhD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,EAC9F;QACE,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,iBAAiB,GAAsB,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACzE,yBAAyB,CACvB,mBAAmB,IAAI,CAAC,WAAW,CAAC,eAAe,OAAO,KAAK,CAChE,CAAC;QAGF,MAAM,uBAAuB,GAAG,MAAM,qBAAqB,CAAC;YAC1D,IAAI;YACJ,OAAO;YACP,mBAAmB,EAAE,iBAAiB,CAAC,EAAE;SAC1C,CAAC,CAAC;QAEH,IAAI,uBAAuB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,qCAAqC,CACzC,UAAU,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACpD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yBAAyB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,oCAAoC,CACxC,UAAU,IAAI,CAAC,WAAW,CAAC,wCAAwC,uBAAuB,CAAC,OAAO,EAAE,CACrG,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ;SACT,EACD,qCAAqC,CACtC,CAAC;QACF,yBAAyB,CACvB,2EAA2E,EAC3E,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { TeardownOperation } from \"../models.js\";\nimport { pollTeardownOperation } from \"./poll-teardown-operation.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function deleteTunnel(argv: Arguments) {\n // 1. Initiate a deletion for the tunnel\n const { account } = argv;\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}`,\n {\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n const teardownOperation: TeardownOperation = await deleteResponse.json();\n printDiagnosticsToConsole(\n `Deleting tunnel ${argv[\"tunnel-id\"]} on account ${account}...`\n );\n\n // 2. Poll for status\n const polledTearDownOperation = await pollTeardownOperation({\n argv,\n account,\n teardownOperationId: teardownOperation.id,\n });\n\n if (polledTearDownOperation.status === \"success\") {\n await printResultToConsoleAndExitGracefully(\n `Tunnel ${argv[\"tunnel-id\"]} deleted successfully.`\n );\n } else {\n printDiagnosticsToConsole(polledTearDownOperation.details);\n await printCriticalFailureToConsoleAndExit(\n `Tunnel ${argv[\"tunnel-id\"]} failed to delete. Here's the error: ${polledTearDownOperation.message}`\n );\n }\n } else {\n const response = textOrJson(await deleteResponse.text());\n logger.error(\n {\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n response,\n },\n \"Failed to delete tunnel for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to delete the tunnel for your account. Check the arguments.\",\n response\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/describe/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,iBA4B7C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/describe/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,iBA8B7C"}
@@ -14,12 +14,13 @@ export async function describe(argv) {
14
14
  await printTableToConsoleAndExitGracefully(tunnel);
15
15
  }
16
16
  else {
17
+ const response = textOrJson(await describeResponse.text());
17
18
  logger.error({
18
19
  status: describeResponse.status,
19
20
  statusText: describeResponse.statusText,
20
- response: textOrJson(await describeResponse.text()),
21
+ response,
21
22
  }, "Failed to describe tunnel for account");
22
- printDiagnosticsToConsole("Error: Failed to describe tunnel for your account. Check the arguments.");
23
+ printDiagnosticsToConsole("Error: Failed to describe tunnel for your account. Check the arguments.", response);
23
24
  }
24
25
  }
25
26
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/describe/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oCAAoC,EACpC,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAShD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAe;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,EAC9F;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,gBAAgB,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,MAAM,GAAW,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,oCAAoC,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,QAAQ,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;SACpD,EACD,uCAAuC,CACxC,CAAC;QACF,yBAAyB,CACvB,yEAAyE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printTableToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { Tunnel } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function describe(argv: Arguments) {\n const { account } = argv;\n const describeResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (describeResponse.ok) {\n const tunnel: Tunnel = await describeResponse.json();\n await printTableToConsoleAndExitGracefully(tunnel);\n } else {\n logger.error(\n {\n status: describeResponse.status,\n statusText: describeResponse.statusText,\n response: textOrJson(await describeResponse.text()),\n },\n \"Failed to describe tunnel for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to describe tunnel for your account. Check the arguments.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/describe/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oCAAoC,EACpC,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAShD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAe;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,EAC9F;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,gBAAgB,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,MAAM,GAAW,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,oCAAoC,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,QAAQ;SACT,EACD,uCAAuC,CACxC,CAAC;QACF,yBAAyB,CACvB,yEAAyE,EACzE,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printTableToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { Tunnel } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function describe(argv: Arguments) {\n const { account } = argv;\n const describeResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (describeResponse.ok) {\n const tunnel: Tunnel = await describeResponse.json();\n await printTableToConsoleAndExitGracefully(tunnel);\n } else {\n const response = textOrJson(await describeResponse.text());\n logger.error(\n {\n status: describeResponse.status,\n statusText: describeResponse.statusText,\n response,\n },\n \"Failed to describe tunnel for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to describe tunnel for your account. Check the arguments.\",\n response\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/list/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,iBAqCzC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/list/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,iBAuCzC"}
@@ -23,12 +23,13 @@ export async function list(argv) {
23
23
  }
24
24
  }
25
25
  else {
26
+ const response = await listResponse.json();
26
27
  logger.error({
27
28
  status: listResponse.status,
28
29
  statusText: listResponse.statusText,
29
- response: await listResponse.json(),
30
+ response,
30
31
  }, "Failed to list tunnels for account");
31
- printDiagnosticsToConsole("Error: Failed to list tunnels for your account. Try again later.");
32
+ printDiagnosticsToConsole("Error: Failed to list tunnels for your account. Try again later.", response);
32
33
  }
33
34
  }
34
35
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/list/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,qCAAqC,EACrC,oCAAoC,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAQhD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAe;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC;IAC/B,MAAM,YAAY,GAAG,MAAM,KAAK,CAC9B,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,UAAU,EACzE;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,OAAO,GAAe,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAEtD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC;YAClC,MAAM,qCAAqC,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,MAAM,oCAAoC,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,QAAQ,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE;SACpC,EACD,oCAAoC,CACrC,CAAC;QACF,yBAAyB,CACvB,kEAAkE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n printTableToConsoleAndExitGracefully,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { TunnelList } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n \"api-key\": string;\n}\n\nexport async function list(argv: Arguments) {\n const { account } = await argv;\n const listResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (listResponse.ok) {\n const tunnels: TunnelList = await listResponse.json();\n\n if (tunnels.data.length === 0) {\n const output = \"No tunnels found\";\n await printResultToConsoleAndExitGracefully(output);\n } else {\n const table = tunnels.data.map((tunnel) => {\n return { \"tunnel-id\": tunnel.id, name: tunnel.name };\n });\n await printTableToConsoleAndExitGracefully(table);\n }\n } else {\n logger.error(\n {\n status: listResponse.status,\n statusText: listResponse.statusText,\n response: await listResponse.json(),\n },\n \"Failed to list tunnels for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to list tunnels for your account. Try again later.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/list/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,qCAAqC,EACrC,oCAAoC,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAQhD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAe;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC;IAC/B,MAAM,YAAY,GAAG,MAAM,KAAK,CAC9B,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,UAAU,EACzE;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,OAAO,GAAe,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAEtD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC;YAClC,MAAM,qCAAqC,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,MAAM,oCAAoC,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,QAAQ;SACT,EACD,oCAAoC,CACrC,CAAC;QACF,yBAAyB,CACvB,kEAAkE,EAClE,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n printTableToConsoleAndExitGracefully,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { TunnelList } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n \"api-key\": string;\n}\n\nexport async function list(argv: Arguments) {\n const { account } = await argv;\n const listResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (listResponse.ok) {\n const tunnels: TunnelList = await listResponse.json();\n\n if (tunnels.data.length === 0) {\n const output = \"No tunnels found\";\n await printResultToConsoleAndExitGracefully(output);\n } else {\n const table = tunnels.data.map((tunnel) => {\n return { \"tunnel-id\": tunnel.id, name: tunnel.name };\n });\n await printTableToConsoleAndExitGracefully(table);\n }\n } else {\n const response = await listResponse.json();\n logger.error(\n {\n status: listResponse.status,\n statusText: listResponse.statusText,\n response,\n },\n \"Failed to list tunnels for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to list tunnels for your account. Try again later.\",\n response\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/rotate-token/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,iBA4BhD"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tunnel/rotate-token/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,iBA8BhD"}
@@ -14,12 +14,13 @@ export async function rotateToken(argv) {
14
14
  await printTableToConsoleAndExitGracefully(tunnel);
15
15
  }
16
16
  else {
17
+ const response = textOrJson(await rotateResponse.text());
17
18
  logger.error({
18
19
  status: rotateResponse.status,
19
20
  statusText: rotateResponse.statusText,
20
- response: textOrJson(await rotateResponse.text()),
21
+ response,
21
22
  }, "Failed to rotate token for tunnel");
22
- printDiagnosticsToConsole("Error: Failed to rotate token for tunnel. Check the arguments.");
23
+ printDiagnosticsToConsole("Error: Failed to rotate token for tunnel. Check the arguments.", response);
23
24
  }
24
25
  }
25
26
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/rotate-token/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oCAAoC,EACpC,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAShD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAe;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAC5G;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,MAAM,GAAW,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,oCAAoC,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;SAClD,EACD,mCAAmC,CACpC,CAAC;QACF,yBAAyB,CACvB,gEAAgE,CACjE,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printTableToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { Tunnel } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function rotateToken(argv: Arguments) {\n const { account } = argv;\n const rotateResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}/$rotate-token`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (rotateResponse.ok) {\n const tunnel: Tunnel = await rotateResponse.json();\n await printTableToConsoleAndExitGracefully(tunnel);\n } else {\n logger.error(\n {\n status: rotateResponse.status,\n statusText: rotateResponse.statusText,\n response: textOrJson(await rotateResponse.text()),\n },\n \"Failed to rotate token for tunnel\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to rotate token for tunnel. Check the arguments.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tunnel/rotate-token/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,oCAAoC,EACpC,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAShD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAe;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAC5G;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,MAAM,GAAW,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,oCAAoC,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ;SACT,EACD,mCAAmC,CACpC,CAAC;QACF,yBAAyB,CACvB,gEAAgE,EAChE,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printTableToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../common/output.js\";\nimport settings from \"../../common/settings.js\";\nimport { Tunnel } from \"../models.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function rotateToken(argv: Arguments) {\n const { account } = argv;\n const rotateResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}/$rotate-token`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (rotateResponse.ok) {\n const tunnel: Tunnel = await rotateResponse.json();\n await printTableToConsoleAndExitGracefully(tunnel);\n } else {\n const response = textOrJson(await rotateResponse.text());\n logger.error(\n {\n status: rotateResponse.status,\n statusText: rotateResponse.statusText,\n response,\n },\n \"Failed to rotate token for tunnel\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to rotate token for tunnel. Check the arguments.\",\n response\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/tunnel/services/describe/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,iBA8B7C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/tunnel/services/describe/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,iBAgC7C"}
@@ -14,12 +14,13 @@ export async function describe(argv) {
14
14
  await printResultToConsoleAndExitGracefully(JSON.stringify(tunnel, null, 2));
15
15
  }
16
16
  else {
17
+ const response = textOrJson(await describeResponse.text());
17
18
  logger.error({
18
19
  status: describeResponse.status,
19
20
  statusText: describeResponse.statusText,
20
- response: textOrJson(await describeResponse.text()),
21
+ response,
21
22
  }, "Failed to describe services for tunnel");
22
- printDiagnosticsToConsole("Error: Failed to describe the services for your tunnel. Check the arguments.");
23
+ printDiagnosticsToConsole("Error: Failed to describe the services for your tunnel. Check the arguments.", response);
23
24
  }
24
25
  }
25
26
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/tunnel/services/describe/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,qCAAqC,EACrC,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AASnD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAe;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,yBAAyB,EACrH;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,gBAAgB,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,MAAM,GAAW,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,qCAAqC,CACzC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAChC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,QAAQ,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;SACpD,EACD,wCAAwC,CACzC,CAAC;QACF,yBAAyB,CACvB,8EAA8E,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../../common/output.js\";\nimport settings from \"../../../common/settings.js\";\nimport { Tunnel } from \"../../models.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function describe(argv: Arguments) {\n const { account } = argv;\n const describeResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}/services-configuration`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (describeResponse.ok) {\n const tunnel: Tunnel = await describeResponse.json();\n await printResultToConsoleAndExitGracefully(\n JSON.stringify(tunnel, null, 2)\n );\n } else {\n logger.error(\n {\n status: describeResponse.status,\n statusText: describeResponse.statusText,\n response: textOrJson(await describeResponse.text()),\n },\n \"Failed to describe services for tunnel\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to describe the services for your tunnel. Check the arguments.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/tunnel/services/describe/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,qCAAqC,EACrC,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AASnD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAe;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,yBAAyB,EACrH;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;SAC3C;KACF,CACF,CAAC;IAEF,IAAI,gBAAgB,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,MAAM,GAAW,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,qCAAqC,CACzC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAChC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,QAAQ;SACT,EACD,wCAAwC,CACzC,CAAC;QACF,yBAAyB,CACvB,8EAA8E,EAC9E,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { logger } from \"../../../common/logger.js\";\nimport {\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../../common/output.js\";\nimport settings from \"../../../common/settings.js\";\nimport { Tunnel } from \"../../models.js\";\n\nexport interface Arguments {\n account: string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function describe(argv: Arguments) {\n const { account } = argv;\n const describeResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}/services-configuration`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n\n if (describeResponse.ok) {\n const tunnel: Tunnel = await describeResponse.json();\n await printResultToConsoleAndExitGracefully(\n JSON.stringify(tunnel, null, 2)\n );\n } else {\n const response = textOrJson(await describeResponse.text());\n logger.error(\n {\n status: describeResponse.status,\n statusText: describeResponse.statusText,\n response,\n },\n \"Failed to describe services for tunnel\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to describe the services for your tunnel. Check the arguments.\",\n response\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/tunnel/services/update/handler.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,iBA8DnD"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/tunnel/services/update/handler.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,iBAgEnD"}
@@ -37,12 +37,13 @@ export async function updateServices(argv) {
37
37
  }
38
38
  }
39
39
  else {
40
+ const response = textOrJson(await deleteResponse.text());
40
41
  logger.error({
41
42
  status: deleteResponse.status,
42
43
  statusText: deleteResponse.statusText,
43
- response: textOrJson(await deleteResponse.text()),
44
+ response,
44
45
  }, "Failed to update tunnel for account");
45
- printDiagnosticsToConsole("Error: Failed to update the tunnel for your account. Check the arguments.");
46
+ printDiagnosticsToConsole("Error: Failed to update the tunnel for your account. Check the arguments.", response);
46
47
  }
47
48
  }
48
49
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/tunnel/services/update/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EACL,oCAAoC,EACpC,yBAAyB,EACzB,qCAAqC,EACrC,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAS9E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAe;IAElD,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,oCAAoC,CACxC,2CAA2C,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,CACzF,CAAC;IACJ,CAAC;IAGD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,yBAAyB,EACrH;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;YAC1C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,QAAQ;KACf,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,qBAAqB,GACzB,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC9B,yBAAyB,CACvB,+BAA+B,IAAI,CAAC,WAAW,CAAC,eAAe,OAAO,KAAK,CAC5E,CAAC;QAGF,MAAM,2BAA2B,GAAG,MAAM,yBAAyB,CAAC;YAClE,IAAI;YACJ,OAAO;YACP,uBAAuB,EAAE,qBAAqB,CAAC,EAAE;SAClD,CAAC,CAAC;QAEH,IAAI,2BAA2B,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrD,MAAM,qCAAqC,CACzC,UAAU,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACpD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yBAAyB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;YAC/D,MAAM,oCAAoC,CACxC,UAAU,IAAI,CAAC,WAAW,CAAC,wCAAwC,2BAA2B,CAAC,OAAO,EAAE,CACzG,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;SAClD,EACD,qCAAqC,CACtC,CAAC;QACF,yBAAyB,CACvB,2EAA2E,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { logger } from \"../../../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../../common/output.js\";\nimport settings from \"../../../common/settings.js\";\nimport { ProvisioningOperation } from \"../../models.js\";\nimport { pollProvisioningOperation } from \"./poll-provisioning-operations.js\";\n\nexport interface Arguments {\n account: string;\n \"configuration-file\": string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function updateServices(argv: Arguments) {\n // 2. Read the configuration file\n let contents;\n try {\n contents = await readFile(argv[\"configuration-file\"], \"utf-8\");\n } catch (err) {\n await printCriticalFailureToConsoleAndExit(\n `Error reading the configuration file at ${argv[\"configuration-file\"]}: ${err.message}}`\n );\n }\n\n // 3. Initiate a update for the tunnel\n const { account } = argv;\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}/services-configuration`,\n {\n method: \"PUT\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n \"Content-Type\": \"application/json\",\n },\n body: contents,\n }\n );\n\n if (deleteResponse.ok) {\n const provisioningOperation: ProvisioningOperation =\n await deleteResponse.json();\n printDiagnosticsToConsole(\n `Updating services on tunnel ${argv[\"tunnel-id\"]} on account ${account}...`\n );\n\n // 3. Poll for status\n const polledProvisioningOperation = await pollProvisioningOperation({\n argv,\n account,\n provisioningOperationId: provisioningOperation.id,\n });\n\n if (polledProvisioningOperation.status === \"success\") {\n await printResultToConsoleAndExitGracefully(\n `Tunnel ${argv[\"tunnel-id\"]} updated successfully.`\n );\n } else {\n printDiagnosticsToConsole(polledProvisioningOperation.details);\n await printCriticalFailureToConsoleAndExit(\n `Tunnel ${argv[\"tunnel-id\"]} failed to update. Here's the error: ${polledProvisioningOperation.message}`\n );\n }\n } else {\n logger.error(\n {\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n response: textOrJson(await deleteResponse.text()),\n },\n \"Failed to update tunnel for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to update the tunnel for your account. Check the arguments.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/tunnel/services/update/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EACL,oCAAoC,EACpC,yBAAyB,EACzB,qCAAqC,EACrC,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAS9E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAe;IAElD,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,oCAAoC,CACxC,2CAA2C,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,CACzF,CAAC;IACJ,CAAC;IAGD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GAAG,QAAQ,CAAC,4BAA4B,gBAAgB,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,yBAAyB,EACrH;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;YAC1C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,QAAQ;KACf,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,qBAAqB,GACzB,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC9B,yBAAyB,CACvB,+BAA+B,IAAI,CAAC,WAAW,CAAC,eAAe,OAAO,KAAK,CAC5E,CAAC;QAGF,MAAM,2BAA2B,GAAG,MAAM,yBAAyB,CAAC;YAClE,IAAI;YACJ,OAAO;YACP,uBAAuB,EAAE,qBAAqB,CAAC,EAAE;SAClD,CAAC,CAAC;QAEH,IAAI,2BAA2B,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrD,MAAM,qCAAqC,CACzC,UAAU,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACpD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yBAAyB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;YAC/D,MAAM,oCAAoC,CACxC,UAAU,IAAI,CAAC,WAAW,CAAC,wCAAwC,2BAA2B,CAAC,OAAO,EAAE,CACzG,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ;SACT,EACD,qCAAqC,CACtC,CAAC;QACF,yBAAyB,CACvB,2EAA2E,EAC3E,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { logger } from \"../../../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../../../common/output.js\";\nimport settings from \"../../../common/settings.js\";\nimport { ProvisioningOperation } from \"../../models.js\";\nimport { pollProvisioningOperation } from \"./poll-provisioning-operations.js\";\n\nexport interface Arguments {\n account: string;\n \"configuration-file\": string;\n \"tunnel-id\": string;\n \"api-key\": string;\n}\n\nexport async function updateServices(argv: Arguments) {\n // 2. Read the configuration file\n let contents;\n try {\n contents = await readFile(argv[\"configuration-file\"], \"utf-8\");\n } catch (err) {\n await printCriticalFailureToConsoleAndExit(\n `Error reading the configuration file at ${argv[\"configuration-file\"]}: ${err.message}}`\n );\n }\n\n // 3. Initiate a update for the tunnel\n const { account } = argv;\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/tunnels/${argv[\"tunnel-id\"]}/services-configuration`,\n {\n method: \"PUT\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n \"Content-Type\": \"application/json\",\n },\n body: contents,\n }\n );\n\n if (deleteResponse.ok) {\n const provisioningOperation: ProvisioningOperation =\n await deleteResponse.json();\n printDiagnosticsToConsole(\n `Updating services on tunnel ${argv[\"tunnel-id\"]} on account ${account}...`\n );\n\n // 3. Poll for status\n const polledProvisioningOperation = await pollProvisioningOperation({\n argv,\n account,\n provisioningOperationId: provisioningOperation.id,\n });\n\n if (polledProvisioningOperation.status === \"success\") {\n await printResultToConsoleAndExitGracefully(\n `Tunnel ${argv[\"tunnel-id\"]} updated successfully.`\n );\n } else {\n printDiagnosticsToConsole(polledProvisioningOperation.details);\n await printCriticalFailureToConsoleAndExit(\n `Tunnel ${argv[\"tunnel-id\"]} failed to update. Here's the error: ${polledProvisioningOperation.message}`\n );\n }\n } else {\n const response = textOrJson(await deleteResponse.text());\n logger.error(\n {\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n response,\n },\n \"Failed to update tunnel for account\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to update the tunnel for your account. Check the arguments.\",\n response\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/variable/create/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,iBAsC3C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/variable/create/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,iBAwC3C"}
@@ -20,12 +20,13 @@ export async function create(argv) {
20
20
  printResultToConsole(variable.name + " created successfully");
21
21
  }
22
22
  else {
23
+ const problem = textOrJson(await createResponse.text());
23
24
  logger.error({
24
25
  status: createResponse.status,
25
26
  statusText: createResponse.statusText,
26
- response: textOrJson(await createResponse.text()),
27
+ response: problem,
27
28
  }, "Failed to create variable");
28
- printDiagnosticsToConsole("Error: Failed to create variable. Check the arguments.");
29
+ printDiagnosticsToConsole("Error: Failed to create variable. Check the arguments.", problem);
29
30
  }
30
31
  }
31
32
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/variable/create/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,MAAM,CAAC,IAAe;IAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GACE,QAAQ,CAAC,4BACX,gBAAgB,OAAO,aAAa,OAAO,aAAa,kBAAkB,CACxE,IAAI,CAAC,QAAQ,CAAC,CACf,YAAY,EACb;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;YAC1C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;YAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;SACrB,CAAC;KACH,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAa,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACvD,oBAAoB,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;SAClD,EACD,2BAA2B,CAC5B,CAAC;QACF,yBAAyB,CACvB,wDAAwD,CACzD,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 { Arguments, Variable } from \"../models.js\";\n\nexport async function create(argv: Arguments) {\n const { account, project } = argv;\n const createResponse = await fetch(\n `${\n settings.ZUPLO_DEVELOPER_API_ENDPOINT\n }/v1/accounts/${account}/projects/${project}/branches/${encodeURIComponent(\n argv[\"branch\"]\n )}/variables`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n name: argv[\"name\"],\n isSecret: argv[\"is-secret\"],\n value: argv[\"value\"],\n }),\n }\n );\n\n if (createResponse.ok) {\n const variable: Variable = await createResponse.json();\n printResultToConsole(variable.name + \" created successfully\");\n } else {\n logger.error(\n {\n status: createResponse.status,\n statusText: createResponse.statusText,\n response: textOrJson(await createResponse.text()),\n },\n \"Failed to create variable\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to create variable. Check the arguments.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/variable/create/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,MAAM,CAAC,IAAe;IAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GACE,QAAQ,CAAC,4BACX,gBAAgB,OAAO,aAAa,OAAO,aAAa,kBAAkB,CACxE,IAAI,CAAC,QAAQ,CAAC,CACf,YAAY,EACb;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;YAC1C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;YAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;SACrB,CAAC;KACH,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAa,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACvD,oBAAoB,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAChE,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,2BAA2B,CAC5B,CAAC;QACF,yBAAyB,CACvB,wDAAwD,EACxD,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 { Arguments, Variable } from \"../models.js\";\n\nexport async function create(argv: Arguments) {\n const { account, project } = argv;\n const createResponse = await fetch(\n `${\n settings.ZUPLO_DEVELOPER_API_ENDPOINT\n }/v1/accounts/${account}/projects/${project}/branches/${encodeURIComponent(\n argv[\"branch\"]\n )}/variables`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n name: argv[\"name\"],\n isSecret: argv[\"is-secret\"],\n value: argv[\"value\"],\n }),\n }\n );\n\n if (createResponse.ok) {\n const variable: Variable = await createResponse.json();\n printResultToConsole(variable.name + \" created successfully\");\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 variable\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to create variable. Check the arguments.\",\n problem\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/variable/update/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,iBAoC3C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/variable/update/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,iBAsC3C"}
@@ -18,12 +18,13 @@ export async function update(argv) {
18
18
  printResultToConsole(variable.name + " updated successfully");
19
19
  }
20
20
  else {
21
+ const problem = textOrJson(await updateResponse.text());
21
22
  logger.error({
22
23
  status: updateResponse.status,
23
24
  statusText: updateResponse.statusText,
24
- response: textOrJson(await updateResponse.text()),
25
+ response: problem,
25
26
  }, "Failed to update variable");
26
- printDiagnosticsToConsole("Error: Failed to update variable. Check the arguments.");
27
+ printDiagnosticsToConsole("Error: Failed to update variable. Check the arguments.", problem);
27
28
  }
28
29
  }
29
30
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/variable/update/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,MAAM,CAAC,IAAe;IAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GACE,QAAQ,CAAC,4BACX,gBAAgB,OAAO,aAAa,OAAO,aAAa,kBAAkB,CACxE,IAAI,CAAC,QAAQ,CAAC,CACf,cAAc,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EACjD;QACE,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;YAC1C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;SACrB,CAAC;KACH,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAa,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACvD,oBAAoB,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CACV;YACE,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,QAAQ,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;SAClD,EACD,2BAA2B,CAC5B,CAAC;QACF,yBAAyB,CACvB,wDAAwD,CACzD,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 { Arguments, Variable } from \"../models.js\";\n\nexport async function update(argv: Arguments) {\n const { account, project } = argv;\n const updateResponse = await fetch(\n `${\n settings.ZUPLO_DEVELOPER_API_ENDPOINT\n }/v1/accounts/${account}/projects/${project}/branches/${encodeURIComponent(\n argv[\"branch\"]\n )}/variables/${encodeURIComponent(argv[\"name\"])}`,\n {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n value: argv[\"value\"],\n }),\n }\n );\n\n if (updateResponse.ok) {\n const variable: Variable = await updateResponse.json();\n printResultToConsole(variable.name + \" updated successfully\");\n } else {\n logger.error(\n {\n status: updateResponse.status,\n statusText: updateResponse.statusText,\n response: textOrJson(await updateResponse.text()),\n },\n \"Failed to update variable\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to update variable. Check the arguments.\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/variable/update/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,MAAM,CAAC,IAAe;IAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,GACE,QAAQ,CAAC,4BACX,gBAAgB,OAAO,aAAa,OAAO,aAAa,kBAAkB,CACxE,IAAI,CAAC,QAAQ,CAAC,CACf,cAAc,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EACjD;QACE,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE;YAC1C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;SACrB,CAAC;KACH,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAa,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACvD,oBAAoB,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAChE,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,2BAA2B,CAC5B,CAAC;QACF,yBAAyB,CACvB,wDAAwD,EACxD,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 { Arguments, Variable } from \"../models.js\";\n\nexport async function update(argv: Arguments) {\n const { account, project } = argv;\n const updateResponse = await fetch(\n `${\n settings.ZUPLO_DEVELOPER_API_ENDPOINT\n }/v1/accounts/${account}/projects/${project}/branches/${encodeURIComponent(\n argv[\"branch\"]\n )}/variables/${encodeURIComponent(argv[\"name\"])}`,\n {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n value: argv[\"value\"],\n }),\n }\n );\n\n if (updateResponse.ok) {\n const variable: Variable = await updateResponse.json();\n printResultToConsole(variable.name + \" updated successfully\");\n } else {\n const problem = textOrJson(await updateResponse.text());\n logger.error(\n {\n status: updateResponse.status,\n statusText: updateResponse.statusText,\n response: problem,\n },\n \"Failed to update variable\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to update variable. Check the arguments.\",\n problem\n );\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zuplo/cli",
3
- "version": "6.15.2",
3
+ "version": "6.15.4",
4
4
  "repository": "https://github.com/zuplo/zuplo",
5
5
  "author": "Zuplo, Inc.",
6
6
  "type": "module",
@@ -29,9 +29,9 @@
29
29
  "@opentelemetry/api": "^1.8.0",
30
30
  "@sentry/node": "^7.119.2",
31
31
  "@swc/core": "1.7.6",
32
- "@zuplo/core": "^6.15.2",
33
- "@zuplo/pino-pretty-configurations": "^1.5.0",
34
- "@zuplo/runtime": "^6.15.2",
32
+ "@zuplo/core": "^6.15.4",
33
+ "@zuplo/logger": "^6.15.4",
34
+ "@zuplo/runtime": "^6.15.4",
35
35
  "as-table": "^1.0.55",
36
36
  "chalk": "^5.3.0",
37
37
  "chokidar": "^3.5.3",