convex 1.21.1-alpha.2 → 1.23.0
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/CHANGELOG.md +9 -0
- package/dist/browser.bundle.js +1 -1
- package/dist/browser.bundle.js.map +1 -1
- package/dist/cjs/cli/configure.js +2 -1
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/deploy.js +5 -1
- package/dist/cjs/cli/deploy.js.map +2 -2
- package/dist/cjs/cli/lib/deploymentSelection.js +4 -1
- package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/anonymous.js +9 -9
- package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/utils.js +2 -2
- package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs-types/cli/configure.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
- package/dist/cjs-types/index.d.ts +1 -1
- package/dist/cjs-types/index.d.ts.map +1 -1
- package/dist/cli.bundle.cjs +23 -15
- package/dist/cli.bundle.cjs.map +2 -2
- package/dist/esm/cli/configure.js +2 -1
- package/dist/esm/cli/configure.js.map +2 -2
- package/dist/esm/cli/deploy.js +5 -1
- package/dist/esm/cli/deploy.js.map +2 -2
- package/dist/esm/cli/lib/deploymentSelection.js +4 -1
- package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/anonymous.js +9 -9
- package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/utils.js +2 -2
- package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm-types/cli/configure.d.ts.map +1 -1
- package/dist/esm-types/cli/deploy.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
- package/dist/esm-types/index.d.ts +1 -1
- package/dist/esm-types/index.d.ts.map +1 -1
- package/dist/react.bundle.js +1 -1
- package/dist/react.bundle.js.map +1 -1
- package/package.json +7 -7
- package/src/cli/configure.ts +17 -15
- package/src/cli/deploy.ts +5 -1
- package/src/cli/lib/deploymentSelection.ts +5 -2
- package/src/cli/lib/localDeployment/anonymous.ts +9 -9
- package/src/cli/lib/localDeployment/utils.ts +3 -2
- package/src/index.ts +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/cli/lib/localDeployment/anonymous.ts"],
|
|
4
|
-
"sourcesContent": ["// ----------------------------------------------------------------------------\n// Anonymous (No account)\n\nimport path from \"path\";\nimport {\n Context,\n logFinishedStep,\n logMessage,\n logVerbose,\n logWarning,\n} from \"../../../bundler/context.js\";\nimport { promptSearch, promptString, promptYesNo } from \"../utils/prompts.js\";\nimport {\n bigBrainGenerateAdminKeyForAnonymousDeployment,\n bigBrainPause,\n bigBrainStart,\n} from \"./bigBrain.js\";\nimport { LocalDeploymentError, printLocalDeploymentOnError } from \"./errors.js\";\nimport {\n LocalDeploymentKind,\n deploymentStateDir,\n ensureUuidForAnonymousUser,\n loadDeploymentConfig,\n saveDeploymentConfig,\n} from \"./filePaths.js\";\nimport { rootDeploymentStateDir } from \"./filePaths.js\";\nimport { LocalDeploymentConfig } from \"./filePaths.js\";\nimport { DeploymentDetails } from \"./localDeployment.js\";\nimport { ensureBackendStopped, localDeploymentUrl } from \"./run.js\";\nimport { ensureBackendRunning } from \"./run.js\";\nimport { handlePotentialUpgrade } from \"./upgrade.js\";\nimport {\n isOffline,\n generateInstanceSecret,\n choosePorts,\n LOCAL_BACKEND_INSTANCE_SECRET,\n} from \"./utils.js\";\nimport { handleDashboard } from \"./dashboard.js\";\nimport crypto from \"crypto\";\nimport { recursivelyDelete, recursivelyCopy } from \"../fsUtils.js\";\nimport { ensureBackendBinaryDownloaded } from \"./download.js\";\nimport { isAnonymousDeployment } from \"../deployment.js\";\nimport { createProject } from \"../api.js\";\nimport { removeAnonymousPrefix } from \"../deployment.js\";\nimport { nodeFs } from \"../../../bundler/fs.js\";\n\nexport async function handleAnonymousDeployment(\n ctx: Context,\n options: {\n ports?: {\n cloud: number;\n site: number;\n };\n backendVersion?: string;\n dashboardVersion?: string;\n forceUpgrade: boolean;\n deploymentName: string | null;\n chosenConfiguration: \"new\" | \"existing\" | \"ask\" | null;\n },\n): Promise<DeploymentDetails> {\n if (await isOffline()) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Cannot run a local deployment while offline\",\n });\n }\n\n const deployment = await chooseDeployment(ctx, {\n deploymentName: options.deploymentName,\n chosenConfiguration: options.chosenConfiguration,\n });\n if (deployment.kind === \"first\") {\n logMessage(\n ctx,\n \"This command, `npx convex dev`, will run your deployment and update it with the function you write in the `convex/` directory.\",\n );\n logMessage(\n ctx,\n \"Use `npx convex dashboard` to view and interact with your deployment from a web UI.\",\n );\n logMessage(\n ctx,\n \"Use `npx convex docs` to read the docs and `npx convex help` to see other commands.\",\n );\n ensureUuidForAnonymousUser(ctx);\n if (process.stdin.isTTY) {\n const result = await promptYesNo(ctx, {\n message: \"Got it? Let's get started!\",\n default: true,\n });\n if (!result) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Exiting\",\n });\n }\n }\n }\n ctx.registerCleanup(async (_exitCode, err) => {\n if (err instanceof LocalDeploymentError) {\n printLocalDeploymentOnError(ctx);\n }\n });\n const { binaryPath, version } = await ensureBackendBinaryDownloaded(\n ctx,\n options.backendVersion === undefined\n ? {\n kind: \"latest\",\n }\n : { kind: \"version\", version: options.backendVersion },\n );\n await handleDashboard(ctx, version);\n let adminKey: string;\n let instanceSecret: string;\n if (deployment.kind === \"existing\") {\n adminKey = deployment.config.adminKey;\n instanceSecret =\n deployment.config.instanceSecret ?? LOCAL_BACKEND_INSTANCE_SECRET;\n // If it's still running for some reason, exit and tell the user to kill it.\n // It's fine if a different backend is running on these ports though since we'll\n // pick new ones.\n await ensureBackendStopped(ctx, {\n ports: {\n cloud: deployment.config.ports.cloud,\n },\n maxTimeSecs: 5,\n deploymentName: deployment.deploymentName,\n allowOtherDeployments: true,\n });\n } else {\n instanceSecret = generateInstanceSecret();\n const data = await bigBrainGenerateAdminKeyForAnonymousDeployment(ctx, {\n instanceName: deployment.deploymentName,\n instanceSecret,\n });\n adminKey = data.adminKey;\n }\n\n const [cloudPort, sitePort] = await choosePorts(ctx, {\n count: 2,\n startPort: 3210,\n requestedPorts: [options.ports?.cloud ?? null, options.ports?.site ?? null],\n });\n const onActivity = async (isOffline: boolean, _wasOffline: boolean) => {\n await ensureBackendRunning(ctx, {\n cloudPort,\n deploymentName: deployment.deploymentName,\n maxTimeSecs: 5,\n });\n if (isOffline) {\n return;\n }\n };\n\n const { cleanupHandle } = await handlePotentialUpgrade(ctx, {\n deploymentName: deployment.deploymentName,\n deploymentKind: \"anonymous\",\n oldVersion:\n deployment.kind === \"existing\" ? deployment.config.backendVersion : null,\n newBinaryPath: binaryPath,\n newVersion: version,\n ports: { cloud: cloudPort, site: sitePort },\n adminKey,\n instanceSecret,\n forceUpgrade: options.forceUpgrade,\n });\n\n const cleanupFunc = ctx.removeCleanup(cleanupHandle);\n ctx.registerCleanup(async (exitCode, err) => {\n if (cleanupFunc !== null) {\n await cleanupFunc(exitCode, err);\n }\n });\n\n return {\n adminKey,\n deploymentName: deployment.deploymentName,\n deploymentUrl: localDeploymentUrl(cloudPort),\n onActivity,\n };\n}\n\nexport async function loadAnonymousDeployment(\n ctx: Context,\n deploymentName: string,\n): Promise<LocalDeploymentConfig> {\n const config = loadDeploymentConfig(ctx, \"anonymous\", deploymentName);\n if (config === null) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Could not find deployment with name ${deploymentName}!`,\n });\n }\n return config;\n}\n\nexport async function listExistingAnonymousDeployments(ctx: Context): Promise<\n Array<{\n deploymentName: string;\n config: LocalDeploymentConfig;\n }>\n> {\n const dir = rootDeploymentStateDir(\"anonymous\");\n if (!ctx.fs.exists(dir)) {\n return [];\n }\n const deploymentNames = ctx.fs\n .listDir(dir)\n .map((d) => d.name)\n .filter((d) => isAnonymousDeployment(d));\n return deploymentNames.flatMap((deploymentName) => {\n const config = loadDeploymentConfig(ctx, \"anonymous\", deploymentName);\n if (config !== null) {\n return [{ deploymentName, config }];\n }\n return [];\n });\n}\n\nasync function chooseDeployment(\n ctx: Context,\n options: {\n deploymentName: string | null;\n chosenConfiguration: \"new\" | \"existing\" | \"ask\" | null;\n },\n): Promise<\n | {\n kind: \"existing\";\n deploymentName: string;\n config: LocalDeploymentConfig;\n }\n | {\n kind: \"new\";\n deploymentName: string;\n }\n | {\n kind: \"first\";\n deploymentName: string;\n }\n> {\n const deployments = await listExistingAnonymousDeployments(ctx);\n if (options.deploymentName !== null && options.chosenConfiguration === null) {\n const existing = deployments.find(\n (d) => d.deploymentName === options.deploymentName,\n );\n if (existing === undefined) {\n logWarning(\n ctx,\n `Could not find deployment with name ${options.deploymentName}!`,\n );\n } else {\n return {\n kind: \"existing\",\n deploymentName: existing.deploymentName,\n config: existing.config,\n };\n }\n }\n if (deployments.length === 0) {\n logMessage(ctx, \"Let's set up your first deployment.\");\n return await promptForNewDeployment(ctx, []);\n }\n\n if (options.chosenConfiguration === \"new\") {\n const deploymentName = await promptString(ctx, {\n message: \"Choose a name for your new deployment:\",\n default: path.basename(process.cwd()),\n });\n const uniqueName = await getUniqueName(\n ctx,\n deploymentName,\n deployments.map((d) => d.deploymentName),\n );\n logVerbose(ctx, `Deployment name: ${uniqueName}`);\n return {\n kind: \"new\",\n deploymentName: uniqueName,\n };\n }\n\n const newOrExisting = await promptSearch(ctx, {\n message: \"Which deployment would you like to use?\",\n choices: [\n ...(options.chosenConfiguration === \"existing\"\n ? []\n : [\n {\n name: \"Create a new one\",\n value: \"new\",\n },\n ]),\n ...deployments.map((d) => ({\n name: d.deploymentName,\n value: d.deploymentName,\n })),\n ],\n });\n\n if (newOrExisting !== \"new\") {\n const existingDeployment = deployments.find(\n (d) => d.deploymentName === newOrExisting,\n );\n if (existingDeployment === undefined) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Could not find deployment with name ${newOrExisting}!`,\n });\n }\n return {\n kind: \"existing\",\n deploymentName: existingDeployment.deploymentName,\n config: existingDeployment.config,\n };\n }\n return await promptForNewDeployment(\n ctx,\n deployments.map((d) => d.deploymentName),\n );\n}\n\nasync function promptForNewDeployment(\n ctx: Context,\n existingNames: string[],\n): Promise<\n | {\n kind: \"first\";\n deploymentName: string;\n }\n | {\n kind: \"new\";\n deploymentName: string;\n }\n> {\n const isFirstDeployment = existingNames.length === 0;\n const deploymentName = await promptString(ctx, {\n message: \"Choose a name:\",\n default: path.basename(process.cwd()),\n });\n\n const uniqueName = await getUniqueName(\n ctx,\n `anonymous-${deploymentName}`,\n existingNames,\n );\n logVerbose(ctx, `Deployment name: ${uniqueName}`);\n return isFirstDeployment\n ? {\n kind: \"first\",\n deploymentName: uniqueName,\n }\n : {\n kind: \"new\",\n deploymentName: uniqueName,\n };\n}\n\nasync function getUniqueName(\n ctx: Context,\n name: string,\n existingNames: string[],\n) {\n if (!existingNames.includes(name)) {\n return name;\n }\n for (let i = 1; i <= 5; i++) {\n const uniqueName = `${name}-${i}`;\n if (!existingNames.includes(uniqueName)) {\n return uniqueName;\n }\n }\n const randomSuffix = crypto.randomBytes(4).toString(\"hex\");\n\n const uniqueName = `${name}-${randomSuffix}`;\n if (!existingNames.includes(uniqueName)) {\n return uniqueName;\n }\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Could not generate a unique name for your deployment, please choose a different name`,\n });\n}\n/**\n * This takes an \"anonymous\" deployment and makes it a \"local\" deployment\n * that is associated with a project in the given team.\n */\nexport async function handleLinkToProject(\n ctx: Context,\n args: {\n deploymentName: string;\n teamSlug: string;\n projectSlug: string | null;\n },\n): Promise<{\n deploymentName: string;\n deploymentUrl: string;\n projectSlug: string;\n}> {\n logVerbose(\n ctx,\n `Linking ${args.deploymentName} to a project in team ${args.teamSlug}`,\n );\n const config = await loadDeploymentConfig(\n ctx,\n \"anonymous\",\n args.deploymentName,\n );\n if (config === null) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Failed to load deployment config\",\n });\n }\n await ensureBackendStopped(ctx, {\n ports: {\n cloud: config.ports.cloud,\n },\n deploymentName: args.deploymentName,\n allowOtherDeployments: true,\n maxTimeSecs: 5,\n });\n const projectName = removeAnonymousPrefix(args.deploymentName);\n let projectSlug: string;\n if (args.projectSlug !== null) {\n projectSlug = args.projectSlug;\n } else {\n const { projectSlug: newProjectSlug } = await createProject(ctx, {\n teamSlug: args.teamSlug,\n projectName,\n deploymentTypeToProvision: \"prod\",\n });\n projectSlug = newProjectSlug;\n }\n logVerbose(ctx, `Creating local deployment in project ${projectSlug}`);\n // Register it in big brain\n const { deploymentName: localDeploymentName, adminKey } = await bigBrainStart(\n ctx,\n {\n port: config.ports.cloud,\n projectSlug,\n teamSlug: args.teamSlug,\n instanceName: null,\n },\n );\n const localConfig = loadDeploymentConfig(ctx, \"local\", localDeploymentName);\n if (localConfig !== null) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Project ${projectSlug} already has a local deployment, so we cannot link this anonymous local deployment to it.`,\n });\n }\n logVerbose(ctx, `Moving ${args.deploymentName} to ${localDeploymentName}`);\n await moveDeployment(\n ctx,\n {\n deploymentKind: \"anonymous\",\n deploymentName: args.deploymentName,\n },\n {\n deploymentKind: \"local\",\n deploymentName: localDeploymentName,\n },\n );\n logVerbose(ctx, `Saving deployment config for ${localDeploymentName}`);\n await saveDeploymentConfig(ctx, \"local\", localDeploymentName, {\n adminKey,\n backendVersion: config.backendVersion,\n ports: config.ports,\n });\n await bigBrainPause(ctx, {\n projectSlug,\n teamSlug: args.teamSlug,\n });\n logFinishedStep(\n ctx,\n `Linked ${args.deploymentName} to project ${projectSlug}`,\n );\n return {\n projectSlug,\n deploymentName: localDeploymentName,\n deploymentUrl: localDeploymentUrl(config.ports.cloud),\n };\n}\n\nexport async function moveDeployment(\n ctx: Context,\n oldDeployment: {\n deploymentKind: LocalDeploymentKind;\n deploymentName: string;\n },\n newDeployment: {\n deploymentKind: LocalDeploymentKind;\n deploymentName: string;\n },\n) {\n const oldPath = deploymentStateDir(\n oldDeployment.deploymentKind,\n oldDeployment.deploymentName,\n );\n const newPath = deploymentStateDir(\n newDeployment.deploymentKind,\n newDeployment.deploymentName,\n );\n await recursivelyCopy(ctx, nodeFs, oldPath, newPath);\n recursivelyDelete(ctx, oldPath);\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["// ----------------------------------------------------------------------------\n// Anonymous (No account)\n\nimport path from \"path\";\nimport {\n Context,\n logFinishedStep,\n logMessage,\n logVerbose,\n logWarning,\n} from \"../../../bundler/context.js\";\nimport { promptSearch, promptString, promptYesNo } from \"../utils/prompts.js\";\nimport {\n bigBrainGenerateAdminKeyForAnonymousDeployment,\n bigBrainPause,\n bigBrainStart,\n} from \"./bigBrain.js\";\nimport { LocalDeploymentError, printLocalDeploymentOnError } from \"./errors.js\";\nimport {\n LocalDeploymentKind,\n deploymentStateDir,\n ensureUuidForAnonymousUser,\n loadDeploymentConfig,\n saveDeploymentConfig,\n} from \"./filePaths.js\";\nimport { rootDeploymentStateDir } from \"./filePaths.js\";\nimport { LocalDeploymentConfig } from \"./filePaths.js\";\nimport { DeploymentDetails } from \"./localDeployment.js\";\nimport { ensureBackendStopped, localDeploymentUrl } from \"./run.js\";\nimport { ensureBackendRunning } from \"./run.js\";\nimport { handlePotentialUpgrade } from \"./upgrade.js\";\nimport {\n isOffline,\n generateInstanceSecret,\n choosePorts,\n LOCAL_BACKEND_INSTANCE_SECRET,\n} from \"./utils.js\";\nimport { handleDashboard } from \"./dashboard.js\";\nimport crypto from \"crypto\";\nimport { recursivelyDelete, recursivelyCopy } from \"../fsUtils.js\";\nimport { ensureBackendBinaryDownloaded } from \"./download.js\";\nimport { isAnonymousDeployment } from \"../deployment.js\";\nimport { createProject } from \"../api.js\";\nimport { removeAnonymousPrefix } from \"../deployment.js\";\nimport { nodeFs } from \"../../../bundler/fs.js\";\n\nexport async function handleAnonymousDeployment(\n ctx: Context,\n options: {\n ports?: {\n cloud: number;\n site: number;\n };\n backendVersion?: string;\n dashboardVersion?: string;\n forceUpgrade: boolean;\n deploymentName: string | null;\n chosenConfiguration: \"new\" | \"existing\" | \"ask\" | null;\n },\n): Promise<DeploymentDetails> {\n if (await isOffline()) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Cannot run a local deployment while offline\",\n });\n }\n\n const deployment = await chooseDeployment(ctx, {\n deploymentName: options.deploymentName,\n chosenConfiguration: options.chosenConfiguration,\n });\n if (deployment.kind === \"first\") {\n logMessage(\n ctx,\n \"This command, `npx convex dev`, will run your Convex backend locally and update it with the function you write in the `convex/` directory.\",\n );\n logMessage(\n ctx,\n \"Use `npx convex dashboard` to view and interact with your project from a web UI.\",\n );\n logMessage(\n ctx,\n \"Use `npx convex docs` to read the docs and `npx convex help` to see other commands.\",\n );\n ensureUuidForAnonymousUser(ctx);\n if (process.stdin.isTTY) {\n const result = await promptYesNo(ctx, {\n message: \"Continue?\",\n default: true,\n });\n if (!result) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Exiting\",\n });\n }\n }\n }\n ctx.registerCleanup(async (_exitCode, err) => {\n if (err instanceof LocalDeploymentError) {\n printLocalDeploymentOnError(ctx);\n }\n });\n const { binaryPath, version } = await ensureBackendBinaryDownloaded(\n ctx,\n options.backendVersion === undefined\n ? {\n kind: \"latest\",\n }\n : { kind: \"version\", version: options.backendVersion },\n );\n await handleDashboard(ctx, version);\n let adminKey: string;\n let instanceSecret: string;\n if (deployment.kind === \"existing\") {\n adminKey = deployment.config.adminKey;\n instanceSecret =\n deployment.config.instanceSecret ?? LOCAL_BACKEND_INSTANCE_SECRET;\n // If it's still running for some reason, exit and tell the user to kill it.\n // It's fine if a different backend is running on these ports though since we'll\n // pick new ones.\n await ensureBackendStopped(ctx, {\n ports: {\n cloud: deployment.config.ports.cloud,\n },\n maxTimeSecs: 5,\n deploymentName: deployment.deploymentName,\n allowOtherDeployments: true,\n });\n } else {\n instanceSecret = generateInstanceSecret();\n const data = await bigBrainGenerateAdminKeyForAnonymousDeployment(ctx, {\n instanceName: deployment.deploymentName,\n instanceSecret,\n });\n adminKey = data.adminKey;\n }\n\n const [cloudPort, sitePort] = await choosePorts(ctx, {\n count: 2,\n startPort: 3210,\n requestedPorts: [options.ports?.cloud ?? null, options.ports?.site ?? null],\n });\n const onActivity = async (isOffline: boolean, _wasOffline: boolean) => {\n await ensureBackendRunning(ctx, {\n cloudPort,\n deploymentName: deployment.deploymentName,\n maxTimeSecs: 5,\n });\n if (isOffline) {\n return;\n }\n };\n\n const { cleanupHandle } = await handlePotentialUpgrade(ctx, {\n deploymentName: deployment.deploymentName,\n deploymentKind: \"anonymous\",\n oldVersion:\n deployment.kind === \"existing\" ? deployment.config.backendVersion : null,\n newBinaryPath: binaryPath,\n newVersion: version,\n ports: { cloud: cloudPort, site: sitePort },\n adminKey,\n instanceSecret,\n forceUpgrade: options.forceUpgrade,\n });\n\n const cleanupFunc = ctx.removeCleanup(cleanupHandle);\n ctx.registerCleanup(async (exitCode, err) => {\n if (cleanupFunc !== null) {\n await cleanupFunc(exitCode, err);\n }\n });\n\n return {\n adminKey,\n deploymentName: deployment.deploymentName,\n deploymentUrl: localDeploymentUrl(cloudPort),\n onActivity,\n };\n}\n\nexport async function loadAnonymousDeployment(\n ctx: Context,\n deploymentName: string,\n): Promise<LocalDeploymentConfig> {\n const config = loadDeploymentConfig(ctx, \"anonymous\", deploymentName);\n if (config === null) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Could not find deployment with name ${deploymentName}!`,\n });\n }\n return config;\n}\n\nexport async function listExistingAnonymousDeployments(ctx: Context): Promise<\n Array<{\n deploymentName: string;\n config: LocalDeploymentConfig;\n }>\n> {\n const dir = rootDeploymentStateDir(\"anonymous\");\n if (!ctx.fs.exists(dir)) {\n return [];\n }\n const deploymentNames = ctx.fs\n .listDir(dir)\n .map((d) => d.name)\n .filter((d) => isAnonymousDeployment(d));\n return deploymentNames.flatMap((deploymentName) => {\n const config = loadDeploymentConfig(ctx, \"anonymous\", deploymentName);\n if (config !== null) {\n return [{ deploymentName, config }];\n }\n return [];\n });\n}\n\nasync function chooseDeployment(\n ctx: Context,\n options: {\n deploymentName: string | null;\n chosenConfiguration: \"new\" | \"existing\" | \"ask\" | null;\n },\n): Promise<\n | {\n kind: \"existing\";\n deploymentName: string;\n config: LocalDeploymentConfig;\n }\n | {\n kind: \"new\";\n deploymentName: string;\n }\n | {\n kind: \"first\";\n deploymentName: string;\n }\n> {\n const deployments = await listExistingAnonymousDeployments(ctx);\n if (options.deploymentName !== null && options.chosenConfiguration === null) {\n const existing = deployments.find(\n (d) => d.deploymentName === options.deploymentName,\n );\n if (existing === undefined) {\n logWarning(\n ctx,\n `Could not find project with name ${options.deploymentName}!`,\n );\n } else {\n return {\n kind: \"existing\",\n deploymentName: existing.deploymentName,\n config: existing.config,\n };\n }\n }\n if (deployments.length === 0) {\n logMessage(ctx, \"Let's set up your first project.\");\n return await promptForNewDeployment(ctx, []);\n }\n\n if (options.chosenConfiguration === \"new\") {\n const deploymentName = await promptString(ctx, {\n message: \"Choose a name for your new project:\",\n default: path.basename(process.cwd()),\n });\n const uniqueName = await getUniqueName(\n ctx,\n deploymentName,\n deployments.map((d) => d.deploymentName),\n );\n logVerbose(ctx, `Deployment name: ${uniqueName}`);\n return {\n kind: \"new\",\n deploymentName: uniqueName,\n };\n }\n\n const newOrExisting = await promptSearch(ctx, {\n message: \"Which project would you like to use?\",\n choices: [\n ...(options.chosenConfiguration === \"existing\"\n ? []\n : [\n {\n name: \"Create a new one\",\n value: \"new\",\n },\n ]),\n ...deployments.map((d) => ({\n name: d.deploymentName,\n value: d.deploymentName,\n })),\n ],\n });\n\n if (newOrExisting !== \"new\") {\n const existingDeployment = deployments.find(\n (d) => d.deploymentName === newOrExisting,\n );\n if (existingDeployment === undefined) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Could not find project with name ${newOrExisting}!`,\n });\n }\n return {\n kind: \"existing\",\n deploymentName: existingDeployment.deploymentName,\n config: existingDeployment.config,\n };\n }\n return await promptForNewDeployment(\n ctx,\n deployments.map((d) => d.deploymentName),\n );\n}\n\nasync function promptForNewDeployment(\n ctx: Context,\n existingNames: string[],\n): Promise<\n | {\n kind: \"first\";\n deploymentName: string;\n }\n | {\n kind: \"new\";\n deploymentName: string;\n }\n> {\n const isFirstDeployment = existingNames.length === 0;\n const deploymentName = await promptString(ctx, {\n message: \"Choose a name:\",\n default: path.basename(process.cwd()),\n });\n\n const uniqueName = await getUniqueName(\n ctx,\n `anonymous-${deploymentName}`,\n existingNames,\n );\n logVerbose(ctx, `Deployment name: ${uniqueName}`);\n return isFirstDeployment\n ? {\n kind: \"first\",\n deploymentName: uniqueName,\n }\n : {\n kind: \"new\",\n deploymentName: uniqueName,\n };\n}\n\nasync function getUniqueName(\n ctx: Context,\n name: string,\n existingNames: string[],\n) {\n if (!existingNames.includes(name)) {\n return name;\n }\n for (let i = 1; i <= 5; i++) {\n const uniqueName = `${name}-${i}`;\n if (!existingNames.includes(uniqueName)) {\n return uniqueName;\n }\n }\n const randomSuffix = crypto.randomBytes(4).toString(\"hex\");\n\n const uniqueName = `${name}-${randomSuffix}`;\n if (!existingNames.includes(uniqueName)) {\n return uniqueName;\n }\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Could not generate a unique name for your project, please choose a different name`,\n });\n}\n/**\n * This takes an \"anonymous\" deployment and makes it a \"local\" deployment\n * that is associated with a project in the given team.\n */\nexport async function handleLinkToProject(\n ctx: Context,\n args: {\n deploymentName: string;\n teamSlug: string;\n projectSlug: string | null;\n },\n): Promise<{\n deploymentName: string;\n deploymentUrl: string;\n projectSlug: string;\n}> {\n logVerbose(\n ctx,\n `Linking ${args.deploymentName} to a project in team ${args.teamSlug}`,\n );\n const config = await loadDeploymentConfig(\n ctx,\n \"anonymous\",\n args.deploymentName,\n );\n if (config === null) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Failed to load deployment config\",\n });\n }\n await ensureBackendStopped(ctx, {\n ports: {\n cloud: config.ports.cloud,\n },\n deploymentName: args.deploymentName,\n allowOtherDeployments: true,\n maxTimeSecs: 5,\n });\n const projectName = removeAnonymousPrefix(args.deploymentName);\n let projectSlug: string;\n if (args.projectSlug !== null) {\n projectSlug = args.projectSlug;\n } else {\n const { projectSlug: newProjectSlug } = await createProject(ctx, {\n teamSlug: args.teamSlug,\n projectName,\n deploymentTypeToProvision: \"prod\",\n });\n projectSlug = newProjectSlug;\n }\n logVerbose(ctx, `Creating local deployment in project ${projectSlug}`);\n // Register it in big brain\n const { deploymentName: localDeploymentName, adminKey } = await bigBrainStart(\n ctx,\n {\n port: config.ports.cloud,\n projectSlug,\n teamSlug: args.teamSlug,\n instanceName: null,\n },\n );\n const localConfig = loadDeploymentConfig(ctx, \"local\", localDeploymentName);\n if (localConfig !== null) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Project ${projectSlug} already has a local deployment, so we cannot link this anonymous local deployment to it.`,\n });\n }\n logVerbose(ctx, `Moving ${args.deploymentName} to ${localDeploymentName}`);\n await moveDeployment(\n ctx,\n {\n deploymentKind: \"anonymous\",\n deploymentName: args.deploymentName,\n },\n {\n deploymentKind: \"local\",\n deploymentName: localDeploymentName,\n },\n );\n logVerbose(ctx, `Saving deployment config for ${localDeploymentName}`);\n await saveDeploymentConfig(ctx, \"local\", localDeploymentName, {\n adminKey,\n backendVersion: config.backendVersion,\n ports: config.ports,\n });\n await bigBrainPause(ctx, {\n projectSlug,\n teamSlug: args.teamSlug,\n });\n logFinishedStep(\n ctx,\n `Linked ${args.deploymentName} to project ${projectSlug}`,\n );\n return {\n projectSlug,\n deploymentName: localDeploymentName,\n deploymentUrl: localDeploymentUrl(config.ports.cloud),\n };\n}\n\nexport async function moveDeployment(\n ctx: Context,\n oldDeployment: {\n deploymentKind: LocalDeploymentKind;\n deploymentName: string;\n },\n newDeployment: {\n deploymentKind: LocalDeploymentKind;\n deploymentName: string;\n },\n) {\n const oldPath = deploymentStateDir(\n oldDeployment.deploymentKind,\n oldDeployment.deploymentName,\n );\n const newPath = deploymentStateDir(\n newDeployment.deploymentKind,\n newDeployment.deploymentName,\n );\n await recursivelyCopy(ctx, nodeFs, oldPath, newPath);\n recursivelyDelete(ctx, oldPath);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_filePaths", "import_run", "import_deployment", "isOffline", "path", "uniqueName", "crypto"]
|
|
7
7
|
}
|
|
@@ -58,8 +58,8 @@ async function choosePorts(ctx, {
|
|
|
58
58
|
}
|
|
59
59
|
ports.push(port);
|
|
60
60
|
} else {
|
|
61
|
-
const
|
|
62
|
-
const port = await (0, import_detect_port.detect)(
|
|
61
|
+
const portToTry = ports.length > 0 ? ports[ports.length - 1] + 1 : startPort;
|
|
62
|
+
const port = await (0, import_detect_port.detect)(portToTry);
|
|
63
63
|
ports.push(port);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/cli/lib/localDeployment/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import { Context, logMessage } from \"../../../bundler/context.js\";\nimport { detect } from \"detect-port\";\nimport crypto from \"crypto\";\nimport chalk from \"chalk\";\n\nexport async function choosePorts(\n ctx: Context,\n {\n count,\n requestedPorts,\n startPort,\n }: {\n count: number;\n requestedPorts?: Array<number | null>;\n startPort: number;\n },\n): Promise<Array<number>> {\n const ports: Array<number> = [];\n for (let i = 0; i < count; i++) {\n const requestedPort = requestedPorts?.[i];\n if (requestedPort !== null) {\n const port = await detect(requestedPort);\n if (port !== requestedPort) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Requested port is not available\",\n });\n }\n ports.push(port);\n } else {\n const
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoC;AACpC,yBAAuB;AACvB,oBAAmB;AACnB,mBAAkB;AAElB,eAAsB,YACpB,KACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AACF,GAKwB;AACxB,QAAM,QAAuB,CAAC;AAC9B,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,UAAM,gBAAgB,iBAAiB,CAAC;AACxC,QAAI,kBAAkB,MAAM;AAC1B,YAAM,OAAO,UAAM,2BAAO,aAAa;AACvC,UAAI,SAAS,eAAe;AAC1B,eAAO,IAAI,MAAM;AAAA,UACf,UAAU;AAAA,UACV,WAAW;AAAA,UACX,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AACA,YAAM,KAAK,IAAI;AAAA,IACjB,OAAO;AACL,YAAM,
|
|
4
|
+
"sourcesContent": ["import { Context, logMessage } from \"../../../bundler/context.js\";\nimport { detect } from \"detect-port\";\nimport crypto from \"crypto\";\nimport chalk from \"chalk\";\n\nexport async function choosePorts(\n ctx: Context,\n {\n count,\n requestedPorts,\n startPort,\n }: {\n count: number;\n requestedPorts?: Array<number | null>;\n startPort: number;\n },\n): Promise<Array<number>> {\n const ports: Array<number> = [];\n for (let i = 0; i < count; i++) {\n const requestedPort = requestedPorts?.[i];\n if (requestedPort !== null) {\n const port = await detect(requestedPort);\n if (port !== requestedPort) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Requested port is not available\",\n });\n }\n ports.push(port);\n } else {\n const portToTry =\n ports.length > 0 ? ports[ports.length - 1] + 1 : startPort;\n const port = await detect(portToTry);\n ports.push(port);\n }\n }\n return ports;\n}\n\nexport async function isOffline(): Promise<boolean> {\n // TODO(ENG-7080) -- implement this for real\n return false;\n}\n\nexport function printLocalDeploymentWelcomeMessage(ctx: Context) {\n logMessage(\n ctx,\n chalk.cyan(\"You're trying out the beta local deployment feature!\"),\n );\n logMessage(\n ctx,\n chalk.cyan(\n \"To learn more, read the docs: https://docs.convex.dev/cli/local-deployments\",\n ),\n );\n logMessage(\n ctx,\n chalk.cyan(\n \"To opt out at any time, run `npx convex disable-local-deployments`\",\n ),\n );\n}\n\nexport function generateInstanceSecret(): string {\n return crypto.randomBytes(32).toString(\"hex\");\n}\n\nexport const LOCAL_BACKEND_INSTANCE_SECRET =\n \"4361726e697461732c206c69746572616c6c79206d65616e696e6720226c6974\";\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoC;AACpC,yBAAuB;AACvB,oBAAmB;AACnB,mBAAkB;AAElB,eAAsB,YACpB,KACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AACF,GAKwB;AACxB,QAAM,QAAuB,CAAC;AAC9B,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,UAAM,gBAAgB,iBAAiB,CAAC;AACxC,QAAI,kBAAkB,MAAM;AAC1B,YAAM,OAAO,UAAM,2BAAO,aAAa;AACvC,UAAI,SAAS,eAAe;AAC1B,eAAO,IAAI,MAAM;AAAA,UACf,UAAU;AAAA,UACV,WAAW;AAAA,UACX,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AACA,YAAM,KAAK,IAAI;AAAA,IACjB,OAAO;AACL,YAAM,YACJ,MAAM,SAAS,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI,IAAI;AACnD,YAAM,OAAO,UAAM,2BAAO,SAAS;AACnC,YAAM,KAAK,IAAI;AAAA,IACjB;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,YAA8B;AAElD,SAAO;AACT;AAEO,SAAS,mCAAmC,KAAc;AAC/D;AAAA,IACE;AAAA,IACA,aAAAA,QAAM,KAAK,sDAAsD;AAAA,EACnE;AACA;AAAA,IACE;AAAA,IACA,aAAAA,QAAM;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA,aAAAA,QAAM;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,yBAAiC;AAC/C,SAAO,cAAAC,QAAO,YAAY,EAAE,EAAE,SAAS,KAAK;AAC9C;AAEO,MAAM,gCACX;",
|
|
6
6
|
"names": ["chalk", "crypto"]
|
|
7
7
|
}
|
package/dist/cjs/index.js
CHANGED
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["export const version = \"1.
|
|
4
|
+
"sourcesContent": ["export const version = \"1.23.0\";\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,UAAU;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../../src/cli/configure.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EAMR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,cAAc,EAGd,gCAAgC,EAIjC,MAAM,cAAc,CAAC;AAkCtB,OAAO,EACL,mBAAmB,EAIpB,MAAM,8BAA8B,CAAC;AAGtC,KAAK,qBAAqB,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,mBAAmB,GAEpB,KAAK,GAEL,UAAU,GAEV,KAAK,GAEL,IAAI,CAAC;AAET,KAAK,mBAAmB,GAAG;IACzB,sBAAsB,EAAE,gCAAgC,CAAC;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE;QACZ,KAAK,CAAC,EAAE;YACN,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,OAAO,EACZ,mBAAmB,EAAE,mBAAmB,EACxC,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,mBAAmB,EAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CACR,qBAAqB,GAAG;IACtB,gBAAgB,EAAE;QAChB,cAAc,EAAE,cAAc,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,GAAG,IAAI,CAAC;CACV,CACF,CAkCA;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,OAAO,EACZ,mBAAmB,EAAE,mBAAmB,EACxC,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,mBAAmB,EAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CACR,qBAAqB,GAAG;IACtB,gBAAgB,EAAE;QAChB,cAAc,EAAE,cAAc,CAAC;QAC/B,cAAc,EAAE,cAAc,CAAC;QAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,GAAG,IAAI,CAAC;CACV,CACF,
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../../src/cli/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,6BAA6B,CAAC;AAgC9D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,6BAA6B,CAAC;AAgC9D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;EAsHf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploymentSelection.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/deploymentSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,OAAO,EAAc,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EACL,6BAA6B,EAC7B,cAAc,EAEf,MAAM,UAAU,CAAC;AA2BlB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAmDf;AAED,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,MAAM,iBAepB;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,iBAEnD;AA6CD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,iBAAiB,EAAE;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE;YAChB,cAAc,EAAE,MAAM,CAAC;YACvB,cAAc,EAAE,cAAc,CAAC;YAC/B,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC;SAClB,GAAG,IAAI,CAAC;QACT,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;KAChD,CAAC;CACH,GACD;IACE,IAAI,EAAE,yBAAyB,CAAC;IAChC,aAAa,EAAE,gBAAgB,CAAC;CACjC,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,IAAI,EAAE,eAAe,CAAC;CACvB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,6BAA6B,GAAG,IAAI,CAAC;CACtD,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAI9B;AAqUD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,cAC3B,mBAAmB,KAC7B,MAAM,GAAG,IAEX,CAAC;AAEF,eAAO,MAAM,kCAAkC,cAClC,mBAAmB,KAC7B;IAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IA8BjD,CAAC;AAEF,eAAO,MAAM,+BAA+B,QAAO,
|
|
1
|
+
{"version":3,"file":"deploymentSelection.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/deploymentSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,OAAO,EAAc,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EACL,6BAA6B,EAC7B,cAAc,EAEf,MAAM,UAAU,CAAC;AA2BlB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAmDf;AAED,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,MAAM,iBAepB;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,iBAEnD;AA6CD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,iBAAiB,EAAE;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE;YAChB,cAAc,EAAE,MAAM,CAAC;YACvB,cAAc,EAAE,cAAc,CAAC;YAC/B,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC;SAClB,GAAG,IAAI,CAAC;QACT,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;KAChD,CAAC;CACH,GACD;IACE,IAAI,EAAE,yBAAyB,CAAC;IAChC,aAAa,EAAE,gBAAgB,CAAC;CACjC,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,IAAI,EAAE,eAAe,CAAC;CACvB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,6BAA6B,GAAG,IAAI,CAAC;CACtD,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAI9B;AAqUD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,cAC3B,mBAAmB,KAC7B,MAAM,GAAG,IAEX,CAAC;AAEF,eAAO,MAAM,kCAAkC,cAClC,mBAAmB,KAC7B;IAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IA8BjD,CAAC;AAEF,eAAO,MAAM,+BAA+B,QAAO,OAMlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/cli/lib/localDeployment/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,6BAA6B,CAAC;AAKlE,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,EACE,KAAK,EACL,cAAc,EACd,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/cli/lib/localDeployment/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,6BAA6B,CAAC;AAKlE,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,EACE,KAAK,EACL,cAAc,EACd,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAsBxB;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAGlD;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,OAAO,QAiB9D;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,eAAO,MAAM,6BAA6B,qEAC0B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.
|
|
1
|
+
export declare const version = "1.23.0";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
|
package/dist/cli.bundle.cjs
CHANGED
|
@@ -132781,7 +132781,7 @@ var {
|
|
|
132781
132781
|
var import_fetch_retry = __toESM(require_fetch_retry(), 1);
|
|
132782
132782
|
|
|
132783
132783
|
// src/index.ts
|
|
132784
|
-
var version = "1.
|
|
132784
|
+
var version = "1.23.0";
|
|
132785
132785
|
|
|
132786
132786
|
// src/cli/version.ts
|
|
132787
132787
|
var version2 = process.env.CONVEX_VERSION_OVERRIDE || version;
|
|
@@ -137342,8 +137342,8 @@ async function choosePorts(ctx, {
|
|
|
137342
137342
|
}
|
|
137343
137343
|
ports.push(port);
|
|
137344
137344
|
} else {
|
|
137345
|
-
const
|
|
137346
|
-
const port = await detect(
|
|
137345
|
+
const portToTry = ports.length > 0 ? ports[ports.length - 1] + 1 : startPort;
|
|
137346
|
+
const port = await detect(portToTry);
|
|
137347
137347
|
ports.push(port);
|
|
137348
137348
|
}
|
|
137349
137349
|
}
|
|
@@ -150805,11 +150805,11 @@ async function handleAnonymousDeployment(ctx, options) {
|
|
|
150805
150805
|
if (deployment.kind === "first") {
|
|
150806
150806
|
logMessage(
|
|
150807
150807
|
ctx,
|
|
150808
|
-
"This command, `npx convex dev`, will run your
|
|
150808
|
+
"This command, `npx convex dev`, will run your Convex backend locally and update it with the function you write in the `convex/` directory."
|
|
150809
150809
|
);
|
|
150810
150810
|
logMessage(
|
|
150811
150811
|
ctx,
|
|
150812
|
-
"Use `npx convex dashboard` to view and interact with your
|
|
150812
|
+
"Use `npx convex dashboard` to view and interact with your project from a web UI."
|
|
150813
150813
|
);
|
|
150814
150814
|
logMessage(
|
|
150815
150815
|
ctx,
|
|
@@ -150818,7 +150818,7 @@ async function handleAnonymousDeployment(ctx, options) {
|
|
|
150818
150818
|
ensureUuidForAnonymousUser(ctx);
|
|
150819
150819
|
if (process.stdin.isTTY) {
|
|
150820
150820
|
const result = await promptYesNo(ctx, {
|
|
150821
|
-
message: "
|
|
150821
|
+
message: "Continue?",
|
|
150822
150822
|
default: true
|
|
150823
150823
|
});
|
|
150824
150824
|
if (!result) {
|
|
@@ -150936,7 +150936,7 @@ async function chooseDeployment(ctx, options) {
|
|
|
150936
150936
|
if (existing === void 0) {
|
|
150937
150937
|
logWarning(
|
|
150938
150938
|
ctx,
|
|
150939
|
-
`Could not find
|
|
150939
|
+
`Could not find project with name ${options.deploymentName}!`
|
|
150940
150940
|
);
|
|
150941
150941
|
} else {
|
|
150942
150942
|
return {
|
|
@@ -150947,12 +150947,12 @@ async function chooseDeployment(ctx, options) {
|
|
|
150947
150947
|
}
|
|
150948
150948
|
}
|
|
150949
150949
|
if (deployments2.length === 0) {
|
|
150950
|
-
logMessage(ctx, "Let's set up your first
|
|
150950
|
+
logMessage(ctx, "Let's set up your first project.");
|
|
150951
150951
|
return await promptForNewDeployment(ctx, []);
|
|
150952
150952
|
}
|
|
150953
150953
|
if (options.chosenConfiguration === "new") {
|
|
150954
150954
|
const deploymentName = await promptString(ctx, {
|
|
150955
|
-
message: "Choose a name for your new
|
|
150955
|
+
message: "Choose a name for your new project:",
|
|
150956
150956
|
default: import_path23.default.basename(process.cwd())
|
|
150957
150957
|
});
|
|
150958
150958
|
const uniqueName = await getUniqueName(
|
|
@@ -150967,7 +150967,7 @@ async function chooseDeployment(ctx, options) {
|
|
|
150967
150967
|
};
|
|
150968
150968
|
}
|
|
150969
150969
|
const newOrExisting = await promptSearch(ctx, {
|
|
150970
|
-
message: "Which
|
|
150970
|
+
message: "Which project would you like to use?",
|
|
150971
150971
|
choices: [
|
|
150972
150972
|
...options.chosenConfiguration === "existing" ? [] : [
|
|
150973
150973
|
{
|
|
@@ -150989,7 +150989,7 @@ async function chooseDeployment(ctx, options) {
|
|
|
150989
150989
|
return ctx.crash({
|
|
150990
150990
|
exitCode: 1,
|
|
150991
150991
|
errorType: "fatal",
|
|
150992
|
-
printedMessage: `Could not find
|
|
150992
|
+
printedMessage: `Could not find project with name ${newOrExisting}!`
|
|
150993
150993
|
});
|
|
150994
150994
|
}
|
|
150995
150995
|
return {
|
|
@@ -151041,7 +151041,7 @@ async function getUniqueName(ctx, name, existingNames) {
|
|
|
151041
151041
|
return ctx.crash({
|
|
151042
151042
|
exitCode: 1,
|
|
151043
151043
|
errorType: "fatal",
|
|
151044
|
-
printedMessage: `Could not generate a unique name for your
|
|
151044
|
+
printedMessage: `Could not generate a unique name for your project, please choose a different name`
|
|
151045
151045
|
});
|
|
151046
151046
|
}
|
|
151047
151047
|
async function handleLinkToProject(ctx, args) {
|
|
@@ -153473,7 +153473,10 @@ var deploymentNameAndTypeFromSelection = (selection) => {
|
|
|
153473
153473
|
return null;
|
|
153474
153474
|
};
|
|
153475
153475
|
var shouldAllowAnonymousDevelopment = () => {
|
|
153476
|
-
|
|
153476
|
+
if (process.env.CONVEX_ALLOW_ANONYMOUS === "false") {
|
|
153477
|
+
return false;
|
|
153478
|
+
}
|
|
153479
|
+
return true;
|
|
153477
153480
|
};
|
|
153478
153481
|
|
|
153479
153482
|
// src/bundler/context.ts
|
|
@@ -154742,7 +154745,8 @@ async function _deploymentCredentialsOrConfigure(ctx, deploymentSelection, chose
|
|
|
154742
154745
|
cmdOptions
|
|
154743
154746
|
);
|
|
154744
154747
|
}
|
|
154745
|
-
const
|
|
154748
|
+
const alreadyHasConfiguredAnonymousDeployment = deploymentSelection.deploymentName !== null && chosenConfiguration === null;
|
|
154749
|
+
const shouldPromptForLogin = alreadyHasConfiguredAnonymousDeployment ? "no" : await promptOptions(ctx, {
|
|
154746
154750
|
message: "Welcome to Convex! Would you like to login to your account?",
|
|
154747
154751
|
choices: [
|
|
154748
154752
|
{
|
|
@@ -155632,7 +155636,11 @@ Deploys to a preview deployment if the \`${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\` env
|
|
|
155632
155636
|
ctx,
|
|
155633
155637
|
"You are currently developing anonymously with a locally running project.\nTo deploy your Convex app to the cloud, log in by running `npx convex login`.\nSee https://docs.convex.dev/production for more information on how Convex cloud works and instructions on how to set up hosting."
|
|
155634
155638
|
);
|
|
155635
|
-
return
|
|
155639
|
+
return await ctx.crash({
|
|
155640
|
+
exitCode: 1,
|
|
155641
|
+
errorType: "fatal",
|
|
155642
|
+
printedMessage: null
|
|
155643
|
+
});
|
|
155636
155644
|
}
|
|
155637
155645
|
if (deploymentSelection.kind === "preview") {
|
|
155638
155646
|
if (cmdOptions.previewName !== void 0) {
|