convex 1.46.0 → 1.47.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 +58 -1
- package/dist/browser.bundle.js +7 -1
- package/dist/browser.bundle.js.map +2 -2
- package/dist/cjs/bundler/index.js +5 -4
- package/dist/cjs/bundler/index.js.map +2 -2
- package/dist/cjs/cli/codegen.js +0 -4
- package/dist/cjs/cli/codegen.js.map +2 -2
- package/dist/cjs/cli/configure.js +13 -4
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/deploy.js +27 -2
- package/dist/cjs/cli/deploy.js.map +2 -2
- package/dist/cjs/cli/deploymentSelect.js +2 -2
- package/dist/cjs/cli/deploymentSelect.js.map +2 -2
- package/dist/cjs/cli/dev.js +6 -0
- package/dist/cjs/cli/dev.js.map +2 -2
- package/dist/cjs/cli/env.js +10 -5
- package/dist/cjs/cli/env.js.map +2 -2
- package/dist/cjs/cli/envDefault.js +7 -2
- package/dist/cjs/cli/envDefault.js.map +2 -2
- package/dist/cjs/cli/generatedApi.js.map +1 -1
- package/dist/cjs/cli/lib/api.js +2 -0
- package/dist/cjs/cli/lib/api.js.map +2 -2
- package/dist/cjs/cli/lib/checkForLargeIndexBackfill.js +113 -0
- package/dist/cjs/cli/lib/checkForLargeIndexBackfill.js.map +7 -0
- package/dist/cjs/cli/lib/checkForLargeIndexDeletion.js +36 -47
- package/dist/cjs/cli/lib/checkForLargeIndexDeletion.js.map +2 -2
- package/dist/cjs/cli/lib/checkForSlowSchemaValidation.js +58 -39
- package/dist/cjs/cli/lib/checkForSlowSchemaValidation.js.map +2 -2
- package/dist/cjs/cli/lib/checkForStagedValidatorDeletion.js +90 -0
- package/dist/cjs/cli/lib/checkForStagedValidatorDeletion.js.map +7 -0
- package/dist/cjs/cli/lib/codegen.js.map +2 -2
- package/dist/cjs/cli/lib/command.js +2 -1
- package/dist/cjs/cli/lib/command.js.map +2 -2
- package/dist/cjs/cli/lib/components/definition/bundle.js +37 -11
- package/dist/cjs/cli/lib/components/definition/bundle.js.map +2 -2
- package/dist/cjs/cli/lib/components.js +48 -5
- package/dist/cjs/cli/lib/components.js.map +2 -2
- package/dist/cjs/cli/lib/config.js +56 -17
- package/dist/cjs/cli/lib/config.js.map +2 -2
- package/dist/cjs/cli/lib/deploy2.js +3 -1
- package/dist/cjs/cli/lib/deploy2.js.map +2 -2
- package/dist/cjs/cli/lib/deployApi/evaluateSchema.js +30 -2
- package/dist/cjs/cli/lib/deployApi/evaluateSchema.js.map +2 -2
- package/dist/cjs/cli/lib/dev.js +5 -0
- package/dist/cjs/cli/lib/dev.js.map +2 -2
- package/dist/cjs/cli/lib/formatValidationProgress.js +47 -0
- package/dist/cjs/cli/lib/formatValidationProgress.js.map +7 -0
- package/dist/cjs/cli/lib/indexes.js.map +1 -1
- package/dist/cjs/cli/lib/mcp/tools/env.js +10 -3
- package/dist/cjs/cli/lib/mcp/tools/env.js.map +2 -2
- package/dist/cjs/cli/lib/run.js +4 -0
- package/dist/cjs/cli/lib/run.js.map +2 -2
- package/dist/cjs/cli/lib/schemaEvaluation.js +62 -0
- package/dist/cjs/cli/lib/schemaEvaluation.js.map +7 -0
- package/dist/cjs/cli/lib/usageLimits.js +4 -2
- package/dist/cjs/cli/lib/usageLimits.js.map +2 -2
- package/dist/cjs/cli/lib/utils/mutex.js +9 -24
- package/dist/cjs/cli/lib/utils/mutex.js.map +2 -2
- package/dist/cjs/cli/lib/utils/utils.js +48 -18
- package/dist/cjs/cli/lib/utils/utils.js.map +2 -2
- package/dist/cjs/cli/projectCreate.js +1 -1
- package/dist/cjs/cli/projectCreate.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server/impl/actions_impl.js +8 -3
- package/dist/cjs/server/impl/actions_impl.js.map +2 -2
- package/dist/cjs/server/impl/storage_impl.js +29 -0
- package/dist/cjs/server/impl/storage_impl.js.map +2 -2
- package/dist/cjs/server/index.js +1 -0
- package/dist/cjs/server/index.js.map +2 -2
- package/dist/cjs/server/meta.js.map +1 -1
- package/dist/cjs/server/registration.js.map +1 -1
- package/dist/cjs/server/schema.js +34 -12
- package/dist/cjs/server/schema.js.map +2 -2
- package/dist/cjs/server/storage.js.map +1 -1
- package/dist/cjs/values/validators.js +1 -1
- package/dist/cjs/values/validators.js.map +2 -2
- package/dist/cjs/values/value.js +6 -0
- package/dist/cjs/values/value.js.map +2 -2
- package/dist/cjs-types/bundler/index.d.ts +9 -2
- package/dist/cjs-types/bundler/index.d.ts.map +1 -1
- package/dist/cjs-types/cli/codegen.d.ts.map +1 -1
- package/dist/cjs-types/cli/configure.d.ts +6 -0
- package/dist/cjs-types/cli/configure.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploy.d.ts +2 -0
- package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploymentCreate.d.ts +6 -6
- package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
- package/dist/cjs-types/cli/dev.d.ts +1 -0
- package/dist/cjs-types/cli/dev.d.ts.map +1 -1
- package/dist/cjs-types/cli/env.d.ts.map +1 -1
- package/dist/cjs-types/cli/envDefault.d.ts.map +1 -1
- package/dist/cjs-types/cli/generatedApi.d.ts +1 -1
- package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/checkForLargeIndexBackfill.d.ts +30 -0
- package/dist/cjs-types/cli/lib/checkForLargeIndexBackfill.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/checkForLargeIndexDeletion.d.ts +5 -7
- package/dist/cjs-types/cli/lib/checkForLargeIndexDeletion.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/checkForSlowSchemaValidation.d.ts +4 -10
- package/dist/cjs-types/cli/lib/checkForSlowSchemaValidation.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/checkForStagedValidatorDeletion.d.ts +17 -0
- package/dist/cjs-types/cli/lib/checkForStagedValidatorDeletion.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/codegen.d.ts +0 -3
- package/dist/cjs-types/cli/lib/codegen.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/command.d.ts +2 -0
- package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts +13 -0
- package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/components.d.ts +4 -0
- package/dist/cjs-types/cli/lib/components.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/config.d.ts +2 -1
- package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deploy2.d.ts +2 -0
- package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deployApi/evaluateSchema.d.ts +460 -16
- package/dist/cjs-types/cli/lib/deployApi/evaluateSchema.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/dev.d.ts +1 -0
- package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/formatValidationProgress.d.ts +8 -0
- package/dist/cjs-types/cli/lib/formatValidationProgress.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/mcp/tools/env.d.ts +8 -5
- package/dist/cjs-types/cli/lib/mcp/tools/env.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/run.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/schemaEvaluation.d.ts +33 -0
- package/dist/cjs-types/cli/lib/schemaEvaluation.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/usageLimits.d.ts +1 -1
- package/dist/cjs-types/cli/lib/usageLimits.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/utils/mutex.d.ts +1 -3
- package/dist/cjs-types/cli/lib/utils/mutex.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/utils/utils.d.ts +10 -2
- package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
- package/dist/cjs-types/index.d.ts +1 -1
- package/dist/cjs-types/server/impl/actions_impl.d.ts +18 -3
- package/dist/cjs-types/server/impl/actions_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/impl/storage_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/index.d.ts +1 -1
- package/dist/cjs-types/server/index.d.ts.map +1 -1
- package/dist/cjs-types/server/meta.d.ts +63 -0
- package/dist/cjs-types/server/meta.d.ts.map +1 -1
- package/dist/cjs-types/server/registration.d.ts +10 -0
- package/dist/cjs-types/server/registration.d.ts.map +1 -1
- package/dist/cjs-types/server/schema.d.ts +33 -0
- package/dist/cjs-types/server/schema.d.ts.map +1 -1
- package/dist/cjs-types/server/storage.d.ts.map +1 -1
- package/dist/cjs-types/values/value.d.ts.map +1 -1
- package/dist/cli.bundle.cjs +2935 -2048
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/esm/bundler/index.js +5 -4
- package/dist/esm/bundler/index.js.map +2 -2
- package/dist/esm/cli/codegen.js +0 -4
- package/dist/esm/cli/codegen.js.map +2 -2
- package/dist/esm/cli/configure.js +12 -4
- package/dist/esm/cli/configure.js.map +2 -2
- package/dist/esm/cli/deploy.js +27 -2
- package/dist/esm/cli/deploy.js.map +2 -2
- package/dist/esm/cli/deploymentSelect.js +6 -3
- package/dist/esm/cli/deploymentSelect.js.map +2 -2
- package/dist/esm/cli/dev.js +6 -0
- package/dist/esm/cli/dev.js.map +2 -2
- package/dist/esm/cli/env.js +11 -6
- package/dist/esm/cli/env.js.map +2 -2
- package/dist/esm/cli/envDefault.js +7 -2
- package/dist/esm/cli/envDefault.js.map +2 -2
- package/dist/esm/cli/lib/api.js +2 -0
- package/dist/esm/cli/lib/api.js.map +2 -2
- package/dist/esm/cli/lib/checkForLargeIndexBackfill.js +95 -0
- package/dist/esm/cli/lib/checkForLargeIndexBackfill.js.map +7 -0
- package/dist/esm/cli/lib/checkForLargeIndexDeletion.js +37 -48
- package/dist/esm/cli/lib/checkForLargeIndexDeletion.js.map +2 -2
- package/dist/esm/cli/lib/checkForSlowSchemaValidation.js +63 -41
- package/dist/esm/cli/lib/checkForSlowSchemaValidation.js.map +2 -2
- package/dist/esm/cli/lib/checkForStagedValidatorDeletion.js +68 -0
- package/dist/esm/cli/lib/checkForStagedValidatorDeletion.js.map +7 -0
- package/dist/esm/cli/lib/codegen.js.map +2 -2
- package/dist/esm/cli/lib/command.js +2 -1
- package/dist/esm/cli/lib/command.js.map +2 -2
- package/dist/esm/cli/lib/components/definition/bundle.js +37 -11
- package/dist/esm/cli/lib/components/definition/bundle.js.map +2 -2
- package/dist/esm/cli/lib/components.js +55 -5
- package/dist/esm/cli/lib/components.js.map +2 -2
- package/dist/esm/cli/lib/config.js +55 -17
- package/dist/esm/cli/lib/config.js.map +2 -2
- package/dist/esm/cli/lib/deploy2.js +3 -1
- package/dist/esm/cli/lib/deploy2.js.map +2 -2
- package/dist/esm/cli/lib/deployApi/evaluateSchema.js +28 -2
- package/dist/esm/cli/lib/deployApi/evaluateSchema.js.map +2 -2
- package/dist/esm/cli/lib/dev.js +5 -0
- package/dist/esm/cli/lib/dev.js.map +2 -2
- package/dist/esm/cli/lib/formatValidationProgress.js +24 -0
- package/dist/esm/cli/lib/formatValidationProgress.js.map +7 -0
- package/dist/esm/cli/lib/indexes.js.map +1 -1
- package/dist/esm/cli/lib/mcp/tools/env.js +10 -3
- package/dist/esm/cli/lib/mcp/tools/env.js.map +2 -2
- package/dist/esm/cli/lib/run.js +4 -0
- package/dist/esm/cli/lib/run.js.map +2 -2
- package/dist/esm/cli/lib/schemaEvaluation.js +39 -0
- package/dist/esm/cli/lib/schemaEvaluation.js.map +7 -0
- package/dist/esm/cli/lib/usageLimits.js +4 -2
- package/dist/esm/cli/lib/usageLimits.js.map +2 -2
- package/dist/esm/cli/lib/utils/mutex.js +9 -24
- package/dist/esm/cli/lib/utils/mutex.js.map +2 -2
- package/dist/esm/cli/lib/utils/utils.js +47 -18
- package/dist/esm/cli/lib/utils/utils.js.map +2 -2
- package/dist/esm/cli/projectCreate.js +1 -1
- package/dist/esm/cli/projectCreate.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server/impl/actions_impl.js +7 -3
- package/dist/esm/server/impl/actions_impl.js.map +2 -2
- package/dist/esm/server/impl/storage_impl.js +29 -0
- package/dist/esm/server/impl/storage_impl.js.map +2 -2
- package/dist/esm/server/index.js +4 -1
- package/dist/esm/server/index.js.map +2 -2
- package/dist/esm/server/schema.js +34 -12
- package/dist/esm/server/schema.js.map +2 -2
- package/dist/esm/values/validators.js +1 -1
- package/dist/esm/values/validators.js.map +2 -2
- package/dist/esm/values/value.js +6 -0
- package/dist/esm/values/value.js.map +2 -2
- package/dist/esm-types/bundler/index.d.ts +9 -2
- package/dist/esm-types/bundler/index.d.ts.map +1 -1
- package/dist/esm-types/cli/codegen.d.ts.map +1 -1
- package/dist/esm-types/cli/configure.d.ts +6 -0
- package/dist/esm-types/cli/configure.d.ts.map +1 -1
- package/dist/esm-types/cli/deploy.d.ts +2 -0
- package/dist/esm-types/cli/deploy.d.ts.map +1 -1
- package/dist/esm-types/cli/deploymentCreate.d.ts +6 -6
- package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
- package/dist/esm-types/cli/dev.d.ts +1 -0
- package/dist/esm-types/cli/dev.d.ts.map +1 -1
- package/dist/esm-types/cli/env.d.ts.map +1 -1
- package/dist/esm-types/cli/envDefault.d.ts.map +1 -1
- package/dist/esm-types/cli/generatedApi.d.ts +1 -1
- package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/checkForLargeIndexBackfill.d.ts +30 -0
- package/dist/esm-types/cli/lib/checkForLargeIndexBackfill.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/checkForLargeIndexDeletion.d.ts +5 -7
- package/dist/esm-types/cli/lib/checkForLargeIndexDeletion.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/checkForSlowSchemaValidation.d.ts +4 -10
- package/dist/esm-types/cli/lib/checkForSlowSchemaValidation.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/checkForStagedValidatorDeletion.d.ts +17 -0
- package/dist/esm-types/cli/lib/checkForStagedValidatorDeletion.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/codegen.d.ts +0 -3
- package/dist/esm-types/cli/lib/codegen.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/command.d.ts +2 -0
- package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/components/definition/bundle.d.ts +13 -0
- package/dist/esm-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/components.d.ts +4 -0
- package/dist/esm-types/cli/lib/components.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/config.d.ts +2 -1
- package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deploy2.d.ts +2 -0
- package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deployApi/evaluateSchema.d.ts +460 -16
- package/dist/esm-types/cli/lib/deployApi/evaluateSchema.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/dev.d.ts +1 -0
- package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/formatValidationProgress.d.ts +8 -0
- package/dist/esm-types/cli/lib/formatValidationProgress.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/mcp/tools/env.d.ts +8 -5
- package/dist/esm-types/cli/lib/mcp/tools/env.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/run.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/schemaEvaluation.d.ts +33 -0
- package/dist/esm-types/cli/lib/schemaEvaluation.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/usageLimits.d.ts +1 -1
- package/dist/esm-types/cli/lib/usageLimits.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/utils/mutex.d.ts +1 -3
- package/dist/esm-types/cli/lib/utils/mutex.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/utils/utils.d.ts +10 -2
- package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
- package/dist/esm-types/index.d.ts +1 -1
- package/dist/esm-types/server/impl/actions_impl.d.ts +18 -3
- package/dist/esm-types/server/impl/actions_impl.d.ts.map +1 -1
- package/dist/esm-types/server/impl/storage_impl.d.ts.map +1 -1
- package/dist/esm-types/server/index.d.ts +1 -1
- package/dist/esm-types/server/index.d.ts.map +1 -1
- package/dist/esm-types/server/meta.d.ts +63 -0
- package/dist/esm-types/server/meta.d.ts.map +1 -1
- package/dist/esm-types/server/registration.d.ts +10 -0
- package/dist/esm-types/server/registration.d.ts.map +1 -1
- package/dist/esm-types/server/schema.d.ts +33 -0
- package/dist/esm-types/server/schema.d.ts.map +1 -1
- package/dist/esm-types/server/storage.d.ts.map +1 -1
- package/dist/esm-types/values/value.d.ts.map +1 -1
- package/dist/react.bundle.js +7 -1
- package/dist/react.bundle.js.map +2 -2
- package/package.json +5 -5
- package/schemas/convex.schema.json +5 -5
- package/src/bundler/index.ts +9 -4
- package/src/cli/codegen.ts +0 -2
- package/src/cli/configure.ts +27 -7
- package/src/cli/deploy.ts +36 -5
- package/src/cli/deploymentSelect.ts +7 -4
- package/src/cli/dev.ts +9 -0
- package/src/cli/env.ts +12 -6
- package/src/cli/envDefault.ts +8 -2
- package/src/cli/generatedApi.ts +1 -1
- package/src/cli/lib/api.ts +5 -1
- package/src/cli/lib/checkForLargeIndexBackfill.ts +173 -0
- package/src/cli/lib/checkForLargeIndexDeletion.ts +45 -58
- package/src/cli/lib/checkForSlowSchemaValidation.ts +76 -65
- package/src/cli/lib/checkForStagedValidatorDeletion.ts +104 -0
- package/src/cli/lib/codegen.ts +0 -3
- package/src/cli/lib/command.ts +3 -0
- package/src/cli/lib/components/definition/bundle.ts +68 -14
- package/src/cli/lib/components.ts +71 -4
- package/src/cli/lib/config.ts +85 -18
- package/src/cli/lib/deploy2.ts +10 -1
- package/src/cli/lib/deployApi/evaluateSchema.ts +35 -0
- package/src/cli/lib/dev.ts +14 -0
- package/src/cli/lib/formatValidationProgress.ts +35 -0
- package/src/cli/lib/indexes.ts +1 -1
- package/src/cli/lib/mcp/tools/env.ts +17 -3
- package/src/cli/lib/run.ts +2 -0
- package/src/cli/lib/schemaEvaluation.ts +88 -0
- package/src/cli/lib/usageLimits.ts +2 -0
- package/src/cli/lib/utils/mutex.ts +9 -27
- package/src/cli/lib/utils/utils.ts +64 -21
- package/src/cli/projectCreate.ts +1 -1
- package/src/index.ts +1 -1
- package/src/server/impl/actions_impl.ts +26 -6
- package/src/server/impl/storage_impl.ts +30 -0
- package/src/server/index.ts +5 -1
- package/src/server/meta.ts +56 -2
- package/src/server/registration.ts +10 -0
- package/src/server/schema.ts +37 -15
- package/src/server/storage.ts +17 -0
- package/src/values/validators.ts +1 -1
- package/src/values/value.ts +9 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/deploy.ts"],
|
|
4
|
-
"sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logFinishedStep, logMessage, showSpinner } from \"../bundler/log.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport {\n getDefaultDeployMessage,\n gitBranchFromEnvironment,\n isNonProdBuildEnvironment,\n suggestedEnvVarNames,\n} from \"./lib/envvars.js\";\nimport { PushOptions } from \"./lib/components.js\";\nimport {\n CONVEX_DEPLOY_KEY_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n bigBrainAPI,\n} from \"./lib/utils/utils.js\";\nimport { runFunctionAndLog } from \"./lib/run.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { runPush } from \"./lib/components.js\";\nimport { promptYesNo } from \"./lib/utils/prompts.js\";\nimport { deployToDeployment, runCommand } from \"./lib/deploy2.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { deploymentNameAndTypeFromSelection } from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\nimport { readProjectConfig, getAuthKitConfig } from \"./lib/config.js\";\nimport { ensureAuthKitProvisionedBeforeBuild } from \"./lib/workos/workos.js\";\nimport { DASHBOARD_HOST } from \"./lib/dashboard.js\";\nimport { extractDeploymentNameForWorkOS } from \"./lib/extractDeploymentNameForWorkOS.js\";\n\nexport const deploy = new Command(\"deploy\")\n .summary(\"Deploy to a production or preview deployment\")\n .description(\n [\n \"Deploys code to a deployment.\",\n \"This is typically used for deploying to a prod or preview deployment manually or from CI; to deploy to your dev deployment when developing, use `npx convex dev`.\",\n \"\",\n \"The target deployment is chosen like this:\",\n `\u2022 If the \\`${CONVEX_DEPLOYMENT_ENV_VAR_NAME}\\` environment variable is set (typical during local development), the target is the project\u2019s default production deployment.`,\n `\u2022 If the \\`${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\\` environment variable is set (typical in CI), it is the deployment associated with that key.`,\n ` \u2022 When it\u2019s set to a preview deploy key, it will deploy to a preview deployment:`,\n ` \u2022 with the name of the current Git branch when running in CI (Vercel, Netlify, Cloudflare Pages, GitHub)`,\n ` \u2022 or with the name specified by the \\`--preview-name\\` or \\`--preview-create\\` flags`,\n \"\",\n \"`npx convex deploy` will:\",\n \" 1. Run a command if specified with `--cmd`, with the deployment URL available as an environment variable.\",\n \" 2. Typecheck your Convex functions.\",\n \" 3. Regenerate the generated code in the `convex/_generated` directory.\",\n \" 4. Bundle your Convex functions and their dependencies.\",\n \" 5. Push your functions, indexes, and schema to the deployment.\",\n \" 6. When deploying to a preview deployment, it runs the function specified by `--preview-run`.\",\n \"If any step fails, the next steps do not run.\",\n ].join(\"\\n\"),\n )\n .allowExcessArguments(false)\n .addDeployOptions()\n .addOption(\n new Option(\n \"--preview-run <functionName>\",\n \"Function to run if deploying to a preview deployment. This is ignored if deploying to a production deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--preview-name <name>\",\n \"The name to associate with this preview deployment. Defaults to the current Git branch name in Vercel, Netlify, Cloudflare Pages and GitHub CI. Reuses the existing deployment if one exists.\",\n ).conflicts(\"preview-create\"),\n )\n .addOption(\n new Option(\n \"--preview-create <name>\",\n \"Like --preview-name, but deletes and recreates an existing preview deployment with the same name. This parameter can only be used with a preview deploy key (when used with another type of key, the command will return an error).\",\n ).conflicts(\"preview-name\"),\n )\n .addOption(\n new Option(\n \"--check-build-environment <mode>\",\n \"Whether to check for a non-production build environment before deploying to a production Convex deployment.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const)\n .hideHelp(),\n )\n // Hidden options to pass in admin key and url for tests and local development\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(\n new Option(\n \"--message <message>\",\n \"Optional message to attach to this deployment in the audit log.\",\n ),\n )\n .addOption(\n new Option(\n \"--skip-workos-check\",\n \"Skip WorkOS AuthKit provisioning and credential checks during deploy.\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\"--allow-deleting-large-indexes\")\n .hideHelp()\n .conflicts(\"preview-create\")\n .conflicts(\"preview-name\"),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n\n const deploymentSelection = await getDeploymentSelection(ctx, {\n ...cmdOptions,\n implicitProd: true,\n });\n if (\n cmdOptions.checkBuildEnvironment === \"enable\" &&\n isNonProdBuildEnvironment() &&\n deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.source === \"deployKey\" &&\n deploymentSelection.deploymentToActOn.deploymentFields?.deploymentType ===\n \"prod\"\n ) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"invalid filesystem data\",\n printedMessage: `Detected a non-production build environment and \"${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\" for a production Convex deployment.\\n\n This is probably unintentional.\n `,\n });\n }\n\n if (deploymentSelection.kind === \"anonymous\") {\n logMessage(\n \"You are currently developing anonymously with a locally running project.\\n\" +\n \"To deploy your Convex app to the cloud, log in by running `npx convex login`.\\n\" +\n \"See https://docs.convex.dev/production for more information on how Convex cloud works and instructions on how to set up hosting.\",\n );\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n });\n }\n\n if (deploymentSelection.kind === \"preview\") {\n // TODO -- add usage state warnings here too once we can do it without a deployment name\n // await usageStateWarning(ctx);\n const previewName =\n cmdOptions.previewCreate ??\n cmdOptions.previewName ??\n gitBranchFromEnvironment();\n const reuse = cmdOptions.previewCreate === undefined;\n\n const teamAndProjectSlugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n await deployToNewPreviewDeployment(\n ctx,\n {\n previewDeployKey: deploymentSelection.previewDeployKey,\n projectSelection: {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProjectSlugs.teamSlug,\n projectSlug: teamAndProjectSlugs.projectSlug,\n },\n },\n {\n ...cmdOptions,\n previewName: previewName ?? undefined,\n reuse,\n message: cmdOptions.message ?? getDefaultDeployMessage(),\n },\n );\n } else {\n if (cmdOptions.previewCreate !== undefined) {\n const source =\n deploymentSelection.kind === \"deploymentWithinProject\" &&\n deploymentSelection.targetProject.kind === \"deploymentName\"\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.targetProject.deploymentName}/settings#preview-deploy-keys`)}`\n : deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.deploymentFields !== null\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.deploymentToActOn.deploymentFields.deploymentName}/settings#preview-deploy-keys`)}`\n : \"on the dashboard\";\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Preview deployments can only be created with preview deploy keys. Generate a preview deploy key ${source} and set the ${chalkStderr.bold(`CONVEX_DEPLOY_KEY`)} environment variable with it.`,\n });\n }\n\n await deployToExistingDeployment(ctx, deploymentSelection, {\n ...cmdOptions,\n skipWorkosCheck: cmdOptions.skipWorkosCheck ?? false,\n allowDeletingLargeIndexes:\n cmdOptions.allowDeletingLargeIndexes ?? false,\n message: cmdOptions.message ?? getDefaultDeployMessage(),\n });\n }\n });\n\nasync function deployToNewPreviewDeployment(\n ctx: Context,\n deploymentSelection: {\n previewDeployKey: string;\n projectSelection: {\n kind: \"teamAndProjectSlugs\";\n teamSlug: string;\n projectSlug: string;\n };\n },\n options: {\n dryRun?: boolean | undefined;\n previewName?: string | undefined;\n reuse: boolean;\n previewRun?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n cmd?: string | undefined;\n verbose?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n pushAllModules?: boolean;\n\n debug?: boolean | undefined;\n debugBundlePath?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n message: string | null;\n },\n) {\n const previewName = options.previewName ?? null;\n if (previewName === null) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`npx convex deploy` to a preview deployment could not determine the preview name. Provide one using `--preview-name`\",\n });\n }\n\n if (options.dryRun) {\n logFinishedStep(\n `Would have claimed preview deployment for \"${previewName}\"`,\n );\n await runCommand(ctx, {\n cmdUrlEnvVarName: options.cmdUrlEnvVarName,\n cmd: options.cmd,\n dryRun: !!options.dryRun,\n url: \"https://<PREVIEW DEPLOYMENT>.convex.cloud\",\n adminKey: \"preview-deployment-admin-key\",\n });\n logFinishedStep(\n `Would have deployed Convex functions to preview deployment for \"${previewName}\"`,\n );\n if (options.previewRun !== undefined) {\n logMessage(`Would have run function \"${options.previewRun}\"`);\n }\n return;\n }\n const data = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"claim_preview_deployment\",\n data: {\n projectSelection: deploymentSelection.projectSelection,\n identifier: previewName,\n reuse: options.reuse,\n },\n });\n\n const previewAdminKey = data.adminKey;\n const previewUrl = data.instanceUrl;\n\n // Extract deployment name from URL for WorkOS provisioning\n const deploymentNameForWorkOS = extractDeploymentNameForWorkOS(previewUrl);\n\n announceDeploymentTarget(\"Deploying code to deployment:\", {\n url: previewUrl,\n deploymentFields: {\n deploymentName: data.deploymentName,\n deploymentType: \"preview\",\n teamSlug: deploymentSelection.projectSelection.teamSlug,\n projectSlug: deploymentSelection.projectSelection.projectSlug,\n reference: data.reference,\n // Preview deployments are never default\n isDefault: false,\n },\n });\n\n // Provision WorkOS before building the client bundle (if configured)\n const { projectConfig } = await readProjectConfig(ctx);\n const authKitConfig = await getAuthKitConfig(ctx, projectConfig);\n\n if (authKitConfig && deploymentNameForWorkOS && !options.skipWorkosCheck) {\n await ensureAuthKitProvisionedBeforeBuild(\n ctx,\n deploymentNameForWorkOS,\n { deploymentUrl: previewUrl, adminKey: previewAdminKey },\n \"preview\",\n );\n }\n\n await runCommand(ctx, {\n ...options,\n url: previewUrl,\n adminKey: previewAdminKey,\n });\n\n const pushOptions: PushOptions = {\n deploymentName: null,\n adminKey: previewAdminKey,\n verbose: !!options.verbose,\n dryRun: false,\n typecheck: options.typecheck,\n typecheckComponents: options.typecheckComponents,\n debug: !!options.debug,\n debugBundlePath: options.debugBundlePath,\n debugNodeApis: false,\n codegen: options.codegen === \"enable\",\n url: previewUrl,\n liveComponentSources: false,\n pushAllModules: !!options.pushAllModules,\n largeIndexDeletionCheck: \"no verification\", // fine for preview deployments\n warnOnSlowSchemaValidation: true,\n message: options.message,\n };\n showSpinner(`Deploying to ${previewUrl}...`);\n await runPush(ctx, pushOptions);\n logFinishedStep(`Deployed Convex functions to ${previewUrl}`);\n\n if (options.previewRun !== undefined && data.isNewDeployment) {\n await runFunctionAndLog(ctx, {\n deploymentUrl: previewUrl,\n adminKey: previewAdminKey,\n functionName: options.previewRun,\n argsString: \"{}\",\n componentPath: undefined,\n callbacks: {\n onSuccess: () => {\n logFinishedStep(`Finished running function \"${options.previewRun}\"`);\n },\n },\n });\n }\n}\n\nasync function deployToExistingDeployment(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n options: {\n verbose?: boolean | undefined;\n dryRun?: boolean | undefined;\n yes?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n pushAllModules?: boolean;\n\n debugBundlePath?: string | undefined;\n debug?: boolean | undefined;\n adminKey?: string | undefined;\n url?: string | undefined;\n writePushRequest?: string | undefined;\n liveComponentSources?: boolean | undefined;\n envFile?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n allowDeletingLargeIndexes: boolean;\n message: string | null;\n },\n) {\n const deploymentToActOn = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n );\n announceDeploymentTarget(\"Deploying code to deployment:\", deploymentToActOn);\n const { deploymentFields } = deploymentToActOn;\n\n const configuredDeployment =\n deploymentNameAndTypeFromSelection(deploymentSelection);\n if (configuredDeployment !== null && configuredDeployment.name !== null) {\n const shouldPushToProd =\n configuredDeployment.name === deploymentFields?.deploymentName ||\n (options.yes ??\n (await askToConfirmPush(\n ctx,\n {\n configuredName: configuredDeployment.name,\n configuredType: configuredDeployment.type,\n requestedName: deploymentFields?.deploymentName!,\n requestedType: deploymentFields?.deploymentType!,\n },\n deploymentToActOn.url,\n )));\n if (!shouldPushToProd) {\n await ctx.crash({\n exitCode: 1,\n printedMessage: null,\n errorType: \"fatal\",\n });\n }\n }\n\n const isCloudDeployment = deploymentFields !== null;\n await Promise.all([\n deployToDeployment(\n ctx,\n {\n url: deploymentToActOn.url,\n adminKey: deploymentToActOn.adminKey,\n deploymentName: deploymentFields?.deploymentName ?? null,\n ...(deploymentFields?.deploymentType !== undefined\n ? { deploymentType: deploymentFields.deploymentType }\n : {}),\n },\n { ...options, skipWorkosCheck: options.skipWorkosCheck },\n ),\n ...(isCloudDeployment\n ? [\n usageStateWarning(ctx, deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n}\n\nasync function askToConfirmPush(\n ctx: Context,\n deployment: {\n configuredName: string;\n configuredType: string | null;\n requestedName: string;\n requestedType: string;\n },\n prodUrl: string,\n) {\n logMessage(\n `\\\nYou're currently developing against your ${chalkStderr.bold(\n deployment.configuredType ?? \"dev\",\n )} deployment\n\n ${deployment.configuredName} (set in CONVEX_DEPLOYMENT)\n\nYour ${chalkStderr.bold(deployment.requestedType)} deployment ${chalkStderr.bold(\n deployment.requestedName,\n )} serves traffic at:\n\n ${(await suggestedEnvVarNames(ctx)).convexUrlEnvVar}=${chalkStderr.bold(prodUrl)}\n\nMake sure that your published client is configured with this URL (for instructions see https://docs.convex.dev/hosting)\\n`,\n );\n return promptYesNo(ctx, {\n message: `Do you want to push your code to your ${deployment.requestedType} deployment ${deployment.requestedName} now?`,\n default: true,\n });\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,mBAAmB;AAC5B,SAAS,SAAS,cAAc;AAChC,SAAkB,qBAAqB;AACvC,SAAS,iBAAiB,YAAY,mBAAmB;AACzD,SAAS,yCAAyC;AAClD,SAAS,gCAAgC;AACzC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAClC,SAAS,4CAA4C;AACrD,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB,kBAAkB;AAC/C;AAAA,EAEE;AAAA,OACK;AACP,SAAS,0CAA0C;AACnD,SAAS,uCAAuC;AAChD,SAAS,mBAAmB,wBAAwB;AACpD,SAAS,2CAA2C;AACpD,SAAS,sBAAsB;AAC/B,SAAS,sCAAsC;AAExC,aAAM,SAAS,IAAI,QAAQ,QAAQ,EACvC,QAAQ,8CAA8C,EACtD;AAAA,EACC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAc,8BAA8B;AAAA,IAC5C,mBAAc,8BAA8B;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb,EACC,qBAAqB,KAAK,EAC1B,iBAAiB,EACjB;AAAA,EACC,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF,EACC;AAAA,EACC,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACF,EAAE,UAAU,gBAAgB;AAC9B,EACC;AAAA,EACC,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACF,EAAE,UAAU,cAAc;AAC5B,EACC;AAAA,EACC,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACF,EACG,QAAQ,CAAC,UAAU,SAAS,CAAU,EACtC,QAAQ,QAAiB,EACzB,SAAS;AACd,EAEC,UAAU,IAAI,OAAO,wBAAwB,EAAE,SAAS,CAAC,EACzD,UAAU,IAAI,OAAO,aAAa,EAAE,SAAS,CAAC,EAC9C;AAAA,EACC,IAAI;AAAA,IACF;AAAA,IACA,qFACa,8BAA8B,OAAO,+BAA+B;AAAA,EAEnF;AACF,EACC;AAAA,EACC,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF,EACC;AAAA,EACC,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACF,EAAE,SAAS;AACb,EACC;AAAA,EACC,IAAI,OAAO,gCAAgC,
|
|
4
|
+
"sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logFinishedStep, logMessage, showSpinner } from \"../bundler/log.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport {\n getDefaultDeployMessage,\n gitBranchFromEnvironment,\n isNonProdBuildEnvironment,\n suggestedEnvVarNames,\n} from \"./lib/envvars.js\";\nimport { PushOptions } from \"./lib/components.js\";\nimport {\n CONVEX_DEPLOY_KEY_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n bigBrainAPI,\n} from \"./lib/utils/utils.js\";\nimport { runFunctionAndLog } from \"./lib/run.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { runPush } from \"./lib/components.js\";\nimport { promptYesNo } from \"./lib/utils/prompts.js\";\nimport { deployToDeployment, runCommand } from \"./lib/deploy2.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { deploymentNameAndTypeFromSelection } from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\nimport { readProjectConfig, getAuthKitConfig } from \"./lib/config.js\";\nimport { ensureAuthKitProvisionedBeforeBuild } from \"./lib/workos/workos.js\";\nimport { DASHBOARD_HOST } from \"./lib/dashboard.js\";\nimport { extractDeploymentNameForWorkOS } from \"./lib/extractDeploymentNameForWorkOS.js\";\n\nexport const deploy = new Command(\"deploy\")\n .summary(\"Deploy to a production or preview deployment\")\n .description(\n [\n \"Deploys code to a deployment.\",\n \"This is typically used for deploying to a prod or preview deployment manually or from CI; to deploy to your dev deployment when developing, use `npx convex dev`.\",\n \"\",\n \"The target deployment is chosen like this:\",\n `\u2022 If the \\`${CONVEX_DEPLOYMENT_ENV_VAR_NAME}\\` environment variable is set (typical during local development), the target is the project\u2019s default production deployment.`,\n `\u2022 If the \\`${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\\` environment variable is set (typical in CI), it is the deployment associated with that key.`,\n ` \u2022 When it\u2019s set to a preview deploy key, it will deploy to a preview deployment:`,\n ` \u2022 with the name of the current Git branch when running in CI (Vercel, Netlify, Cloudflare Pages, GitHub)`,\n ` \u2022 or with the name specified by the \\`--preview-name\\` or \\`--preview-create\\` flags`,\n \"\",\n \"`npx convex deploy` will:\",\n \" 1. Run a command if specified with `--cmd`, with the deployment URL available as an environment variable.\",\n \" 2. Typecheck your Convex functions.\",\n \" 3. Regenerate the generated code in the `convex/_generated` directory.\",\n \" 4. Bundle your Convex functions and their dependencies.\",\n \" 5. Push your functions, indexes, and schema to the deployment.\",\n \" 6. When deploying to a preview deployment, it runs the function specified by `--preview-run`.\",\n \"If any step fails, the next steps do not run.\",\n ].join(\"\\n\"),\n )\n .allowExcessArguments(false)\n .addDeployOptions()\n .addOption(\n new Option(\n \"--preview-run <functionName>\",\n \"Function to run if deploying to a preview deployment. This is ignored if deploying to a production deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--preview-name <name>\",\n \"The name to associate with this preview deployment. Defaults to the current Git branch name in Vercel, Netlify, Cloudflare Pages and GitHub CI. Reuses the existing deployment if one exists.\",\n ).conflicts(\"preview-create\"),\n )\n .addOption(\n new Option(\n \"--preview-create <name>\",\n \"Like --preview-name, but deletes and recreates an existing preview deployment with the same name. This parameter can only be used with a preview deploy key (when used with another type of key, the command will return an error).\",\n ).conflicts(\"preview-name\"),\n )\n .addOption(\n new Option(\n \"--check-build-environment <mode>\",\n \"Whether to check for a non-production build environment before deploying to a production Convex deployment.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const)\n .hideHelp(),\n )\n // Hidden options to pass in admin key and url for tests and local development\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(\n new Option(\n \"--message <message>\",\n \"Optional message to attach to this deployment in the audit log.\",\n ),\n )\n .addOption(\n new Option(\n \"--skip-workos-check\",\n \"Skip WorkOS AuthKit provisioning and credential checks during deploy.\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--skip-large-indexes-check\",\n \"Skip the confirmation prompt when this push creates, changes, or deletes an index on a large table. Creating or changing an index blocks the deploy until it is backfilled; consider staging it instead so it backfills in the background.\",\n ),\n )\n .addOption(\n // Predecessor of --skip-large-indexes-check, kept hidden so existing\n // deploy scripts keep working. It still skips only the deletion\n // confirmation: scripts that opted into that never agreed to let a\n // blocking backfill through.\n new Option(\"--allow-deleting-large-indexes\").hideHelp(),\n )\n .addOption(\n new Option(\n \"--allow-unstaging-schema\",\n \"Skip the confirmation prompt when this push discards a staged table validator that is validating or already validated.\",\n ),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n\n const deploymentSelection = await getDeploymentSelection(ctx, {\n ...cmdOptions,\n implicitProd: true,\n });\n if (\n cmdOptions.checkBuildEnvironment === \"enable\" &&\n isNonProdBuildEnvironment() &&\n deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.source === \"deployKey\" &&\n deploymentSelection.deploymentToActOn.deploymentFields?.deploymentType ===\n \"prod\"\n ) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"invalid filesystem data\",\n printedMessage: `Detected a non-production build environment and \"${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\" for a production Convex deployment.\\n\n This is probably unintentional.\n `,\n });\n }\n\n if (deploymentSelection.kind === \"anonymous\") {\n logMessage(\n \"You are currently developing anonymously with a locally running project.\\n\" +\n \"To deploy your Convex app to the cloud, log in by running `npx convex login`.\\n\" +\n \"See https://docs.convex.dev/production for more information on how Convex cloud works and instructions on how to set up hosting.\",\n );\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n });\n }\n\n if (deploymentSelection.kind === \"preview\") {\n // TODO -- add usage state warnings here too once we can do it without a deployment name\n // await usageStateWarning(ctx);\n const previewName =\n cmdOptions.previewCreate ??\n cmdOptions.previewName ??\n gitBranchFromEnvironment();\n const reuse = cmdOptions.previewCreate === undefined;\n\n const teamAndProjectSlugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n await deployToNewPreviewDeployment(\n ctx,\n {\n previewDeployKey: deploymentSelection.previewDeployKey,\n projectSelection: {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProjectSlugs.teamSlug,\n projectSlug: teamAndProjectSlugs.projectSlug,\n },\n },\n {\n ...cmdOptions,\n previewName: previewName ?? undefined,\n reuse,\n skipLargeIndexesCheck: cmdOptions.skipLargeIndexesCheck ?? false,\n message: cmdOptions.message ?? getDefaultDeployMessage(),\n },\n );\n } else {\n if (cmdOptions.previewCreate !== undefined) {\n const source =\n deploymentSelection.kind === \"deploymentWithinProject\" &&\n deploymentSelection.targetProject.kind === \"deploymentName\"\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.targetProject.deploymentName}/settings#preview-deploy-keys`)}`\n : deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.deploymentFields !== null\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.deploymentToActOn.deploymentFields.deploymentName}/settings#preview-deploy-keys`)}`\n : \"on the dashboard\";\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Preview deployments can only be created with preview deploy keys. Generate a preview deploy key ${source} and set the ${chalkStderr.bold(`CONVEX_DEPLOY_KEY`)} environment variable with it.`,\n });\n }\n\n await deployToExistingDeployment(ctx, deploymentSelection, {\n ...cmdOptions,\n skipWorkosCheck: cmdOptions.skipWorkosCheck ?? false,\n skipLargeIndexesCheck: cmdOptions.skipLargeIndexesCheck ?? false,\n allowDeletingLargeIndexes:\n cmdOptions.allowDeletingLargeIndexes ?? false,\n allowUnstagingSchema: cmdOptions.allowUnstagingSchema ?? false,\n message: cmdOptions.message ?? getDefaultDeployMessage(),\n });\n }\n });\n\nasync function deployToNewPreviewDeployment(\n ctx: Context,\n deploymentSelection: {\n previewDeployKey: string;\n projectSelection: {\n kind: \"teamAndProjectSlugs\";\n teamSlug: string;\n projectSlug: string;\n };\n },\n options: {\n dryRun?: boolean | undefined;\n previewName?: string | undefined;\n reuse: boolean;\n previewRun?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n cmd?: string | undefined;\n verbose?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n pushAllModules?: boolean;\n\n debug?: boolean | undefined;\n debugBundlePath?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n skipLargeIndexesCheck: boolean;\n message: string | null;\n },\n) {\n const previewName = options.previewName ?? null;\n if (previewName === null) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`npx convex deploy` to a preview deployment could not determine the preview name. Provide one using `--preview-name`\",\n });\n }\n\n if (options.dryRun) {\n logFinishedStep(\n `Would have claimed preview deployment for \"${previewName}\"`,\n );\n await runCommand(ctx, {\n cmdUrlEnvVarName: options.cmdUrlEnvVarName,\n cmd: options.cmd,\n dryRun: !!options.dryRun,\n url: \"https://<PREVIEW DEPLOYMENT>.convex.cloud\",\n adminKey: \"preview-deployment-admin-key\",\n });\n logFinishedStep(\n `Would have deployed Convex functions to preview deployment for \"${previewName}\"`,\n );\n if (options.previewRun !== undefined) {\n logMessage(`Would have run function \"${options.previewRun}\"`);\n }\n return;\n }\n const data = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"claim_preview_deployment\",\n data: {\n projectSelection: deploymentSelection.projectSelection,\n identifier: previewName,\n reuse: options.reuse,\n },\n });\n\n const previewAdminKey = data.adminKey;\n const previewUrl = data.instanceUrl;\n\n // Extract deployment name from URL for WorkOS provisioning\n const deploymentNameForWorkOS = extractDeploymentNameForWorkOS(previewUrl);\n\n announceDeploymentTarget(\"Deploying code to deployment:\", {\n url: previewUrl,\n deploymentFields: {\n deploymentName: data.deploymentName,\n deploymentType: \"preview\",\n teamSlug: deploymentSelection.projectSelection.teamSlug,\n projectSlug: deploymentSelection.projectSelection.projectSlug,\n reference: data.reference,\n // Preview deployments are never default\n isDefault: false,\n },\n });\n\n // Provision WorkOS before building the client bundle (if configured)\n const { projectConfig } = await readProjectConfig(ctx);\n const authKitConfig = await getAuthKitConfig(ctx, projectConfig);\n\n if (authKitConfig && deploymentNameForWorkOS && !options.skipWorkosCheck) {\n await ensureAuthKitProvisionedBeforeBuild(\n ctx,\n deploymentNameForWorkOS,\n { deploymentUrl: previewUrl, adminKey: previewAdminKey },\n \"preview\",\n );\n }\n\n await runCommand(ctx, {\n ...options,\n url: previewUrl,\n adminKey: previewAdminKey,\n });\n\n const pushOptions: PushOptions = {\n deploymentName: data.deploymentName,\n deploymentType: \"preview\",\n adminKey: previewAdminKey,\n verbose: !!options.verbose,\n dryRun: false,\n typecheck: options.typecheck,\n typecheckComponents: options.typecheckComponents,\n debug: !!options.debug,\n debugBundlePath: options.debugBundlePath,\n debugNodeApis: false,\n codegen: options.codegen === \"enable\",\n url: previewUrl,\n liveComponentSources: false,\n pushAllModules: !!options.pushAllModules,\n largeIndexDeletionCheck: \"no verification\", // fine for preview deployments\n // A freshly claimed preview has no data to backfill. A reused one keeps\n // the data earlier pushes wrote, so an unstaged index there can block\n // the deploy like on any other deployment.\n largeIndexBackfillCheck: data.isNewDeployment\n ? \"no verification\"\n : options.skipLargeIndexesCheck\n ? \"has confirmation\"\n : \"ask for confirmation\",\n // Staged validation on throwaway preview data is cheap to redo, so\n // discarding it needs no confirmation.\n stagedValidatorDeletionCheck: \"no verification\",\n warnOnSlowSchemaValidation: true,\n message: options.message,\n };\n showSpinner(`Deploying to ${previewUrl}...`);\n await runPush(ctx, pushOptions);\n logFinishedStep(`Deployed Convex functions to ${previewUrl}`);\n\n if (options.previewRun !== undefined && data.isNewDeployment) {\n await runFunctionAndLog(ctx, {\n deploymentUrl: previewUrl,\n adminKey: previewAdminKey,\n functionName: options.previewRun,\n argsString: \"{}\",\n componentPath: undefined,\n callbacks: {\n onSuccess: () => {\n logFinishedStep(`Finished running function \"${options.previewRun}\"`);\n },\n },\n });\n }\n}\n\nasync function deployToExistingDeployment(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n options: {\n verbose?: boolean | undefined;\n dryRun?: boolean | undefined;\n yes?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n pushAllModules?: boolean;\n\n debugBundlePath?: string | undefined;\n debug?: boolean | undefined;\n adminKey?: string | undefined;\n url?: string | undefined;\n writePushRequest?: string | undefined;\n liveComponentSources?: boolean | undefined;\n envFile?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n skipLargeIndexesCheck: boolean;\n allowDeletingLargeIndexes: boolean;\n allowUnstagingSchema: boolean;\n message: string | null;\n },\n) {\n const deploymentToActOn = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n );\n announceDeploymentTarget(\"Deploying code to deployment:\", deploymentToActOn);\n const { deploymentFields } = deploymentToActOn;\n\n const configuredDeployment =\n deploymentNameAndTypeFromSelection(deploymentSelection);\n if (configuredDeployment !== null && configuredDeployment.name !== null) {\n const shouldPushToProd =\n configuredDeployment.name === deploymentFields?.deploymentName ||\n (options.yes ??\n (await askToConfirmPush(\n ctx,\n {\n configuredName: configuredDeployment.name,\n configuredType: configuredDeployment.type,\n requestedName: deploymentFields?.deploymentName!,\n requestedType: deploymentFields?.deploymentType!,\n },\n deploymentToActOn.url,\n )));\n if (!shouldPushToProd) {\n await ctx.crash({\n exitCode: 1,\n printedMessage: null,\n errorType: \"fatal\",\n });\n }\n }\n\n const isCloudDeployment = deploymentFields !== null;\n await Promise.all([\n deployToDeployment(\n ctx,\n {\n url: deploymentToActOn.url,\n adminKey: deploymentToActOn.adminKey,\n deploymentName: deploymentFields?.deploymentName ?? null,\n ...(deploymentFields?.deploymentType !== undefined\n ? { deploymentType: deploymentFields.deploymentType }\n : {}),\n },\n { ...options, skipWorkosCheck: options.skipWorkosCheck },\n ),\n ...(isCloudDeployment\n ? [\n usageStateWarning(ctx, deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n}\n\nasync function askToConfirmPush(\n ctx: Context,\n deployment: {\n configuredName: string;\n configuredType: string | null;\n requestedName: string;\n requestedType: string;\n },\n prodUrl: string,\n) {\n logMessage(\n `\\\nYou're currently developing against your ${chalkStderr.bold(\n deployment.configuredType ?? \"dev\",\n )} deployment\n\n ${deployment.configuredName} (set in CONVEX_DEPLOYMENT)\n\nYour ${chalkStderr.bold(deployment.requestedType)} deployment ${chalkStderr.bold(\n deployment.requestedName,\n )} serves traffic at:\n\n ${(await suggestedEnvVarNames(ctx)).convexUrlEnvVar}=${chalkStderr.bold(prodUrl)}\n\nMake sure that your published client is configured with this URL (for instructions see https://docs.convex.dev/hosting)\\n`,\n );\n return promptYesNo(ctx, {\n message: `Do you want to push your code to your ${deployment.requestedType} deployment ${deployment.requestedName} now?`,\n default: true,\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -11,7 +11,10 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
parseDeploymentSelector
|
|
13
13
|
} from "./lib/deploymentSelector.js";
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
deploymentUrlForApplicationEnv,
|
|
16
|
+
updateEnvAndConfigForDeploymentSelection
|
|
17
|
+
} from "./configure.js";
|
|
15
18
|
import { fetchDeploymentCanonicalUrls } from "./lib/deploy2.js";
|
|
16
19
|
import {
|
|
17
20
|
loadProjectLocalConfig,
|
|
@@ -200,14 +203,14 @@ export async function saveSelectedDeployment(ctx, selector, selection, previousD
|
|
|
200
203
|
printedMessage: `Selecting a production deployment is unsupported. To run commands on a production deployment, pass the ${chalkStderr.bold(`--deployment ${selector}`)} flag to each command.`
|
|
201
204
|
});
|
|
202
205
|
}
|
|
203
|
-
const { convexSiteUrl: siteUrl } = deployment.deploymentFields.deploymentType === "local" ? { convexSiteUrl: null } : await fetchDeploymentCanonicalUrls(ctx, {
|
|
206
|
+
const { convexCloudUrl, convexSiteUrl: siteUrl } = deployment.deploymentFields.deploymentType === "local" ? { convexCloudUrl: deployment.url, convexSiteUrl: null } : await fetchDeploymentCanonicalUrls(ctx, {
|
|
204
207
|
adminKey: deployment.adminKey,
|
|
205
208
|
deploymentUrl: deployment.url
|
|
206
209
|
});
|
|
207
210
|
await updateEnvAndConfigForDeploymentSelection(
|
|
208
211
|
ctx,
|
|
209
212
|
{
|
|
210
|
-
url: deployment
|
|
213
|
+
url: deploymentUrlForApplicationEnv(deployment, convexCloudUrl),
|
|
211
214
|
siteUrl,
|
|
212
215
|
deploymentName: deployment.deploymentFields.deploymentName,
|
|
213
216
|
teamSlug: deployment.deploymentFields.teamSlug,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/deploymentSelect.ts"],
|
|
4
|
-
"sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport { logFinishedStep } from \"../bundler/log.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\nimport {\n parseDeploymentSelector,\n ParsedDeploymentSelector,\n} from \"./lib/deploymentSelector.js\";\nimport { updateEnvAndConfigForDeploymentSelection } from \"./configure.js\";\nimport { fetchDeploymentCanonicalUrls } from \"./lib/deploy2.js\";\nimport {\n loadProjectLocalConfig,\n saveDeploymentConfig,\n} from \"./lib/localDeployment/filePaths.js\";\nimport {\n checkLocalConfigMatchesProject,\n getCloudProjectSlugsBestEffort,\n pauseLocalDeploymentBestEffort,\n targetProjectForLocalSelector,\n} from \"./lib/localDeployment/projectMismatch.js\";\nimport { bigBrainStart } from \"./lib/localDeployment/bigBrain.js\";\nimport { promptYesNo } from \"./lib/utils/prompts.js\";\nimport { createLocalDeployment } from \"./deploymentCreate.js\";\nimport { chalkStderr } from \"chalk\";\nimport { logWarning } from \"../bundler/log.js\";\n\nexport const deploymentSelect = new Command(\"select\")\n .summary(\"Select the deployment to use when running commands\")\n .description(\n [\n \"Select the deployment to use when running commands.\",\n \"\",\n \"The deployment will be used by all `npx convex` commands, except `npx convex deploy`. You can also run individual commands on another deployment by using the --deployment flag on that command.\",\n \"\",\n \"\u2022 Select your personal cloud dev deployment in the current project: `npx convex deployment select dev`\",\n \"\u2022 Select your local deployment: `npx convex deployment select local`\",\n \"\u2022 Select a deployment in the same project by its reference: `npx convex deployment select dev/james`\",\n \"\u2022 Select a deployment in another project in the same team: `npx convex deployment select some-project:dev/james`\",\n \"\u2022 Select a deployment in a particular team/project: `npx convex deployment select some-team:some-project:dev/james`\",\n ].join(\"\\n\"),\n )\n .argument(\"<deployment>\", \"The deployment to use\")\n .allowExcessArguments(false)\n .action(async (selector) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Get the current deployment selection (no flags, just env/config state)\n const currentSelection = await getDeploymentSelection(ctx, {});\n\n const parsed = parseDeploymentSelector(selector);\n const isLocalSelector = isLocalDeploymentSelector(parsed);\n\n // If no project is configured and the selector needs project context, show a specific error\n if (\n currentSelection.kind === \"chooseProject\" &&\n parsed.kind !== \"inTeamProject\" &&\n parsed.kind !== \"deploymentName\" &&\n !isLocalSelector\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No project configured. Run \\`npx convex dev\\` to set up a project first, or use a full selector like 'my-team:my-project:dev/james' or 'happy-capybara-123'.`,\n });\n }\n\n if (isLocalSelector) {\n await handleLocalSelect(ctx, selector, parsed, currentSelection);\n return;\n }\n\n // Resolve the new deployment using the selector relative to the current project\n const newSelection = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n deployment: selector,\n });\n\n const deployment = await saveSelectedDeployment(\n ctx,\n selector,\n newSelection,\n deploymentNameFromSelection(currentSelection),\n );\n logFinishedStep(\"Selected deployment:\");\n announceDeploymentTarget(null, deployment);\n });\n\nfunction isLocalDeploymentSelector(parsed: ParsedDeploymentSelector): boolean {\n return (\n (parsed.kind === \"inCurrentProject\" ||\n parsed.kind === \"inProject\" ||\n parsed.kind === \"inTeamProject\") &&\n parsed.selector.kind === \"local\"\n );\n}\n\nasync function handleLocalSelect(\n ctx: Context,\n selector: string,\n parsed: ParsedDeploymentSelector,\n currentSelection: DeploymentSelection,\n): Promise<void> {\n const existing = loadProjectLocalConfig(ctx);\n\n if (existing === null) {\n // No local deployment on disk. Offer to create one (interactive only).\n if (!process.stdin.isTTY) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No local deployment found. Run ${chalkStderr.bold(\"npx convex deployment create local\")} to create one.`,\n });\n }\n if (\n currentSelection.kind === \"chooseProject\" &&\n parsed.kind !== \"inTeamProject\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No project configured. Run \\`npx convex dev\\` to set up a project first.`,\n });\n }\n\n // Refusing to create a project if the user didn\u2019t explicitly specify a team.\n if (parsed.kind === \"inProject\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No local deployment found. To create one in ${chalkStderr.bold(parsed.projectSlug)}, run ${chalkStderr.bold(`npx convex deployment create local --project ${parsed.projectSlug}`)}, or use a fully qualified selector like ${chalkStderr.bold(`my-team:${parsed.projectSlug}:local`)}.`,\n });\n }\n\n const wantsToCreate = await promptYesNo(ctx, {\n message: \"No local deployment found. Create one now?\",\n default: true,\n });\n if (!wantsToCreate) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No local deployment found. Run ${chalkStderr.bold(\"npx convex deployment create local\")} to create one.`,\n });\n }\n const teamAndProject = teamAndProjectFromParsed(parsed);\n await createLocalDeployment(ctx, currentSelection, true, teamAndProject);\n return;\n }\n\n // Resolve the target cloud project the user is asking about\n const target = await targetProjectForLocalSelector(\n ctx,\n parsed,\n currentSelection,\n );\n\n let resolvedDeploymentName = existing.deploymentName;\n\n if (target !== null) {\n const match = checkLocalConfigMatchesProject(ctx, existing.config, target);\n if (match === \"mismatch\") {\n // The on-disk local deployment is tied to a different cloud project.\n // Move it to the new project (warn, pause old, re-register).\n const oldProjectId = existing.config.cloudProjectId!;\n const oldProject = await getCloudProjectSlugsBestEffort(\n ctx,\n oldProjectId,\n );\n const oldProjectLabel =\n oldProject !== null\n ? `project ${chalkStderr.bold(`${oldProject.teamSlug}:${oldProject.slug}`)}`\n : `an unknown cloud project (ID ${oldProjectId})`;\n logWarning(\n chalkStderr.yellow(\n `\u26A0\uFE0F This local deployment was previously in ${oldProjectLabel}. Moving it to project ${chalkStderr.bold(`${target.teamSlug}:${target.slug}`)}.`,\n ),\n );\n await pauseLocalDeploymentBestEffort(ctx, oldProject);\n const { deploymentName: newDeploymentName } = await bigBrainStart(ctx, {\n port: existing.config.ports.cloud,\n teamSlug: target.teamSlug,\n projectSlug: target.slug,\n instanceName: null,\n });\n saveDeploymentConfig(ctx, \"local\", newDeploymentName, {\n ...existing.config,\n cloudProjectId: target.id,\n });\n resolvedDeploymentName = newDeploymentName;\n } else if (match === \"skip\") {\n // The on-disk config has no `cloudProjectId` \u2014 write the resolved id back\n // so future invocations have it.\n saveDeploymentConfig(ctx, \"local\", existing.deploymentName, {\n ...existing.config,\n cloudProjectId: target.id,\n });\n }\n }\n\n const newSelection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"deploymentName\",\n deploymentName: resolvedDeploymentName,\n deploymentType: \"local\",\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector,\n },\n };\n await saveSelectedDeployment(\n ctx,\n selector,\n newSelection,\n deploymentNameFromSelection(currentSelection),\n );\n}\n\nfunction teamAndProjectFromParsed(\n parsed: ParsedDeploymentSelector,\n): { teamSlug: string; projectSlug: string } | null {\n if (parsed.kind === \"inTeamProject\") {\n return { teamSlug: parsed.teamSlug, projectSlug: parsed.projectSlug };\n }\n return null;\n}\n\nexport async function saveSelectedDeployment(\n ctx: Context,\n selector: string,\n selection: DeploymentSelection,\n previousDeploymentName: string | null,\n) {\n const deployment = await loadSelectedDeploymentCredentials(ctx, selection, {\n ensureLocalRunning: false,\n });\n\n if (deployment.deploymentFields === null) {\n // Should be unreachable since for now, `select` only allows users\n // to select deployments that exist in Big Brain\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n errForSentry: `Unexpected selection in select: ${JSON.stringify(deployment)}`,\n });\n }\n\n if (deployment.deploymentFields.deploymentType === \"prod\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Selecting a production deployment is unsupported. To run commands on a production deployment, pass the ${chalkStderr.bold(`--deployment ${selector}`)} flag to each command.`,\n });\n }\n\n const { convexSiteUrl: siteUrl } =\n deployment.deploymentFields.deploymentType === \"local\"\n ? { convexSiteUrl: null }\n : await fetchDeploymentCanonicalUrls(ctx, {\n adminKey: deployment.adminKey,\n deploymentUrl: deployment.url,\n });\n\n await updateEnvAndConfigForDeploymentSelection(\n ctx,\n {\n url: deployment.url,\n siteUrl,\n deploymentName: deployment.deploymentFields.deploymentName,\n teamSlug: deployment.deploymentFields.teamSlug,\n projectSlug: deployment.deploymentFields.projectSlug,\n deploymentType: deployment.deploymentFields.deploymentType,\n },\n previousDeploymentName,\n );\n\n return deployment;\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,eAAe;AACxB,SAAkB,qBAAqB;AACvC,SAAS,yCAAyC;AAClD,SAAS,uBAAuB;AAChC,SAAS,gCAAgC;AACzC;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,OAEK;AACP,
|
|
4
|
+
"sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport { logFinishedStep } from \"../bundler/log.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\nimport {\n parseDeploymentSelector,\n ParsedDeploymentSelector,\n} from \"./lib/deploymentSelector.js\";\nimport {\n deploymentUrlForApplicationEnv,\n updateEnvAndConfigForDeploymentSelection,\n} from \"./configure.js\";\nimport { fetchDeploymentCanonicalUrls } from \"./lib/deploy2.js\";\nimport {\n loadProjectLocalConfig,\n saveDeploymentConfig,\n} from \"./lib/localDeployment/filePaths.js\";\nimport {\n checkLocalConfigMatchesProject,\n getCloudProjectSlugsBestEffort,\n pauseLocalDeploymentBestEffort,\n targetProjectForLocalSelector,\n} from \"./lib/localDeployment/projectMismatch.js\";\nimport { bigBrainStart } from \"./lib/localDeployment/bigBrain.js\";\nimport { promptYesNo } from \"./lib/utils/prompts.js\";\nimport { createLocalDeployment } from \"./deploymentCreate.js\";\nimport { chalkStderr } from \"chalk\";\nimport { logWarning } from \"../bundler/log.js\";\n\nexport const deploymentSelect = new Command(\"select\")\n .summary(\"Select the deployment to use when running commands\")\n .description(\n [\n \"Select the deployment to use when running commands.\",\n \"\",\n \"The deployment will be used by all `npx convex` commands, except `npx convex deploy`. You can also run individual commands on another deployment by using the --deployment flag on that command.\",\n \"\",\n \"\u2022 Select your personal cloud dev deployment in the current project: `npx convex deployment select dev`\",\n \"\u2022 Select your local deployment: `npx convex deployment select local`\",\n \"\u2022 Select a deployment in the same project by its reference: `npx convex deployment select dev/james`\",\n \"\u2022 Select a deployment in another project in the same team: `npx convex deployment select some-project:dev/james`\",\n \"\u2022 Select a deployment in a particular team/project: `npx convex deployment select some-team:some-project:dev/james`\",\n ].join(\"\\n\"),\n )\n .argument(\"<deployment>\", \"The deployment to use\")\n .allowExcessArguments(false)\n .action(async (selector) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Get the current deployment selection (no flags, just env/config state)\n const currentSelection = await getDeploymentSelection(ctx, {});\n\n const parsed = parseDeploymentSelector(selector);\n const isLocalSelector = isLocalDeploymentSelector(parsed);\n\n // If no project is configured and the selector needs project context, show a specific error\n if (\n currentSelection.kind === \"chooseProject\" &&\n parsed.kind !== \"inTeamProject\" &&\n parsed.kind !== \"deploymentName\" &&\n !isLocalSelector\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No project configured. Run \\`npx convex dev\\` to set up a project first, or use a full selector like 'my-team:my-project:dev/james' or 'happy-capybara-123'.`,\n });\n }\n\n if (isLocalSelector) {\n await handleLocalSelect(ctx, selector, parsed, currentSelection);\n return;\n }\n\n // Resolve the new deployment using the selector relative to the current project\n const newSelection = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n deployment: selector,\n });\n\n const deployment = await saveSelectedDeployment(\n ctx,\n selector,\n newSelection,\n deploymentNameFromSelection(currentSelection),\n );\n logFinishedStep(\"Selected deployment:\");\n announceDeploymentTarget(null, deployment);\n });\n\nfunction isLocalDeploymentSelector(parsed: ParsedDeploymentSelector): boolean {\n return (\n (parsed.kind === \"inCurrentProject\" ||\n parsed.kind === \"inProject\" ||\n parsed.kind === \"inTeamProject\") &&\n parsed.selector.kind === \"local\"\n );\n}\n\nasync function handleLocalSelect(\n ctx: Context,\n selector: string,\n parsed: ParsedDeploymentSelector,\n currentSelection: DeploymentSelection,\n): Promise<void> {\n const existing = loadProjectLocalConfig(ctx);\n\n if (existing === null) {\n // No local deployment on disk. Offer to create one (interactive only).\n if (!process.stdin.isTTY) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No local deployment found. Run ${chalkStderr.bold(\"npx convex deployment create local\")} to create one.`,\n });\n }\n if (\n currentSelection.kind === \"chooseProject\" &&\n parsed.kind !== \"inTeamProject\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No project configured. Run \\`npx convex dev\\` to set up a project first.`,\n });\n }\n\n // Refusing to create a project if the user didn\u2019t explicitly specify a team.\n if (parsed.kind === \"inProject\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No local deployment found. To create one in ${chalkStderr.bold(parsed.projectSlug)}, run ${chalkStderr.bold(`npx convex deployment create local --project ${parsed.projectSlug}`)}, or use a fully qualified selector like ${chalkStderr.bold(`my-team:${parsed.projectSlug}:local`)}.`,\n });\n }\n\n const wantsToCreate = await promptYesNo(ctx, {\n message: \"No local deployment found. Create one now?\",\n default: true,\n });\n if (!wantsToCreate) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No local deployment found. Run ${chalkStderr.bold(\"npx convex deployment create local\")} to create one.`,\n });\n }\n const teamAndProject = teamAndProjectFromParsed(parsed);\n await createLocalDeployment(ctx, currentSelection, true, teamAndProject);\n return;\n }\n\n // Resolve the target cloud project the user is asking about\n const target = await targetProjectForLocalSelector(\n ctx,\n parsed,\n currentSelection,\n );\n\n let resolvedDeploymentName = existing.deploymentName;\n\n if (target !== null) {\n const match = checkLocalConfigMatchesProject(ctx, existing.config, target);\n if (match === \"mismatch\") {\n // The on-disk local deployment is tied to a different cloud project.\n // Move it to the new project (warn, pause old, re-register).\n const oldProjectId = existing.config.cloudProjectId!;\n const oldProject = await getCloudProjectSlugsBestEffort(\n ctx,\n oldProjectId,\n );\n const oldProjectLabel =\n oldProject !== null\n ? `project ${chalkStderr.bold(`${oldProject.teamSlug}:${oldProject.slug}`)}`\n : `an unknown cloud project (ID ${oldProjectId})`;\n logWarning(\n chalkStderr.yellow(\n `\u26A0\uFE0F This local deployment was previously in ${oldProjectLabel}. Moving it to project ${chalkStderr.bold(`${target.teamSlug}:${target.slug}`)}.`,\n ),\n );\n await pauseLocalDeploymentBestEffort(ctx, oldProject);\n const { deploymentName: newDeploymentName } = await bigBrainStart(ctx, {\n port: existing.config.ports.cloud,\n teamSlug: target.teamSlug,\n projectSlug: target.slug,\n instanceName: null,\n });\n saveDeploymentConfig(ctx, \"local\", newDeploymentName, {\n ...existing.config,\n cloudProjectId: target.id,\n });\n resolvedDeploymentName = newDeploymentName;\n } else if (match === \"skip\") {\n // The on-disk config has no `cloudProjectId` \u2014 write the resolved id back\n // so future invocations have it.\n saveDeploymentConfig(ctx, \"local\", existing.deploymentName, {\n ...existing.config,\n cloudProjectId: target.id,\n });\n }\n }\n\n const newSelection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"deploymentName\",\n deploymentName: resolvedDeploymentName,\n deploymentType: \"local\",\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector,\n },\n };\n await saveSelectedDeployment(\n ctx,\n selector,\n newSelection,\n deploymentNameFromSelection(currentSelection),\n );\n}\n\nfunction teamAndProjectFromParsed(\n parsed: ParsedDeploymentSelector,\n): { teamSlug: string; projectSlug: string } | null {\n if (parsed.kind === \"inTeamProject\") {\n return { teamSlug: parsed.teamSlug, projectSlug: parsed.projectSlug };\n }\n return null;\n}\n\nexport async function saveSelectedDeployment(\n ctx: Context,\n selector: string,\n selection: DeploymentSelection,\n previousDeploymentName: string | null,\n) {\n const deployment = await loadSelectedDeploymentCredentials(ctx, selection, {\n ensureLocalRunning: false,\n });\n\n if (deployment.deploymentFields === null) {\n // Should be unreachable since for now, `select` only allows users\n // to select deployments that exist in Big Brain\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n errForSentry: `Unexpected selection in select: ${JSON.stringify(deployment)}`,\n });\n }\n\n if (deployment.deploymentFields.deploymentType === \"prod\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Selecting a production deployment is unsupported. To run commands on a production deployment, pass the ${chalkStderr.bold(`--deployment ${selector}`)} flag to each command.`,\n });\n }\n\n const { convexCloudUrl, convexSiteUrl: siteUrl } =\n deployment.deploymentFields.deploymentType === \"local\"\n ? { convexCloudUrl: deployment.url, convexSiteUrl: null }\n : await fetchDeploymentCanonicalUrls(ctx, {\n adminKey: deployment.adminKey,\n deploymentUrl: deployment.url,\n });\n\n await updateEnvAndConfigForDeploymentSelection(\n ctx,\n {\n url: deploymentUrlForApplicationEnv(deployment, convexCloudUrl),\n siteUrl,\n deploymentName: deployment.deploymentFields.deploymentName,\n teamSlug: deployment.deploymentFields.teamSlug,\n projectSlug: deployment.deploymentFields.projectSlug,\n deploymentType: deployment.deploymentFields.deploymentType,\n },\n previousDeploymentName,\n );\n\n return deployment;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/cli/dev.js
CHANGED
|
@@ -92,6 +92,12 @@ export const dev = new Command("dev").summary("Develop against a dev deployment,
|
|
|
92
92
|
"--prod",
|
|
93
93
|
"Develop live against this project's production deployment."
|
|
94
94
|
).default(false).hideHelp()
|
|
95
|
+
).addOption(
|
|
96
|
+
// Only `--prod` pushes check this; hidden alongside it.
|
|
97
|
+
new Option(
|
|
98
|
+
"--allow-unstaging-schema",
|
|
99
|
+
"Skip the confirmation prompt when a push to production discards a staged table validator that is validating or already validated."
|
|
100
|
+
).default(false).hideHelp()
|
|
95
101
|
).addOption(
|
|
96
102
|
new Option(
|
|
97
103
|
"--env-file <envFile>",
|
package/dist/esm/cli/dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/dev.ts"],
|
|
4
|
-
"sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport { installSigintHandler, oneoffContext } from \"../bundler/context.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n ensureHasConvexDependency,\n} from \"./lib/utils/utils.js\";\nimport {\n getDeploymentSelection,\n type DeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--start` or `--run` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n )\n .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--start <command>\",\n \"Start a long-running command alongside `npx convex dev`, like a frontend \" +\n \"dev server. The command inherits stdin/stdout so you can interact \" +\n \"with it directly. Example: npx convex dev --start 'vite --open'\",\n ).conflicts([\"--run\", \"--run-sh\"]),\n )\n .addOption(\n new Option(\"--run-sh <command>\", \"Deprecated: use --start instead.\")\n .conflicts([\"--start\", \"--run\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--start\"]),\n )\n .option(\n \"--run-component <functionName>\",\n 'If --run is used and the function is in a component, the path to the component (e.g. \"workflow\" or \"workflow/workpool\"). ' +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n [\n \"Choose whether to tail Convex function logs in this terminal: \",\n \"\u2022 `always` shows logs continuously\",\n \"\u2022 `pause-on-deploy` (the default) pauses logs during deploys so you can spot sync issues\",\n \"\u2022 `disable` hides logs while developing.\",\n ].join(\"\\n\"),\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--url\", \"--admin-key\", \"--env-file\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(new Option(\"--deployment <deployment>\").hideHelp())\n .addOption(new Option(\"--local\").default(false).hideHelp())\n .addOption(new Option(\"--cloud\").default(false).hideHelp())\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n installSigintHandler(ctx);\n\n if (cmdOptions.deployment !== undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--deployment` can\u2019t be used with `npx convex dev`. \\n\\n\" +\n \" To select this deployment for development, run: \\n\" +\n chalkStderr.bold(\n ` npx convex deployment select ${cmdOptions.deployment}\\n`,\n ) +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.local) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local` is deprecated. \\n\\n\" +\n \" To select your local deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select local\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.cloud) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--cloud` is deprecated. \\n\\n\" +\n \" To select your personal cloud dev deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select dev\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n // Check that we're in a Convex project (a package.json with a `convex`\n // dependency) before doing anything else, so we fail fast with a clear\n // error instead of prompting to create/select a project and only then\n // crashing because there's nothing to push.\n await ensureHasConvexDependency(ctx, \"run `npx convex dev`\");\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports: { cloud: number | undefined; site: number | undefined };\n backendVersion: string | undefined;\n forceUpgrade: boolean;\n } = {\n ports: {\n cloud:\n cmdOptions.localCloudPort !== undefined\n ? parseInt(cmdOptions.localCloudPort)\n : undefined,\n site:\n cmdOptions.localSitePort !== undefined\n ? parseInt(cmdOptions.localSitePort)\n : undefined,\n },\n backendVersion: cmdOptions.localBackendVersion,\n forceUpgrade: cmdOptions.localForceUpgrade,\n };\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n // --configure means \"pick a project\" \u2014 skip deployment selection entirely\n const deploymentSelection =\n configure !== null\n ? ({\n kind: \"chooseProject\",\n selectionWithinProject: {\n // For backwards compatibility, allow `--configure --prod`\n kind: cmdOptions.prod ? \"prod\" : \"unspecified\",\n },\n } satisfies DeploymentSelection)\n : await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n },\n );\n\n announceDeploymentTarget(\"Developing against deployment:\", credentials);\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n ...(credentials.deploymentFields?.deploymentType !== undefined\n ? {\n deploymentType:\n credentials.deploymentFields.deploymentType,\n }\n : {}),\n backendVersion: localOptions.backendVersion,\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n });\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport { installSigintHandler, oneoffContext } from \"../bundler/context.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n ensureHasConvexDependency,\n} from \"./lib/utils/utils.js\";\nimport {\n getDeploymentSelection,\n type DeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--start` or `--run` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n )\n .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--start <command>\",\n \"Start a long-running command alongside `npx convex dev`, like a frontend \" +\n \"dev server. The command inherits stdin/stdout so you can interact \" +\n \"with it directly. Example: npx convex dev --start 'vite --open'\",\n ).conflicts([\"--run\", \"--run-sh\"]),\n )\n .addOption(\n new Option(\"--run-sh <command>\", \"Deprecated: use --start instead.\")\n .conflicts([\"--start\", \"--run\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--start\"]),\n )\n .option(\n \"--run-component <functionName>\",\n 'If --run is used and the function is in a component, the path to the component (e.g. \"workflow\" or \"workflow/workpool\"). ' +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n [\n \"Choose whether to tail Convex function logs in this terminal: \",\n \"\u2022 `always` shows logs continuously\",\n \"\u2022 `pause-on-deploy` (the default) pauses logs during deploys so you can spot sync issues\",\n \"\u2022 `disable` hides logs while developing.\",\n ].join(\"\\n\"),\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--url\", \"--admin-key\", \"--env-file\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\n )\n .addOption(\n // Only `--prod` pushes check this; hidden alongside it.\n new Option(\n \"--allow-unstaging-schema\",\n \"Skip the confirmation prompt when a push to production discards a staged table validator that is validating or already validated.\",\n )\n .default(false)\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(new Option(\"--deployment <deployment>\").hideHelp())\n .addOption(new Option(\"--local\").default(false).hideHelp())\n .addOption(new Option(\"--cloud\").default(false).hideHelp())\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n installSigintHandler(ctx);\n\n if (cmdOptions.deployment !== undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--deployment` can\u2019t be used with `npx convex dev`. \\n\\n\" +\n \" To select this deployment for development, run: \\n\" +\n chalkStderr.bold(\n ` npx convex deployment select ${cmdOptions.deployment}\\n`,\n ) +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.local) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local` is deprecated. \\n\\n\" +\n \" To select your local deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select local\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.cloud) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--cloud` is deprecated. \\n\\n\" +\n \" To select your personal cloud dev deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select dev\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n // Check that we're in a Convex project (a package.json with a `convex`\n // dependency) before doing anything else, so we fail fast with a clear\n // error instead of prompting to create/select a project and only then\n // crashing because there's nothing to push.\n await ensureHasConvexDependency(ctx, \"run `npx convex dev`\");\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports: { cloud: number | undefined; site: number | undefined };\n backendVersion: string | undefined;\n forceUpgrade: boolean;\n } = {\n ports: {\n cloud:\n cmdOptions.localCloudPort !== undefined\n ? parseInt(cmdOptions.localCloudPort)\n : undefined,\n site:\n cmdOptions.localSitePort !== undefined\n ? parseInt(cmdOptions.localSitePort)\n : undefined,\n },\n backendVersion: cmdOptions.localBackendVersion,\n forceUpgrade: cmdOptions.localForceUpgrade,\n };\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n // --configure means \"pick a project\" \u2014 skip deployment selection entirely\n const deploymentSelection =\n configure !== null\n ? ({\n kind: \"chooseProject\",\n selectionWithinProject: {\n // For backwards compatibility, allow `--configure --prod`\n kind: cmdOptions.prod ? \"prod\" : \"unspecified\",\n },\n } satisfies DeploymentSelection)\n : await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n },\n );\n\n announceDeploymentTarget(\"Developing against deployment:\", credentials);\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n ...(credentials.deploymentFields?.deploymentType !== undefined\n ? {\n deploymentType:\n credentials.deploymentFields.deploymentType,\n }\n : {}),\n backendVersion: localOptions.backendVersion,\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n });\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/cli/env.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import { Command } from "@commander-js/extra-typings";
|
|
2
|
+
import { Command, Option } from "@commander-js/extra-typings";
|
|
3
3
|
import { chalkStderr } from "chalk";
|
|
4
4
|
import { oneoffContext } from "../bundler/context.js";
|
|
5
5
|
import {
|
|
@@ -35,7 +35,7 @@ const envSetCmd = new Command("set").usage("[options] <name> <value>").argument(
|
|
|
35
35
|
"\u2022 `pbpaste | npx convex env set API_KEY` (macOS)",
|
|
36
36
|
"\u2022 `Get-Clipboard | npx convex env set API_KEY` (Windows PowerShell)",
|
|
37
37
|
"",
|
|
38
|
-
"To update many variables at once, save them with `npx convex env list > .env.convex`, edit the file, then reapply the changes with `npx convex env set --force < .env.convex`."
|
|
38
|
+
"To update many variables at once, save them with `npx convex env list --include-values > .env.convex`, edit the file, then reapply the changes with `npx convex env set --force < .env.convex`."
|
|
39
39
|
].join("\n")
|
|
40
40
|
).option(
|
|
41
41
|
"--from-file <file>",
|
|
@@ -116,14 +116,19 @@ const envRemoveCmd = new Command("remove").alias("rm").alias("unset").argument("
|
|
|
116
116
|
});
|
|
117
117
|
const envListCmd = new Command("list").summary("List all environment variables and their values").description(
|
|
118
118
|
[
|
|
119
|
-
"\u2022 List all variables and their values: `npx convex env list`",
|
|
120
119
|
"\u2022 List only variable names (no values): `npx convex env list --names-only`",
|
|
121
|
-
"\u2022
|
|
122
|
-
"\u2022
|
|
120
|
+
"\u2022 List all variables and their values: `npx convex env list --include-values`",
|
|
121
|
+
"\u2022 Save all variables to a file: `npx convex env list --include-values > .env.convex`",
|
|
122
|
+
"\u2022 Append to a file: `npx convex env list --include-values >> .env.convex`"
|
|
123
123
|
].join("\n")
|
|
124
124
|
).option(
|
|
125
125
|
"--names-only",
|
|
126
126
|
"List only the names of environment variables, without their values"
|
|
127
|
+
).addOption(
|
|
128
|
+
new Option(
|
|
129
|
+
"--include-values",
|
|
130
|
+
"Print each variable's value alongside its name, in .env format (the default). Pass it explicitly in scripts that rely on the values."
|
|
131
|
+
).conflicts("namesOnly")
|
|
127
132
|
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false).action(async (cmdOptions, cmd) => {
|
|
128
133
|
const options = cmd.optsWithGlobals();
|
|
129
134
|
const { ctx, deployment } = await selectEnvDeployment(options);
|
|
@@ -147,8 +152,8 @@ export const env = new Command("env").summary("Set and view environment variable
|
|
|
147
152
|
"\u2022 Set interactively: `npx convex env set NAME`",
|
|
148
153
|
"\u2022 Set multiple from file: `npx convex env set --from-file .env`",
|
|
149
154
|
"\u2022 Unset a variable: `npx convex env remove NAME`",
|
|
150
|
-
"\u2022 List all variables and their values: `npx convex env list`",
|
|
151
155
|
"\u2022 List only variable names (no values): `npx convex env list --names-only`",
|
|
156
|
+
"\u2022 List all variables and their values: `npx convex env list --include-values`",
|
|
152
157
|
"\u2022 Print a variable's value: `npx convex env get NAME`",
|
|
153
158
|
"",
|
|
154
159
|
"By default, this sets and views variables on your dev deployment.",
|
package/dist/esm/cli/env.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/env.ts"],
|
|
4
|
-
"sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport {\n DeploymentSelectionOptions,\n DetailedDeploymentCredentials,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport {\n deploymentEnvBackend,\n envGet,\n envList,\n envRemove,\n envSet,\n} from \"./lib/env.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { withRunningBackend } from \"./lib/localDeployment/run.js\";\nimport { envDefault } from \"./envDefault.js\";\n\nconst envSetCmd = new Command(\"set\")\n // Pretend value is required\n .usage(\"[options] <name> <value>\")\n .argument(\"[name]\", \"The name of the environment variable to set.\")\n .argument(\n \"[value]\",\n \"The value to set the variable to. Omit to set it interactively.\",\n )\n .summary(\"Set a variable\")\n .description(\n [\n \"Set environment variables on your deployment.\",\n \"\",\n \"\u2022 `npx convex env set NAME 'value'`\",\n \"\u2022 `npx convex env set NAME # omit a value to set one interactively`\",\n \"\u2022 `npx convex env set NAME --from-file value.txt`\",\n \"\u2022 `npx convex env set --from-file .env.defaults`\",\n \"\",\n \"When setting multiple values, it will refuse all changes if any variables are already set to different values by default. Pass --force to overwrite the provided values.\",\n \"\",\n \"To keep secrets out of your shell history, omit the value to pipe it in via stdin, for instance:\",\n \"\u2022 `pbpaste | npx convex env set API_KEY` (macOS)\",\n \"\u2022 `Get-Clipboard | npx convex env set API_KEY` (Windows PowerShell)\",\n \"\",\n \"To update many variables at once, save them with `npx convex env list > .env.convex`, edit the file, then reapply the changes with `npx convex env set --force < .env.convex`.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (name, value, cmdOptions, cmd) => {\n // Note: We use `as` here because optsWithGlobals() type inference doesn't\n // include global options from the parent command (added via addDeploymentSelectionOptions)\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions;\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env set\");\n await withRunningBackend({\n ctx,\n deployment,\n action: async () => {\n const backend = deploymentEnvBackend(ctx, deployment);\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: No environment variables specified to be set.\",\n });\n }\n },\n });\n });\n\nexport async function selectEnvDeployment(\n options: DeploymentSelectionOptions,\n): Promise<{\n ctx: Context;\n deployment: {\n deploymentUrl: string;\n adminKey: string;\n deploymentNotice: string;\n deploymentFields: DetailedDeploymentCredentials[\"deploymentFields\"];\n };\n}> {\n const ctx = await oneoffContext(options);\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const {\n adminKey,\n url: deploymentUrl,\n deploymentFields,\n } = await loadSelectedDeploymentCredentials(ctx, deploymentSelection, {\n ensureLocalRunning: false,\n });\n\n const deploymentNotice =\n deploymentFields !== null\n ? ` (on ${chalkStderr.bold(deploymentFields.deploymentType)} deployment ${chalkStderr.bold(deploymentFields.deploymentName)})`\n : \"\";\n const result = {\n ctx,\n deployment: {\n deploymentUrl,\n adminKey,\n deploymentNotice,\n deploymentFields,\n },\n };\n return result;\n}\n\nconst envGetCmd = new Command(\"get\")\n .argument(\"<name>\", \"The name of the environment variable to print.\")\n .summary(\"Print a variable's value\")\n .description(\"Print a variable's value: `npx convex env get NAME`\")\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env get\");\n await withRunningBackend({\n ctx,\n deployment,\n action: async () => {\n const backend = deploymentEnvBackend(ctx, deployment);\n await envGet(ctx, backend, envVarName);\n },\n });\n });\n\nconst envRemoveCmd = new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .argument(\"<name>\", \"The name of the environment variable to unset.\")\n .summary(\"Unset a variable\")\n .description(\n \"Unset a variable: `npx convex env remove NAME`\\n\" +\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env remove\");\n await withRunningBackend({\n ctx,\n deployment,\n action: async () => {\n const backend = deploymentEnvBackend(ctx, deployment);\n await envRemove(ctx, backend, name);\n },\n });\n });\n\nconst envListCmd = new Command(\"list\")\n .summary(\"List all environment variables and their values\")\n .description(\n [\n \"\u2022 List
|
|
5
|
-
"mappings": ";AAAA,SAAS,
|
|
4
|
+
"sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport {\n DeploymentSelectionOptions,\n DetailedDeploymentCredentials,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport {\n deploymentEnvBackend,\n envGet,\n envList,\n envRemove,\n envSet,\n} from \"./lib/env.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { withRunningBackend } from \"./lib/localDeployment/run.js\";\nimport { envDefault } from \"./envDefault.js\";\n\nconst envSetCmd = new Command(\"set\")\n // Pretend value is required\n .usage(\"[options] <name> <value>\")\n .argument(\"[name]\", \"The name of the environment variable to set.\")\n .argument(\n \"[value]\",\n \"The value to set the variable to. Omit to set it interactively.\",\n )\n .summary(\"Set a variable\")\n .description(\n [\n \"Set environment variables on your deployment.\",\n \"\",\n \"\u2022 `npx convex env set NAME 'value'`\",\n \"\u2022 `npx convex env set NAME # omit a value to set one interactively`\",\n \"\u2022 `npx convex env set NAME --from-file value.txt`\",\n \"\u2022 `npx convex env set --from-file .env.defaults`\",\n \"\",\n \"When setting multiple values, it will refuse all changes if any variables are already set to different values by default. Pass --force to overwrite the provided values.\",\n \"\",\n \"To keep secrets out of your shell history, omit the value to pipe it in via stdin, for instance:\",\n \"\u2022 `pbpaste | npx convex env set API_KEY` (macOS)\",\n \"\u2022 `Get-Clipboard | npx convex env set API_KEY` (Windows PowerShell)\",\n \"\",\n \"To update many variables at once, save them with `npx convex env list --include-values > .env.convex`, edit the file, then reapply the changes with `npx convex env set --force < .env.convex`.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (name, value, cmdOptions, cmd) => {\n // Note: We use `as` here because optsWithGlobals() type inference doesn't\n // include global options from the parent command (added via addDeploymentSelectionOptions)\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions;\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env set\");\n await withRunningBackend({\n ctx,\n deployment,\n action: async () => {\n const backend = deploymentEnvBackend(ctx, deployment);\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: No environment variables specified to be set.\",\n });\n }\n },\n });\n });\n\nexport async function selectEnvDeployment(\n options: DeploymentSelectionOptions,\n): Promise<{\n ctx: Context;\n deployment: {\n deploymentUrl: string;\n adminKey: string;\n deploymentNotice: string;\n deploymentFields: DetailedDeploymentCredentials[\"deploymentFields\"];\n };\n}> {\n const ctx = await oneoffContext(options);\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const {\n adminKey,\n url: deploymentUrl,\n deploymentFields,\n } = await loadSelectedDeploymentCredentials(ctx, deploymentSelection, {\n ensureLocalRunning: false,\n });\n\n const deploymentNotice =\n deploymentFields !== null\n ? ` (on ${chalkStderr.bold(deploymentFields.deploymentType)} deployment ${chalkStderr.bold(deploymentFields.deploymentName)})`\n : \"\";\n const result = {\n ctx,\n deployment: {\n deploymentUrl,\n adminKey,\n deploymentNotice,\n deploymentFields,\n },\n };\n return result;\n}\n\nconst envGetCmd = new Command(\"get\")\n .argument(\"<name>\", \"The name of the environment variable to print.\")\n .summary(\"Print a variable's value\")\n .description(\"Print a variable's value: `npx convex env get NAME`\")\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env get\");\n await withRunningBackend({\n ctx,\n deployment,\n action: async () => {\n const backend = deploymentEnvBackend(ctx, deployment);\n await envGet(ctx, backend, envVarName);\n },\n });\n });\n\nconst envRemoveCmd = new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .argument(\"<name>\", \"The name of the environment variable to unset.\")\n .summary(\"Unset a variable\")\n .description(\n \"Unset a variable: `npx convex env remove NAME`\\n\" +\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env remove\");\n await withRunningBackend({\n ctx,\n deployment,\n action: async () => {\n const backend = deploymentEnvBackend(ctx, deployment);\n await envRemove(ctx, backend, name);\n },\n });\n });\n\nconst envListCmd = new Command(\"list\")\n .summary(\"List all environment variables and their values\")\n .description(\n [\n \"\u2022 List only variable names (no values): `npx convex env list --names-only`\",\n \"\u2022 List all variables and their values: `npx convex env list --include-values`\",\n \"\u2022 Save all variables to a file: `npx convex env list --include-values > .env.convex`\",\n \"\u2022 Append to a file: `npx convex env list --include-values >> .env.convex`\",\n ].join(\"\\n\"),\n )\n .option(\n \"--names-only\",\n \"List only the names of environment variables, without their values\",\n )\n .addOption(\n new Option(\n \"--include-values\",\n \"Print each variable's value alongside its name, in .env format (the default). Pass it explicitly in scripts that rely on the values.\",\n ).conflicts(\"namesOnly\"),\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (cmdOptions, cmd) => {\n // Note: We use `as` here because optsWithGlobals() type inference doesn't\n // include global options from the parent command (added via addDeploymentSelectionOptions)\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions;\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env list\");\n await withRunningBackend({\n ctx,\n deployment,\n action: async () => {\n const backend = deploymentEnvBackend(ctx, deployment);\n await envList(ctx, backend, {\n namesOnly: cmdOptions.namesOnly ?? false,\n });\n },\n });\n });\n\nexport const env = new Command(\"env\")\n .summary(\"Set and view environment variables\")\n .description(\n [\n \"Set and view environment variables on your deployment\",\n \"\",\n \"\u2022 Set a variable: `npx convex env set NAME 'value'`\",\n \"\u2022 Set interactively: `npx convex env set NAME`\",\n \"\u2022 Set multiple from file: `npx convex env set --from-file .env`\",\n \"\u2022 Unset a variable: `npx convex env remove NAME`\",\n \"\u2022 List only variable names (no values): `npx convex env list --names-only`\",\n \"\u2022 List all variables and their values: `npx convex env list --include-values`\",\n \"\u2022 Print a variable's value: `npx convex env get NAME`\",\n \"\",\n \"By default, this sets and views variables on your dev deployment.\",\n \"\",\n \"See the environment variables guide (https://docs.convex.dev/production/environment-variables) to learn more.\",\n ].join(\"\\n\"),\n )\n .addCommand(envSetCmd)\n .addCommand(envGetCmd)\n .addCommand(envRemoveCmd)\n .addCommand(envListCmd)\n .addCommand(envDefault)\n .helpCommand(false)\n .addDeploymentSelectionOptions(\n actionDescription(\"Set and view environment variables on\"),\n );\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -102,14 +102,19 @@ const envDefaultRemove = addEnvDefaultOptions(
|
|
|
102
102
|
const envDefaultList = addEnvDefaultOptions(
|
|
103
103
|
new Command("list").summary("List all default environment variables and their values").description(
|
|
104
104
|
[
|
|
105
|
-
"\u2022 List all default variables and their values: `npx convex env default list`",
|
|
106
105
|
"\u2022 List only default variable names (no values): `npx convex env default list --names-only`",
|
|
106
|
+
"\u2022 List all default variables and their values: `npx convex env default list --include-values`",
|
|
107
107
|
"",
|
|
108
108
|
"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided."
|
|
109
109
|
].join("\n")
|
|
110
110
|
).option(
|
|
111
111
|
"--names-only",
|
|
112
112
|
"List only the names of environment variables, without their values"
|
|
113
|
+
).addOption(
|
|
114
|
+
new Option(
|
|
115
|
+
"--include-values",
|
|
116
|
+
"Print each variable's value alongside its name, in .env format (the default). Pass it explicitly in scripts that rely on the values."
|
|
117
|
+
).conflicts("namesOnly")
|
|
113
118
|
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
114
119
|
).action(async (cmdOptions, cmd) => {
|
|
115
120
|
const options = cmd.optsWithGlobals();
|
|
@@ -127,8 +132,8 @@ export const envDefault = new Command("default").summary("Manage project-level d
|
|
|
127
132
|
"",
|
|
128
133
|
"\u2022 Set a default variable: `npx convex env default set NAME 'value'`",
|
|
129
134
|
"\u2022 Unset a default variable: `npx convex env default remove NAME`",
|
|
130
|
-
"\u2022 List all default variables and their values: `npx convex env default list`",
|
|
131
135
|
"\u2022 List only default variable names (no values): `npx convex env default list --names-only`",
|
|
136
|
+
"\u2022 List all default variables and their values: `npx convex env default list --include-values`",
|
|
132
137
|
"\u2022 Print a default variable's value: `npx convex env default get NAME`"
|
|
133
138
|
].join("\n")
|
|
134
139
|
).addCommand(envDefaultSet).addCommand(envDefaultGet).addCommand(envDefaultRemove).addCommand(envDefaultList).helpCommand(false);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/envDefault.ts"],
|
|
4
|
-
"sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport {\n envGet,\n envList,\n envRemove,\n envSet,\n EnvVarBackend,\n} from \"./lib/env.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { defaultEnvBackend } from \"./lib/defaultEnv.js\";\nimport {\n CloudDeploymentType,\n DeploymentSelectionOptions,\n DeploymentType,\n fetchTeamAndProject,\n} from \"./lib/api.js\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { selectEnvDeployment } from \"./env.js\";\nimport { getProjectDetails } from \"./lib/deploymentSelection.js\";\n\ntype EnvDefaultExtraOptions = {\n type?: string;\n project?: string;\n};\n\nfunction addEnvDefaultOptions<T extends Command<any, any>>(cmd: T): T {\n return cmd\n .addOption(\n new Option(\n \"--type <type>\",\n \"Manage default env vars for the given deployment type (dev, preview, prod) instead of inferring from the current deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--project <project>\",\n \"Select a project manually. Accepts `team-slug:project-slug` or just `project-slug` (team inferred from your current project). Requires --type.\",\n ),\n ) as T;\n}\n\nconst envDefaultSet = addEnvDefaultOptions(\n new Command(\"set\")\n .usage(\"[options] <name> <value>\")\n .argument(\"[name]\", \"The name of the default environment variable to set.\")\n .argument(\n \"[value]\",\n \"The value to set the variable to. Omit to set it interactively.\",\n )\n .summary(\"Set a default variable\")\n .description(\n [\n \"Set default environment variables for your project's deployment type.\",\n \"\",\n \"\u2022 `npx convex env default set NAME 'value'`\",\n \"\u2022 `npx convex env default set NAME # omit a value to set one interactively`\",\n \"\u2022 `npx convex env default set NAME --from-file value.txt`\",\n \"\u2022 `npx convex env default set --from-file .env.defaults`\",\n \"\",\n \"When setting multiple values, it will refuse all changes if any variables are already set to different values by default. Pass --force to overwrite the provided values.\",\n \"\",\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, value, cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default set\");\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: No environment variables specified to be set.\",\n });\n }\n});\n\nconst envDefaultGet = addEnvDefaultOptions(\n new Command(\"get\")\n .argument(\n \"<name>\",\n \"The name of the default environment variable to print.\",\n )\n .summary(\"Print a default variable's value\")\n .description(\n \"Print a default variable's value: `npx convex env default get NAME`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default get\");\n await envGet(ctx, backend, envVarName);\n});\n\nconst envDefaultRemove = addEnvDefaultOptions(\n new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .argument(\n \"<name>\",\n \"The name of the default environment variable to unset.\",\n )\n .summary(\"Unset a default variable\")\n .description(\n [\n \"Unset a default variable.\",\n \"\",\n \"\u2022 `npx convex env default remove NAME`\",\n \"\",\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\",\n \"\",\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n ].join(\"\\n\"),\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default remove\");\n await envRemove(ctx, backend, name);\n});\n\nconst envDefaultList = addEnvDefaultOptions(\n new Command(\"list\")\n .summary(\"List all default environment variables and their values\")\n .description(\n [\n \"\u2022 List all default variables and their values: `npx convex env default list`\",\n \"\u2022 List only default variable names (no values): `npx convex env default list --names-only`\",\n \"\",\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--names-only\",\n \"List only the names of environment variables, without their values\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default list\");\n await envList(ctx, backend, {\n namesOnly: cmdOptions.namesOnly ?? false,\n });\n});\n\nexport const envDefault = new Command(\"default\")\n .summary(\"Manage project-level default environment variables\")\n .description(\n [\n \"Manage default environment variables for your project.\",\n \"\",\n \"The default environment variables read and written to by this command are the ones for the deployment type of the current deployment (i.e. dev in most cases), unless --type is provided.\",\n \"\",\n \"\u2022 Set a default variable: `npx convex env default set NAME 'value'`\",\n \"\u2022 Unset a default variable: `npx convex env default remove NAME`\",\n \"\u2022 List all default variables and their values: `npx convex env default list`\",\n \"\u2022 List only default variable names (no values): `npx convex env default list --names-only`\",\n \"\u2022 Print a default variable's value: `npx convex env default get NAME`\",\n ].join(\"\\n\"),\n )\n .addCommand(envDefaultSet)\n .addCommand(envDefaultGet)\n .addCommand(envDefaultRemove)\n .addCommand(envDefaultList)\n .helpCommand(false);\n\ntype ParsedProjectOption =\n | { kind: \"teamAndProject\"; teamSlug: string; projectSlug: string }\n | { kind: \"projectOnly\"; projectSlug: string };\n\nasync function resolveEnvDefaultBackend(\n options: DeploymentSelectionOptions & EnvDefaultExtraOptions,\n): Promise<{ ctx: Context; backend: EnvVarBackend }> {\n const dtypeOverride = normalizeTypeOption(options.type);\n\n if (options.project !== undefined) {\n const parsedProject = parseProjectOption(options.project);\n if (parsedProject === null) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project must be `team-slug:project-slug` or `project-slug`.\",\n });\n }\n if (dtypeOverride === undefined) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: --project requires --type to also be set.\",\n });\n }\n\n let ctx: Context;\n let resolved: { teamSlug: string; projectSlug: string };\n if (parsedProject.kind === \"teamAndProject\") {\n ctx = await oneoffContext(options);\n resolved = {\n teamSlug: parsedProject.teamSlug,\n projectSlug: parsedProject.projectSlug,\n };\n } else {\n const selected = await selectEnvDeployment(options);\n ctx = selected.ctx;\n if (selected.deployment.deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project <project-slug> requires a current cloud deployment to infer the team from. Use `team-slug:project-slug` to specify the team explicitly.\",\n });\n }\n const { team } = await fetchTeamAndProject(\n ctx,\n selected.deployment.deploymentFields.deploymentName,\n );\n resolved = { teamSlug: team, projectSlug: parsedProject.projectSlug };\n }\n\n const details = await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: resolved.teamSlug,\n projectSlug: resolved.projectSlug,\n });\n return {\n ctx,\n backend: defaultEnvBackend(ctx, details.id, dtypeOverride),\n };\n }\n\n const { ctx, deployment } = await selectEnvDeployment(options);\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n dtypeOverride,\n );\n return { ctx, backend };\n}\n\nfunction normalizeTypeOption(\n type: string | undefined,\n): CloudDeploymentType | undefined {\n if (type === undefined) return undefined;\n if (type === \"development\") return \"dev\";\n if (type === \"production\") return \"prod\";\n return type as CloudDeploymentType;\n}\n\nfunction parseProjectOption(value: string): ParsedProjectOption | null {\n const parts = value.split(\":\");\n if (parts.length === 1 && parts[0].length > 0) {\n return { kind: \"projectOnly\", projectSlug: parts[0] };\n }\n if (parts.length === 2 && parts[0].length > 0 && parts[1].length > 0) {\n return {\n kind: \"teamAndProject\",\n teamSlug: parts[0],\n projectSlug: parts[1],\n };\n }\n return null;\n}\n\nexport async function resolveDefaultEnvBackend(\n ctx: Context,\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n } | null,\n dtypeOverride?: CloudDeploymentType,\n): Promise<EnvVarBackend> {\n if (deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are only available for cloud projects.\",\n });\n }\n if (deploymentFields.deploymentType === \"anonymous\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are not available for anonymous deployments.\",\n });\n }\n const dtype =\n dtypeOverride ?? resolveDefaultEnvDtype(deploymentFields.deploymentType);\n const { projectId } = await fetchTeamAndProject(\n ctx,\n deploymentFields.deploymentName,\n );\n return defaultEnvBackend(ctx, projectId, dtype);\n}\n\nfunction resolveDefaultEnvDtype(\n deploymentType: Exclude<DeploymentType, \"anonymous\">,\n): CloudDeploymentType {\n if (deploymentType === \"local\") return \"dev\";\n return deploymentType;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport {\n envGet,\n envList,\n envRemove,\n envSet,\n EnvVarBackend,\n} from \"./lib/env.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { defaultEnvBackend } from \"./lib/defaultEnv.js\";\nimport {\n CloudDeploymentType,\n DeploymentSelectionOptions,\n DeploymentType,\n fetchTeamAndProject,\n} from \"./lib/api.js\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { selectEnvDeployment } from \"./env.js\";\nimport { getProjectDetails } from \"./lib/deploymentSelection.js\";\n\ntype EnvDefaultExtraOptions = {\n type?: string;\n project?: string;\n};\n\nfunction addEnvDefaultOptions<T extends Command<any, any>>(cmd: T): T {\n return cmd\n .addOption(\n new Option(\n \"--type <type>\",\n \"Manage default env vars for the given deployment type (dev, preview, prod) instead of inferring from the current deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--project <project>\",\n \"Select a project manually. Accepts `team-slug:project-slug` or just `project-slug` (team inferred from your current project). Requires --type.\",\n ),\n ) as T;\n}\n\nconst envDefaultSet = addEnvDefaultOptions(\n new Command(\"set\")\n .usage(\"[options] <name> <value>\")\n .argument(\"[name]\", \"The name of the default environment variable to set.\")\n .argument(\n \"[value]\",\n \"The value to set the variable to. Omit to set it interactively.\",\n )\n .summary(\"Set a default variable\")\n .description(\n [\n \"Set default environment variables for your project's deployment type.\",\n \"\",\n \"\u2022 `npx convex env default set NAME 'value'`\",\n \"\u2022 `npx convex env default set NAME # omit a value to set one interactively`\",\n \"\u2022 `npx convex env default set NAME --from-file value.txt`\",\n \"\u2022 `npx convex env default set --from-file .env.defaults`\",\n \"\",\n \"When setting multiple values, it will refuse all changes if any variables are already set to different values by default. Pass --force to overwrite the provided values.\",\n \"\",\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, value, cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default set\");\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: No environment variables specified to be set.\",\n });\n }\n});\n\nconst envDefaultGet = addEnvDefaultOptions(\n new Command(\"get\")\n .argument(\n \"<name>\",\n \"The name of the default environment variable to print.\",\n )\n .summary(\"Print a default variable's value\")\n .description(\n \"Print a default variable's value: `npx convex env default get NAME`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default get\");\n await envGet(ctx, backend, envVarName);\n});\n\nconst envDefaultRemove = addEnvDefaultOptions(\n new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .argument(\n \"<name>\",\n \"The name of the default environment variable to unset.\",\n )\n .summary(\"Unset a default variable\")\n .description(\n [\n \"Unset a default variable.\",\n \"\",\n \"\u2022 `npx convex env default remove NAME`\",\n \"\",\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\",\n \"\",\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n ].join(\"\\n\"),\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default remove\");\n await envRemove(ctx, backend, name);\n});\n\nconst envDefaultList = addEnvDefaultOptions(\n new Command(\"list\")\n .summary(\"List all default environment variables and their values\")\n .description(\n [\n \"\u2022 List only default variable names (no values): `npx convex env default list --names-only`\",\n \"\u2022 List all default variables and their values: `npx convex env default list --include-values`\",\n \"\",\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n ].join(\"\\n\"),\n )\n .option(\n \"--names-only\",\n \"List only the names of environment variables, without their values\",\n )\n .addOption(\n new Option(\n \"--include-values\",\n \"Print each variable's value alongside its name, in .env format (the default). Pass it explicitly in scripts that rely on the values.\",\n ).conflicts(\"namesOnly\"),\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default list\");\n await envList(ctx, backend, {\n namesOnly: cmdOptions.namesOnly ?? false,\n });\n});\n\nexport const envDefault = new Command(\"default\")\n .summary(\"Manage project-level default environment variables\")\n .description(\n [\n \"Manage default environment variables for your project.\",\n \"\",\n \"The default environment variables read and written to by this command are the ones for the deployment type of the current deployment (i.e. dev in most cases), unless --type is provided.\",\n \"\",\n \"\u2022 Set a default variable: `npx convex env default set NAME 'value'`\",\n \"\u2022 Unset a default variable: `npx convex env default remove NAME`\",\n \"\u2022 List only default variable names (no values): `npx convex env default list --names-only`\",\n \"\u2022 List all default variables and their values: `npx convex env default list --include-values`\",\n \"\u2022 Print a default variable's value: `npx convex env default get NAME`\",\n ].join(\"\\n\"),\n )\n .addCommand(envDefaultSet)\n .addCommand(envDefaultGet)\n .addCommand(envDefaultRemove)\n .addCommand(envDefaultList)\n .helpCommand(false);\n\ntype ParsedProjectOption =\n | { kind: \"teamAndProject\"; teamSlug: string; projectSlug: string }\n | { kind: \"projectOnly\"; projectSlug: string };\n\nasync function resolveEnvDefaultBackend(\n options: DeploymentSelectionOptions & EnvDefaultExtraOptions,\n): Promise<{ ctx: Context; backend: EnvVarBackend }> {\n const dtypeOverride = normalizeTypeOption(options.type);\n\n if (options.project !== undefined) {\n const parsedProject = parseProjectOption(options.project);\n if (parsedProject === null) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project must be `team-slug:project-slug` or `project-slug`.\",\n });\n }\n if (dtypeOverride === undefined) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: --project requires --type to also be set.\",\n });\n }\n\n let ctx: Context;\n let resolved: { teamSlug: string; projectSlug: string };\n if (parsedProject.kind === \"teamAndProject\") {\n ctx = await oneoffContext(options);\n resolved = {\n teamSlug: parsedProject.teamSlug,\n projectSlug: parsedProject.projectSlug,\n };\n } else {\n const selected = await selectEnvDeployment(options);\n ctx = selected.ctx;\n if (selected.deployment.deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project <project-slug> requires a current cloud deployment to infer the team from. Use `team-slug:project-slug` to specify the team explicitly.\",\n });\n }\n const { team } = await fetchTeamAndProject(\n ctx,\n selected.deployment.deploymentFields.deploymentName,\n );\n resolved = { teamSlug: team, projectSlug: parsedProject.projectSlug };\n }\n\n const details = await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: resolved.teamSlug,\n projectSlug: resolved.projectSlug,\n });\n return {\n ctx,\n backend: defaultEnvBackend(ctx, details.id, dtypeOverride),\n };\n }\n\n const { ctx, deployment } = await selectEnvDeployment(options);\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n dtypeOverride,\n );\n return { ctx, backend };\n}\n\nfunction normalizeTypeOption(\n type: string | undefined,\n): CloudDeploymentType | undefined {\n if (type === undefined) return undefined;\n if (type === \"development\") return \"dev\";\n if (type === \"production\") return \"prod\";\n return type as CloudDeploymentType;\n}\n\nfunction parseProjectOption(value: string): ParsedProjectOption | null {\n const parts = value.split(\":\");\n if (parts.length === 1 && parts[0].length > 0) {\n return { kind: \"projectOnly\", projectSlug: parts[0] };\n }\n if (parts.length === 2 && parts[0].length > 0 && parts[1].length > 0) {\n return {\n kind: \"teamAndProject\",\n teamSlug: parts[0],\n projectSlug: parts[1],\n };\n }\n return null;\n}\n\nexport async function resolveDefaultEnvBackend(\n ctx: Context,\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n } | null,\n dtypeOverride?: CloudDeploymentType,\n): Promise<EnvVarBackend> {\n if (deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are only available for cloud projects.\",\n });\n }\n if (deploymentFields.deploymentType === \"anonymous\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are not available for anonymous deployments.\",\n });\n }\n const dtype =\n dtypeOverride ?? resolveDefaultEnvDtype(deploymentFields.deploymentType);\n const { projectId } = await fetchTeamAndProject(\n ctx,\n deploymentFields.deploymentName,\n );\n return defaultEnvBackend(ctx, projectId, dtype);\n}\n\nfunction resolveDefaultEnvDtype(\n deploymentType: Exclude<DeploymentType, \"anonymous\">,\n): CloudDeploymentType {\n if (deploymentType === \"local\") return \"dev\";\n return deploymentType;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ctx"]
|
|
7
7
|
}
|