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.
Files changed (50) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/browser.bundle.js +1 -1
  3. package/dist/browser.bundle.js.map +1 -1
  4. package/dist/cjs/cli/configure.js +2 -1
  5. package/dist/cjs/cli/configure.js.map +2 -2
  6. package/dist/cjs/cli/deploy.js +5 -1
  7. package/dist/cjs/cli/deploy.js.map +2 -2
  8. package/dist/cjs/cli/lib/deploymentSelection.js +4 -1
  9. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  10. package/dist/cjs/cli/lib/localDeployment/anonymous.js +9 -9
  11. package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
  12. package/dist/cjs/cli/lib/localDeployment/utils.js +2 -2
  13. package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
  14. package/dist/cjs/index.js +1 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  17. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  18. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  19. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  20. package/dist/cjs-types/index.d.ts +1 -1
  21. package/dist/cjs-types/index.d.ts.map +1 -1
  22. package/dist/cli.bundle.cjs +23 -15
  23. package/dist/cli.bundle.cjs.map +2 -2
  24. package/dist/esm/cli/configure.js +2 -1
  25. package/dist/esm/cli/configure.js.map +2 -2
  26. package/dist/esm/cli/deploy.js +5 -1
  27. package/dist/esm/cli/deploy.js.map +2 -2
  28. package/dist/esm/cli/lib/deploymentSelection.js +4 -1
  29. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  30. package/dist/esm/cli/lib/localDeployment/anonymous.js +9 -9
  31. package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
  32. package/dist/esm/cli/lib/localDeployment/utils.js +2 -2
  33. package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
  34. package/dist/esm/index.js +1 -1
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  37. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  38. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  39. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  40. package/dist/esm-types/index.d.ts +1 -1
  41. package/dist/esm-types/index.d.ts.map +1 -1
  42. package/dist/react.bundle.js +1 -1
  43. package/dist/react.bundle.js.map +1 -1
  44. package/package.json +7 -7
  45. package/src/cli/configure.ts +17 -15
  46. package/src/cli/deploy.ts +5 -1
  47. package/src/cli/lib/deploymentSelection.ts +5 -2
  48. package/src/cli/lib/localDeployment/anonymous.ts +9 -9
  49. package/src/cli/lib/localDeployment/utils.ts +3 -2
  50. 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 lastPort = ports.length > 0 ? ports[ports.length - 1] : startPort;
62
- const port = await (0, import_detect_port.detect)(lastPort + 1);
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 lastPort = ports.length > 0 ? ports[ports.length - 1] : startPort;\n const port = await detect(lastPort + 1);\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,WAAW,MAAM,SAAS,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AAC9D,YAAM,OAAO,UAAM,2BAAO,WAAW,CAAC;AACtC,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;",
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
@@ -21,5 +21,5 @@ __export(index_exports, {
21
21
  version: () => version
22
22
  });
23
23
  module.exports = __toCommonJS(index_exports);
24
- const version = "1.21.1-alpha.2";
24
+ const version = "1.23.0";
25
25
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export const version = \"1.21.1-alpha.2\";"],
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":"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"}
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;;;;;;;;;;;;;;;;;;;;;EAkHf,CAAC"}
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,OAGlD,CAAC"}
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,CAqBxB;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
+ {"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.21.1-alpha.2";
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,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
@@ -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.21.1-alpha.2";
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 lastPort = ports.length > 0 ? ports[ports.length - 1] : startPort;
137346
- const port = await detect(lastPort + 1);
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 deployment and update it with the function you write in the `convex/` directory."
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 deployment from a web UI."
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: "Got it? Let's get started!",
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 deployment with name ${options.deploymentName}!`
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 deployment.");
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 deployment:",
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 deployment would you like to use?",
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 deployment with name ${newOrExisting}!`
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 deployment, please choose a different name`
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
- return process.env.CONVEX_ALLOW_ANONYMOUS !== void 0;
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 shouldPromptForLogin = deploymentSelection.deploymentName !== null ? "no" : await promptOptions(ctx, {
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) {