@zuplo/cli 6.52.3 → 6.52.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/cmds/project/import-openapi.d.ts.map +1 -1
- package/dist/cmds/project/import-openapi.js +6 -1
- package/dist/cmds/project/import-openapi.js.map +1 -1
- package/dist/cmds/project/index.js +1 -1
- package/dist/cmds/project/index.js.map +1 -1
- package/dist/cmds/project/update.d.ts.map +1 -1
- package/dist/cmds/project/update.js +3 -2
- package/dist/cmds/project/update.js.map +1 -1
- package/dist/cmds/source/import-openapi.d.ts +9 -0
- package/dist/cmds/source/import-openapi.d.ts.map +1 -0
- package/dist/cmds/source/import-openapi.js +37 -0
- package/dist/cmds/source/import-openapi.js.map +1 -0
- package/dist/cmds/source/index.d.ts +4 -0
- package/dist/cmds/source/index.d.ts.map +1 -0
- package/dist/cmds/source/index.js +13 -0
- package/dist/cmds/source/index.js.map +1 -0
- package/dist/cmds/source/upgrade.d.ts +9 -0
- package/dist/cmds/source/upgrade.d.ts.map +1 -0
- package/dist/cmds/source/upgrade.js +29 -0
- package/dist/cmds/source/upgrade.js.map +1 -0
- package/dist/common/builders/authenticated-command-builder.d.ts +18 -0
- package/dist/common/builders/authenticated-command-builder.d.ts.map +1 -0
- package/dist/common/builders/authenticated-command-builder.js +87 -0
- package/dist/common/builders/authenticated-command-builder.js.map +1 -0
- package/dist/common/builders/authenticated-command-builder.spec.d.ts +2 -0
- package/dist/common/builders/authenticated-command-builder.spec.d.ts.map +1 -0
- package/dist/common/builders/authenticated-command-builder.spec.js +268 -0
- package/dist/common/builders/authenticated-command-builder.spec.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
package/dist/cli.js
CHANGED
|
@@ -20,6 +20,7 @@ import link from "./cmds/link.js";
|
|
|
20
20
|
import list from "./cmds/list.js";
|
|
21
21
|
import login from "./cmds/login.js";
|
|
22
22
|
import project from "./cmds/project/index.js";
|
|
23
|
+
import source from "./cmds/source/index.js";
|
|
23
24
|
import test from "./cmds/test.js";
|
|
24
25
|
import tunnel from "./cmds/tunnel/index.js";
|
|
25
26
|
import variable from "./cmds/variable/index.js";
|
|
@@ -90,6 +91,7 @@ if (gte(process.versions.node, MIN_NODE_VERSION)) {
|
|
|
90
91
|
.command(login)
|
|
91
92
|
.command(test)
|
|
92
93
|
.command(project)
|
|
94
|
+
.command(source)
|
|
93
95
|
.command(tunnel)
|
|
94
96
|
.command(variable)
|
|
95
97
|
.command(build)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dotenv from \"dotenv\";\ndotenv.config();\n\n// Undici must be imported first to set the global dispatcher\n// If fetch is used before undici, the process will crash\n// eslint-disable-next-line import/no-duplicates\nimport undici from \"undici\";\n\nimport { readFileSync } from \"node:fs\";\nimport os from \"node:os\";\nimport { fileURLToPath } from \"node:url\";\nimport { confirm } from \"@inquirer/prompts\";\nimport * as Sentry from \"@sentry/node\";\nimport { gte } from \"semver\";\nimport { hideBin } from \"yargs/helpers\";\nimport yargs from \"yargs/yargs\";\nimport build from \"./cmds/build.js\";\nimport compile from \"./cmds/compile.js\";\nimport convert from \"./cmds/convert.js\";\nimport deleteZup from \"./cmds/delete.js\";\nimport deploy from \"./cmds/deploy.js\";\nimport dev from \"./cmds/dev.js\";\nimport editor from \"./cmds/editor.js\";\nimport link from \"./cmds/link.js\";\nimport list from \"./cmds/list.js\";\nimport login from \"./cmds/login.js\";\nimport project from \"./cmds/project/index.js\";\nimport test from \"./cmds/test.js\";\nimport tunnel from \"./cmds/tunnel/index.js\";\nimport variable from \"./cmds/variable/index.js\";\nimport { shutdownAnalytics } from \"./common/analytics/lib.js\";\nimport { MAX_WAIT_PENDING_TIME_MS, SENTRY_DSN } from \"./common/constants.js\";\nimport { logger } from \"./common/logger.js\";\nimport { warnIfOutdatedVersion, warnNodeVersion } from \"./common/outdated.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printWarningToConsole,\n} from \"./common/output.js\";\nimport { logLevel } from \"./common/middleware/logging.js\";\n\n// This allows us to stop the CLI from executing so we can connect the profiler\n// eslint-disable-next-line node/no-process-env\nif (process.env.ZUPLO_CLI_PROFILING) {\n await confirm({ message: \"Continue executing CLI?\", default: true });\n}\n\n// Note: We cannot set this to be higher than 18.0.0 because of the way\n// our documentation works -- we tell them to use npx @zuplo/cli@latest (even in CI/CD jobs)\n// If we set this to be higher than 18.0.0, then we will break them.\n// Instead we set the value in package.json to be engine.node >= 20.0.0, so it will warn\nconst MIN_NODE_VERSION = \"18.0.0\";\nconst RECOMMENDED_NODE_VERSION = \"20.0.0\";\n\nif (gte(process.versions.node, MIN_NODE_VERSION)) {\n let cliVersion: string;\n try {\n const packageJson = JSON.parse(\n readFileSync(\n fileURLToPath(new URL(\"../package.json\", import.meta.url)),\n \"utf-8\"\n )\n );\n cliVersion = packageJson.version;\n } catch (e) {\n cliVersion = \"0.0.0\";\n logger.error(e);\n await printCriticalFailureToConsoleAndExit(\n `Unable to load @zuplo/cli. The package.json is missing or malformed.`\n );\n }\n\n await warnNodeVersion(cliVersion, RECOMMENDED_NODE_VERSION);\n\n if (os.platform() === \"win32\") {\n printWarningToConsole(\n \"Running the Zuplo CLI on Windows is currently in beta. Please report any issues to support@zuplo.com.\"\n );\n }\n\n undici.setGlobalDispatcher(\n undici.getGlobalDispatcher().compose((dispatch) => {\n return (opts, handler) => {\n opts.headers = {\n ...opts.headers,\n \"user-agent\": `ZuploCLI/${cliVersion}`,\n // eslint-disable-next-line node/no-process-env\n ...(process.env.ZUPLO_CANARY ? { \"zp-canary\": \"true\" } : {}),\n };\n return dispatch(opts, handler);\n };\n })\n );\n\n Sentry.init({\n dsn: SENTRY_DSN,\n release: cliVersion,\n });\n\n const cli = yargs(hideBin(process.argv))\n // This means that all env vars will have to be prefixed with ZUPLO_\n .env(\"ZUPLO\")\n .option(\"prompt\", {\n type: \"boolean\",\n describe: \"Bypass confirmation prompts\",\n default: true,\n hidden: true,\n })\n .option(\"verbose\", {\n alias: \"v\",\n type: \"count\",\n describe: \"Increase verbosity level (-v, -vv, -vvv)\",\n default: 0,\n hidden: true,\n })\n .middleware(logLevel)\n .command(compile)\n .command(convert)\n .command(deleteZup) // delete is a reserved keyword in JavaScript, so we call this function deleteZup\n .command(deploy)\n .command(dev)\n .command(editor)\n .command(list)\n .command(link)\n .command(login)\n .command(test)\n .command(project)\n .command(tunnel)\n .command(variable)\n .command(build)\n .command({\n command: \"hello\",\n handler: async () => {\n await fetch(\"https://393b4699ced44cc2ae87e4ad86184a29.api.mockbin.io/\");\n },\n })\n .demandCommand()\n .strictCommands()\n .version(cliVersion)\n .fail(false)\n .help();\n\n try {\n await cli.argv;\n\n // Don't block\n void warnIfOutdatedVersion(cliVersion);\n\n void Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n } catch (err) {\n if (err instanceof Error) {\n Sentry.captureException(err);\n }\n await printCriticalFailureToConsoleAndExit(err.message ?? err);\n cli.showHelp();\n } finally {\n await shutdownAnalytics();\n }\n} else {\n await printCriticalFailureToConsoleAndExit(\n `The Zuplo CLI requires at least node.js v${MIN_NODE_VERSION}. You are using v${process.versions.node}. Please update your version of node.js.\n\n Consider using a Node.js version manager such as https://github.com/nvm-sh/nvm.`\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dotenv from \"dotenv\";\ndotenv.config();\n\n// Undici must be imported first to set the global dispatcher\n// If fetch is used before undici, the process will crash\n// eslint-disable-next-line import/no-duplicates\nimport undici from \"undici\";\n\nimport { readFileSync } from \"node:fs\";\nimport os from \"node:os\";\nimport { fileURLToPath } from \"node:url\";\nimport { confirm } from \"@inquirer/prompts\";\nimport * as Sentry from \"@sentry/node\";\nimport { gte } from \"semver\";\nimport { hideBin } from \"yargs/helpers\";\nimport yargs from \"yargs/yargs\";\nimport build from \"./cmds/build.js\";\nimport compile from \"./cmds/compile.js\";\nimport convert from \"./cmds/convert.js\";\nimport deleteZup from \"./cmds/delete.js\";\nimport deploy from \"./cmds/deploy.js\";\nimport dev from \"./cmds/dev.js\";\nimport editor from \"./cmds/editor.js\";\nimport link from \"./cmds/link.js\";\nimport list from \"./cmds/list.js\";\nimport login from \"./cmds/login.js\";\nimport project from \"./cmds/project/index.js\";\nimport source from \"./cmds/source/index.js\";\nimport test from \"./cmds/test.js\";\nimport tunnel from \"./cmds/tunnel/index.js\";\nimport variable from \"./cmds/variable/index.js\";\nimport { shutdownAnalytics } from \"./common/analytics/lib.js\";\nimport { MAX_WAIT_PENDING_TIME_MS, SENTRY_DSN } from \"./common/constants.js\";\nimport { logger } from \"./common/logger.js\";\nimport { warnIfOutdatedVersion, warnNodeVersion } from \"./common/outdated.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printWarningToConsole,\n} from \"./common/output.js\";\nimport { logLevel } from \"./common/middleware/logging.js\";\n\n// This allows us to stop the CLI from executing so we can connect the profiler\n// eslint-disable-next-line node/no-process-env\nif (process.env.ZUPLO_CLI_PROFILING) {\n await confirm({ message: \"Continue executing CLI?\", default: true });\n}\n\n// Note: We cannot set this to be higher than 18.0.0 because of the way\n// our documentation works -- we tell them to use npx @zuplo/cli@latest (even in CI/CD jobs)\n// If we set this to be higher than 18.0.0, then we will break them.\n// Instead we set the value in package.json to be engine.node >= 20.0.0, so it will warn\nconst MIN_NODE_VERSION = \"18.0.0\";\nconst RECOMMENDED_NODE_VERSION = \"20.0.0\";\n\nif (gte(process.versions.node, MIN_NODE_VERSION)) {\n let cliVersion: string;\n try {\n const packageJson = JSON.parse(\n readFileSync(\n fileURLToPath(new URL(\"../package.json\", import.meta.url)),\n \"utf-8\"\n )\n );\n cliVersion = packageJson.version;\n } catch (e) {\n cliVersion = \"0.0.0\";\n logger.error(e);\n await printCriticalFailureToConsoleAndExit(\n `Unable to load @zuplo/cli. The package.json is missing or malformed.`\n );\n }\n\n await warnNodeVersion(cliVersion, RECOMMENDED_NODE_VERSION);\n\n if (os.platform() === \"win32\") {\n printWarningToConsole(\n \"Running the Zuplo CLI on Windows is currently in beta. Please report any issues to support@zuplo.com.\"\n );\n }\n\n undici.setGlobalDispatcher(\n undici.getGlobalDispatcher().compose((dispatch) => {\n return (opts, handler) => {\n opts.headers = {\n ...opts.headers,\n \"user-agent\": `ZuploCLI/${cliVersion}`,\n // eslint-disable-next-line node/no-process-env\n ...(process.env.ZUPLO_CANARY ? { \"zp-canary\": \"true\" } : {}),\n };\n return dispatch(opts, handler);\n };\n })\n );\n\n Sentry.init({\n dsn: SENTRY_DSN,\n release: cliVersion,\n });\n\n const cli = yargs(hideBin(process.argv))\n // This means that all env vars will have to be prefixed with ZUPLO_\n .env(\"ZUPLO\")\n .option(\"prompt\", {\n type: \"boolean\",\n describe: \"Bypass confirmation prompts\",\n default: true,\n hidden: true,\n })\n .option(\"verbose\", {\n alias: \"v\",\n type: \"count\",\n describe: \"Increase verbosity level (-v, -vv, -vvv)\",\n default: 0,\n hidden: true,\n })\n .middleware(logLevel)\n .command(compile)\n .command(convert)\n .command(deleteZup) // delete is a reserved keyword in JavaScript, so we call this function deleteZup\n .command(deploy)\n .command(dev)\n .command(editor)\n .command(list)\n .command(link)\n .command(login)\n .command(test)\n .command(project)\n .command(source)\n .command(tunnel)\n .command(variable)\n .command(build)\n .command({\n command: \"hello\",\n handler: async () => {\n await fetch(\"https://393b4699ced44cc2ae87e4ad86184a29.api.mockbin.io/\");\n },\n })\n .demandCommand()\n .strictCommands()\n .version(cliVersion)\n .fail(false)\n .help();\n\n try {\n await cli.argv;\n\n // Don't block\n void warnIfOutdatedVersion(cliVersion);\n\n void Sentry.close(MAX_WAIT_PENDING_TIME_MS).then(() => {\n process.exit(0);\n });\n } catch (err) {\n if (err instanceof Error) {\n Sentry.captureException(err);\n }\n await printCriticalFailureToConsoleAndExit(err.message ?? err);\n cli.showHelp();\n } finally {\n await shutdownAnalytics();\n }\n} else {\n await printCriticalFailureToConsoleAndExit(\n `The Zuplo CLI requires at least node.js v${MIN_NODE_VERSION}. You are using v${process.versions.node}. Please update your version of node.js.\n\n Consider using a Node.js version manager such as https://github.com/nvm-sh/nvm.`\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-openapi.d.ts","sourceRoot":"","sources":["../../../src/cmds/project/import-openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"import-openapi.d.ts","sourceRoot":"","sources":["../../../src/cmds/project/import-openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAWV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBA2Bf,OAAO;;AA9B/B,wBAwCE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { captureEvent } from "../../common/analytics/lib.js";
|
|
2
|
+
import { printWarningToConsole } from "../../common/output.js";
|
|
2
3
|
import { importOpenApi, } from "../../project/import-openapi/handler.js";
|
|
3
4
|
export default {
|
|
4
5
|
desc: "Import an OpenAPI file into your Zuplo project",
|
|
@@ -30,7 +31,11 @@ export default {
|
|
|
30
31
|
});
|
|
31
32
|
},
|
|
32
33
|
handler: async (argv) => {
|
|
33
|
-
|
|
34
|
+
printWarningToConsole("⚠️ 'zuplo project import-openapi' is deprecated. Use 'zuplo source import-openapi' instead.");
|
|
35
|
+
await captureEvent({
|
|
36
|
+
argv,
|
|
37
|
+
event: "zuplo project import-openapi (deprecated)",
|
|
38
|
+
});
|
|
34
39
|
await importOpenApi(argv);
|
|
35
40
|
},
|
|
36
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-openapi.js","sourceRoot":"","sources":["../../../src/cmds/project/import-openapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAEL,aAAa,GACd,MAAM,yCAAyC,CAAC;AAEjD,eAAe;IACb,IAAI,EAAE,gDAAgD;IACtD,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,KAAK,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uCAAuC;YACjD,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,4BAA4B;YACtC,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EACN,+EAA+E;SAClF,CAAC;aACD,YAAY,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;aACvC,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uDAAuD;YACjE,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACxC,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"import-openapi.js","sourceRoot":"","sources":["../../../src/cmds/project/import-openapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAEL,aAAa,GACd,MAAM,yCAAyC,CAAC;AAEjD,eAAe;IACb,IAAI,EAAE,gDAAgD;IACtD,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,KAAK,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uCAAuC;YACjD,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,4BAA4B;YACtC,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EACN,+EAA+E;SAClF,CAAC;aACD,YAAY,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;aACvC,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uDAAuD;YACjE,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACxC,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,qBAAqB,CACnB,8FAA8F,CAC/F,CAAC;QACF,MAAM,YAAY,CAAC;YACjB,IAAI;YACJ,KAAK,EAAE,2CAA2C;SACnD,CAAC,CAAC;QACH,MAAM,aAAa,CAAC,IAAiB,CAAC,CAAC;IACzC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { printWarningToConsole } from \"../../common/output.js\";\nimport {\n Arguments,\n importOpenApi,\n} from \"../../project/import-openapi/handler.js\";\n\nexport default {\n desc: \"Import an OpenAPI file into your Zuplo project\",\n command: \"import-openapi\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"dir\", {\n type: \"string\",\n describe: \"The directory containing your project\",\n default: \".\",\n normalize: true,\n hidden: true,\n })\n .option(\"source\", {\n type: \"string\",\n describe: \"The OpenAPI file to import\",\n conflicts: [\"source-url\"],\n })\n .option(\"destination\", {\n type: \"string\",\n describe:\n \"The destination file name. Defaults to the inferred path from the source name\",\n })\n .demandOption([\"source\", \"destination\"])\n .option(\"merge-mode\", {\n type: \"string\",\n describe: \"The merge mode to use when importing the OpenAPI file\",\n choices: [\"path-method\", \"operation-id\"],\n default: \"path-method\",\n });\n },\n handler: async (argv: unknown) => {\n printWarningToConsole(\n \"⚠️ 'zuplo project import-openapi' is deprecated. Use 'zuplo source import-openapi' instead.\"\n );\n await captureEvent({\n argv,\n event: \"zuplo project import-openapi (deprecated)\",\n });\n await importOpenApi(argv as Arguments);\n },\n};\n"]}
|
|
@@ -2,7 +2,7 @@ import { groupHandler } from "../../common/handler.js";
|
|
|
2
2
|
import importOpenApi from "./import-openapi.js";
|
|
3
3
|
import update from "./update.js";
|
|
4
4
|
const commands = {
|
|
5
|
-
describe: "Project commands",
|
|
5
|
+
describe: "Project commands (deprecated, use 'zuplo source' instead)",
|
|
6
6
|
command: "project",
|
|
7
7
|
builder: (yargs) => {
|
|
8
8
|
return yargs.command(update).command(importOpenApi).help();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/project/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,QAAQ,GAAkB;IAC9B,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/project/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,QAAQ,GAAkB;IAC9B,QAAQ,EAAE,2DAA2D;IACrE,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import { CommandModule } from \"yargs\";\nimport { groupHandler } from \"../../common/handler.js\";\nimport importOpenApi from \"./import-openapi.js\";\nimport update from \"./update.js\";\n\nconst commands: CommandModule = {\n describe: \"Project commands (deprecated, use 'zuplo source' instead)\",\n command: \"project\",\n builder: (yargs) => {\n return yargs.command(update).command(importOpenApi).help();\n },\n handler: groupHandler,\n};\n\nexport default commands;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cmds/project/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAWV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAgBf,OAAO;;AAnB/B,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cmds/project/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAWV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAgBf,OAAO;;AAnB/B,wBA0BE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { captureEvent } from "../../common/analytics/lib.js";
|
|
2
2
|
import { identify } from "../../common/middleware/user-identification.js";
|
|
3
|
-
import setBlocking from "../../common/output.js";
|
|
3
|
+
import setBlocking, { printWarningToConsole } from "../../common/output.js";
|
|
4
4
|
import { ZuploProjectValidator } from "../../common/validators/file-system-validator.js";
|
|
5
5
|
import { YargsChecker } from "../../common/validators/lib.js";
|
|
6
6
|
import { update } from "../../project/update/handler.js";
|
|
@@ -22,7 +22,8 @@ export default {
|
|
|
22
22
|
});
|
|
23
23
|
},
|
|
24
24
|
handler: async (argv) => {
|
|
25
|
-
|
|
25
|
+
printWarningToConsole("⚠️ 'zuplo project update' is deprecated. Use 'zuplo source upgrade' instead.");
|
|
26
|
+
await captureEvent({ argv, event: "zuplo project update (deprecated)" });
|
|
26
27
|
await update(argv);
|
|
27
28
|
},
|
|
28
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cmds/project/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,WAAW,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cmds/project/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,WAAW,EAAE,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAa,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEpE,eAAe;IACb,IAAI,EAAE,0DAA0D;IAChE,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,KAAK,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,yCAAyC;YACnD,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,CAAC;aACD,UAAU,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;aACnC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACpB,OAAO,MAAM,IAAI,YAAY,CAC3B,IAAI,qBAAqB,EAAE,CAC5B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,qBAAqB,CACnB,+EAA+E,CAChF,CAAC;QACF,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,CAAC,IAAiB,CAAC,CAAC;IAClC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { identify } from \"../../common/middleware/user-identification.js\";\nimport setBlocking, { printWarningToConsole } from \"../../common/output.js\";\nimport { ZuploProjectValidator } from \"../../common/validators/file-system-validator.js\";\nimport { YargsChecker } from \"../../common/validators/lib.js\";\nimport { Arguments, update } from \"../../project/update/handler.js\";\n\nexport default {\n desc: \"Updates your project structure to the latest conventions\",\n command: \"update\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"dir\", {\n type: \"string\",\n describe: \"The directory containing your Zuplo API\",\n default: \".\",\n normalize: true,\n hidden: true,\n })\n .middleware([setBlocking, identify])\n .check(async (argv) => {\n return await new YargsChecker<typeof argv>(\n new ZuploProjectValidator()\n ).check(argv);\n });\n },\n handler: async (argv: unknown) => {\n printWarningToConsole(\n \"⚠️ 'zuplo project update' is deprecated. Use 'zuplo source upgrade' instead.\"\n );\n await captureEvent({ argv, event: \"zuplo project update (deprecated)\" });\n await update(argv as Arguments);\n },\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-openapi.d.ts","sourceRoot":"","sources":["../../../src/cmds/source/import-openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAUV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBA2Bf,OAAO;;AA9B/B,wBAkCE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { captureEvent } from "../../common/analytics/lib.js";
|
|
2
|
+
import { importOpenApi, } from "../../project/import-openapi/handler.js";
|
|
3
|
+
export default {
|
|
4
|
+
desc: "Import an OpenAPI file into your Zuplo project",
|
|
5
|
+
command: "import-openapi",
|
|
6
|
+
builder: (yargs) => {
|
|
7
|
+
return yargs
|
|
8
|
+
.option("dir", {
|
|
9
|
+
type: "string",
|
|
10
|
+
describe: "The directory containing your project",
|
|
11
|
+
default: ".",
|
|
12
|
+
normalize: true,
|
|
13
|
+
hidden: true,
|
|
14
|
+
})
|
|
15
|
+
.option("source", {
|
|
16
|
+
type: "string",
|
|
17
|
+
describe: "The OpenAPI file to import",
|
|
18
|
+
conflicts: ["source-url"],
|
|
19
|
+
})
|
|
20
|
+
.option("destination", {
|
|
21
|
+
type: "string",
|
|
22
|
+
describe: "The destination file name. Defaults to the inferred path from the source name",
|
|
23
|
+
})
|
|
24
|
+
.demandOption(["source", "destination"])
|
|
25
|
+
.option("merge-mode", {
|
|
26
|
+
type: "string",
|
|
27
|
+
describe: "The merge mode to use when importing the OpenAPI file",
|
|
28
|
+
choices: ["path-method", "operation-id"],
|
|
29
|
+
default: "path-method",
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
handler: async (argv) => {
|
|
33
|
+
await captureEvent({ argv, event: "zuplo source import-openapi" });
|
|
34
|
+
await importOpenApi(argv);
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=import-openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-openapi.js","sourceRoot":"","sources":["../../../src/cmds/source/import-openapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAEL,aAAa,GACd,MAAM,yCAAyC,CAAC;AAEjD,eAAe;IACb,IAAI,EAAE,gDAAgD;IACtD,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,KAAK,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uCAAuC;YACjD,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,4BAA4B;YACtC,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EACN,+EAA+E;SAClF,CAAC;aACD,YAAY,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;aACvC,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uDAAuD;YACjE,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACxC,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACnE,MAAM,aAAa,CAAC,IAAiB,CAAC,CAAC;IACzC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport {\n Arguments,\n importOpenApi,\n} from \"../../project/import-openapi/handler.js\";\n\nexport default {\n desc: \"Import an OpenAPI file into your Zuplo project\",\n command: \"import-openapi\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"dir\", {\n type: \"string\",\n describe: \"The directory containing your project\",\n default: \".\",\n normalize: true,\n hidden: true,\n })\n .option(\"source\", {\n type: \"string\",\n describe: \"The OpenAPI file to import\",\n conflicts: [\"source-url\"],\n })\n .option(\"destination\", {\n type: \"string\",\n describe:\n \"The destination file name. Defaults to the inferred path from the source name\",\n })\n .demandOption([\"source\", \"destination\"])\n .option(\"merge-mode\", {\n type: \"string\",\n describe: \"The merge mode to use when importing the OpenAPI file\",\n choices: [\"path-method\", \"operation-id\"],\n default: \"path-method\",\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo source import-openapi\" });\n await importOpenApi(argv as Arguments);\n },\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC,QAAA,MAAM,QAAQ,EAAE,aAOf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { groupHandler } from "../../common/handler.js";
|
|
2
|
+
import importOpenApi from "./import-openapi.js";
|
|
3
|
+
import upgrade from "./upgrade.js";
|
|
4
|
+
const commands = {
|
|
5
|
+
describe: "Source code management commands",
|
|
6
|
+
command: "source",
|
|
7
|
+
builder: (yargs) => {
|
|
8
|
+
return yargs.command(upgrade).command(importOpenApi).help();
|
|
9
|
+
},
|
|
10
|
+
handler: groupHandler,
|
|
11
|
+
};
|
|
12
|
+
export default commands;
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/source/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,QAAQ,GAAkB;IAC9B,QAAQ,EAAE,iCAAiC;IAC3C,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import { CommandModule } from \"yargs\";\nimport { groupHandler } from \"../../common/handler.js\";\nimport importOpenApi from \"./import-openapi.js\";\nimport upgrade from \"./upgrade.js\";\n\nconst commands: CommandModule = {\n describe: \"Source code management commands\",\n command: \"source\",\n builder: (yargs) => {\n return yargs.command(upgrade).command(importOpenApi).help();\n },\n handler: groupHandler,\n};\n\nexport default commands;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cmds/source/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAWV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAgBf,OAAO;;AAnB/B,wBAuBE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { captureEvent } from "../../common/analytics/lib.js";
|
|
2
|
+
import { identify } from "../../common/middleware/user-identification.js";
|
|
3
|
+
import setBlocking from "../../common/output.js";
|
|
4
|
+
import { ZuploProjectValidator } from "../../common/validators/file-system-validator.js";
|
|
5
|
+
import { YargsChecker } from "../../common/validators/lib.js";
|
|
6
|
+
import { update } from "../../project/update/handler.js";
|
|
7
|
+
export default {
|
|
8
|
+
desc: "Updates your project structure to the latest conventions",
|
|
9
|
+
command: "upgrade",
|
|
10
|
+
builder: (yargs) => {
|
|
11
|
+
return yargs
|
|
12
|
+
.option("dir", {
|
|
13
|
+
type: "string",
|
|
14
|
+
describe: "The directory containing your Zuplo API",
|
|
15
|
+
default: ".",
|
|
16
|
+
normalize: true,
|
|
17
|
+
hidden: true,
|
|
18
|
+
})
|
|
19
|
+
.middleware([setBlocking, identify])
|
|
20
|
+
.check(async (argv) => {
|
|
21
|
+
return await new YargsChecker(new ZuploProjectValidator()).check(argv);
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
handler: async (argv) => {
|
|
25
|
+
await captureEvent({ argv, event: "zuplo source upgrade" });
|
|
26
|
+
await update(argv);
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cmds/source/upgrade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAa,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEpE,eAAe;IACb,IAAI,EAAE,0DAA0D;IAChE,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,KAAK,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,yCAAyC;YACnD,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,CAAC;aACD,UAAU,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;aACnC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACpB,OAAO,MAAM,IAAI,YAAY,CAC3B,IAAI,qBAAqB,EAAE,CAC5B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,IAAiB,CAAC,CAAC;IAClC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { identify } from \"../../common/middleware/user-identification.js\";\nimport setBlocking from \"../../common/output.js\";\nimport { ZuploProjectValidator } from \"../../common/validators/file-system-validator.js\";\nimport { YargsChecker } from \"../../common/validators/lib.js\";\nimport { Arguments, update } from \"../../project/update/handler.js\";\n\nexport default {\n desc: \"Updates your project structure to the latest conventions\",\n command: \"upgrade\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"dir\", {\n type: \"string\",\n describe: \"The directory containing your Zuplo API\",\n default: \".\",\n normalize: true,\n hidden: true,\n })\n .middleware([setBlocking, identify])\n .check(async (argv) => {\n return await new YargsChecker<typeof argv>(\n new ZuploProjectValidator()\n ).check(argv);\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo source upgrade\" });\n await update(argv as Arguments);\n },\n};\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Argv, MiddlewareFunction } from "yargs";
|
|
2
|
+
import type { ValidationRule } from "../validators/lib.js";
|
|
3
|
+
export interface AuthenticatedCommandOptions {
|
|
4
|
+
requireSelfHostedEndpoint?: boolean;
|
|
5
|
+
additionalValidators?: ValidationRule<unknown>[];
|
|
6
|
+
additionalMiddleware?: MiddlewareFunction[];
|
|
7
|
+
}
|
|
8
|
+
export declare class AuthenticatedCommandBuilder {
|
|
9
|
+
private options;
|
|
10
|
+
private constructor();
|
|
11
|
+
build(yargs: Argv, customBuilder?: (yargs: Argv) => Argv): Argv;
|
|
12
|
+
static create(options?: AuthenticatedCommandOptions): AuthenticatedCommandBuilder;
|
|
13
|
+
static withSelfHosted(options?: Omit<AuthenticatedCommandOptions, "requireSelfHostedEndpoint">): AuthenticatedCommandBuilder;
|
|
14
|
+
static withMiddleware(middleware: MiddlewareFunction[], options?: Omit<AuthenticatedCommandOptions, "middleware">): AuthenticatedCommandBuilder;
|
|
15
|
+
private addStandardOptions;
|
|
16
|
+
private addValidationChecks;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=authenticated-command-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticated-command-builder.d.ts","sourceRoot":"","sources":["../../../src/common/builders/authenticated-command-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAOtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAY3D,MAAM,WAAW,2BAA2B;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAEjD,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC7C;AAmED,qBAAa,2BAA2B;IACtC,OAAO,CAAC,OAAO,CAA8B;IAE7C,OAAO;IAUP,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAyB/D,MAAM,CAAC,MAAM,CACX,OAAO,CAAC,EAAE,2BAA2B,GACpC,2BAA2B;IAO9B,MAAM,CAAC,cAAc,CACnB,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,GACvE,2BAA2B;IAY9B,MAAM,CAAC,cAAc,CACnB,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,YAAY,CAAC,GACxD,2BAA2B;IAO9B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,mBAAmB;CA+B5B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { authenticate } from "../middleware/authentication.js";
|
|
2
|
+
import { configure } from "../middleware/user-configuration.js";
|
|
3
|
+
import { identify } from "../middleware/user-identification.js";
|
|
4
|
+
import setBlocking from "../output.js";
|
|
5
|
+
import { YargsChecker } from "../validators/lib.js";
|
|
6
|
+
import { ProjectIsSetValidator } from "../validators/project-name-validator.js";
|
|
7
|
+
export class AuthenticatedCommandBuilder {
|
|
8
|
+
options;
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
this.options = options;
|
|
11
|
+
}
|
|
12
|
+
build(yargs, customBuilder) {
|
|
13
|
+
let builder;
|
|
14
|
+
if (customBuilder) {
|
|
15
|
+
builder = customBuilder(yargs);
|
|
16
|
+
}
|
|
17
|
+
builder = this.addStandardOptions(yargs);
|
|
18
|
+
builder = builder.middleware([
|
|
19
|
+
setBlocking,
|
|
20
|
+
authenticate,
|
|
21
|
+
configure,
|
|
22
|
+
identify,
|
|
23
|
+
]);
|
|
24
|
+
if (this.options.additionalMiddleware) {
|
|
25
|
+
builder = builder.middleware(this.options.additionalMiddleware);
|
|
26
|
+
}
|
|
27
|
+
return this.addValidationChecks(builder);
|
|
28
|
+
}
|
|
29
|
+
static create(options) {
|
|
30
|
+
return new AuthenticatedCommandBuilder(options);
|
|
31
|
+
}
|
|
32
|
+
static withSelfHosted(options) {
|
|
33
|
+
return new AuthenticatedCommandBuilder({
|
|
34
|
+
...options,
|
|
35
|
+
requireSelfHostedEndpoint: true,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
static withMiddleware(middleware, options) {
|
|
39
|
+
return new AuthenticatedCommandBuilder({
|
|
40
|
+
...options,
|
|
41
|
+
additionalMiddleware: middleware,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
addStandardOptions(yargs) {
|
|
45
|
+
let builder = yargs.option("api-key", {
|
|
46
|
+
type: "string",
|
|
47
|
+
describe: "The API Key from Zuplo",
|
|
48
|
+
envVar: "API_KEY",
|
|
49
|
+
});
|
|
50
|
+
builder = builder.option("project", {
|
|
51
|
+
type: "string",
|
|
52
|
+
describe: "The project name",
|
|
53
|
+
});
|
|
54
|
+
if (this.options.requireSelfHostedEndpoint) {
|
|
55
|
+
builder = builder.option("self-hosted-endpoint", {
|
|
56
|
+
type: "string",
|
|
57
|
+
describe: "The endpoint of your self-hosted service to deploy to",
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return builder;
|
|
61
|
+
}
|
|
62
|
+
addValidationChecks(yargs) {
|
|
63
|
+
const validators = [];
|
|
64
|
+
validators.push(new ProjectIsSetValidator());
|
|
65
|
+
if (this.options.additionalValidators) {
|
|
66
|
+
validators.push(...this.options.additionalValidators);
|
|
67
|
+
}
|
|
68
|
+
if (validators.length === 1) {
|
|
69
|
+
return yargs.check(async (argv) => {
|
|
70
|
+
return await new YargsChecker(validators[0]).check(argv);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else if (validators.length > 1) {
|
|
74
|
+
return yargs.check(async (argv) => {
|
|
75
|
+
for (const validator of validators) {
|
|
76
|
+
const result = await new YargsChecker(validator).check(argv);
|
|
77
|
+
if (result !== true) {
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return yargs;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=authenticated-command-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticated-command-builder.js","sourceRoot":"","sources":["../../../src/common/builders/authenticated-command-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Argv, MiddlewareFunction } from \"yargs\";\nimport { authenticate } from \"../middleware/authentication.js\";\nimport { configure } from \"../middleware/user-configuration.js\";\nimport { identify } from \"../middleware/user-identification.js\";\nimport setBlocking from \"../output.js\";\nimport { YargsChecker } from \"../validators/lib.js\";\nimport { ProjectIsSetValidator } from \"../validators/project-name-validator.js\";\nimport type { ValidationRule } from \"../validators/lib.js\";\n\ntype AuthenticatedCommandArgv<\n T extends Record<string, unknown> = Record<string, unknown>,\n> = Argv<\n {\n \"api-key\": string;\n project: string;\n \"self-hosted-endpoint\"?: string;\n } & T\n>;\n\nexport interface AuthenticatedCommandOptions {\n requireSelfHostedEndpoint?: boolean;\n additionalValidators?: ValidationRule<unknown>[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalMiddleware?: MiddlewareFunction[];\n}\n\n/**\n * Builder for creating authenticated CLI commands with standardized options and validation.\n *\n * Examples:\n *\n * 1. Basic authenticated command:\n * ```\n * builder: (yargs: Argv): Argv<unknown> => {\n * return AuthenticatedCommandBuilder.create().build(yargs);\n * }\n * ```\n *\n * 2. Command with custom options:\n * ```\n * builder: (yargs: Argv): Argv<unknown> => {\n * return AuthenticatedCommandBuilder.create().build(yargs, (yargs) =>\n * yargs\n * .option(\"url\", { type: \"string\", describe: \"The URL of the Zuplo API to delete\" })\n * .option(\"wait\", { type: \"boolean\", describe: \"Should the CLI wait until deleted\" })\n * .demandOption([\"url\"])\n * );\n * }\n * ```\n *\n * 3. Command requiring self-hosted endpoint:\n * ```\n * builder: (yargs: Argv): Argv<unknown> => {\n * return AuthenticatedCommandBuilder.withSelfHosted().build(yargs, (yargs) =>\n * yargs.option(\"config\", { type: \"string\", describe: \"Configuration file path\" })\n * );\n * }\n * ```\n *\n * 4. Command with additional middleware:\n * ```\n * builder: (yargs: Argv): Argv<unknown> => {\n * return AuthenticatedCommandBuilder.withMiddleware([customMiddleware]).build(yargs);\n * }\n * ```\n *\n * 5. Command with custom validators:\n * ```\n * builder: (yargs: Argv): Argv<unknown> => {\n * return AuthenticatedCommandBuilder.create({\n * additionalValidators: [new CustomValidator()]\n * }).build(yargs, (yargs) =>\n * yargs.option(\"file\", { type: \"string\", describe: \"File to validate\" })\n * );\n * }\n * ```\n *\n * 6. Complex command combining multiple features:\n * ```\n * builder: (yargs: Argv): Argv<unknown> => {\n * return AuthenticatedCommandBuilder.withSelfHosted({\n * additionalValidators: [new FileExistsValidator()],\n * }).build(yargs, (yargs) =>\n * yargs\n * .option(\"source\", { type: \"string\", describe: \"Source directory\" })\n * .option(\"destination\", { type: \"string\", describe: \"Destination path\" })\n * .demandOption([\"source\", \"destination\"])\n * );\n * }\n * ```\n */\nexport class AuthenticatedCommandBuilder {\n private options: AuthenticatedCommandOptions;\n\n private constructor(options: AuthenticatedCommandOptions = {}) {\n this.options = options;\n }\n\n /**\n * Builds a yargs configuration with standard authentication options and middleware\n * @param yargs - The yargs instance\n * @param customBuilder - Optional function to add command-specific options\n * @returns Configured yargs instance\n */\n build(yargs: Argv, customBuilder?: (yargs: Argv) => Argv): Argv {\n let builder;\n if (customBuilder) {\n builder = customBuilder(yargs);\n }\n\n builder = this.addStandardOptions(yargs);\n\n builder = builder.middleware([\n setBlocking,\n authenticate,\n configure,\n identify,\n ]);\n if (this.options.additionalMiddleware) {\n builder = builder.middleware(this.options.additionalMiddleware);\n }\n\n // Add validation checks\n return this.addValidationChecks(builder);\n }\n\n /**\n * Creates a new builder instance with additional options\n */\n static create(\n options?: AuthenticatedCommandOptions\n ): AuthenticatedCommandBuilder {\n return new AuthenticatedCommandBuilder(options);\n }\n\n /**\n * Pre-configured builder for commands that require self-hosted endpoint\n */\n static withSelfHosted(\n options?: Omit<AuthenticatedCommandOptions, \"requireSelfHostedEndpoint\">\n ): AuthenticatedCommandBuilder {\n return new AuthenticatedCommandBuilder({\n ...options,\n requireSelfHostedEndpoint: true,\n });\n }\n\n /**\n * Adds custom middleware to the builder. Note that this will be added\n * after the standard middleware, and executed *in order*, after the standard middleware\n * of `setBlocking`, `authenticate`, `configure`, and `identify` have run.\n */\n static withMiddleware(\n middleware: MiddlewareFunction[],\n options?: Omit<AuthenticatedCommandOptions, \"middleware\">\n ): AuthenticatedCommandBuilder {\n return new AuthenticatedCommandBuilder({\n ...options,\n additionalMiddleware: middleware,\n });\n }\n\n private addStandardOptions(yargs: Argv): AuthenticatedCommandArgv {\n let builder = yargs.option(\"api-key\", {\n type: \"string\",\n describe: \"The API Key from Zuplo\",\n envVar: \"API_KEY\",\n } as const);\n\n builder = builder.option(\"project\", {\n type: \"string\",\n describe: \"The project name\",\n } as const);\n\n if (this.options.requireSelfHostedEndpoint) {\n builder = builder.option(\"self-hosted-endpoint\", {\n type: \"string\",\n describe: \"The endpoint of your self-hosted service to deploy to\",\n } as const);\n }\n\n return builder as AuthenticatedCommandArgv;\n }\n\n private addValidationChecks<T>(yargs: Argv<T>): Argv<T> {\n const validators: ValidationRule<unknown>[] = [];\n\n validators.push(new ProjectIsSetValidator());\n\n // Add any additional validators\n if (this.options.additionalValidators) {\n validators.push(...this.options.additionalValidators);\n }\n\n // Apply validators\n if (validators.length === 1) {\n return yargs.check(async (argv) => {\n return await new YargsChecker<typeof argv>(validators[0]).check(argv);\n });\n } else if (validators.length > 1) {\n return yargs.check(async (argv) => {\n for (const validator of validators) {\n const result = await new YargsChecker<typeof argv>(validator).check(\n argv\n );\n if (result !== true) {\n return result;\n }\n }\n return true;\n });\n }\n\n return yargs;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticated-command-builder.spec.d.ts","sourceRoot":"","sources":["../../../src/common/builders/authenticated-command-builder.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { describe, it, beforeEach, afterEach } from "node:test";
|
|
2
|
+
import { expect } from "chai";
|
|
3
|
+
import sinon from "sinon";
|
|
4
|
+
import { AuthenticatedCommandBuilder, } from "./authenticated-command-builder.js";
|
|
5
|
+
import { authenticate } from "../middleware/authentication.js";
|
|
6
|
+
import { configure } from "../middleware/user-configuration.js";
|
|
7
|
+
import { identify } from "../middleware/user-identification.js";
|
|
8
|
+
import setBlocking from "../output.js";
|
|
9
|
+
import { YargsChecker } from "../validators/lib.js";
|
|
10
|
+
class MockYargs {
|
|
11
|
+
options = {};
|
|
12
|
+
middlewareList = [];
|
|
13
|
+
checkFunction = null;
|
|
14
|
+
option(key, config) {
|
|
15
|
+
this.options[key] = config;
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
middleware(middlewareArray) {
|
|
19
|
+
this.middlewareList.push(...middlewareArray);
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
check(fn) {
|
|
23
|
+
this.checkFunction = fn;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
getOptions() {
|
|
27
|
+
return this.options;
|
|
28
|
+
}
|
|
29
|
+
getMiddleware() {
|
|
30
|
+
return this.middlewareList;
|
|
31
|
+
}
|
|
32
|
+
getCheckFunction() {
|
|
33
|
+
return this.checkFunction;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
describe("AuthenticatedCommandBuilder", () => {
|
|
37
|
+
let yargsCheckerStub;
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
yargsCheckerStub = sinon.stub(YargsChecker.prototype, "check");
|
|
40
|
+
});
|
|
41
|
+
afterEach(() => {
|
|
42
|
+
sinon.restore();
|
|
43
|
+
});
|
|
44
|
+
describe("private constructor", () => {
|
|
45
|
+
it("should only be accessible through static factory methods", () => {
|
|
46
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
47
|
+
expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("static factory methods", () => {
|
|
51
|
+
describe("create", () => {
|
|
52
|
+
it("should create new instance with provided options", () => {
|
|
53
|
+
const options = {
|
|
54
|
+
requireSelfHostedEndpoint: true,
|
|
55
|
+
additionalValidators: [],
|
|
56
|
+
};
|
|
57
|
+
const builder = AuthenticatedCommandBuilder.create(options);
|
|
58
|
+
expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);
|
|
59
|
+
});
|
|
60
|
+
it("should create new instance with default options when none provided", () => {
|
|
61
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
62
|
+
expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe("withSelfHosted", () => {
|
|
66
|
+
it("should create instance with requireSelfHostedEndpoint set to true", () => {
|
|
67
|
+
const builder = AuthenticatedCommandBuilder.withSelfHosted();
|
|
68
|
+
expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);
|
|
69
|
+
});
|
|
70
|
+
it("should merge additional options with requireSelfHostedEndpoint", () => {
|
|
71
|
+
const options = { additionalValidators: [] };
|
|
72
|
+
const builder = AuthenticatedCommandBuilder.withSelfHosted(options);
|
|
73
|
+
expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe("withMiddleware", () => {
|
|
77
|
+
it("should create instance with additional middleware", () => {
|
|
78
|
+
const mockMiddleware = sinon.stub();
|
|
79
|
+
const builder = AuthenticatedCommandBuilder.withMiddleware([
|
|
80
|
+
mockMiddleware,
|
|
81
|
+
]);
|
|
82
|
+
expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);
|
|
83
|
+
});
|
|
84
|
+
it("should merge additional options with middleware", () => {
|
|
85
|
+
const mockMiddleware = sinon.stub();
|
|
86
|
+
const options = { requireSelfHostedEndpoint: true };
|
|
87
|
+
const builder = AuthenticatedCommandBuilder.withMiddleware([mockMiddleware], options);
|
|
88
|
+
expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("build", () => {
|
|
93
|
+
let mockYargs;
|
|
94
|
+
beforeEach(() => {
|
|
95
|
+
mockYargs = new MockYargs();
|
|
96
|
+
yargsCheckerStub.resolves(true);
|
|
97
|
+
});
|
|
98
|
+
it("should add standard options (api-key and project by default)", () => {
|
|
99
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
100
|
+
builder.build(mockYargs);
|
|
101
|
+
const options = mockYargs.getOptions();
|
|
102
|
+
expect(options).to.have.property("api-key");
|
|
103
|
+
expect(options).to.have.property("project");
|
|
104
|
+
expect(options).to.not.have.property("self-hosted-endpoint");
|
|
105
|
+
});
|
|
106
|
+
it("should add self-hosted-endpoint option when requireSelfHostedEndpoint is true", () => {
|
|
107
|
+
const builder = AuthenticatedCommandBuilder.create({
|
|
108
|
+
requireSelfHostedEndpoint: true,
|
|
109
|
+
});
|
|
110
|
+
builder.build(mockYargs);
|
|
111
|
+
const options = mockYargs.getOptions();
|
|
112
|
+
expect(options).to.have.property("self-hosted-endpoint");
|
|
113
|
+
});
|
|
114
|
+
it("should apply custom builder function when provided", () => {
|
|
115
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
116
|
+
const customBuilder = (yargs) => yargs.option("test-option", {
|
|
117
|
+
type: "string",
|
|
118
|
+
describe: "Test option",
|
|
119
|
+
});
|
|
120
|
+
builder.build(mockYargs, customBuilder);
|
|
121
|
+
const options = mockYargs.getOptions();
|
|
122
|
+
expect(options).to.have.property("test-option");
|
|
123
|
+
});
|
|
124
|
+
it("should add all required middleware", () => {
|
|
125
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
126
|
+
builder.build(mockYargs);
|
|
127
|
+
const middleware = mockYargs.getMiddleware();
|
|
128
|
+
expect(middleware).to.have.length(4);
|
|
129
|
+
expect(middleware).to.include(setBlocking);
|
|
130
|
+
expect(middleware).to.include(authenticate);
|
|
131
|
+
expect(middleware).to.include(configure);
|
|
132
|
+
expect(middleware).to.include(identify);
|
|
133
|
+
});
|
|
134
|
+
it("should add additional middleware when provided", () => {
|
|
135
|
+
const customMiddleware = sinon.stub();
|
|
136
|
+
const builder = AuthenticatedCommandBuilder.withMiddleware([
|
|
137
|
+
customMiddleware,
|
|
138
|
+
]);
|
|
139
|
+
builder.build(mockYargs);
|
|
140
|
+
const middleware = mockYargs.getMiddleware();
|
|
141
|
+
expect(middleware).to.have.length(5);
|
|
142
|
+
expect(middleware).to.include(customMiddleware);
|
|
143
|
+
});
|
|
144
|
+
it("should always add project validator", () => {
|
|
145
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
146
|
+
builder.build(mockYargs);
|
|
147
|
+
const checkFunction = mockYargs.getCheckFunction();
|
|
148
|
+
expect(checkFunction).to.not.be.null;
|
|
149
|
+
});
|
|
150
|
+
it("should add additional validators when provided", () => {
|
|
151
|
+
const mockValidator = {
|
|
152
|
+
validate: sinon.stub().resolves({ ok: true }),
|
|
153
|
+
};
|
|
154
|
+
const builder = AuthenticatedCommandBuilder.create({
|
|
155
|
+
additionalValidators: [mockValidator],
|
|
156
|
+
});
|
|
157
|
+
builder.build(mockYargs);
|
|
158
|
+
const checkFunction = mockYargs.getCheckFunction();
|
|
159
|
+
expect(checkFunction).to.not.be.null;
|
|
160
|
+
});
|
|
161
|
+
it("should handle single validator correctly", async () => {
|
|
162
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
163
|
+
builder.build(mockYargs);
|
|
164
|
+
const checkFunction = mockYargs.getCheckFunction();
|
|
165
|
+
expect(checkFunction).to.not.be.null;
|
|
166
|
+
if (checkFunction) {
|
|
167
|
+
await checkFunction({ project: "test-project" });
|
|
168
|
+
expect(yargsCheckerStub.callCount).to.equal(1);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
it("should handle multiple validators correctly", async () => {
|
|
172
|
+
const mockValidator1 = {
|
|
173
|
+
validate: sinon.stub().resolves({ ok: true }),
|
|
174
|
+
};
|
|
175
|
+
const mockValidator2 = {
|
|
176
|
+
validate: sinon.stub().resolves({ ok: true }),
|
|
177
|
+
};
|
|
178
|
+
const builder = AuthenticatedCommandBuilder.create({
|
|
179
|
+
additionalValidators: [mockValidator1, mockValidator2],
|
|
180
|
+
});
|
|
181
|
+
builder.build(mockYargs);
|
|
182
|
+
const checkFunction = mockYargs.getCheckFunction();
|
|
183
|
+
expect(checkFunction).to.not.be.null;
|
|
184
|
+
if (checkFunction) {
|
|
185
|
+
yargsCheckerStub.onFirstCall().resolves(true);
|
|
186
|
+
yargsCheckerStub.onSecondCall().resolves(true);
|
|
187
|
+
yargsCheckerStub.onThirdCall().resolves(true);
|
|
188
|
+
const result = await checkFunction({ project: "test-project" });
|
|
189
|
+
expect(result).to.be.true;
|
|
190
|
+
expect(yargsCheckerStub.callCount).to.equal(3);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
it("should return early from validation if any validator fails", async () => {
|
|
194
|
+
const mockValidator1 = {
|
|
195
|
+
validate: sinon.stub().resolves({ ok: true }),
|
|
196
|
+
};
|
|
197
|
+
const mockValidator2 = {
|
|
198
|
+
validate: sinon.stub().resolves({ ok: true }),
|
|
199
|
+
};
|
|
200
|
+
const builder = AuthenticatedCommandBuilder.create({
|
|
201
|
+
additionalValidators: [mockValidator1, mockValidator2],
|
|
202
|
+
});
|
|
203
|
+
builder.build(mockYargs);
|
|
204
|
+
const checkFunction = mockYargs.getCheckFunction();
|
|
205
|
+
expect(checkFunction).to.not.be.null;
|
|
206
|
+
if (checkFunction) {
|
|
207
|
+
yargsCheckerStub.onFirstCall().resolves(true);
|
|
208
|
+
yargsCheckerStub.onSecondCall().resolves("Validation failed");
|
|
209
|
+
const result = await checkFunction({ project: "test-project" });
|
|
210
|
+
expect(result).to.equal("Validation failed");
|
|
211
|
+
expect(yargsCheckerStub.callCount).to.equal(2);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
describe("integration scenarios", () => {
|
|
216
|
+
let mockYargs;
|
|
217
|
+
beforeEach(() => {
|
|
218
|
+
mockYargs = new MockYargs();
|
|
219
|
+
yargsCheckerStub.resolves(true);
|
|
220
|
+
});
|
|
221
|
+
it("should build command for basic authenticated scenario", () => {
|
|
222
|
+
const builder = AuthenticatedCommandBuilder.create();
|
|
223
|
+
const result = builder.build(mockYargs);
|
|
224
|
+
const options = mockYargs.getOptions();
|
|
225
|
+
expect(options).to.have.property("api-key");
|
|
226
|
+
expect(options).to.have.property("project");
|
|
227
|
+
expect(result).to.equal(mockYargs);
|
|
228
|
+
});
|
|
229
|
+
it("should build command with self-hosted endpoint support", () => {
|
|
230
|
+
const builder = AuthenticatedCommandBuilder.create({
|
|
231
|
+
requireSelfHostedEndpoint: true,
|
|
232
|
+
});
|
|
233
|
+
builder.build(mockYargs);
|
|
234
|
+
const options = mockYargs.getOptions();
|
|
235
|
+
expect(options).to.have.property("api-key");
|
|
236
|
+
expect(options).to.have.property("project");
|
|
237
|
+
expect(options).to.have.property("self-hosted-endpoint");
|
|
238
|
+
});
|
|
239
|
+
it("should build command with custom options and validation", () => {
|
|
240
|
+
AuthenticatedCommandBuilder.create().build(mockYargs, (yargs) => yargs
|
|
241
|
+
.option("url", {
|
|
242
|
+
type: "string",
|
|
243
|
+
describe: "The URL to process",
|
|
244
|
+
})
|
|
245
|
+
.option("wait", {
|
|
246
|
+
type: "boolean",
|
|
247
|
+
describe: "Wait for completion",
|
|
248
|
+
}));
|
|
249
|
+
const options = mockYargs.getOptions();
|
|
250
|
+
expect(options).to.have.property("url");
|
|
251
|
+
expect(options).to.have.property("wait");
|
|
252
|
+
});
|
|
253
|
+
it("should build command with additional middleware", () => {
|
|
254
|
+
const customMiddleware = sinon.stub();
|
|
255
|
+
const builder = AuthenticatedCommandBuilder.withMiddleware([
|
|
256
|
+
customMiddleware,
|
|
257
|
+
]);
|
|
258
|
+
builder.build(mockYargs, (yargs) => yargs.option("name", { type: "string", describe: "Project name" }));
|
|
259
|
+
const options = mockYargs.getOptions();
|
|
260
|
+
expect(options).to.have.property("api-key");
|
|
261
|
+
expect(options).to.have.property("project");
|
|
262
|
+
expect(options).to.have.property("name");
|
|
263
|
+
const checkFunction = mockYargs.getCheckFunction();
|
|
264
|
+
expect(checkFunction).to.not.be.null;
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
//# sourceMappingURL=authenticated-command-builder.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticated-command-builder.spec.js","sourceRoot":"","sources":["../../../src/common/builders/authenticated-command-builder.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\n\nimport { describe, it, beforeEach, afterEach } from \"node:test\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport type { Argv } from \"yargs\";\nimport {\n AuthenticatedCommandBuilder,\n type AuthenticatedCommandOptions,\n} from \"./authenticated-command-builder.js\";\nimport { authenticate } from \"../middleware/authentication.js\";\nimport { configure } from \"../middleware/user-configuration.js\";\nimport { identify } from \"../middleware/user-identification.js\";\nimport setBlocking from \"../output.js\";\nimport { YargsChecker } from \"../validators/lib.js\";\n\n// Mock yargs instance for testing\nclass MockYargs {\n private options: Record<string, unknown> = {};\n private middlewareList: unknown[] = [];\n private checkFunction:\n | ((argv: unknown) => boolean | string | Promise<boolean | string>)\n | null = null;\n\n option(key: string, config: unknown): MockYargs {\n this.options[key] = config;\n return this;\n }\n\n middleware(middlewareArray: unknown[]): MockYargs {\n this.middlewareList.push(...middlewareArray);\n return this;\n }\n\n check(\n fn: (argv: unknown) => boolean | string | Promise<boolean | string>\n ): MockYargs {\n this.checkFunction = fn;\n return this;\n }\n\n // Helper methods for testing\n getOptions(): Record<string, unknown> {\n return this.options;\n }\n\n getMiddleware(): unknown[] {\n return this.middlewareList;\n }\n\n getCheckFunction():\n | ((argv: unknown) => boolean | string | Promise<boolean | string>)\n | null {\n return this.checkFunction;\n }\n}\n\ndescribe(\"AuthenticatedCommandBuilder\", () => {\n let yargsCheckerStub: sinon.SinonStub;\n\n beforeEach(() => {\n yargsCheckerStub = sinon.stub(YargsChecker.prototype, \"check\");\n });\n\n afterEach(() => {\n sinon.restore();\n });\n\n describe(\"private constructor\", () => {\n it(\"should only be accessible through static factory methods\", () => {\n // Constructor is private, so we test through factory methods\n const builder = AuthenticatedCommandBuilder.create();\n expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);\n });\n });\n\n describe(\"static factory methods\", () => {\n describe(\"create\", () => {\n it(\"should create new instance with provided options\", () => {\n const options: AuthenticatedCommandOptions = {\n requireSelfHostedEndpoint: true,\n additionalValidators: [],\n };\n const builder = AuthenticatedCommandBuilder.create(options);\n expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);\n });\n\n it(\"should create new instance with default options when none provided\", () => {\n const builder = AuthenticatedCommandBuilder.create();\n expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);\n });\n });\n\n describe(\"withSelfHosted\", () => {\n it(\"should create instance with requireSelfHostedEndpoint set to true\", () => {\n const builder = AuthenticatedCommandBuilder.withSelfHosted();\n expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);\n });\n\n it(\"should merge additional options with requireSelfHostedEndpoint\", () => {\n const options = { additionalValidators: [] };\n const builder = AuthenticatedCommandBuilder.withSelfHosted(options);\n expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);\n });\n });\n\n describe(\"withMiddleware\", () => {\n it(\"should create instance with additional middleware\", () => {\n const mockMiddleware = sinon.stub();\n const builder = AuthenticatedCommandBuilder.withMiddleware([\n mockMiddleware,\n ]);\n expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);\n });\n\n it(\"should merge additional options with middleware\", () => {\n const mockMiddleware = sinon.stub();\n const options = { requireSelfHostedEndpoint: true };\n const builder = AuthenticatedCommandBuilder.withMiddleware(\n [mockMiddleware],\n options\n );\n expect(builder).to.be.instanceOf(AuthenticatedCommandBuilder);\n });\n });\n });\n\n describe(\"build\", () => {\n let mockYargs: MockYargs;\n\n beforeEach(() => {\n mockYargs = new MockYargs();\n yargsCheckerStub.resolves(true);\n });\n\n it(\"should add standard options (api-key and project by default)\", () => {\n const builder = AuthenticatedCommandBuilder.create();\n builder.build(mockYargs as unknown as Argv);\n\n const options = mockYargs.getOptions();\n expect(options).to.have.property(\"api-key\");\n expect(options).to.have.property(\"project\");\n expect(options).to.not.have.property(\"self-hosted-endpoint\");\n });\n\n // Project is always required now, so this test is no longer relevant\n\n it(\"should add self-hosted-endpoint option when requireSelfHostedEndpoint is true\", () => {\n const builder = AuthenticatedCommandBuilder.create({\n requireSelfHostedEndpoint: true,\n });\n builder.build(mockYargs as unknown as Argv);\n\n const options = mockYargs.getOptions();\n expect(options).to.have.property(\"self-hosted-endpoint\");\n });\n\n // Custom options are now handled through the customBuilder function parameter\n\n it(\"should apply custom builder function when provided\", () => {\n const builder = AuthenticatedCommandBuilder.create();\n const customBuilder = (yargs: Argv) =>\n yargs.option(\"test-option\", {\n type: \"string\",\n describe: \"Test option\",\n });\n\n builder.build(mockYargs as unknown as Argv, customBuilder);\n\n const options = mockYargs.getOptions();\n expect(options).to.have.property(\"test-option\");\n });\n\n it(\"should add all required middleware\", () => {\n const builder = AuthenticatedCommandBuilder.create();\n builder.build(mockYargs as unknown as Argv);\n\n const middleware = mockYargs.getMiddleware();\n expect(middleware).to.have.length(4);\n expect(middleware).to.include(setBlocking);\n expect(middleware).to.include(authenticate);\n expect(middleware).to.include(configure);\n expect(middleware).to.include(identify);\n });\n\n it(\"should add additional middleware when provided\", () => {\n const customMiddleware = sinon.stub();\n const builder = AuthenticatedCommandBuilder.withMiddleware([\n customMiddleware,\n ]);\n builder.build(mockYargs as unknown as Argv);\n\n const middleware = mockYargs.getMiddleware();\n expect(middleware).to.have.length(5);\n expect(middleware).to.include(customMiddleware);\n });\n\n it(\"should always add project validator\", () => {\n const builder = AuthenticatedCommandBuilder.create();\n builder.build(mockYargs as unknown as Argv);\n\n const checkFunction = mockYargs.getCheckFunction();\n expect(checkFunction).to.not.be.null;\n });\n\n // Project validator is always added now, so this test is no longer relevant\n\n it(\"should add additional validators when provided\", () => {\n const mockValidator = {\n validate: sinon.stub().resolves({ ok: true }),\n };\n const builder = AuthenticatedCommandBuilder.create({\n additionalValidators: [mockValidator],\n });\n builder.build(mockYargs as unknown as Argv);\n\n const checkFunction = mockYargs.getCheckFunction();\n expect(checkFunction).to.not.be.null;\n });\n\n it(\"should handle single validator correctly\", async () => {\n const builder = AuthenticatedCommandBuilder.create();\n builder.build(mockYargs as unknown as Argv);\n\n const checkFunction = mockYargs.getCheckFunction();\n expect(checkFunction).to.not.be.null;\n\n if (checkFunction) {\n await checkFunction({ project: \"test-project\" });\n expect(yargsCheckerStub.callCount).to.equal(1);\n }\n });\n\n it(\"should handle multiple validators correctly\", async () => {\n const mockValidator1 = {\n validate: sinon.stub().resolves({ ok: true }),\n };\n const mockValidator2 = {\n validate: sinon.stub().resolves({ ok: true }),\n };\n const builder = AuthenticatedCommandBuilder.create({\n additionalValidators: [mockValidator1, mockValidator2],\n });\n builder.build(mockYargs as unknown as Argv);\n\n const checkFunction = mockYargs.getCheckFunction();\n expect(checkFunction).to.not.be.null;\n\n if (checkFunction) {\n yargsCheckerStub.onFirstCall().resolves(true);\n yargsCheckerStub.onSecondCall().resolves(true);\n yargsCheckerStub.onThirdCall().resolves(true);\n\n const result = await checkFunction({ project: \"test-project\" });\n expect(result).to.be.true;\n expect(yargsCheckerStub.callCount).to.equal(3);\n }\n });\n\n it(\"should return early from validation if any validator fails\", async () => {\n const mockValidator1 = {\n validate: sinon.stub().resolves({ ok: true }),\n };\n const mockValidator2 = {\n validate: sinon.stub().resolves({ ok: true }),\n };\n const builder = AuthenticatedCommandBuilder.create({\n additionalValidators: [mockValidator1, mockValidator2],\n });\n builder.build(mockYargs as unknown as Argv);\n\n const checkFunction = mockYargs.getCheckFunction();\n expect(checkFunction).to.not.be.null;\n\n if (checkFunction) {\n yargsCheckerStub.onFirstCall().resolves(true);\n yargsCheckerStub.onSecondCall().resolves(\"Validation failed\");\n\n const result = await checkFunction({ project: \"test-project\" });\n expect(result).to.equal(\"Validation failed\");\n expect(yargsCheckerStub.callCount).to.equal(2);\n }\n });\n });\n\n describe(\"integration scenarios\", () => {\n let mockYargs: MockYargs;\n\n beforeEach(() => {\n mockYargs = new MockYargs();\n yargsCheckerStub.resolves(true);\n });\n\n it(\"should build command for basic authenticated scenario\", () => {\n const builder = AuthenticatedCommandBuilder.create();\n const result = builder.build(mockYargs as unknown as Argv);\n\n const options = mockYargs.getOptions();\n expect(options).to.have.property(\"api-key\");\n expect(options).to.have.property(\"project\");\n expect(result).to.equal(mockYargs);\n });\n\n it(\"should build command with self-hosted endpoint support\", () => {\n const builder = AuthenticatedCommandBuilder.create({\n requireSelfHostedEndpoint: true,\n });\n builder.build(mockYargs as unknown as Argv);\n\n const options = mockYargs.getOptions();\n expect(options).to.have.property(\"api-key\");\n expect(options).to.have.property(\"project\");\n expect(options).to.have.property(\"self-hosted-endpoint\");\n });\n\n it(\"should build command with custom options and validation\", () => {\n AuthenticatedCommandBuilder.create().build(\n mockYargs as unknown as Argv,\n (yargs: Argv) =>\n yargs\n .option(\"url\", {\n type: \"string\" as const,\n describe: \"The URL to process\",\n })\n .option(\"wait\", {\n type: \"boolean\" as const,\n describe: \"Wait for completion\",\n })\n );\n\n const options = mockYargs.getOptions();\n expect(options).to.have.property(\"url\");\n expect(options).to.have.property(\"wait\");\n });\n\n it(\"should build command with additional middleware\", () => {\n const customMiddleware = sinon.stub();\n const builder = AuthenticatedCommandBuilder.withMiddleware([\n customMiddleware,\n ]);\n builder.build(mockYargs as unknown as Argv, (yargs: Argv) =>\n yargs.option(\"name\", { type: \"string\", describe: \"Project name\" })\n );\n\n const options = mockYargs.getOptions();\n expect(options).to.have.property(\"api-key\");\n expect(options).to.have.property(\"project\");\n expect(options).to.have.property(\"name\");\n\n // Project validation is always present now\n const checkFunction = mockYargs.getCheckFunction();\n expect(checkFunction).to.not.be.null;\n });\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/cli.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/engine.test.ts","../src/__tests__/import-openapi-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/oas-test-data.ts","../src/__tests__/outdated.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/build/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/convert.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/editor.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/test.ts","../src/cmds/project/import-openapi.ts","../src/cmds/project/index.ts","../src/cmds/project/update.ts","../src/cmds/tunnel/create.ts","../src/cmds/tunnel/delete.ts","../src/cmds/tunnel/describe.ts","../src/cmds/tunnel/index.ts","../src/cmds/tunnel/list.ts","../src/cmds/tunnel/rotate-token.ts","../src/cmds/tunnel/services/describe.ts","../src/cmds/tunnel/services/index.ts","../src/cmds/tunnel/services/update.ts","../src/cmds/variable/create.ts","../src/cmds/variable/index.ts","../src/cmds/variable/update.ts","../src/common/alias.ts","../src/common/args.ts","../src/common/constants.ts","../src/common/handler.ts","../src/common/logger.ts","../src/common/models.ts","../src/common/outdated.ts","../src/common/output.ts","../src/common/settings.ts","../src/common/worker-output.ts","../src/common/analytics/lib.ts","../src/common/api/lib.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/upgraders/lib.ts","../src/common/upgraders/package-json-upgrader.ts","../src/common/upgraders/tsconfig-upgrader.ts","../src/common/upgraders/vscode-settings-json-upgrader.ts","../src/common/utils/box.ts","../src/common/utils/ports.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/file-system-validator.ts","../src/common/validators/lib.ts","../src/common/validators/project-name-validator.ts","../src/common/xdg/lib.ts","../src/compile/handler.ts","../src/convert/engine.ts","../src/convert/handler.ts","../src/convert/routes.legacy.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.ts","../src/deploy/environments.ts","../src/deploy/file-upload.ts","../src/deploy/handler.ts","../src/deploy/poll-deployment.ts","../src/dev/handler.ts","../src/editor/handler.ts","../src/editor/assets/index-03352ce7.js","../src/editor/server/cors-plugin.ts","../src/editor/server/server.ts","../src/editor/server/xfs.ts","../src/link/handler.ts","../src/link/populate.ts","../src/list/handler.ts","../src/login/html.ts","../src/login/login.ts","../src/login/server.ts","../src/login/tokens.ts","../src/project/import-openapi/handler.ts","../src/project/import-openapi/interfaces.ts","../src/project/import-openapi/utils.ts","../src/project/update/handler.ts","../src/test/esbuild-config.ts","../src/test/handler.ts","../src/test/invoke-test.ts","../src/test/test-files.test.ts","../src/test/test-files.ts","../src/test/esbuild-plugins/node-test-prep-plugin.ts","../src/tunnel/models.ts","../src/tunnel/create/handler.ts","../src/tunnel/delete/handler.ts","../src/tunnel/delete/poll-teardown-operation.ts","../src/tunnel/describe/handler.ts","../src/tunnel/list/handler.ts","../src/tunnel/rotate-token/handler.ts","../src/tunnel/services/describe/handler.ts","../src/tunnel/services/update/handler.ts","../src/tunnel/services/update/poll-provisioning-operations.ts","../src/variable/models.ts","../src/variable/create/handler.ts","../src/variable/update/handler.ts"],"version":"5.8.2"}
|
|
1
|
+
{"root":["../src/cli.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/engine.test.ts","../src/__tests__/import-openapi-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/oas-test-data.ts","../src/__tests__/outdated.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/build/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/convert.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/editor.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/test.ts","../src/cmds/project/import-openapi.ts","../src/cmds/project/index.ts","../src/cmds/project/update.ts","../src/cmds/source/import-openapi.ts","../src/cmds/source/index.ts","../src/cmds/source/upgrade.ts","../src/cmds/tunnel/create.ts","../src/cmds/tunnel/delete.ts","../src/cmds/tunnel/describe.ts","../src/cmds/tunnel/index.ts","../src/cmds/tunnel/list.ts","../src/cmds/tunnel/rotate-token.ts","../src/cmds/tunnel/services/describe.ts","../src/cmds/tunnel/services/index.ts","../src/cmds/tunnel/services/update.ts","../src/cmds/variable/create.ts","../src/cmds/variable/index.ts","../src/cmds/variable/update.ts","../src/common/alias.ts","../src/common/args.ts","../src/common/constants.ts","../src/common/handler.ts","../src/common/logger.ts","../src/common/models.ts","../src/common/outdated.ts","../src/common/output.ts","../src/common/settings.ts","../src/common/worker-output.ts","../src/common/analytics/lib.ts","../src/common/api/lib.ts","../src/common/builders/authenticated-command-builder.spec.ts","../src/common/builders/authenticated-command-builder.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/upgraders/lib.ts","../src/common/upgraders/package-json-upgrader.ts","../src/common/upgraders/tsconfig-upgrader.ts","../src/common/upgraders/vscode-settings-json-upgrader.ts","../src/common/utils/box.ts","../src/common/utils/ports.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/file-system-validator.ts","../src/common/validators/lib.ts","../src/common/validators/project-name-validator.ts","../src/common/xdg/lib.ts","../src/compile/handler.ts","../src/convert/engine.ts","../src/convert/handler.ts","../src/convert/routes.legacy.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.ts","../src/deploy/environments.ts","../src/deploy/file-upload.ts","../src/deploy/handler.ts","../src/deploy/poll-deployment.ts","../src/dev/handler.ts","../src/editor/handler.ts","../src/editor/assets/index-03352ce7.js","../src/editor/server/cors-plugin.ts","../src/editor/server/server.ts","../src/editor/server/xfs.ts","../src/link/handler.ts","../src/link/populate.ts","../src/list/handler.ts","../src/login/html.ts","../src/login/login.ts","../src/login/server.ts","../src/login/tokens.ts","../src/project/import-openapi/handler.ts","../src/project/import-openapi/interfaces.ts","../src/project/import-openapi/utils.ts","../src/project/update/handler.ts","../src/test/esbuild-config.ts","../src/test/handler.ts","../src/test/invoke-test.ts","../src/test/test-files.test.ts","../src/test/test-files.ts","../src/test/esbuild-plugins/node-test-prep-plugin.ts","../src/tunnel/models.ts","../src/tunnel/create/handler.ts","../src/tunnel/delete/handler.ts","../src/tunnel/delete/poll-teardown-operation.ts","../src/tunnel/describe/handler.ts","../src/tunnel/list/handler.ts","../src/tunnel/rotate-token/handler.ts","../src/tunnel/services/describe/handler.ts","../src/tunnel/services/update/handler.ts","../src/tunnel/services/update/poll-provisioning-operations.ts","../src/variable/models.ts","../src/variable/create/handler.ts","../src/variable/update/handler.ts"],"version":"5.8.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zuplo/cli",
|
|
3
|
-
"version": "6.52.
|
|
3
|
+
"version": "6.52.5",
|
|
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.9.0",
|
|
30
30
|
"@sentry/node": "9.22.0",
|
|
31
31
|
"@swc/core": "1.10.18",
|
|
32
|
-
"@zuplo/core": "6.52.
|
|
33
|
-
"@zuplo/openapi-tools": "6.52.
|
|
34
|
-
"@zuplo/runtime": "6.52.
|
|
32
|
+
"@zuplo/core": "6.52.5",
|
|
33
|
+
"@zuplo/openapi-tools": "6.52.5",
|
|
34
|
+
"@zuplo/runtime": "6.52.5",
|
|
35
35
|
"as-table": "1.0.55",
|
|
36
36
|
"chalk": "5.4.1",
|
|
37
37
|
"chokidar": "3.5.3",
|