@zuplo/cli 6.63.1 → 6.63.2

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.
@@ -14,16 +14,14 @@ describe("Outdated CLI check", function () {
14
14
  mockAgent = new MockAgent();
15
15
  mockAgent.disableNetConnect();
16
16
  mockAgent
17
- .get("https://raw.githubusercontent.com")
17
+ .get("https://registry.npmjs.org")
18
18
  .intercept({
19
- path: "/zuplo/zuplo/main/packages/zuplo/package.json",
19
+ path: "/@zuplo/cli/latest",
20
20
  method: "GET",
21
21
  })
22
22
  .reply(200, {
23
- name: "zuplo",
24
- dependencies: {
25
- "@zuplo/cli": "1.109.0",
26
- },
23
+ name: "@zuplo/cli",
24
+ version: "1.109.0",
27
25
  });
28
26
  setGlobalDispatcher(mockAgent);
29
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"outdated.test.js","sourceRoot":"","sources":["../../src/__tests__/outdated.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { rm, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { beforeEach, describe, it } from \"node:test\";\nimport { assert } from \"chai\";\nimport { MockAgent, setGlobalDispatcher } from \"undici\";\nimport { ZUPLO_VERSION_CHECK_FILE } from \"../common/constants.js\";\nimport { warnIfOutdatedVersion } from \"../common/outdated.js\";\nimport { ZUPLO_XDG_STATE_HOME } from \"../common/xdg/lib.js\";\n\nconst versionCheckPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_VERSION_CHECK_FILE);\n\nprocess.env.ZUPLO_OVERRIDE_CI_TO_TEST = \"true\";\n\ndescribe(\"Outdated CLI check\", function () {\n let mockAgent: MockAgent;\n\n beforeEach(() => {\n mockAgent = new MockAgent();\n mockAgent.disableNetConnect();\n mockAgent\n .get(\"https://raw.githubusercontent.com\")\n .intercept({\n path: \"/zuplo/zuplo/main/packages/zuplo/package.json\",\n method: \"GET\",\n })\n .reply(200, {\n name: \"zuplo\",\n dependencies: {\n \"@zuplo/cli\": \"1.109.0\",\n },\n });\n\n setGlobalDispatcher(mockAgent);\n });\n\n it(\"should warn on outdated version\", async function () {\n await rm(versionCheckPath, { recursive: true, force: true });\n\n const result = await warnIfOutdatedVersion(\"1.0.0\");\n assert.isTrue(result);\n assert.equal(mockAgent.pendingInterceptors.length, 0);\n });\n it(\"should not warn if current version\", async function () {\n const result = await warnIfOutdatedVersion(\"1.109.0\");\n assert.isFalse(result);\n });\n it(\"should not warn if still has cached result\", async function () {\n // Set the cache to still be valid, so even though the version is outdated\n // we dont return a warning since we dont fetch the latest version\n const state = { lastCheck: Date.now() - 1000, latestVersion: \"1.108.0\" };\n await writeFile(versionCheckPath, JSON.stringify(state), \"utf-8\");\n\n const result = await warnIfOutdatedVersion(\"1.108.0\");\n assert.isFalse(result);\n });\n it(\"should warn when time expired on outdated version\", async function () {\n const state = {\n lastCheck: Date.now() - 1000 * 60 * 60 * 24 - 100,\n latestVersion: \"1.0.0\",\n };\n await writeFile(versionCheckPath, JSON.stringify(state), \"utf-8\");\n\n const result = await warnIfOutdatedVersion(\"1.0.0\");\n assert.isTrue(result);\n assert.equal(mockAgent.pendingInterceptors.length, 0);\n });\n it(\"should handle invalid state\", async function () {\n await writeFile(versionCheckPath, \"hello\", \"utf-8\");\n\n const result = await warnIfOutdatedVersion(\"0.0.1\");\n assert.isTrue(result);\n assert.equal(mockAgent.pendingInterceptors.length, 0);\n });\n});\n"]}
1
+ {"version":3,"file":"outdated.test.js","sourceRoot":"","sources":["../../src/__tests__/outdated.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { rm, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { beforeEach, describe, it } from \"node:test\";\nimport { assert } from \"chai\";\nimport { MockAgent, setGlobalDispatcher } from \"undici\";\nimport { ZUPLO_VERSION_CHECK_FILE } from \"../common/constants.js\";\nimport { warnIfOutdatedVersion } from \"../common/outdated.js\";\nimport { ZUPLO_XDG_STATE_HOME } from \"../common/xdg/lib.js\";\n\nconst versionCheckPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_VERSION_CHECK_FILE);\n\nprocess.env.ZUPLO_OVERRIDE_CI_TO_TEST = \"true\";\n\ndescribe(\"Outdated CLI check\", function () {\n let mockAgent: MockAgent;\n\n beforeEach(() => {\n mockAgent = new MockAgent();\n mockAgent.disableNetConnect();\n mockAgent\n .get(\"https://registry.npmjs.org\")\n .intercept({\n path: \"/@zuplo/cli/latest\",\n method: \"GET\",\n })\n .reply(200, {\n name: \"@zuplo/cli\",\n version: \"1.109.0\",\n });\n\n setGlobalDispatcher(mockAgent);\n });\n\n it(\"should warn on outdated version\", async function () {\n await rm(versionCheckPath, { recursive: true, force: true });\n\n const result = await warnIfOutdatedVersion(\"1.0.0\");\n assert.isTrue(result);\n assert.equal(mockAgent.pendingInterceptors.length, 0);\n });\n it(\"should not warn if current version\", async function () {\n const result = await warnIfOutdatedVersion(\"1.109.0\");\n assert.isFalse(result);\n });\n it(\"should not warn if still has cached result\", async function () {\n // Set the cache to still be valid, so even though the version is outdated\n // we dont return a warning since we dont fetch the latest version\n const state = { lastCheck: Date.now() - 1000, latestVersion: \"1.108.0\" };\n await writeFile(versionCheckPath, JSON.stringify(state), \"utf-8\");\n\n const result = await warnIfOutdatedVersion(\"1.108.0\");\n assert.isFalse(result);\n });\n it(\"should warn when time expired on outdated version\", async function () {\n const state = {\n lastCheck: Date.now() - 1000 * 60 * 60 * 24 - 100,\n latestVersion: \"1.0.0\",\n };\n await writeFile(versionCheckPath, JSON.stringify(state), \"utf-8\");\n\n const result = await warnIfOutdatedVersion(\"1.0.0\");\n assert.isTrue(result);\n assert.equal(mockAgent.pendingInterceptors.length, 0);\n });\n it(\"should handle invalid state\", async function () {\n await writeFile(versionCheckPath, \"hello\", \"utf-8\");\n\n const result = await warnIfOutdatedVersion(\"0.0.1\");\n assert.isTrue(result);\n assert.equal(mockAgent.pendingInterceptors.length, 0);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/cmds/open-api/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAOV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAiEf,OAAO;;AApE/B,wBAwEE"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/cmds/open-api/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAOV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBA6Df,OAAO;;AAhE/B,wBAoEE"}
@@ -4,19 +4,15 @@ import { captureEvent } from "../../common/analytics/lib.js";
4
4
  import { convertOpenAPI } from "../../open-api/convert/handler.js";
5
5
  export default {
6
6
  desc: "Convert OpenAPI files between JSON and YAML formats",
7
- command: "convert [input]",
7
+ command: "convert",
8
8
  builder: (yargs) => {
9
9
  return yargs
10
- .positional("input", {
11
- type: "string",
12
- describe: "The input OpenAPI file (JSON or YAML)",
13
- normalize: true,
14
- })
15
10
  .option("input", {
16
11
  type: "string",
17
12
  alias: "i",
18
13
  describe: "The input OpenAPI file (JSON or YAML)",
19
14
  normalize: true,
15
+ demandOption: true,
20
16
  })
21
17
  .option("format", {
22
18
  type: "string",
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/cmds/open-api/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAa,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE9E,eAAe;IACb,IAAI,EAAE,qDAAqD;IAC3D,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,UAAU,CAAC,OAAO,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uCAAuC;YACjD,SAAS,EAAE,IAAI;SAChB,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,uCAAuC;YACjD,SAAS,EAAE,IAAI;SAChB,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SAC1B,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wBAAwB;YAClC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;SAC9B,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wBAAwB;YAClC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;SAC9B,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EACN,+DAA+D;YACjE,SAAS,EAAE,IAAI;SAChB,CAAC;aACD,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC;YAGD,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,iCAAiC,GAAG,iCAAiC,CACtE,CAAC;YACJ,CAAC;YAGD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAe,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;YAGD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACzD,MAAM,cAAc,CAAC,IAAiB,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { Arguments, convertOpenAPI } from \"../../open-api/convert/handler.js\";\n\nexport default {\n desc: \"Convert OpenAPI files between JSON and YAML formats\",\n command: \"convert [input]\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .positional(\"input\", {\n type: \"string\",\n describe: \"The input OpenAPI file (JSON or YAML)\",\n normalize: true,\n })\n .option(\"input\", {\n type: \"string\",\n alias: \"i\",\n describe: \"The input OpenAPI file (JSON or YAML)\",\n normalize: true,\n })\n .option(\"format\", {\n type: \"string\",\n alias: \"f\",\n describe: \"Output format\",\n choices: [\"json\", \"yaml\"],\n })\n .option(\"json\", {\n type: \"boolean\",\n describe: \"Convert to JSON format\",\n conflicts: [\"yaml\", \"format\"],\n })\n .option(\"yaml\", {\n type: \"boolean\",\n describe: \"Convert to YAML format\",\n conflicts: [\"json\", \"format\"],\n })\n .option(\"output\", {\n type: \"string\",\n alias: \"o\",\n describe:\n \"Output file path (if not specified, generates based on input)\",\n normalize: true,\n })\n .check((argv) => {\n if (!argv.input) {\n throw new Error(\"Input file is required\");\n }\n\n // Validate file extension\n const validExtensions = [\".json\", \".yaml\", \".yml\"];\n const ext = path.extname(argv.input as string).toLowerCase();\n if (!validExtensions.includes(ext)) {\n throw new Error(\n `Invalid input file extension: ${ext}. Must be .json, .yaml, or .yml`\n );\n }\n\n // Validate input file exists\n if (!fs.existsSync(argv.input as string)) {\n throw new Error(`Input file not found: ${argv.input}`);\n }\n\n // Validate output format is specified\n if (!argv.format && !argv.json && !argv.yaml) {\n throw new Error(\n \"Output format must be specified using --format, --json, or --yaml\"\n );\n }\n\n return true;\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo oas convert\" });\n await convertOpenAPI(argv as Arguments);\n },\n};\n"]}
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/cmds/open-api/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAa,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE9E,eAAe;IACb,IAAI,EAAE,qDAAqD;IAC3D,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,uCAAuC;YACjD,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;SACnB,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SAC1B,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wBAAwB;YAClC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;SAC9B,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wBAAwB;YAClC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;SAC9B,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EACN,+DAA+D;YACjE,SAAS,EAAE,IAAI;SAChB,CAAC;aACD,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC;YAGD,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,iCAAiC,GAAG,iCAAiC,CACtE,CAAC;YACJ,CAAC;YAGD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAe,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;YAGD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACzD,MAAM,cAAc,CAAC,IAAiB,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { Arguments, convertOpenAPI } from \"../../open-api/convert/handler.js\";\n\nexport default {\n desc: \"Convert OpenAPI files between JSON and YAML formats\",\n command: \"convert\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"input\", {\n type: \"string\",\n alias: \"i\",\n describe: \"The input OpenAPI file (JSON or YAML)\",\n normalize: true,\n demandOption: true,\n })\n .option(\"format\", {\n type: \"string\",\n alias: \"f\",\n describe: \"Output format\",\n choices: [\"json\", \"yaml\"],\n })\n .option(\"json\", {\n type: \"boolean\",\n describe: \"Convert to JSON format\",\n conflicts: [\"yaml\", \"format\"],\n })\n .option(\"yaml\", {\n type: \"boolean\",\n describe: \"Convert to YAML format\",\n conflicts: [\"json\", \"format\"],\n })\n .option(\"output\", {\n type: \"string\",\n alias: \"o\",\n describe:\n \"Output file path (if not specified, generates based on input)\",\n normalize: true,\n })\n .check((argv) => {\n if (!argv.input) {\n throw new Error(\"Input file is required\");\n }\n\n // Validate file extension\n const validExtensions = [\".json\", \".yaml\", \".yml\"];\n const ext = path.extname(argv.input as string).toLowerCase();\n if (!validExtensions.includes(ext)) {\n throw new Error(\n `Invalid input file extension: ${ext}. Must be .json, .yaml, or .yml`\n );\n }\n\n // Validate input file exists\n if (!fs.existsSync(argv.input as string)) {\n throw new Error(`Input file not found: ${argv.input}`);\n }\n\n // Validate output format is specified\n if (!argv.format && !argv.json && !argv.yaml) {\n throw new Error(\n \"Output format must be specified using --format, --json, or --yaml\"\n );\n }\n\n return true;\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo oas convert\" });\n await convertOpenAPI(argv as Arguments);\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/cmds/open-api/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAOV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBA8Cf,OAAO;;AAjD/B,wBAqDE"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/cmds/open-api/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAOV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAwCf,OAAO;;AA3C/B,wBA+CE"}
@@ -2,25 +2,19 @@ import { captureEvent } from "../../common/analytics/lib.js";
2
2
  import { importOpenApi } from "../../open-api/merge/handler.js";
3
3
  export default {
4
4
  desc: "Merge an OpenAPI file into your Zuplo project",
5
- command: "merge [source] [destination]",
5
+ command: "merge",
6
6
  builder: (yargs) => {
7
7
  return yargs
8
- .positional("source", {
9
- type: "string",
10
- describe: "The OpenAPI file to merge (file path or URL)",
11
- })
12
- .positional("destination", {
13
- type: "string",
14
- describe: "The destination file name (must end with .oas.json)",
15
- })
16
8
  .option("source", {
17
9
  type: "string",
18
10
  alias: "s",
11
+ demandOption: true,
19
12
  describe: "The OpenAPI file to merge (file path or URL)",
20
13
  })
21
14
  .option("destination", {
22
15
  type: "string",
23
16
  alias: "d",
17
+ default: "./config/routes.oas.json",
24
18
  describe: "The destination file name (must end with .oas.json)",
25
19
  })
26
20
  .option("merge-mode", {
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/cmds/open-api/merge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAa,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAE3E,eAAe;IACb,IAAI,EAAE,+CAA+C;IACrD,OAAO,EAAE,8BAA8B;IACvC,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,UAAU,CAAC,QAAQ,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,8CAA8C;SACzD,CAAC;aACD,UAAU,CAAC,aAAa,EAAE;YACzB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,qDAAqD;SAChE,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,8CAA8C;SACzD,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,qDAAqD;SAChE,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,qDAAqD;YAC/D,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACxC,OAAO,EAAE,aAAa;SACvB,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wCAAwC;YAClD,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI;SACb,CAAC;aACD,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACvD,MAAM,aAAa,CAAC,IAAiB,CAAC,CAAC;IACzC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { Arguments, importOpenApi } from \"../../open-api/merge/handler.js\";\n\nexport default {\n desc: \"Merge an OpenAPI file into your Zuplo project\",\n command: \"merge [source] [destination]\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .positional(\"source\", {\n type: \"string\",\n describe: \"The OpenAPI file to merge (file path or URL)\",\n })\n .positional(\"destination\", {\n type: \"string\",\n describe: \"The destination file name (must end with .oas.json)\",\n })\n .option(\"source\", {\n type: \"string\",\n alias: \"s\",\n describe: \"The OpenAPI file to merge (file path or URL)\",\n })\n .option(\"destination\", {\n type: \"string\",\n alias: \"d\",\n describe: \"The destination file name (must end with .oas.json)\",\n })\n .option(\"merge-mode\", {\n type: \"string\",\n alias: \"m\",\n describe: \"The merge mode to use when merging the OpenAPI file\",\n choices: [\"path-method\", \"operation-id\"],\n default: \"path-method\",\n })\n .option(\"prompt\", {\n type: \"boolean\",\n describe: \"Prompt for confirmation before merging\",\n default: false,\n hidden: true,\n })\n .check((argv) => {\n if (!argv.source) {\n throw new Error(\"Source is required\");\n }\n if (!argv.destination) {\n throw new Error(\"Destination is required\");\n }\n if (!argv.destination.endsWith(\".oas.json\")) {\n throw new Error(\"Destination file name must end with '.oas.json'\");\n }\n return true;\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo oas merge\" });\n await importOpenApi(argv as Arguments);\n },\n};\n"]}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/cmds/open-api/merge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAa,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAE3E,eAAe;IACb,IAAI,EAAE,+CAA+C;IACrD,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,8CAA8C;SACzD,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,0BAA0B;YACnC,QAAQ,EAAE,qDAAqD;SAChE,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,qDAAqD;YAC/D,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACxC,OAAO,EAAE,aAAa;SACvB,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wCAAwC;YAClD,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI;SACb,CAAC;aACD,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACvD,MAAM,aAAa,CAAC,IAAiB,CAAC,CAAC;IACzC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { Arguments, importOpenApi } from \"../../open-api/merge/handler.js\";\n\nexport default {\n desc: \"Merge an OpenAPI file into your Zuplo project\",\n command: \"merge\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"source\", {\n type: \"string\",\n alias: \"s\",\n demandOption: true,\n describe: \"The OpenAPI file to merge (file path or URL)\",\n })\n .option(\"destination\", {\n type: \"string\",\n alias: \"d\",\n default: \"./config/routes.oas.json\",\n describe: \"The destination file name (must end with .oas.json)\",\n })\n .option(\"merge-mode\", {\n type: \"string\",\n alias: \"m\",\n describe: \"The merge mode to use when merging the OpenAPI file\",\n choices: [\"path-method\", \"operation-id\"],\n default: \"path-method\",\n })\n .option(\"prompt\", {\n type: \"boolean\",\n describe: \"Prompt for confirmation before merging\",\n default: false,\n hidden: true,\n })\n .check((argv) => {\n if (!argv.source) {\n throw new Error(\"Source is required\");\n }\n if (!argv.destination) {\n throw new Error(\"Destination is required\");\n }\n if (!argv.destination.endsWith(\".oas.json\")) {\n throw new Error(\"Destination file name must end with '.oas.json'\");\n }\n return true;\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo oas merge\" });\n await importOpenApi(argv as Arguments);\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/cmds/open-api/overlay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAOV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAsFf,OAAO;;AAzF/B,wBA6FE"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/cmds/open-api/overlay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAOV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBA0Ef,OAAO;;AA7E/B,wBAiFE"}
@@ -4,41 +4,29 @@ import { captureEvent } from "../../common/analytics/lib.js";
4
4
  import { applyOverlay } from "../../open-api/overlay/handler.js";
5
5
  export default {
6
6
  desc: "Apply an OpenAPI Overlay to an OpenAPI document",
7
- command: "overlay [input] [overlay] [output]",
7
+ command: "overlay",
8
8
  builder: (yargs) => {
9
9
  return yargs
10
- .positional("input", {
11
- type: "string",
12
- describe: "The input OpenAPI file",
13
- normalize: true,
14
- })
15
- .positional("overlay", {
16
- type: "string",
17
- describe: "The overlay file",
18
- normalize: true,
19
- })
20
- .positional("output", {
21
- type: "string",
22
- describe: "The output OpenAPI file path",
23
- normalize: true,
24
- })
25
10
  .option("input", {
26
11
  type: "string",
27
12
  alias: "i",
28
13
  describe: "The input OpenAPI file",
29
14
  normalize: true,
15
+ demandOption: true,
30
16
  })
31
17
  .option("overlay", {
32
18
  type: "string",
33
19
  alias: "v",
34
20
  describe: "The overlay file",
35
21
  normalize: true,
22
+ demandOption: true,
36
23
  })
37
24
  .option("output", {
38
25
  type: "string",
39
26
  alias: "o",
40
27
  describe: "The output OpenAPI file path",
41
28
  normalize: true,
29
+ demandOption: true,
42
30
  })
43
31
  .option("format", {
44
32
  type: "string",
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/cmds/open-api/overlay.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { Arguments, applyOverlay } from \"../../open-api/overlay/handler.js\";\n\nexport default {\n desc: \"Apply an OpenAPI Overlay to an OpenAPI document\",\n command: \"overlay [input] [overlay] [output]\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .positional(\"input\", {\n type: \"string\",\n describe: \"The input OpenAPI file\",\n normalize: true,\n })\n .positional(\"overlay\", {\n type: \"string\",\n describe: \"The overlay file\",\n normalize: true,\n })\n .positional(\"output\", {\n type: \"string\",\n describe: \"The output OpenAPI file path\",\n normalize: true,\n })\n .option(\"input\", {\n type: \"string\",\n alias: \"i\",\n describe: \"The input OpenAPI file\",\n normalize: true,\n })\n .option(\"overlay\", {\n type: \"string\",\n alias: \"v\",\n describe: \"The overlay file\",\n normalize: true,\n })\n .option(\"output\", {\n type: \"string\",\n alias: \"o\",\n describe: \"The output OpenAPI file path\",\n normalize: true,\n })\n .option(\"format\", {\n type: \"string\",\n alias: \"f\",\n describe: \"Output format\",\n choices: [\"json\", \"yaml\"],\n })\n .option(\"json\", {\n type: \"boolean\",\n describe: \"Output in JSON format\",\n conflicts: [\"yaml\", \"format\"],\n })\n .option(\"yaml\", {\n type: \"boolean\",\n describe: \"Output in YAML format\",\n conflicts: [\"json\", \"format\"],\n })\n .check((argv) => {\n if (!argv.input || !argv.overlay || !argv.output) {\n throw new Error(\n \"All three arguments are required: input, overlay, and output\"\n );\n }\n\n // Validate output file has an extension for format detection\n const outputExt = path.extname(argv.output as string).toLowerCase();\n const validExtensions = [\".json\", \".yaml\", \".yml\"];\n\n // Only require extension if format not explicitly specified\n if (\n !argv.format &&\n !argv.json &&\n !argv.yaml &&\n !validExtensions.includes(outputExt)\n ) {\n throw new Error(\n `Output file must have a .json, .yaml, or .yml extension, or specify output format with --format, --json, or --yaml`\n );\n }\n\n // Validate input files exist\n if (!fs.existsSync(argv.input as string)) {\n throw new Error(`Input file not found: ${argv.input}`);\n }\n\n if (!fs.existsSync(argv.overlay as string)) {\n throw new Error(`Overlay file not found: ${argv.overlay}`);\n }\n\n return true;\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo oas overlay\" });\n await applyOverlay(argv as Arguments);\n },\n};\n"]}
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/cmds/open-api/overlay.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { Arguments, applyOverlay } from \"../../open-api/overlay/handler.js\";\n\nexport default {\n desc: \"Apply an OpenAPI Overlay to an OpenAPI document\",\n command: \"overlay\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"input\", {\n type: \"string\",\n alias: \"i\",\n describe: \"The input OpenAPI file\",\n normalize: true,\n demandOption: true,\n })\n .option(\"overlay\", {\n type: \"string\",\n alias: \"v\",\n describe: \"The overlay file\",\n normalize: true,\n demandOption: true,\n })\n .option(\"output\", {\n type: \"string\",\n alias: \"o\",\n describe: \"The output OpenAPI file path\",\n normalize: true,\n demandOption: true,\n })\n .option(\"format\", {\n type: \"string\",\n alias: \"f\",\n describe: \"Output format\",\n choices: [\"json\", \"yaml\"],\n })\n .option(\"json\", {\n type: \"boolean\",\n describe: \"Output in JSON format\",\n conflicts: [\"yaml\", \"format\"],\n })\n .option(\"yaml\", {\n type: \"boolean\",\n describe: \"Output in YAML format\",\n conflicts: [\"json\", \"format\"],\n })\n .check((argv) => {\n if (!argv.input || !argv.overlay || !argv.output) {\n throw new Error(\n \"All three arguments are required: input, overlay, and output\"\n );\n }\n\n // Validate output file has an extension for format detection\n const outputExt = path.extname(argv.output as string).toLowerCase();\n const validExtensions = [\".json\", \".yaml\", \".yml\"];\n\n // Only require extension if format not explicitly specified\n if (\n !argv.format &&\n !argv.json &&\n !argv.yaml &&\n !validExtensions.includes(outputExt)\n ) {\n throw new Error(\n `Output file must have a .json, .yaml, or .yml extension, or specify output format with --format, --json, or --yaml`\n );\n }\n\n // Validate input files exist\n if (!fs.existsSync(argv.input as string)) {\n throw new Error(`Input file not found: ${argv.input}`);\n }\n\n if (!fs.existsSync(argv.overlay as string)) {\n throw new Error(`Overlay file not found: ${argv.overlay}`);\n }\n\n return true;\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo oas overlay\" });\n await applyOverlay(argv as Arguments);\n },\n};\n"]}
@@ -31,9 +31,9 @@ ${chalk.gray("Older versions are unsupported and may not work as expected.")}`))
31
31
  return shouldWarn;
32
32
  }
33
33
  async function getLatestVersion() {
34
- const response = await fetch("https://raw.githubusercontent.com/zuplo/zuplo/main/packages/zuplo/package.json");
34
+ const response = await fetch("https://registry.npmjs.org/@zuplo/cli/latest");
35
35
  const result = await response.json();
36
- return result.dependencies["@zuplo/cli"];
36
+ return result.version;
37
37
  }
38
38
  async function getVersionCheckInfo() {
39
39
  if (!existsSync(ZUPLO_XDG_STATE_HOME)) {
@@ -1 +1 @@
1
- {"version":3,"file":"outdated.js","sourceRoot":"","sources":["../../src/common/outdated.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { gt, inc, lt } from \"semver\";\nimport { ZUPLO_VERSION_CHECK_FILE } from \"./constants.js\";\nimport { printWarningToConsole } from \"./output.js\";\nimport box from \"./utils/box.js\";\nimport { ZUPLO_XDG_STATE_HOME } from \"./xdg/lib.js\";\n\ninterface VersionCheckInfo {\n lastCheck: number;\n latestVersion: string;\n}\nexport async function warnNodeVersion(\n currentCliVersion: string,\n desiredNodeVersion: string\n) {\n const currentNodeVersion = process.versions.node;\n if (lt(currentNodeVersion, desiredNodeVersion)) {\n const nextMajorCliVersion = inc(currentCliVersion, \"major\");\n printWarningToConsole(\n box(\n `You are using Node.js ${currentNodeVersion}. The recommended version for the @zuplo/cli is ${nextMajorCliVersion} or greater.\n Some features might not work as expected. Please update your Node.js version as soon as possible.`\n )\n );\n }\n}\n\nexport async function warnIfOutdatedVersion(currentVersion: string) {\n // Print update information, if available\n if (\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n !process.env.ZUPLO_OVERRIDE_CI_TO_TEST &&\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n (process.env.CI || process.env.ZUPLO_DISABLE_UPDATE_CHECK)\n ) {\n return false;\n }\n const versionCheckInfo = await getVersionCheckInfo();\n const shouldWarn = gt(versionCheckInfo.latestVersion, currentVersion);\n\n if (shouldWarn) {\n printWarningToConsole(\n box(\n `Update available! ${chalk.gray(`v${currentVersion}`)} ≫ ${chalk.green(\n `v${versionCheckInfo.latestVersion}`\n )}\nRun ${chalk.cyan(\"npm install zuplo@latest\")} to update.\n\n${chalk.gray(\"Older versions are unsupported and may not work as expected.\")}`\n )\n );\n }\n\n return shouldWarn;\n}\n\nasync function getLatestVersion(): Promise<string> {\n const response = await fetch(\n \"https://raw.githubusercontent.com/zuplo/zuplo/main/packages/zuplo/package.json\"\n );\n const result = await response.json();\n\n return result.dependencies[\"@zuplo/cli\"];\n}\n\nasync function getVersionCheckInfo(): Promise<VersionCheckInfo> {\n if (!existsSync(ZUPLO_XDG_STATE_HOME)) {\n mkdirSync(ZUPLO_XDG_STATE_HOME, { recursive: true });\n }\n const versionCheckPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_VERSION_CHECK_FILE);\n\n let versionCheckInfo: VersionCheckInfo | undefined;\n if (existsSync(versionCheckPath)) {\n try {\n versionCheckInfo = await readFile(versionCheckPath, \"utf-8\").then(\n JSON.parse\n );\n } catch {\n // Error reading or parsing file, ignore it\n }\n\n // Check if the file is valid, if not ignore it\n if (versionCheckInfo) {\n if (\n typeof versionCheckInfo.lastCheck !== \"number\" ||\n typeof versionCheckInfo.latestVersion !== \"string\"\n ) {\n versionCheckInfo = undefined;\n }\n }\n }\n\n let shouldCheck = true;\n if (versionCheckInfo) {\n const now = Date.now();\n const lastCheck = versionCheckInfo.lastCheck;\n if (now - lastCheck < 1000 * 60 * 60 * 24) {\n shouldCheck = false;\n }\n }\n\n if (!versionCheckInfo || shouldCheck) {\n const latestVersion = await getLatestVersion();\n\n versionCheckInfo = {\n lastCheck: Date.now(),\n latestVersion,\n };\n await writeFile(\n versionCheckPath,\n JSON.stringify(versionCheckInfo),\n \"utf-8\"\n );\n }\n\n return versionCheckInfo;\n}\n"]}
1
+ {"version":3,"file":"outdated.js","sourceRoot":"","sources":["../../src/common/outdated.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { gt, inc, lt } from \"semver\";\nimport { ZUPLO_VERSION_CHECK_FILE } from \"./constants.js\";\nimport { printWarningToConsole } from \"./output.js\";\nimport box from \"./utils/box.js\";\nimport { ZUPLO_XDG_STATE_HOME } from \"./xdg/lib.js\";\n\ninterface VersionCheckInfo {\n lastCheck: number;\n latestVersion: string;\n}\nexport async function warnNodeVersion(\n currentCliVersion: string,\n desiredNodeVersion: string\n) {\n const currentNodeVersion = process.versions.node;\n if (lt(currentNodeVersion, desiredNodeVersion)) {\n const nextMajorCliVersion = inc(currentCliVersion, \"major\");\n printWarningToConsole(\n box(\n `You are using Node.js ${currentNodeVersion}. The recommended version for the @zuplo/cli is ${nextMajorCliVersion} or greater.\n Some features might not work as expected. Please update your Node.js version as soon as possible.`\n )\n );\n }\n}\n\nexport async function warnIfOutdatedVersion(currentVersion: string) {\n // Print update information, if available\n if (\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n !process.env.ZUPLO_OVERRIDE_CI_TO_TEST &&\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n (process.env.CI || process.env.ZUPLO_DISABLE_UPDATE_CHECK)\n ) {\n return false;\n }\n const versionCheckInfo = await getVersionCheckInfo();\n const shouldWarn = gt(versionCheckInfo.latestVersion, currentVersion);\n\n if (shouldWarn) {\n printWarningToConsole(\n box(\n `Update available! ${chalk.gray(`v${currentVersion}`)} ≫ ${chalk.green(\n `v${versionCheckInfo.latestVersion}`\n )}\nRun ${chalk.cyan(\"npm install zuplo@latest\")} to update.\n\n${chalk.gray(\"Older versions are unsupported and may not work as expected.\")}`\n )\n );\n }\n\n return shouldWarn;\n}\n\nasync function getLatestVersion(): Promise<string> {\n const response = await fetch(\"https://registry.npmjs.org/@zuplo/cli/latest\");\n const result = await response.json();\n\n return result.version;\n}\n\nasync function getVersionCheckInfo(): Promise<VersionCheckInfo> {\n if (!existsSync(ZUPLO_XDG_STATE_HOME)) {\n mkdirSync(ZUPLO_XDG_STATE_HOME, { recursive: true });\n }\n const versionCheckPath = join(ZUPLO_XDG_STATE_HOME, ZUPLO_VERSION_CHECK_FILE);\n\n let versionCheckInfo: VersionCheckInfo | undefined;\n if (existsSync(versionCheckPath)) {\n try {\n versionCheckInfo = await readFile(versionCheckPath, \"utf-8\").then(\n JSON.parse\n );\n } catch {\n // Error reading or parsing file, ignore it\n }\n\n // Check if the file is valid, if not ignore it\n if (versionCheckInfo) {\n if (\n typeof versionCheckInfo.lastCheck !== \"number\" ||\n typeof versionCheckInfo.latestVersion !== \"string\"\n ) {\n versionCheckInfo = undefined;\n }\n }\n }\n\n let shouldCheck = true;\n if (versionCheckInfo) {\n const now = Date.now();\n const lastCheck = versionCheckInfo.lastCheck;\n if (now - lastCheck < 1000 * 60 * 60 * 24) {\n shouldCheck = false;\n }\n }\n\n if (!versionCheckInfo || shouldCheck) {\n const latestVersion = await getLatestVersion();\n\n versionCheckInfo = {\n lastCheck: Date.now(),\n latestVersion,\n };\n await writeFile(\n versionCheckPath,\n JSON.stringify(versionCheckInfo),\n \"utf-8\"\n );\n }\n\n return versionCheckInfo;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zuplo/cli",
3
- "version": "6.63.1",
3
+ "version": "6.63.2",
4
4
  "repository": "https://github.com/zuplo/zuplo",
5
5
  "author": "Zuplo, Inc.",
6
6
  "type": "module",
@@ -29,10 +29,10 @@
29
29
  "@opentelemetry/api": "1.9.0",
30
30
  "@sentry/node": "9.22.0",
31
31
  "@swc/core": "1.10.18",
32
- "@zuplo/core": "6.63.1",
32
+ "@zuplo/core": "6.63.2",
33
33
  "@zuplo/editor": "~1.0.0",
34
- "@zuplo/openapi-tools": "6.63.1",
35
- "@zuplo/runtime": "6.63.1",
34
+ "@zuplo/openapi-tools": "6.63.2",
35
+ "@zuplo/runtime": "6.63.2",
36
36
  "as-table": "1.0.55",
37
37
  "chalk": "5.4.1",
38
38
  "chokidar": "3.5.3",