@zuplo/cli 6.73.14 → 6.73.15
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/cmds/dev.d.ts.map +1 -1
- package/dist/cmds/dev.js +6 -0
- package/dist/cmds/dev.js.map +1 -1
- package/dist/dev/handler.d.ts +1 -0
- package/dist/dev/handler.d.ts.map +1 -1
- package/dist/dev/handler.js +5 -0
- package/dist/dev/handler.js.map +1 -1
- package/dist/dev/zuplo-local-gitignore.d.ts +4 -0
- package/dist/dev/zuplo-local-gitignore.d.ts.map +1 -0
- package/dist/dev/zuplo-local-gitignore.js +29 -0
- package/dist/dev/zuplo-local-gitignore.js.map +1 -0
- package/dist/dev/zuplo-local-gitignore.test.d.ts +2 -0
- package/dist/dev/zuplo-local-gitignore.test.d.ts.map +1 -0
- package/dist/dev/zuplo-local-gitignore.test.js +58 -0
- package/dist/dev/zuplo-local-gitignore.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@zuplo/core/customer.cli.minified.js +238 -238
- package/node_modules/@zuplo/core/index.minified.js +250 -250
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/out/esm/{chunk-2MF7LQVX.js → chunk-OAVAM6CR.js} +97 -97
- package/node_modules/@zuplo/runtime/out/esm/chunk-OAVAM6CR.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/index.js.map +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/types/index.d.ts +164 -125
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/node_modules/hono/dist/cjs/helper/streaming/sse.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +10 -4
- package/node_modules/hono/dist/cjs/request.js +1 -1
- package/node_modules/hono/dist/cjs/utils/accept.js +1 -1
- package/node_modules/hono/dist/cjs/utils/url.js +1 -1
- package/node_modules/hono/dist/helper/streaming/sse.js +1 -1
- package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +10 -4
- package/node_modules/hono/dist/request.js +1 -1
- package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
- package/node_modules/hono/dist/utils/accept.js +1 -1
- package/node_modules/hono/dist/utils/url.js +1 -1
- package/node_modules/hono/package.json +1 -1
- package/package.json +6 -6
- package/node_modules/@zuplo/runtime/out/esm/chunk-2MF7LQVX.js.map +0 -1
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-2MF7LQVX.js.LEGAL.txt → chunk-OAVAM6CR.js.LEGAL.txt} +0 -0
package/dist/cmds/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cmds/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAWV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cmds/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAWV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAoFf,OAAO;;AAvF/B,wBAsGE"}
|
package/dist/cmds/dev.js
CHANGED
|
@@ -50,6 +50,11 @@ export default {
|
|
|
50
50
|
type: "boolean",
|
|
51
51
|
describe: "Unsafely ignore certificate errors",
|
|
52
52
|
default: false,
|
|
53
|
+
})
|
|
54
|
+
.option("mtls-certs", {
|
|
55
|
+
type: "string",
|
|
56
|
+
alias: "mtls-certificates-dir",
|
|
57
|
+
describe: "Directory containing mTLS client certificates to load for local development (layout: <dir>/<cert-name>/tls.crt and tls.key). Only supported for managed-dedicated projects. If not provided, certificates are loaded from ./.zuplo-local/mtls when that directory exists.",
|
|
53
58
|
})
|
|
54
59
|
.example([
|
|
55
60
|
[
|
|
@@ -87,6 +92,7 @@ export default {
|
|
|
87
92
|
properties: {
|
|
88
93
|
"debug-port": argv["debugPort"],
|
|
89
94
|
"unsafely-ignore-certificate-errors": argv["unsafelyIgnoreCertificateErrors"],
|
|
95
|
+
"mtls-certs": Boolean(argv.mtlsCerts),
|
|
90
96
|
},
|
|
91
97
|
event: "zuplo dev",
|
|
92
98
|
});
|
package/dist/cmds/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cmds/dev.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cmds/dev.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAa,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAe;IACb,IAAI,EAAE,4BAA4B;IAClC,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,KAAK,CAAC,kBAAkB,CAAC;aACzB,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,MAAM,CAAC,cAAc,EAAE;YACtB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wCAAwC;YAClD,OAAO,EAAE,IAAI;SACd,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,qCAAqC;YAC/C,OAAO,EAAE,IAAI;SACd,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,uCAAuC;YACjD,OAAO,EAAE,IAAI;SACd,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,wDAAwD;YAClE,OAAO,EAAE,IAAI;SACd,CAAC;aACD,MAAM,CAAC,WAAW,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oCAAoC;YAC9C,OAAO,EAAE,IAAI;SACd,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,yCAAyC;SACpD,CAAC;aACD,MAAM,CAAC,oCAAoC,EAAE;YAC5C,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,oCAAoC;YAC9C,OAAO,EAAE,KAAK;SACf,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,uBAAuB;YAC9B,QAAQ,EACN,2QAA2Q;SAC9Q,CAAC;aACD,OAAO,CAAC;YACP;gBACE,QAAQ;gBACR,wHAAwH;aACzH;YACD,CAAC,oBAAoB,EAAE,yCAAyC,CAAC;YACjE;gBACE,0BAA0B;gBAC1B,sDAAsD;aACvD;YACD;gBACE,wBAAwB;gBACxB,8CAA8C;aAC/C;YACD;gBACE,0BAA0B;gBAC1B,2DAA2D;aAC5D;SACF,CAAC;aACD,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;aACtB,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAEpB,YAAY,CAAC,IAAI,CAAC,IAAc,EAAE,QAAQ,CAAC,CAAC;YAC5C,YAAY,CAAC,IAAI,CAAC,aAAa,CAAW,EAAE,eAAe,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,WAAW,CAAW,EAAE,aAAa,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;gBACrC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAW,EAAE,cAAc,CAAC,CAAC;YAC7D,CAAC;YAED,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;YACjB,IAAI;YACJ,UAAU,EAAE;gBACV,YAAY,EAAG,IAAkB,CAAC,WAAW,CAAC;gBAC9C,oCAAoC,EAAG,IAAkB,CACvD,iCAAiC,CAClC;gBAED,YAAY,EAAE,OAAO,CAAE,IAAkB,CAAC,SAAS,CAAC;aACrD;YACD,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,IAAiB,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../common/analytics/lib.js\";\nimport { identify } from \"../common/middleware/user-identification.js\";\nimport { validatePort } from \"../common/validators/argument-validators.js\";\nimport { ZuploProjectValidator } from \"../common/validators/file-system-validator.js\";\nimport { YargsChecker } from \"../common/validators/lib.js\";\nimport { Arguments, dev } from \"../dev/handler.js\";\n\nexport default {\n desc: \"Runs the Zuplo API locally\",\n command: \"dev\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .usage(\"$0 dev [options]\")\n .option(\"dir\", {\n type: \"string\",\n describe: \"The directory containing your Zuplo API\",\n default: \".\",\n normalize: true,\n hidden: true,\n })\n .option(\"start-editor\", {\n type: \"boolean\",\n describe: \"Start the editor with the local server\",\n default: true,\n })\n .option(\"port\", {\n type: \"number\",\n describe: \"The port to run the local server on\",\n default: 9000,\n })\n .option(\"editor-port\", {\n type: \"number\",\n describe: \"The port to run the route designer on\",\n default: 9100,\n })\n .option(\"start-docs\", {\n type: \"boolean\",\n describe: \"Start the docs server with the local development setup\",\n default: true,\n })\n .option(\"docs-port\", {\n type: \"number\",\n describe: \"The port to run the docs server on\",\n default: 9200,\n })\n .option(\"debug-port\", {\n type: \"number\",\n describe: \"The port to run the Chrome inspector on\",\n })\n .option(\"unsafely-ignore-certificate-errors\", {\n type: \"boolean\",\n describe: \"Unsafely ignore certificate errors\",\n default: false,\n })\n .option(\"mtls-certs\", {\n type: \"string\",\n alias: \"mtls-certificates-dir\",\n describe:\n \"Directory containing mTLS client certificates to load for local development (layout: <dir>/<cert-name>/tls.crt and tls.key). Only supported for managed-dedicated projects. If not provided, certificates are loaded from ./.zuplo-local/mtls when that directory exists.\",\n })\n .example([\n [\n \"$0 dev\",\n \"Start the local development server with default settings (port 9000 for API, port 9100 for editor, port 9200 for docs)\",\n ],\n [\"$0 dev --port 8080\", \"Start the local server on a custom port\"],\n [\n \"$0 dev --no-start-editor\",\n \"Start only the API server without opening the editor\",\n ],\n [\n \"$0 dev --no-start-docs\",\n \"Start the API server without the docs server\",\n ],\n [\n \"$0 dev --debug-port 9229\",\n \"Start with Chrome DevTools inspector enabled on port 9229\",\n ],\n ])\n .middleware([identify])\n .check(async (argv) => {\n // Validate port numbers are in valid range\n validatePort(argv.port as number, \"--port\");\n validatePort(argv[\"editor-port\"] as number, \"--editor-port\");\n validatePort(argv[\"docs-port\"] as number, \"--docs-port\");\n if (argv[\"debug-port\"] !== undefined) {\n validatePort(argv[\"debug-port\"] as number, \"--debug-port\");\n }\n\n return await new YargsChecker<typeof argv>(\n new ZuploProjectValidator()\n ).check(argv);\n });\n },\n handler: async (argv: unknown) => {\n await captureEvent({\n argv,\n properties: {\n \"debug-port\": (argv as Arguments)[\"debugPort\"],\n \"unsafely-ignore-certificate-errors\": (argv as Arguments)[\n \"unsafelyIgnoreCertificateErrors\"\n ],\n // Only capture whether the flag was provided, not the local path\n \"mtls-certs\": Boolean((argv as Arguments).mtlsCerts),\n },\n event: \"zuplo dev\",\n });\n await dev(argv as Arguments);\n },\n};\n"]}
|
package/dist/dev/handler.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,iBAqQxC"}
|
package/dist/dev/handler.js
CHANGED
|
@@ -11,6 +11,7 @@ import { ConsoleOutput, printCriticalFailureToConsoleAndExit, printDiagnosticsTo
|
|
|
11
11
|
import { isPortAvailable } from "../common/utils/ports.js";
|
|
12
12
|
import { createPrefixedTransform } from "../common/utils/prefixed-output.js";
|
|
13
13
|
import { createRuntimeStdioHandler } from "../common/worker-output.js";
|
|
14
|
+
import { shouldWarnAboutZuploLocalGitignore } from "./zuplo-local-gitignore.js";
|
|
14
15
|
export async function dev(argv) {
|
|
15
16
|
const sourceDirectory = resolve(argv.dir);
|
|
16
17
|
const zuploRuntimePath = new URL("../../node_modules/@zuplo/runtime", import.meta.url);
|
|
@@ -65,6 +66,9 @@ export async function dev(argv) {
|
|
|
65
66
|
await printCriticalFailureToConsoleAndExit(`Port ${docsPort} is already in use. Please specify a different port using --docs-port.`);
|
|
66
67
|
}
|
|
67
68
|
}
|
|
69
|
+
if (shouldWarnAboutZuploLocalGitignore(sourceDirectory)) {
|
|
70
|
+
printWarningToConsole(`Warning: ${join(sourceDirectory, ".zuplo-local")} is not covered by your .gitignore. It may contain private keys (e.g. mTLS client certificates). Add '.zuplo-local/' to your .gitignore to avoid committing it.`);
|
|
71
|
+
}
|
|
68
72
|
const buildId = randomUUID();
|
|
69
73
|
let firstLoad = true;
|
|
70
74
|
const handleRuntimeStdio = createRuntimeStdioHandler({
|
|
@@ -79,6 +83,7 @@ export async function dev(argv) {
|
|
|
79
83
|
debugPort: argv.debugPort,
|
|
80
84
|
devPortalPort: startDocs ? docsPort : undefined,
|
|
81
85
|
unsafelyIgnoreCertificateErrors: argv.unsafelyIgnoreCertificateErrors,
|
|
86
|
+
mtlsCertificatesDir: argv.mtlsCerts ? resolve(argv.mtlsCerts) : undefined,
|
|
82
87
|
publicZuploEnvironmentVariables: envZuplo
|
|
83
88
|
? {
|
|
84
89
|
ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,
|
package/dist/dev/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { cpSync, existsSync, readFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { LocalEditorServer } from \"@zuplo/editor\";\nimport chalk from \"chalk\";\nimport dotenv from \"dotenv\";\nimport { ExecaChildProcess, execa } from \"execa\";\nimport { logger } from \"../common/logger.js\";\nimport {\n ConsoleOutput,\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printWarningToConsole,\n} from \"../common/output.js\";\nimport { isPortAvailable } from \"../common/utils/ports.js\";\nimport { createPrefixedTransform } from \"../common/utils/prefixed-output.js\";\nimport { createRuntimeStdioHandler } from \"../common/worker-output.js\";\n\nexport interface Arguments {\n dir: string;\n \"start-editor\": boolean;\n \"start-docs\": boolean;\n port: number;\n editorPort: number;\n docsPort: number;\n debugPort?: number;\n unsafelyIgnoreCertificateErrors?: boolean;\n}\n\nexport async function dev(argv: Arguments) {\n const sourceDirectory = resolve(argv.dir);\n\n // When we build, we MIGHT need to use the @zuplo/runtime from the node_modules if the user\n // has installed our packages using https://www.npmjs.com/package/zuplo in a global directory\n\n // Try to copy the @zuplo/runtime locally\n const zuploRuntimePath = new URL(\n \"../../node_modules/@zuplo/runtime\",\n import.meta.url\n );\n if (existsSync(zuploRuntimePath)) {\n cpSync(\n zuploRuntimePath,\n join(sourceDirectory, \"node_modules/@zuplo/runtime\"),\n {\n recursive: true,\n dereference: true,\n }\n );\n }\n\n // Set GLOBAL_MODULE_LOCATION to the location of the CLIs node_modules\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n process.env.GLOBAL_MODULE_LOCATION = fileURLToPath(\n new URL(\"../../node_modules\", import.meta.url)\n );\n\n const loadedEnvFiles: string[] = [];\n\n // Check if the user has a .env file\n const envFile = join(sourceDirectory, \".env\");\n if (existsSync(envFile)) {\n loadedEnvFiles.push(\".env\");\n }\n\n // Check if the user has a .env.zuplo file\n let envZuplo: dotenv.DotenvParseOutput | undefined;\n const envZuploFile = join(sourceDirectory, \".env.zuplo\");\n if (existsSync(envZuploFile)) {\n const contents = readFileSync(envZuploFile);\n envZuplo = dotenv.parse(contents);\n loadedEnvFiles.push(\".env.zuplo\");\n }\n\n // Set other variables using __ZUPLO_CONFIG as necessary\n // const config = {\n // };\n // process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n process.env.ZUPLO_IS_LOCAL_DEVELOPMENT = \"true\";\n\n // Use a dynamic import so that setting process.env has effect\n const core = await import(\"@zuplo/core/cli\");\n\n const zupPort = argv.port;\n const zupEditorPort = argv.editorPort;\n const zupDebugPort = argv.debugPort;\n\n const isZupPortAvailable = await isPortAvailable(\"localhost\", zupPort);\n if (!isZupPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupPort} is already in use. Please specify a different port using --port.`\n );\n }\n\n const isZupEditorPortAvailable = await isPortAvailable(\n \"localhost\",\n zupEditorPort\n );\n if (!isZupEditorPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupEditorPort} is already in use. Please specify a different port using --editor-port.`\n );\n }\n\n if (zupDebugPort) {\n const isZupDebugPortAvailable = await isPortAvailable(\n \"localhost\",\n zupDebugPort\n );\n if (!isZupDebugPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupDebugPort} is already in use. Please specify a different port using --debug-port.`\n );\n }\n }\n\n const docsDirectory = join(sourceDirectory, \"docs\");\n const hasDocsDirectory = existsSync(docsDirectory);\n if (!hasDocsDirectory) {\n printWarningToConsole(\n `Warning: docs/ directory not found at ${docsDirectory}. Skipping docs server.`\n );\n }\n\n const startDocs = argv[\"start-docs\"] && hasDocsDirectory;\n const docsPort = argv.docsPort;\n\n if (startDocs) {\n const isDocsPortAvailable = await isPortAvailable(\"localhost\", docsPort);\n if (!isDocsPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${docsPort} is already in use. Please specify a different port using --docs-port.`\n );\n }\n }\n\n const buildId = randomUUID();\n\n let firstLoad = true;\n\n const handleRuntimeStdio = createRuntimeStdioHandler({\n prefix: \"gateway\",\n prefixColor: chalk.cyan,\n });\n await core.startDevServer({\n buildId,\n output: new ConsoleOutput(),\n sourceDirectory,\n port: zupPort,\n debugPort: argv.debugPort,\n devPortalPort: startDocs ? docsPort : undefined,\n unsafelyIgnoreCertificateErrors: argv.unsafelyIgnoreCertificateErrors,\n publicZuploEnvironmentVariables: envZuplo\n ? {\n // biome-ignore lint/style/useNamingConvention: External API property\n ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,\n // biome-ignore lint/style/useNamingConvention: External API property\n ZUPLO_PROJECT_NAME: envZuplo.ZUPLO_PROJECT_NAME,\n // biome-ignore lint/style/useNamingConvention: External API property\n ZUPLO_ENVIRONMENT_TYPE: envZuplo.ZUPLO_ENVIRONMENT_TYPE,\n }\n : // Leave this as undefined to simulate the old behavior\n undefined,\n logger,\n handleRuntimeStdio,\n onReload: () => {\n if (firstLoad) {\n firstLoad = false;\n } else {\n printDiagnosticsToConsole(\"Code changed. Server reloaded...\");\n }\n },\n });\n\n let editor: LocalEditorServer;\n\n if (argv[\"start-editor\"]) {\n editor = new LocalEditorServer({\n sourceDirectory,\n deploymentUrl: `http://localhost:${zupPort}`,\n port: argv.editorPort,\n logger,\n });\n editor.start().catch((err) => logger.error(err));\n }\n\n let docsProcess: ExecaChildProcess | undefined;\n\n if (startDocs) {\n const npxExecutable = process.platform === \"win32\" ? \"npx.cmd\" : \"npx\";\n docsProcess = execa(\n npxExecutable,\n [\"zudoku\", \"dev\", \"--zuplo\", \"--port\", String(docsPort)],\n {\n cwd: docsDirectory,\n env: {\n // biome-ignore lint/style/noProcessEnv: Pass through environment\n ...process.env,\n // Ensure that the Zudoku server pipes through colored output even if it's\n // not sending it through a TTY and instead is using the prefixed transform\n // https://force-color.org/\n // biome-ignore lint/style/useNamingConvention: Environment variable naming\n FORCE_COLOR: \"1\",\n // biome-ignore lint/style/useNamingConvention: Environment variable naming\n ZUPLO_SERVER_URL: `http://localhost:${zupPort}`,\n },\n }\n );\n const docsStdoutTransform = createPrefixedTransform({\n name: \"docs\",\n color: chalk.magenta,\n });\n const docsStderrTransform = createPrefixedTransform({\n name: \"docs\",\n color: chalk.magenta,\n });\n docsProcess.stdout?.pipe(docsStdoutTransform).pipe(process.stdout);\n docsProcess.stderr?.pipe(docsStderrTransform).pipe(process.stderr);\n }\n\n printDiagnosticsToConsole(\"Started local development setup\");\n printDiagnosticsToConsole(\"Ctrl+C to exit\");\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(`🚀 Zuplo Gateway: http://localhost:${zupPort}`);\n if (argv[\"start-editor\"]) {\n printDiagnosticsToConsole(\n `📘 Route Designer: http://localhost:${argv.editorPort}`\n );\n }\n if (startDocs) {\n printDiagnosticsToConsole(`📄 Docs Server: http://localhost:${docsPort}`);\n }\n if (loadedEnvFiles.length > 0) {\n printDiagnosticsToConsole(\n `⚙️ Loaded env files: \\n - ${loadedEnvFiles.join(\" \\n - \")}`\n );\n }\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"\");\n\n return new Promise<void>((resolve) => {\n async function exit() {\n process.off(\"SIGTERM\", exit);\n process.off(\"SIGINT\", exit);\n\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"Stopping local development server...\");\n\n if (argv[\"start-editor\"]) {\n await editor.close();\n }\n if (docsProcess) {\n docsProcess.kill(\"SIGTERM\");\n }\n\n resolve();\n }\n\n // Handle user-initiated shutdown\n process.on(\"SIGTERM\", exit);\n process.on(\"SIGINT\", exit);\n\n // Handle child process exiting and cleanup\n if (docsProcess) {\n docsProcess.on(\"close\", (code, signal) => {\n if (signal === \"SIGTERM\" || signal === \"SIGINT\") {\n return;\n }\n\n if (code !== 0) {\n printWarningToConsole(`Docs server exited with code ${code}.`);\n }\n });\n\n docsProcess.on(\"error\", (err) => {\n printWarningToConsole(`Failed to start docs server: ${err.message}`);\n });\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/dev/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { cpSync, existsSync, readFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { LocalEditorServer } from \"@zuplo/editor\";\nimport chalk from \"chalk\";\nimport dotenv from \"dotenv\";\nimport { ExecaChildProcess, execa } from \"execa\";\nimport { logger } from \"../common/logger.js\";\nimport {\n ConsoleOutput,\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printWarningToConsole,\n} from \"../common/output.js\";\nimport { isPortAvailable } from \"../common/utils/ports.js\";\nimport { createPrefixedTransform } from \"../common/utils/prefixed-output.js\";\nimport { createRuntimeStdioHandler } from \"../common/worker-output.js\";\nimport { shouldWarnAboutZuploLocalGitignore } from \"./zuplo-local-gitignore.js\";\n\nexport interface Arguments {\n dir: string;\n \"start-editor\": boolean;\n \"start-docs\": boolean;\n port: number;\n editorPort: number;\n docsPort: number;\n debugPort?: number;\n unsafelyIgnoreCertificateErrors?: boolean;\n mtlsCerts?: string;\n}\n\nexport async function dev(argv: Arguments) {\n const sourceDirectory = resolve(argv.dir);\n\n // When we build, we MIGHT need to use the @zuplo/runtime from the node_modules if the user\n // has installed our packages using https://www.npmjs.com/package/zuplo in a global directory\n\n // Try to copy the @zuplo/runtime locally\n const zuploRuntimePath = new URL(\n \"../../node_modules/@zuplo/runtime\",\n import.meta.url\n );\n if (existsSync(zuploRuntimePath)) {\n cpSync(\n zuploRuntimePath,\n join(sourceDirectory, \"node_modules/@zuplo/runtime\"),\n {\n recursive: true,\n dereference: true,\n }\n );\n }\n\n // Set GLOBAL_MODULE_LOCATION to the location of the CLIs node_modules\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n process.env.GLOBAL_MODULE_LOCATION = fileURLToPath(\n new URL(\"../../node_modules\", import.meta.url)\n );\n\n const loadedEnvFiles: string[] = [];\n\n // Check if the user has a .env file\n const envFile = join(sourceDirectory, \".env\");\n if (existsSync(envFile)) {\n loadedEnvFiles.push(\".env\");\n }\n\n // Check if the user has a .env.zuplo file\n let envZuplo: dotenv.DotenvParseOutput | undefined;\n const envZuploFile = join(sourceDirectory, \".env.zuplo\");\n if (existsSync(envZuploFile)) {\n const contents = readFileSync(envZuploFile);\n envZuplo = dotenv.parse(contents);\n loadedEnvFiles.push(\".env.zuplo\");\n }\n\n // Set other variables using __ZUPLO_CONFIG as necessary\n // const config = {\n // };\n // process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n process.env.ZUPLO_IS_LOCAL_DEVELOPMENT = \"true\";\n\n // Use a dynamic import so that setting process.env has effect\n const core = await import(\"@zuplo/core/cli\");\n\n const zupPort = argv.port;\n const zupEditorPort = argv.editorPort;\n const zupDebugPort = argv.debugPort;\n\n const isZupPortAvailable = await isPortAvailable(\"localhost\", zupPort);\n if (!isZupPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupPort} is already in use. Please specify a different port using --port.`\n );\n }\n\n const isZupEditorPortAvailable = await isPortAvailable(\n \"localhost\",\n zupEditorPort\n );\n if (!isZupEditorPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupEditorPort} is already in use. Please specify a different port using --editor-port.`\n );\n }\n\n if (zupDebugPort) {\n const isZupDebugPortAvailable = await isPortAvailable(\n \"localhost\",\n zupDebugPort\n );\n if (!isZupDebugPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${zupDebugPort} is already in use. Please specify a different port using --debug-port.`\n );\n }\n }\n\n const docsDirectory = join(sourceDirectory, \"docs\");\n const hasDocsDirectory = existsSync(docsDirectory);\n if (!hasDocsDirectory) {\n printWarningToConsole(\n `Warning: docs/ directory not found at ${docsDirectory}. Skipping docs server.`\n );\n }\n\n const startDocs = argv[\"start-docs\"] && hasDocsDirectory;\n const docsPort = argv.docsPort;\n\n if (startDocs) {\n const isDocsPortAvailable = await isPortAvailable(\"localhost\", docsPort);\n if (!isDocsPortAvailable) {\n await printCriticalFailureToConsoleAndExit(\n `Port ${docsPort} is already in use. Please specify a different port using --docs-port.`\n );\n }\n }\n\n if (shouldWarnAboutZuploLocalGitignore(sourceDirectory)) {\n printWarningToConsole(\n `Warning: ${join(\n sourceDirectory,\n \".zuplo-local\"\n )} is not covered by your .gitignore. It may contain private keys (e.g. mTLS client certificates). Add '.zuplo-local/' to your .gitignore to avoid committing it.`\n );\n }\n\n const buildId = randomUUID();\n\n let firstLoad = true;\n\n const handleRuntimeStdio = createRuntimeStdioHandler({\n prefix: \"gateway\",\n prefixColor: chalk.cyan,\n });\n await core.startDevServer({\n buildId,\n output: new ConsoleOutput(),\n sourceDirectory,\n port: zupPort,\n debugPort: argv.debugPort,\n devPortalPort: startDocs ? docsPort : undefined,\n unsafelyIgnoreCertificateErrors: argv.unsafelyIgnoreCertificateErrors,\n mtlsCertificatesDir: argv.mtlsCerts ? resolve(argv.mtlsCerts) : undefined,\n publicZuploEnvironmentVariables: envZuplo\n ? {\n // biome-ignore lint/style/useNamingConvention: External API property\n ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,\n // biome-ignore lint/style/useNamingConvention: External API property\n ZUPLO_PROJECT_NAME: envZuplo.ZUPLO_PROJECT_NAME,\n // biome-ignore lint/style/useNamingConvention: External API property\n ZUPLO_ENVIRONMENT_TYPE: envZuplo.ZUPLO_ENVIRONMENT_TYPE,\n }\n : // Leave this as undefined to simulate the old behavior\n undefined,\n logger,\n handleRuntimeStdio,\n onReload: () => {\n if (firstLoad) {\n firstLoad = false;\n } else {\n printDiagnosticsToConsole(\"Code changed. Server reloaded...\");\n }\n },\n });\n\n let editor: LocalEditorServer;\n\n if (argv[\"start-editor\"]) {\n editor = new LocalEditorServer({\n sourceDirectory,\n deploymentUrl: `http://localhost:${zupPort}`,\n port: argv.editorPort,\n logger,\n });\n editor.start().catch((err) => logger.error(err));\n }\n\n let docsProcess: ExecaChildProcess | undefined;\n\n if (startDocs) {\n const npxExecutable = process.platform === \"win32\" ? \"npx.cmd\" : \"npx\";\n docsProcess = execa(\n npxExecutable,\n [\"zudoku\", \"dev\", \"--zuplo\", \"--port\", String(docsPort)],\n {\n cwd: docsDirectory,\n env: {\n // biome-ignore lint/style/noProcessEnv: Pass through environment\n ...process.env,\n // Ensure that the Zudoku server pipes through colored output even if it's\n // not sending it through a TTY and instead is using the prefixed transform\n // https://force-color.org/\n // biome-ignore lint/style/useNamingConvention: Environment variable naming\n FORCE_COLOR: \"1\",\n // biome-ignore lint/style/useNamingConvention: Environment variable naming\n ZUPLO_SERVER_URL: `http://localhost:${zupPort}`,\n },\n }\n );\n const docsStdoutTransform = createPrefixedTransform({\n name: \"docs\",\n color: chalk.magenta,\n });\n const docsStderrTransform = createPrefixedTransform({\n name: \"docs\",\n color: chalk.magenta,\n });\n docsProcess.stdout?.pipe(docsStdoutTransform).pipe(process.stdout);\n docsProcess.stderr?.pipe(docsStderrTransform).pipe(process.stderr);\n }\n\n printDiagnosticsToConsole(\"Started local development setup\");\n printDiagnosticsToConsole(\"Ctrl+C to exit\");\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(`🚀 Zuplo Gateway: http://localhost:${zupPort}`);\n if (argv[\"start-editor\"]) {\n printDiagnosticsToConsole(\n `📘 Route Designer: http://localhost:${argv.editorPort}`\n );\n }\n if (startDocs) {\n printDiagnosticsToConsole(`📄 Docs Server: http://localhost:${docsPort}`);\n }\n if (loadedEnvFiles.length > 0) {\n printDiagnosticsToConsole(\n `⚙️ Loaded env files: \\n - ${loadedEnvFiles.join(\" \\n - \")}`\n );\n }\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"\");\n\n return new Promise<void>((resolve) => {\n async function exit() {\n process.off(\"SIGTERM\", exit);\n process.off(\"SIGINT\", exit);\n\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"Stopping local development server...\");\n\n if (argv[\"start-editor\"]) {\n await editor.close();\n }\n if (docsProcess) {\n docsProcess.kill(\"SIGTERM\");\n }\n\n resolve();\n }\n\n // Handle user-initiated shutdown\n process.on(\"SIGTERM\", exit);\n process.on(\"SIGINT\", exit);\n\n // Handle child process exiting and cleanup\n if (docsProcess) {\n docsProcess.on(\"close\", (code, signal) => {\n if (signal === \"SIGTERM\" || signal === \"SIGINT\") {\n return;\n }\n\n if (code !== 0) {\n printWarningToConsole(`Docs server exited with code ${code}.`);\n }\n });\n\n docsProcess.on(\"error\", (err) => {\n printWarningToConsole(`Failed to start docs server: ${err.message}`);\n });\n }\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zuplo-local-gitignore.d.ts","sourceRoot":"","sources":["../../src/dev/zuplo-local-gitignore.ts"],"names":[],"mappings":"AAeA,wBAAgB,kCAAkC,CAChD,eAAe,EAAE,MAAM,GACtB,OAAO,CA8BT"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
const ZUPLO_LOCAL_DIR_NAME = ".zuplo-local";
|
|
4
|
+
export function shouldWarnAboutZuploLocalGitignore(sourceDirectory) {
|
|
5
|
+
const zuploLocalDir = join(sourceDirectory, ZUPLO_LOCAL_DIR_NAME);
|
|
6
|
+
if (!existsSync(zuploLocalDir)) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
const gitignorePath = join(sourceDirectory, ".gitignore");
|
|
10
|
+
if (!existsSync(gitignorePath)) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
let contents;
|
|
14
|
+
try {
|
|
15
|
+
contents = readFileSync(gitignorePath, "utf8");
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
const covered = contents.split(/\r?\n/).some((line) => {
|
|
21
|
+
let trimmed = line.trim();
|
|
22
|
+
if (trimmed.startsWith("/")) {
|
|
23
|
+
trimmed = trimmed.slice(1);
|
|
24
|
+
}
|
|
25
|
+
return (trimmed === ZUPLO_LOCAL_DIR_NAME || trimmed === `${ZUPLO_LOCAL_DIR_NAME}/`);
|
|
26
|
+
});
|
|
27
|
+
return !covered;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=zuplo-local-gitignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zuplo-local-gitignore.js","sourceRoot":"","sources":["../../src/dev/zuplo-local-gitignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAY5C,MAAM,UAAU,kCAAkC,CAChD,eAAuB;IAEvB,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CACL,OAAO,KAAK,oBAAoB,IAAI,OAAO,KAAK,GAAG,oBAAoB,GAAG,CAC3E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,OAAO,CAAC;AAClB,CAAC","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst ZUPLO_LOCAL_DIR_NAME = \".zuplo-local\";\n\n/**\n * Returns true if `<sourceDirectory>/.zuplo-local` exists but is not covered\n * by the project's .gitignore (or no .gitignore exists at all). The directory\n * may contain private keys (e.g. mTLS client certificates), so it should not\n * be committed to source control.\n *\n * The check is intentionally simple: a .gitignore line that is exactly\n * `.zuplo-local`, optionally with a leading `/` (root-anchored) and/or a\n * trailing `/` (directory-only), counts as covered.\n */\nexport function shouldWarnAboutZuploLocalGitignore(\n sourceDirectory: string\n): boolean {\n const zuploLocalDir = join(sourceDirectory, ZUPLO_LOCAL_DIR_NAME);\n if (!existsSync(zuploLocalDir)) {\n return false;\n }\n\n const gitignorePath = join(sourceDirectory, \".gitignore\");\n if (!existsSync(gitignorePath)) {\n return true;\n }\n\n let contents: string;\n try {\n contents = readFileSync(gitignorePath, \"utf8\");\n } catch {\n // If we cannot read the .gitignore, err on the side of warning\n return true;\n }\n\n const covered = contents.split(/\\r?\\n/).some((line) => {\n let trimmed = line.trim();\n if (trimmed.startsWith(\"/\")) {\n trimmed = trimmed.slice(1);\n }\n return (\n trimmed === ZUPLO_LOCAL_DIR_NAME || trimmed === `${ZUPLO_LOCAL_DIR_NAME}/`\n );\n });\n\n return !covered;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zuplo-local-gitignore.test.d.ts","sourceRoot":"","sources":["../../src/dev/zuplo-local-gitignore.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { afterEach, beforeEach, describe, it } from "node:test";
|
|
6
|
+
import { shouldWarnAboutZuploLocalGitignore } from "./zuplo-local-gitignore.js";
|
|
7
|
+
describe("shouldWarnAboutZuploLocalGitignore", () => {
|
|
8
|
+
let sourceDirectory;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
sourceDirectory = mkdtempSync(join(tmpdir(), "zuplo-local-gitignore-"));
|
|
11
|
+
});
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
rmSync(sourceDirectory, { recursive: true, force: true });
|
|
14
|
+
});
|
|
15
|
+
it("returns false when .zuplo-local does not exist", () => {
|
|
16
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), false);
|
|
17
|
+
});
|
|
18
|
+
it("returns true when .zuplo-local exists and there is no .gitignore", () => {
|
|
19
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
20
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), true);
|
|
21
|
+
});
|
|
22
|
+
it("returns true when .gitignore does not cover .zuplo-local", () => {
|
|
23
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
24
|
+
writeFileSync(join(sourceDirectory, ".gitignore"), "node_modules\ndist\n.env\n");
|
|
25
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), true);
|
|
26
|
+
});
|
|
27
|
+
it("returns false when .gitignore contains '.zuplo-local'", () => {
|
|
28
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
29
|
+
writeFileSync(join(sourceDirectory, ".gitignore"), "node_modules\n.zuplo-local\n");
|
|
30
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), false);
|
|
31
|
+
});
|
|
32
|
+
it("returns false when .gitignore contains '.zuplo-local/'", () => {
|
|
33
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
34
|
+
writeFileSync(join(sourceDirectory, ".gitignore"), "node_modules\n.zuplo-local/\n");
|
|
35
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), false);
|
|
36
|
+
});
|
|
37
|
+
it("returns false when .gitignore contains root-anchored '/.zuplo-local/'", () => {
|
|
38
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
39
|
+
writeFileSync(join(sourceDirectory, ".gitignore"), "node_modules\n/.zuplo-local/\n");
|
|
40
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), false);
|
|
41
|
+
});
|
|
42
|
+
it("returns false when .gitignore contains root-anchored '/.zuplo-local'", () => {
|
|
43
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
44
|
+
writeFileSync(join(sourceDirectory, ".gitignore"), "node_modules\n/.zuplo-local\n");
|
|
45
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), false);
|
|
46
|
+
});
|
|
47
|
+
it("trims whitespace around .gitignore lines", () => {
|
|
48
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
49
|
+
writeFileSync(join(sourceDirectory, ".gitignore"), " .zuplo-local/ \n");
|
|
50
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), false);
|
|
51
|
+
});
|
|
52
|
+
it("does not match unrelated lines that merely contain the name", () => {
|
|
53
|
+
mkdirSync(join(sourceDirectory, ".zuplo-local"));
|
|
54
|
+
writeFileSync(join(sourceDirectory, ".gitignore"), "# .zuplo-local is great\nfoo/.zuplo-local\n");
|
|
55
|
+
assert.strictEqual(shouldWarnAboutZuploLocalGitignore(sourceDirectory), true);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=zuplo-local-gitignore.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zuplo-local-gitignore.test.js","sourceRoot":"","sources":["../../src/dev/zuplo-local-gitignore.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport { mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { afterEach, beforeEach, describe, it } from \"node:test\";\nimport { shouldWarnAboutZuploLocalGitignore } from \"./zuplo-local-gitignore.js\";\n\ndescribe(\"shouldWarnAboutZuploLocalGitignore\", () => {\n let sourceDirectory: string;\n\n beforeEach(() => {\n sourceDirectory = mkdtempSync(join(tmpdir(), \"zuplo-local-gitignore-\"));\n });\n\n afterEach(() => {\n rmSync(sourceDirectory, { recursive: true, force: true });\n });\n\n it(\"returns false when .zuplo-local does not exist\", () => {\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n false\n );\n });\n\n it(\"returns true when .zuplo-local exists and there is no .gitignore\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n true\n );\n });\n\n it(\"returns true when .gitignore does not cover .zuplo-local\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n writeFileSync(\n join(sourceDirectory, \".gitignore\"),\n \"node_modules\\ndist\\n.env\\n\"\n );\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n true\n );\n });\n\n it(\"returns false when .gitignore contains '.zuplo-local'\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n writeFileSync(\n join(sourceDirectory, \".gitignore\"),\n \"node_modules\\n.zuplo-local\\n\"\n );\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n false\n );\n });\n\n it(\"returns false when .gitignore contains '.zuplo-local/'\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n writeFileSync(\n join(sourceDirectory, \".gitignore\"),\n \"node_modules\\n.zuplo-local/\\n\"\n );\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n false\n );\n });\n\n it(\"returns false when .gitignore contains root-anchored '/.zuplo-local/'\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n writeFileSync(\n join(sourceDirectory, \".gitignore\"),\n \"node_modules\\n/.zuplo-local/\\n\"\n );\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n false\n );\n });\n\n it(\"returns false when .gitignore contains root-anchored '/.zuplo-local'\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n writeFileSync(\n join(sourceDirectory, \".gitignore\"),\n \"node_modules\\n/.zuplo-local\\n\"\n );\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n false\n );\n });\n\n it(\"trims whitespace around .gitignore lines\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n writeFileSync(join(sourceDirectory, \".gitignore\"), \" .zuplo-local/ \\n\");\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n false\n );\n });\n\n it(\"does not match unrelated lines that merely contain the name\", () => {\n mkdirSync(join(sourceDirectory, \".zuplo-local\"));\n writeFileSync(\n join(sourceDirectory, \".gitignore\"),\n \"# .zuplo-local is great\\nfoo/.zuplo-local\\n\"\n );\n assert.strictEqual(\n shouldWarnAboutZuploLocalGitignore(sourceDirectory),\n true\n );\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/cli.ts","../src/internal.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/outdated.test.ts","../src/__tests__/populate.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/__tests__/integration/confirm-linked-config.integration.test.ts","../src/__tests__/integration/confirm-production-deploy.integration.test.ts","../src/__tests__/integration/custom-domain.integration.test.ts","../src/__tests__/integration/delete.integration.test.ts","../src/__tests__/integration/deploy.integration.test.ts","../src/__tests__/integration/get-project-param.integration.test.ts","../src/__tests__/integration/info.integration.test.ts","../src/__tests__/integration/jest-mocks-setup.ts","../src/__tests__/integration/jest-setup.ts","../src/__tests__/integration/link.integration.test.ts","../src/__tests__/integration/linked-config-cascade.integration.test.ts","../src/__tests__/integration/list.integration.test.ts","../src/__tests__/integration/test-utils.ts","../src/__tests__/integration/tunnel.integration.test.ts","../src/__tests__/integration/variable.integration.test.ts","../src/__tests__/integration/whoami.integration.test.ts","../src/bucket/models.ts","../src/bucket/list/handler.ts","../src/build/handler.ts","../src/ca-certificate/models.ts","../src/ca-certificate/validation.test.ts","../src/ca-certificate/validation.ts","../src/ca-certificate/create/handler.ts","../src/ca-certificate/delete/handler.ts","../src/ca-certificate/describe/handler.ts","../src/ca-certificate/list/handler.ts","../src/ca-certificate/update/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/docs.ts","../src/cmds/editor.ts","../src/cmds/info.ts","../src/cmds/init.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/logout.ts","../src/cmds/test.ts","../src/cmds/whoami.ts","../src/cmds/bucket/index.ts","../src/cmds/bucket/list.ts","../src/cmds/ca-certificate/create.ts","../src/cmds/ca-certificate/delete.ts","../src/cmds/ca-certificate/describe.ts","../src/cmds/ca-certificate/index.ts","../src/cmds/ca-certificate/list.ts","../src/cmds/ca-certificate/update.ts","../src/cmds/custom-domain/create.ts","../src/cmds/custom-domain/delete.ts","../src/cmds/custom-domain/index.ts","../src/cmds/custom-domain/list.ts","../src/cmds/custom-domain/update.ts","../src/cmds/mtls-certificates/create.ts","../src/cmds/mtls-certificates/delete.ts","../src/cmds/mtls-certificates/describe.ts","../src/cmds/mtls-certificates/disable.ts","../src/cmds/mtls-certificates/index.ts","../src/cmds/mtls-certificates/list.ts","../src/cmds/mtls-certificates/update.ts","../src/cmds/open-api/convert.ts","../src/cmds/open-api/index.ts","../src/cmds/open-api/merge.ts","../src/cmds/open-api/overlay.ts","../src/cmds/project/create.ts","../src/cmds/project/index.ts","../src/cmds/project/info.ts","../src/cmds/project/list.ts","../src/cmds/proxies/create.ts","../src/cmds/proxies/delete.ts","../src/cmds/proxies/describe.ts","../src/cmds/proxies/index.ts","../src/cmds/proxies/update.ts","../src/cmds/source/import-openapi.ts","../src/cmds/source/index.ts","../src/cmds/source/migrate.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/cli-dispatcher.test.ts","../src/common/cli-dispatcher.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/populate.ts","../src/common/read-linked-config.test.ts","../src/common/read-linked-config.ts","../src/common/runner.ts","../src/common/settings.ts","../src/common/terminal.test.ts","../src/common/terminal.ts","../src/common/worker-output.ts","../src/common/analytics/cli-invocation.test.ts","../src/common/analytics/cli-invocation.ts","../src/common/analytics/lib.ts","../src/common/analytics/package-manager.test.ts","../src/common/analytics/package-manager.ts","../src/common/api/client.ts","../src/common/api/lib.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/check-pnpm-lifecycle.test.ts","../src/common/middleware/check-pnpm-lifecycle.ts","../src/common/middleware/confirm-linked-config.ts","../src/common/middleware/confirm-production-deploy.ts","../src/common/middleware/get-account-param.ts","../src/common/middleware/get-environment-param.test.ts","../src/common/middleware/get-environment-param.ts","../src/common/middleware/get-project-param.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/middleware/validate-fleet.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/branch.ts","../src/common/utils/build-environment-prompt-choices.test.ts","../src/common/utils/build-environment-prompt-choices.ts","../src/common/utils/format-environment-type.test.ts","../src/common/utils/format-environment-type.ts","../src/common/utils/pnpm-lifecycle.test.ts","../src/common/utils/pnpm-lifecycle.ts","../src/common/utils/ports.ts","../src/common/utils/prefixed-output.ts","../src/common/utils/pretty-print-environment-prompt.test.ts","../src/common/utils/pretty-print-environment-prompt.ts","../src/common/utils/sort-environments-for-prompt.test.ts","../src/common/utils/sort-environments-for-prompt.ts","../src/common/utils/stringify-config.test.ts","../src/common/utils/stringify-config.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/argument-validators.spec.ts","../src/common/validators/argument-validators.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/custom-domain/models.ts","../src/custom-domain/create/handler.ts","../src/custom-domain/delete/handler.ts","../src/custom-domain/list/handler.ts","../src/custom-domain/update/handler.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.local-registry.test.ts","../src/deploy/archive.test.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/docs/handler.ts","../src/editor/handler.ts","../src/editor/e2e/editor.spec.ts","../src/init/handler.ts","../src/link/handler.ts","../src/link/project-type.test.ts","../src/link/project-type.ts","../src/list/handler.ts","../src/login/login.ts","../src/login/logout.ts","../src/login/tokens.ts","../src/mtls-certificates/models.ts","../src/mtls-certificates/create/handler.ts","../src/mtls-certificates/delete/handler.ts","../src/mtls-certificates/describe/handler.ts","../src/mtls-certificates/disable/handler.ts","../src/mtls-certificates/list/handler.ts","../src/mtls-certificates/update/handler.ts","../src/open-api/convert/handler.spec.ts","../src/open-api/convert/handler.ts","../src/open-api/merge/handler.spec.ts","../src/open-api/merge/handler.ts","../src/open-api/overlay/handler.spec.ts","../src/open-api/overlay/handler.ts","../src/project/create/handler.ts","../src/project/info/handler.ts","../src/project/list/handler.ts","../src/proxies/models.ts","../src/proxies/create/handler.ts","../src/proxies/delete/handler.ts","../src/proxies/describe/handler.ts","../src/proxies/update/handler.ts","../src/source/migrate/dev-portal/handler.ts","../src/source/migrate/dev-portal/types.ts","../src/source/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","../src/whoami/handler.ts"],"version":"5.8.2"}
|
|
1
|
+
{"root":["../src/cli.ts","../src/internal.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/outdated.test.ts","../src/__tests__/populate.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/__tests__/integration/confirm-linked-config.integration.test.ts","../src/__tests__/integration/confirm-production-deploy.integration.test.ts","../src/__tests__/integration/custom-domain.integration.test.ts","../src/__tests__/integration/delete.integration.test.ts","../src/__tests__/integration/deploy.integration.test.ts","../src/__tests__/integration/get-project-param.integration.test.ts","../src/__tests__/integration/info.integration.test.ts","../src/__tests__/integration/jest-mocks-setup.ts","../src/__tests__/integration/jest-setup.ts","../src/__tests__/integration/link.integration.test.ts","../src/__tests__/integration/linked-config-cascade.integration.test.ts","../src/__tests__/integration/list.integration.test.ts","../src/__tests__/integration/test-utils.ts","../src/__tests__/integration/tunnel.integration.test.ts","../src/__tests__/integration/variable.integration.test.ts","../src/__tests__/integration/whoami.integration.test.ts","../src/bucket/models.ts","../src/bucket/list/handler.ts","../src/build/handler.ts","../src/ca-certificate/models.ts","../src/ca-certificate/validation.test.ts","../src/ca-certificate/validation.ts","../src/ca-certificate/create/handler.ts","../src/ca-certificate/delete/handler.ts","../src/ca-certificate/describe/handler.ts","../src/ca-certificate/list/handler.ts","../src/ca-certificate/update/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/docs.ts","../src/cmds/editor.ts","../src/cmds/info.ts","../src/cmds/init.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/logout.ts","../src/cmds/test.ts","../src/cmds/whoami.ts","../src/cmds/bucket/index.ts","../src/cmds/bucket/list.ts","../src/cmds/ca-certificate/create.ts","../src/cmds/ca-certificate/delete.ts","../src/cmds/ca-certificate/describe.ts","../src/cmds/ca-certificate/index.ts","../src/cmds/ca-certificate/list.ts","../src/cmds/ca-certificate/update.ts","../src/cmds/custom-domain/create.ts","../src/cmds/custom-domain/delete.ts","../src/cmds/custom-domain/index.ts","../src/cmds/custom-domain/list.ts","../src/cmds/custom-domain/update.ts","../src/cmds/mtls-certificates/create.ts","../src/cmds/mtls-certificates/delete.ts","../src/cmds/mtls-certificates/describe.ts","../src/cmds/mtls-certificates/disable.ts","../src/cmds/mtls-certificates/index.ts","../src/cmds/mtls-certificates/list.ts","../src/cmds/mtls-certificates/update.ts","../src/cmds/open-api/convert.ts","../src/cmds/open-api/index.ts","../src/cmds/open-api/merge.ts","../src/cmds/open-api/overlay.ts","../src/cmds/project/create.ts","../src/cmds/project/index.ts","../src/cmds/project/info.ts","../src/cmds/project/list.ts","../src/cmds/proxies/create.ts","../src/cmds/proxies/delete.ts","../src/cmds/proxies/describe.ts","../src/cmds/proxies/index.ts","../src/cmds/proxies/update.ts","../src/cmds/source/import-openapi.ts","../src/cmds/source/index.ts","../src/cmds/source/migrate.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/cli-dispatcher.test.ts","../src/common/cli-dispatcher.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/populate.ts","../src/common/read-linked-config.test.ts","../src/common/read-linked-config.ts","../src/common/runner.ts","../src/common/settings.ts","../src/common/terminal.test.ts","../src/common/terminal.ts","../src/common/worker-output.ts","../src/common/analytics/cli-invocation.test.ts","../src/common/analytics/cli-invocation.ts","../src/common/analytics/lib.ts","../src/common/analytics/package-manager.test.ts","../src/common/analytics/package-manager.ts","../src/common/api/client.ts","../src/common/api/lib.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/check-pnpm-lifecycle.test.ts","../src/common/middleware/check-pnpm-lifecycle.ts","../src/common/middleware/confirm-linked-config.ts","../src/common/middleware/confirm-production-deploy.ts","../src/common/middleware/get-account-param.ts","../src/common/middleware/get-environment-param.test.ts","../src/common/middleware/get-environment-param.ts","../src/common/middleware/get-project-param.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/middleware/validate-fleet.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/branch.ts","../src/common/utils/build-environment-prompt-choices.test.ts","../src/common/utils/build-environment-prompt-choices.ts","../src/common/utils/format-environment-type.test.ts","../src/common/utils/format-environment-type.ts","../src/common/utils/pnpm-lifecycle.test.ts","../src/common/utils/pnpm-lifecycle.ts","../src/common/utils/ports.ts","../src/common/utils/prefixed-output.ts","../src/common/utils/pretty-print-environment-prompt.test.ts","../src/common/utils/pretty-print-environment-prompt.ts","../src/common/utils/sort-environments-for-prompt.test.ts","../src/common/utils/sort-environments-for-prompt.ts","../src/common/utils/stringify-config.test.ts","../src/common/utils/stringify-config.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/argument-validators.spec.ts","../src/common/validators/argument-validators.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/custom-domain/models.ts","../src/custom-domain/create/handler.ts","../src/custom-domain/delete/handler.ts","../src/custom-domain/list/handler.ts","../src/custom-domain/update/handler.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.local-registry.test.ts","../src/deploy/archive.test.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/dev/zuplo-local-gitignore.test.ts","../src/dev/zuplo-local-gitignore.ts","../src/docs/handler.ts","../src/editor/handler.ts","../src/editor/e2e/editor.spec.ts","../src/init/handler.ts","../src/link/handler.ts","../src/link/project-type.test.ts","../src/link/project-type.ts","../src/list/handler.ts","../src/login/login.ts","../src/login/logout.ts","../src/login/tokens.ts","../src/mtls-certificates/models.ts","../src/mtls-certificates/create/handler.ts","../src/mtls-certificates/delete/handler.ts","../src/mtls-certificates/describe/handler.ts","../src/mtls-certificates/disable/handler.ts","../src/mtls-certificates/list/handler.ts","../src/mtls-certificates/update/handler.ts","../src/open-api/convert/handler.spec.ts","../src/open-api/convert/handler.ts","../src/open-api/merge/handler.spec.ts","../src/open-api/merge/handler.ts","../src/open-api/overlay/handler.spec.ts","../src/open-api/overlay/handler.ts","../src/project/create/handler.ts","../src/project/info/handler.ts","../src/project/list/handler.ts","../src/proxies/models.ts","../src/proxies/create/handler.ts","../src/proxies/delete/handler.ts","../src/proxies/describe/handler.ts","../src/proxies/update/handler.ts","../src/source/migrate/dev-portal/handler.ts","../src/source/migrate/dev-portal/types.ts","../src/source/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","../src/whoami/handler.ts"],"version":"5.8.2"}
|