convex 1.34.1 → 1.35.1
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 +86 -43
- package/dist/browser.bundle.js +1 -1
- package/dist/browser.bundle.js.map +1 -1
- package/dist/cjs/cli/aiFiles.js +31 -13
- package/dist/cjs/cli/aiFiles.js.map +3 -3
- package/dist/cjs/cli/configure.js +21 -24
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/deploy.js +8 -9
- package/dist/cjs/cli/deploy.js.map +2 -2
- package/dist/cjs/cli/deploymentCreate.js +225 -40
- package/dist/cjs/cli/deploymentCreate.js.map +3 -3
- package/dist/cjs/cli/deploymentSelect.js +14 -13
- package/dist/cjs/cli/deploymentSelect.js.map +2 -2
- package/dist/cjs/cli/dev.js +30 -11
- package/dist/cjs/cli/dev.js.map +2 -2
- package/dist/cjs/cli/docs.js +1 -1
- package/dist/cjs/cli/docs.js.map +2 -2
- package/dist/cjs/cli/init.js +1 -1
- package/dist/cjs/cli/init.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/agentsmd.js +14 -10
- package/dist/cjs/cli/lib/aiFiles/agentsmd.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/claudemd.js +14 -10
- package/dist/cjs/cli/lib/aiFiles/claudemd.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js +10 -3
- package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/index.js +70 -86
- package/dist/cjs/cli/lib/aiFiles/index.js.map +3 -3
- package/dist/cjs/cli/lib/aiFiles/skills.js +28 -12
- package/dist/cjs/cli/lib/aiFiles/skills.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/state.js +96 -0
- package/dist/cjs/cli/lib/aiFiles/state.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/status.js +31 -28
- package/dist/cjs/cli/lib/aiFiles/status.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/utils.js +31 -14
- package/dist/cjs/cli/lib/aiFiles/utils.js.map +2 -2
- package/dist/cjs/cli/lib/api.js +70 -7
- package/dist/cjs/cli/lib/api.js.map +2 -2
- package/dist/cjs/cli/lib/command.js +4 -5
- package/dist/cjs/cli/lib/command.js.map +2 -2
- package/dist/cjs/cli/lib/config.js +41 -4
- package/dist/cjs/cli/lib/config.js.map +3 -3
- package/dist/cjs/cli/lib/deploy2.js +9 -26
- package/dist/cjs/cli/lib/deploy2.js.map +2 -2
- package/dist/cjs/cli/lib/deployApi/componentDefinition.js +4 -1
- package/dist/cjs/cli/lib/deployApi/componentDefinition.js.map +2 -2
- package/dist/cjs/cli/lib/deploymentSelection.js +45 -2
- package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
- package/dist/cjs/cli/lib/deploymentSelector.js +1 -0
- package/dist/cjs/cli/lib/deploymentSelector.js.map +2 -2
- package/dist/cjs/cli/lib/dev.js +162 -117
- package/dist/cjs/cli/lib/dev.js.map +2 -2
- package/dist/cjs/cli/lib/env.js +1 -13
- package/dist/cjs/cli/lib/env.js.map +2 -2
- package/dist/cjs/cli/lib/envvars.js +8 -1
- package/dist/cjs/cli/lib/envvars.js.map +2 -2
- package/dist/cjs/cli/lib/expiration.js +104 -0
- package/dist/cjs/cli/lib/expiration.js.map +7 -0
- package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
- package/dist/cjs/cli/lib/init.js +4 -3
- package/dist/cjs/cli/lib/init.js.map +2 -2
- package/dist/cjs/cli/lib/insights.js +1 -1
- package/dist/cjs/cli/lib/insights.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/anonymous.js +14 -7
- package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/localDeployment.js +8 -10
- package/dist/cjs/cli/lib/localDeployment/localDeployment.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/run.js +1 -0
- package/dist/cjs/cli/lib/localDeployment/run.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/upgrade.js +2 -2
- package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/utils.js +9 -0
- package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
- package/dist/cjs/cli/lib/mcp/tools/status.js +1 -1
- package/dist/cjs/cli/lib/mcp/tools/status.js.map +2 -2
- package/dist/cjs/cli/lib/updates.js +8 -9
- package/dist/cjs/cli/lib/updates.js.map +2 -2
- package/dist/cjs/cli/lib/usage.js +2 -1
- package/dist/cjs/cli/lib/usage.js.map +2 -2
- package/dist/cjs/cli/lib/utils/prompts.js +2 -1
- package/dist/cjs/cli/lib/utils/prompts.js.map +2 -2
- package/dist/cjs/cli/lib/utils/utils.js +46 -20
- package/dist/cjs/cli/lib/utils/utils.js.map +3 -3
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +1 -1
- package/dist/cjs/server/components/definition.js.map +1 -1
- package/dist/cjs/server/components/index.js +40 -4
- package/dist/cjs/server/components/index.js.map +2 -2
- package/dist/cjs/server/data_model.js.map +1 -1
- package/dist/cjs/server/impl/meta_impl.js +78 -0
- package/dist/cjs/server/impl/meta_impl.js.map +7 -0
- package/dist/cjs/server/impl/registration_impl.js +16 -11
- package/dist/cjs/server/impl/registration_impl.js.map +2 -2
- package/dist/cjs/server/index.js.map +2 -2
- package/dist/cjs/server/meta.js +17 -0
- package/dist/cjs/server/meta.js.map +7 -0
- package/dist/cjs/server/registration.js.map +1 -1
- package/dist/cjs-types/cli/aiFiles.d.ts.map +1 -1
- package/dist/cjs-types/cli/configure.d.ts.map +1 -1
- package/dist/cjs-types/cli/configure.test.d.ts +2 -0
- package/dist/cjs-types/cli/configure.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploymentCreate.d.ts +1 -0
- package/dist/cjs-types/cli/deploymentCreate.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploymentSelect.d.ts +2 -1
- package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
- package/dist/cjs-types/cli/dev.d.ts +3 -1
- package/dist/cjs-types/cli/dev.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/index.d.ts +20 -18
- package/dist/cjs-types/cli/lib/aiFiles/index.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts +6 -4
- package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/state.d.ts +38 -0
- package/dist/cjs-types/cli/lib/aiFiles/state.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/status.d.ts +4 -1
- package/dist/cjs-types/cli/lib/aiFiles/status.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts +13 -3
- package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/api.d.ts +3 -3
- package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/command.d.ts +2 -1
- package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/config.d.ts +17 -6
- package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deploy2.d.ts +5 -2
- package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
- package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deployApi/modules.d.ts +12 -12
- package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +25 -16
- package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deploymentSelector.d.ts +2 -0
- package/dist/cjs-types/cli/lib/deploymentSelector.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/env.d.ts +0 -4
- package/dist/cjs-types/cli/lib/env.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/envvars.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/expiration.d.ts +35 -0
- package/dist/cjs-types/cli/lib/expiration.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/expiration.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/expiration.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/init.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/run.d.ts +15 -0
- package/dist/cjs-types/cli/lib/localDeployment/run.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts +7 -0
- package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/mcp/requestContext.d.ts +3 -3
- package/dist/cjs-types/cli/lib/updates.d.ts +4 -3
- package/dist/cjs-types/cli/lib/updates.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/utils/prompts.d.ts +1 -0
- package/dist/cjs-types/cli/lib/utils/prompts.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/utils/utils.d.ts +16 -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/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
- package/dist/cjs-types/server/components/definition.d.ts +1 -0
- package/dist/cjs-types/server/components/definition.d.ts.map +1 -1
- package/dist/cjs-types/server/components/index.d.ts +5 -1
- package/dist/cjs-types/server/components/index.d.ts.map +1 -1
- package/dist/cjs-types/server/data_model.d.ts +2 -1
- package/dist/cjs-types/server/data_model.d.ts.map +1 -1
- package/dist/cjs-types/server/impl/meta_impl.d.ts +5 -0
- package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -0
- package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/index.d.ts +1 -0
- package/dist/cjs-types/server/index.d.ts.map +1 -1
- package/dist/cjs-types/server/meta.d.ts +72 -0
- package/dist/cjs-types/server/meta.d.ts.map +1 -0
- package/dist/cjs-types/server/registration.d.ts.map +1 -1
- package/dist/cli.bundle.cjs +1665 -1215
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/esm/cli/aiFiles.js +33 -15
- package/dist/esm/cli/aiFiles.js.map +2 -2
- package/dist/esm/cli/configure.js +23 -26
- package/dist/esm/cli/configure.js.map +2 -2
- package/dist/esm/cli/deploy.js +12 -11
- package/dist/esm/cli/deploy.js.map +2 -2
- package/dist/esm/cli/deploymentCreate.js +238 -42
- package/dist/esm/cli/deploymentCreate.js.map +2 -2
- package/dist/esm/cli/deploymentSelect.js +13 -12
- package/dist/esm/cli/deploymentSelect.js.map +2 -2
- package/dist/esm/cli/dev.js +34 -13
- package/dist/esm/cli/dev.js.map +2 -2
- package/dist/esm/cli/docs.js +1 -1
- package/dist/esm/cli/docs.js.map +2 -2
- package/dist/esm/cli/init.js +2 -2
- package/dist/esm/cli/init.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/agentsmd.js +13 -9
- package/dist/esm/cli/lib/aiFiles/agentsmd.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/claudemd.js +13 -9
- package/dist/esm/cli/lib/aiFiles/claudemd.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/guidelinesmd.js +12 -5
- package/dist/esm/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/index.js +72 -89
- package/dist/esm/cli/lib/aiFiles/index.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/skills.js +29 -13
- package/dist/esm/cli/lib/aiFiles/skills.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/state.js +60 -0
- package/dist/esm/cli/lib/aiFiles/state.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/status.js +32 -29
- package/dist/esm/cli/lib/aiFiles/status.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/utils.js +25 -10
- package/dist/esm/cli/lib/aiFiles/utils.js.map +2 -2
- package/dist/esm/cli/lib/api.js +70 -7
- package/dist/esm/cli/lib/api.js.map +2 -2
- package/dist/esm/cli/lib/command.js +4 -5
- package/dist/esm/cli/lib/command.js.map +2 -2
- package/dist/esm/cli/lib/config.js +39 -3
- package/dist/esm/cli/lib/config.js.map +2 -2
- package/dist/esm/cli/lib/deploy2.js +13 -26
- package/dist/esm/cli/lib/deploy2.js.map +2 -2
- package/dist/esm/cli/lib/deployApi/componentDefinition.js +4 -1
- package/dist/esm/cli/lib/deployApi/componentDefinition.js.map +2 -2
- package/dist/esm/cli/lib/deploymentSelection.js +46 -2
- package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
- package/dist/esm/cli/lib/deploymentSelector.js +1 -0
- package/dist/esm/cli/lib/deploymentSelector.js.map +2 -2
- package/dist/esm/cli/lib/dev.js +162 -118
- package/dist/esm/cli/lib/dev.js.map +2 -2
- package/dist/esm/cli/lib/env.js +0 -11
- package/dist/esm/cli/lib/env.js.map +2 -2
- package/dist/esm/cli/lib/envvars.js +8 -1
- package/dist/esm/cli/lib/envvars.js.map +2 -2
- package/dist/esm/cli/lib/expiration.js +80 -0
- package/dist/esm/cli/lib/expiration.js.map +7 -0
- package/dist/esm/cli/lib/init.js +4 -3
- package/dist/esm/cli/lib/init.js.map +2 -2
- package/dist/esm/cli/lib/insights.js +1 -1
- package/dist/esm/cli/lib/insights.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/anonymous.js +16 -9
- package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/localDeployment.js +9 -11
- package/dist/esm/cli/lib/localDeployment/localDeployment.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/run.js +1 -1
- package/dist/esm/cli/lib/localDeployment/run.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/upgrade.js +2 -2
- package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/utils.js +8 -0
- package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
- package/dist/esm/cli/lib/mcp/tools/status.js +1 -1
- package/dist/esm/cli/lib/mcp/tools/status.js.map +2 -2
- package/dist/esm/cli/lib/updates.js +11 -9
- package/dist/esm/cli/lib/updates.js.map +2 -2
- package/dist/esm/cli/lib/usage.js +2 -1
- package/dist/esm/cli/lib/usage.js.map +2 -2
- package/dist/esm/cli/lib/utils/prompts.js +2 -1
- package/dist/esm/cli/lib/utils/prompts.js.map +2 -2
- package/dist/esm/cli/lib/utils/utils.js +45 -20
- package/dist/esm/cli/lib/utils/utils.js.map +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +1 -1
- package/dist/esm/server/components/index.js +40 -4
- package/dist/esm/server/components/index.js.map +2 -2
- package/dist/esm/server/impl/meta_impl.js +54 -0
- package/dist/esm/server/impl/meta_impl.js.map +7 -0
- package/dist/esm/server/impl/registration_impl.js +20 -11
- package/dist/esm/server/impl/registration_impl.js.map +2 -2
- package/dist/esm/server/index.js.map +2 -2
- package/dist/esm/server/meta.js +2 -0
- package/dist/esm/server/meta.js.map +7 -0
- package/dist/esm-types/cli/aiFiles.d.ts.map +1 -1
- package/dist/esm-types/cli/configure.d.ts.map +1 -1
- package/dist/esm-types/cli/configure.test.d.ts +2 -0
- package/dist/esm-types/cli/configure.test.d.ts.map +1 -0
- package/dist/esm-types/cli/deploy.d.ts.map +1 -1
- package/dist/esm-types/cli/deploymentCreate.d.ts +1 -0
- package/dist/esm-types/cli/deploymentCreate.d.ts.map +1 -1
- package/dist/esm-types/cli/deploymentSelect.d.ts +2 -1
- package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
- package/dist/esm-types/cli/dev.d.ts +3 -1
- package/dist/esm-types/cli/dev.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
- package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/index.d.ts +20 -18
- package/dist/esm-types/cli/lib/aiFiles/index.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/skills.d.ts +6 -4
- package/dist/esm-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/state.d.ts +38 -0
- package/dist/esm-types/cli/lib/aiFiles/state.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/status.d.ts +4 -1
- package/dist/esm-types/cli/lib/aiFiles/status.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/utils.d.ts +13 -3
- package/dist/esm-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/api.d.ts +3 -3
- package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/command.d.ts +2 -1
- package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/config.d.ts +17 -6
- package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deploy2.d.ts +5 -2
- package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
- package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deployApi/modules.d.ts +12 -12
- package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +25 -16
- package/dist/esm-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deploymentSelector.d.ts +2 -0
- package/dist/esm-types/cli/lib/deploymentSelector.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/env.d.ts +0 -4
- package/dist/esm-types/cli/lib/env.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/envvars.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/expiration.d.ts +35 -0
- package/dist/esm-types/cli/lib/expiration.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/expiration.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/expiration.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/init.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/run.d.ts +15 -0
- package/dist/esm-types/cli/lib/localDeployment/run.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/utils.d.ts +7 -0
- package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/mcp/requestContext.d.ts +3 -3
- package/dist/esm-types/cli/lib/updates.d.ts +4 -3
- package/dist/esm-types/cli/lib/updates.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/utils/prompts.d.ts +1 -0
- package/dist/esm-types/cli/lib/utils/prompts.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/utils/utils.d.ts +16 -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/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
- package/dist/esm-types/server/components/definition.d.ts +1 -0
- package/dist/esm-types/server/components/definition.d.ts.map +1 -1
- package/dist/esm-types/server/components/index.d.ts +5 -1
- package/dist/esm-types/server/components/index.d.ts.map +1 -1
- package/dist/esm-types/server/data_model.d.ts +2 -1
- package/dist/esm-types/server/data_model.d.ts.map +1 -1
- package/dist/esm-types/server/impl/meta_impl.d.ts +5 -0
- package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -0
- package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/esm-types/server/index.d.ts +1 -0
- package/dist/esm-types/server/index.d.ts.map +1 -1
- package/dist/esm-types/server/meta.d.ts +72 -0
- package/dist/esm-types/server/meta.d.ts.map +1 -0
- package/dist/esm-types/server/registration.d.ts.map +1 -1
- package/dist/react.bundle.js +1 -1
- package/dist/react.bundle.js.map +1 -1
- package/package.json +11 -7
- package/schemas/convex.schema.json +15 -2
- package/src/cli/aiFiles.ts +44 -14
- package/src/cli/configure.test.ts +138 -0
- package/src/cli/configure.ts +48 -47
- package/src/cli/deploy.ts +13 -10
- package/src/cli/deploymentCreate.test.ts +349 -14
- package/src/cli/deploymentCreate.ts +268 -41
- package/src/cli/deploymentSelect.test.ts +136 -27
- package/src/cli/deploymentSelect.ts +50 -41
- package/src/cli/deploymentSelection.test.ts +343 -35
- package/src/cli/dev.ts +49 -14
- package/src/cli/docs.ts +1 -1
- package/src/cli/init.ts +2 -2
- package/src/cli/lib/aiFiles/agentsmd.ts +15 -11
- package/src/cli/lib/aiFiles/claudemd.ts +15 -11
- package/src/cli/lib/aiFiles/guidelinesmd.test.ts +12 -2
- package/src/cli/lib/aiFiles/guidelinesmd.ts +15 -7
- package/src/cli/lib/aiFiles/index.test.ts +188 -222
- package/src/cli/lib/aiFiles/index.ts +119 -125
- package/src/cli/lib/aiFiles/integration.test.ts +112 -45
- package/src/cli/lib/aiFiles/prompt.test.ts +6 -6
- package/src/cli/lib/aiFiles/skills.ts +46 -16
- package/src/cli/lib/aiFiles/state.test.ts +280 -0
- package/src/cli/lib/aiFiles/state.ts +82 -0
- package/src/cli/lib/aiFiles/status.ts +45 -39
- package/src/cli/lib/aiFiles/utils.test.ts +50 -0
- package/src/cli/lib/aiFiles/utils.ts +38 -10
- package/src/cli/lib/api.ts +88 -7
- package/src/cli/lib/command.ts +12 -7
- package/src/cli/lib/config.test.ts +184 -7
- package/src/cli/lib/config.ts +67 -7
- package/src/cli/lib/deploy2.ts +14 -27
- package/src/cli/lib/deployApi/componentDefinition.ts +4 -1
- package/src/cli/lib/deploymentSelection.ts +59 -6
- package/src/cli/lib/deploymentSelector.test.ts +6 -0
- package/src/cli/lib/deploymentSelector.ts +2 -0
- package/src/cli/lib/dev.ts +202 -153
- package/src/cli/lib/env.ts +0 -15
- package/src/cli/lib/envvars.ts +16 -1
- package/src/cli/lib/expiration.test.ts +159 -0
- package/src/cli/lib/expiration.ts +124 -0
- package/src/cli/lib/generatedFunctionLogsApi.ts +16 -1
- package/src/cli/lib/init.ts +6 -2
- package/src/cli/lib/insights.ts +1 -1
- package/src/cli/lib/localDeployment/anonymous.ts +19 -9
- package/src/cli/lib/localDeployment/localDeployment.ts +9 -11
- package/src/cli/lib/localDeployment/run.ts +1 -1
- package/src/cli/lib/localDeployment/upgrade.ts +12 -10
- package/src/cli/lib/localDeployment/utils.ts +12 -0
- package/src/cli/lib/mcp/tools/status.ts +1 -1
- package/src/cli/lib/updates.test.ts +102 -75
- package/src/cli/lib/updates.ts +14 -12
- package/src/cli/lib/usage.ts +3 -1
- package/src/cli/lib/utils/prompts.ts +2 -0
- package/src/cli/lib/utils/utils.test.ts +6 -6
- package/src/cli/lib/utils/utils.ts +66 -27
- package/src/index.ts +1 -1
- package/src/react-clerk/ConvexProviderWithClerk.test.tsx +1 -1
- package/src/react-clerk/ConvexProviderWithClerk.tsx +1 -1
- package/src/server/components/definition.ts +3 -0
- package/src/server/components/index.ts +62 -5
- package/src/server/data_model.ts +2 -1
- package/src/server/impl/meta_impl.ts +74 -0
- package/src/server/impl/registration_impl.ts +21 -9
- package/src/server/index.ts +8 -0
- package/src/server/meta.ts +76 -0
- package/src/server/registration.ts +10 -0
- package/src/server/schema.test.ts +78 -1
- package/dist/cjs/cli/lib/aiFiles/config.js +0 -171
- package/dist/cjs/cli/lib/aiFiles/config.js.map +0 -7
- package/dist/cjs-types/cli/lib/aiFiles/config.d.ts +0 -46
- package/dist/cjs-types/cli/lib/aiFiles/config.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
- package/dist/esm/cli/lib/aiFiles/config.js +0 -135
- package/dist/esm/cli/lib/aiFiles/config.js.map +0 -7
- package/dist/esm-types/cli/lib/aiFiles/config.d.ts +0 -46
- package/dist/esm-types/cli/lib/aiFiles/config.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
- package/src/cli/lib/aiFiles/config.test.ts +0 -460
- package/src/cli/lib/aiFiles/config.ts +0 -188
- package/src/values/.claude/settings.local.json +0 -10
|
@@ -3,11 +3,11 @@ import path from "path";
|
|
|
3
3
|
import { nodeFs } from "../bundler/fs.js";
|
|
4
4
|
import { deploymentSelect } from "./deploymentSelect.js";
|
|
5
5
|
import { bigBrainAPI, bigBrainAPIMaybeThrows } from "./lib/utils/utils.js";
|
|
6
|
-
import { runSystemQuery } from "./lib/run.js";
|
|
7
6
|
import { globalConfigPath } from "./lib/utils/globalConfig.js";
|
|
8
7
|
|
|
9
|
-
// Mock
|
|
8
|
+
// Mock GET functions — can be configured per test
|
|
10
9
|
const mockPlatformGet = vi.fn();
|
|
10
|
+
const mockDeploymentGet = vi.fn();
|
|
11
11
|
|
|
12
12
|
// In-memory filesystem — populated in beforeEach, written to by real configure code
|
|
13
13
|
let testFiles: Map<string, string>;
|
|
@@ -33,6 +33,7 @@ vi.mock("./lib/utils/utils.js", async (importOriginal) => {
|
|
|
33
33
|
bigBrainAPI: vi.fn(),
|
|
34
34
|
bigBrainAPIMaybeThrows: vi.fn(),
|
|
35
35
|
typedPlatformClient: vi.fn(() => ({ GET: mockPlatformGet })),
|
|
36
|
+
typedDeploymentClient: vi.fn(() => ({ GET: mockDeploymentGet })),
|
|
36
37
|
};
|
|
37
38
|
});
|
|
38
39
|
|
|
@@ -49,9 +50,14 @@ vi.mock("@sentry/node", () => ({
|
|
|
49
50
|
close: vi.fn(),
|
|
50
51
|
}));
|
|
51
52
|
|
|
52
|
-
vi.mock("./lib/run.js", () =>
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
vi.mock("./lib/localDeployment/run.js", async (importOriginal) => {
|
|
54
|
+
const actual =
|
|
55
|
+
await importOriginal<typeof import("./lib/localDeployment/run.js")>();
|
|
56
|
+
return {
|
|
57
|
+
...actual,
|
|
58
|
+
fetchLocalBackendStatus: vi.fn().mockResolvedValue({ kind: "running" }),
|
|
59
|
+
};
|
|
60
|
+
});
|
|
55
61
|
|
|
56
62
|
/**
|
|
57
63
|
* Routes mock Big Brain API calls by path.
|
|
@@ -72,10 +78,14 @@ function setupBigBrainRoutes(routes: Record<string, (data?: any) => any>) {
|
|
|
72
78
|
|
|
73
79
|
describe("npx convex select", () => {
|
|
74
80
|
let savedEnv: NodeJS.ProcessEnv;
|
|
81
|
+
let savedIsTTY: boolean | undefined;
|
|
75
82
|
|
|
76
83
|
beforeEach(() => {
|
|
77
84
|
savedEnv = { ...process.env };
|
|
85
|
+
savedIsTTY = process.stdin.isTTY;
|
|
78
86
|
process.env = {};
|
|
87
|
+
// Default to interactive TTY for existing tests
|
|
88
|
+
process.stdin.isTTY = true as any;
|
|
79
89
|
|
|
80
90
|
// Start with minimal filesystem: package.json for readProjectConfig fallback
|
|
81
91
|
testFiles = new Map([[path.resolve("package.json"), "{}"]]);
|
|
@@ -103,10 +113,12 @@ describe("npx convex select", () => {
|
|
|
103
113
|
},
|
|
104
114
|
);
|
|
105
115
|
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
// typedDeploymentClient GET is called by fetchDeploymentCanonicalUrls
|
|
117
|
+
mockDeploymentGet.mockResolvedValue({
|
|
118
|
+
data: {
|
|
119
|
+
convexCloudUrl: "https://example.convex.cloud",
|
|
120
|
+
convexSiteUrl: "https://example.convex.site",
|
|
121
|
+
},
|
|
110
122
|
});
|
|
111
123
|
|
|
112
124
|
// typedPlatformClient is used for reference-based deployment resolution
|
|
@@ -115,6 +127,7 @@ describe("npx convex select", () => {
|
|
|
115
127
|
|
|
116
128
|
afterEach(() => {
|
|
117
129
|
process.env = savedEnv;
|
|
130
|
+
process.stdin.isTTY = savedIsTTY as any;
|
|
118
131
|
});
|
|
119
132
|
|
|
120
133
|
// Suppress process.exit and stderr
|
|
@@ -182,20 +195,36 @@ describe("npx convex select", () => {
|
|
|
182
195
|
teamId: 1,
|
|
183
196
|
projectId: 1,
|
|
184
197
|
}),
|
|
185
|
-
"
|
|
198
|
+
"teams/my-team/projects/my-project/deployments": () => true,
|
|
199
|
+
"deployment/authorize_within_current_project": () => ({
|
|
186
200
|
adminKey: "dev-key",
|
|
187
201
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
188
202
|
deploymentName: "joyful-capybara-123",
|
|
189
203
|
deploymentType: "dev",
|
|
190
204
|
}),
|
|
191
205
|
});
|
|
206
|
+
mockPlatformGet.mockResolvedValue({
|
|
207
|
+
data: { name: "joyful-capybara-123" },
|
|
208
|
+
error: undefined,
|
|
209
|
+
});
|
|
192
210
|
|
|
193
211
|
await deploymentSelect.parseAsync(["dev"], { from: "user" });
|
|
194
212
|
|
|
195
|
-
expect(
|
|
213
|
+
expect(mockPlatformGet).toHaveBeenCalledWith(
|
|
214
|
+
"/teams/{team_id_or_slug}/projects/{project_slug}/deployment",
|
|
196
215
|
expect.objectContaining({
|
|
197
|
-
|
|
198
|
-
|
|
216
|
+
params: expect.objectContaining({
|
|
217
|
+
path: { team_id_or_slug: "my-team", project_slug: "my-project" },
|
|
218
|
+
query: { defaultDev: true },
|
|
219
|
+
}),
|
|
220
|
+
}),
|
|
221
|
+
);
|
|
222
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
223
|
+
expect.objectContaining({
|
|
224
|
+
path: "deployment/authorize_within_current_project",
|
|
225
|
+
data: expect.objectContaining({
|
|
226
|
+
selectedDeploymentName: "joyful-capybara-123",
|
|
227
|
+
}),
|
|
199
228
|
}),
|
|
200
229
|
);
|
|
201
230
|
const envContent = testFiles.get(path.resolve(".env.local"))!;
|
|
@@ -345,7 +374,7 @@ describe("npx convex select", () => {
|
|
|
345
374
|
});
|
|
346
375
|
|
|
347
376
|
describe("side effects on successful selection", () => {
|
|
348
|
-
it("fetches the
|
|
377
|
+
it("fetches the canonical URLs using the resolved deployment credentials", async () => {
|
|
349
378
|
setupBigBrainRoutes({
|
|
350
379
|
"deployment/joyful-capybara-123/team_and_project": () => ({
|
|
351
380
|
team: "my-team",
|
|
@@ -353,29 +382,30 @@ describe("npx convex select", () => {
|
|
|
353
382
|
teamId: 1,
|
|
354
383
|
projectId: 1,
|
|
355
384
|
}),
|
|
356
|
-
"
|
|
385
|
+
"teams/my-team/projects/my-project/deployments": () => true,
|
|
386
|
+
"deployment/authorize_within_current_project": () => ({
|
|
357
387
|
adminKey: "dev-key",
|
|
358
388
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
359
389
|
deploymentName: "joyful-capybara-123",
|
|
360
390
|
deploymentType: "dev",
|
|
361
391
|
}),
|
|
362
392
|
});
|
|
393
|
+
mockPlatformGet.mockResolvedValue({
|
|
394
|
+
data: { name: "joyful-capybara-123" },
|
|
395
|
+
error: undefined,
|
|
396
|
+
});
|
|
363
397
|
|
|
364
398
|
await deploymentSelect.parseAsync(["dev"], { from: "user" });
|
|
365
399
|
|
|
366
|
-
expect(
|
|
367
|
-
expect.anything(),
|
|
368
|
-
expect.objectContaining({
|
|
369
|
-
adminKey: "dev-key",
|
|
370
|
-
deploymentUrl: "https://joyful-capybara-123.convex.cloud",
|
|
371
|
-
}),
|
|
372
|
-
);
|
|
400
|
+
expect(mockDeploymentGet).toHaveBeenCalledWith("/get_canonical_urls");
|
|
373
401
|
});
|
|
374
402
|
|
|
375
403
|
it("writes the fetched site URL to the env file", async () => {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
404
|
+
mockDeploymentGet.mockResolvedValue({
|
|
405
|
+
data: {
|
|
406
|
+
convexCloudUrl: "https://joyful-capybara-123.convex.cloud",
|
|
407
|
+
convexSiteUrl: "https://joyful-capybara-123.convex.site",
|
|
408
|
+
},
|
|
379
409
|
});
|
|
380
410
|
setupBigBrainRoutes({
|
|
381
411
|
"deployment/joyful-capybara-123/team_and_project": () => ({
|
|
@@ -384,13 +414,18 @@ describe("npx convex select", () => {
|
|
|
384
414
|
teamId: 1,
|
|
385
415
|
projectId: 1,
|
|
386
416
|
}),
|
|
387
|
-
"
|
|
417
|
+
"teams/my-team/projects/my-project/deployments": () => true,
|
|
418
|
+
"deployment/authorize_within_current_project": () => ({
|
|
388
419
|
adminKey: "dev-key",
|
|
389
420
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
390
421
|
deploymentName: "joyful-capybara-123",
|
|
391
422
|
deploymentType: "dev",
|
|
392
423
|
}),
|
|
393
424
|
});
|
|
425
|
+
mockPlatformGet.mockResolvedValue({
|
|
426
|
+
data: { name: "joyful-capybara-123" },
|
|
427
|
+
error: undefined,
|
|
428
|
+
});
|
|
394
429
|
|
|
395
430
|
await deploymentSelect.parseAsync(["dev"], { from: "user" });
|
|
396
431
|
|
|
@@ -412,13 +447,18 @@ describe("npx convex select", () => {
|
|
|
412
447
|
teamId: 1,
|
|
413
448
|
projectId: 1,
|
|
414
449
|
}),
|
|
415
|
-
"
|
|
450
|
+
"teams/my-team/projects/my-project/deployments": () => true,
|
|
451
|
+
"deployment/authorize_within_current_project": () => ({
|
|
416
452
|
adminKey: "dev-key",
|
|
417
453
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
418
454
|
deploymentName: "joyful-capybara-123",
|
|
419
455
|
deploymentType: "dev",
|
|
420
456
|
}),
|
|
421
457
|
});
|
|
458
|
+
mockPlatformGet.mockResolvedValue({
|
|
459
|
+
data: { name: "joyful-capybara-123" },
|
|
460
|
+
error: undefined,
|
|
461
|
+
});
|
|
422
462
|
|
|
423
463
|
await deploymentSelect.parseAsync(["dev"], { from: "user" });
|
|
424
464
|
|
|
@@ -428,6 +468,48 @@ describe("npx convex select", () => {
|
|
|
428
468
|
);
|
|
429
469
|
});
|
|
430
470
|
});
|
|
471
|
+
|
|
472
|
+
it("selects local deployment with 'local' selector", async () => {
|
|
473
|
+
testFiles.set(
|
|
474
|
+
path.resolve(".convex/local/default/config.json"),
|
|
475
|
+
JSON.stringify({
|
|
476
|
+
ports: { cloud: 3210, site: 3211 },
|
|
477
|
+
adminKey: "local-key",
|
|
478
|
+
backendVersion: "1.0.0",
|
|
479
|
+
deploymentName: "local-my_team-my_project-abc",
|
|
480
|
+
}),
|
|
481
|
+
);
|
|
482
|
+
// The local deployment name is looked up via Big Brain for project
|
|
483
|
+
// access checks (checkAccessToSelectedProject)
|
|
484
|
+
// FIXME We should probably avoid the Big Brain call here so that it works offline
|
|
485
|
+
setupBigBrainRoutes({
|
|
486
|
+
"deployment/local-my_team-my_project-abc/team_and_project": () => ({
|
|
487
|
+
team: "my-team",
|
|
488
|
+
project: "my-project",
|
|
489
|
+
teamId: 1,
|
|
490
|
+
projectId: 1,
|
|
491
|
+
}),
|
|
492
|
+
});
|
|
493
|
+
|
|
494
|
+
await deploymentSelect.parseAsync(["local"], { from: "user" });
|
|
495
|
+
|
|
496
|
+
const envContent = testFiles.get(path.resolve(".env.local"))!;
|
|
497
|
+
expect(envContent).toContain(
|
|
498
|
+
"CONVEX_DEPLOYMENT=local:local-my_team-my_project-abc",
|
|
499
|
+
);
|
|
500
|
+
// Site URL fetch should be skipped for local deployments
|
|
501
|
+
expect(envContent).not.toContain("CONVEX_SITE_URL");
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
it("fails with 'No local deployment found' when no local config exists", async () => {
|
|
505
|
+
await expect(
|
|
506
|
+
deploymentSelect.parseAsync(["local"], { from: "user" }),
|
|
507
|
+
).rejects.toThrow();
|
|
508
|
+
|
|
509
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
510
|
+
expect.stringContaining("No local deployment found"),
|
|
511
|
+
);
|
|
512
|
+
});
|
|
431
513
|
});
|
|
432
514
|
|
|
433
515
|
describe("without project configured", () => {
|
|
@@ -527,5 +609,32 @@ describe("npx convex select", () => {
|
|
|
527
609
|
const envContent = testFiles.get(path.resolve(".env.local"))!;
|
|
528
610
|
expect(envContent).toContain("CONVEX_DEPLOYMENT=dev:clever-otter-890");
|
|
529
611
|
});
|
|
612
|
+
|
|
613
|
+
it("selects local deployment without project configured", async () => {
|
|
614
|
+
testFiles.set(
|
|
615
|
+
path.resolve(".convex/local/default/config.json"),
|
|
616
|
+
JSON.stringify({
|
|
617
|
+
ports: { cloud: 3210, site: 3211 },
|
|
618
|
+
adminKey: "local-key",
|
|
619
|
+
backendVersion: "1.0.0",
|
|
620
|
+
deploymentName: "local-my_team-my_project-abc",
|
|
621
|
+
}),
|
|
622
|
+
);
|
|
623
|
+
setupBigBrainRoutes({
|
|
624
|
+
"deployment/local-my_team-my_project-abc/team_and_project": () => ({
|
|
625
|
+
team: "my-team",
|
|
626
|
+
project: "my-project",
|
|
627
|
+
teamId: 1,
|
|
628
|
+
projectId: 1,
|
|
629
|
+
}),
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
await deploymentSelect.parseAsync(["local"], { from: "user" });
|
|
633
|
+
|
|
634
|
+
const envContent = testFiles.get(path.resolve(".env.local"))!;
|
|
635
|
+
expect(envContent).toContain(
|
|
636
|
+
"CONVEX_DEPLOYMENT=local:local-my_team-my_project-abc",
|
|
637
|
+
);
|
|
638
|
+
});
|
|
530
639
|
});
|
|
531
640
|
});
|
|
@@ -2,12 +2,13 @@ import { Command } from "@commander-js/extra-typings";
|
|
|
2
2
|
import { Context, oneoffContext } from "../bundler/context.js";
|
|
3
3
|
import { loadSelectedDeploymentCredentials } from "./lib/api.js";
|
|
4
4
|
import {
|
|
5
|
+
DeploymentSelection,
|
|
5
6
|
getDeploymentSelection,
|
|
6
7
|
deploymentNameFromSelection,
|
|
7
8
|
} from "./lib/deploymentSelection.js";
|
|
8
9
|
import { parseDeploymentSelector } from "./lib/deploymentSelector.js";
|
|
9
10
|
import { updateEnvAndConfigForDeploymentSelection } from "./configure.js";
|
|
10
|
-
import {
|
|
11
|
+
import { fetchDeploymentCanonicalUrls } from "./lib/deploy2.js";
|
|
11
12
|
import { chalkStderr } from "chalk";
|
|
12
13
|
|
|
13
14
|
export const deploymentSelect = new Command("select")
|
|
@@ -16,8 +17,8 @@ export const deploymentSelect = new Command("select")
|
|
|
16
17
|
"Select the deployment to use when running commands.\n\n" +
|
|
17
18
|
"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" +
|
|
18
19
|
"Examples:\n" +
|
|
19
|
-
" npx convex select dev # Select your personal dev deployment in the current project\n" +
|
|
20
|
-
" npx convex select
|
|
20
|
+
" npx convex select dev # Select your personal cloud dev deployment in the current project\n" +
|
|
21
|
+
" npx convex select local # Select your local deployment\n" +
|
|
21
22
|
" npx convex select dev/james # Select a deployment in the same project by its reference\n" +
|
|
22
23
|
" npx convex select some-project:dev/james # Select a deployment in another project in the same team\n" +
|
|
23
24
|
" npx convex select some-team:some-project:dev/james # Select a deployment in a particular team/project\n",
|
|
@@ -30,45 +31,50 @@ export const deploymentSelect = new Command("select")
|
|
|
30
31
|
adminKey: undefined,
|
|
31
32
|
envFile: undefined,
|
|
32
33
|
});
|
|
33
|
-
await selectDeployment(ctx, selector);
|
|
34
|
-
});
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
selector: string,
|
|
39
|
-
): Promise<void> {
|
|
40
|
-
// Get the current deployment selection (no flags, just env/config state)
|
|
41
|
-
const currentSelection = await getDeploymentSelection(ctx, {});
|
|
35
|
+
// Get the current deployment selection (no flags, just env/config state)
|
|
36
|
+
const currentSelection = await getDeploymentSelection(ctx, {});
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
// If no project is configured and the selector needs project context, show a specific error
|
|
39
|
+
const parsed = parseDeploymentSelector(selector);
|
|
40
|
+
if (
|
|
41
|
+
currentSelection.kind === "chooseProject" &&
|
|
42
|
+
parsed.kind !== "inTeamProject" &&
|
|
43
|
+
parsed.kind !== "deploymentName" &&
|
|
44
|
+
parsed.kind !== "local"
|
|
45
|
+
) {
|
|
46
|
+
return await ctx.crash({
|
|
47
|
+
exitCode: 1,
|
|
48
|
+
errorType: "fatal",
|
|
49
|
+
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'.`,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Resolve the new deployment using the selector relative to the current project
|
|
54
|
+
const newSelection = await getDeploymentSelection(ctx, {
|
|
55
|
+
url: undefined,
|
|
56
|
+
adminKey: undefined,
|
|
57
|
+
envFile: undefined,
|
|
58
|
+
deployment: selector,
|
|
54
59
|
});
|
|
55
|
-
}
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
await saveSelectedDeployment(
|
|
62
|
+
ctx,
|
|
63
|
+
selector,
|
|
64
|
+
newSelection,
|
|
65
|
+
deploymentNameFromSelection(currentSelection),
|
|
66
|
+
);
|
|
63
67
|
});
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
export async function saveSelectedDeployment(
|
|
70
|
+
ctx: Context,
|
|
71
|
+
selector: string,
|
|
72
|
+
selection: DeploymentSelection,
|
|
73
|
+
previousDeploymentName: string | null,
|
|
74
|
+
): Promise<void> {
|
|
75
|
+
const deployment = await loadSelectedDeploymentCredentials(ctx, selection, {
|
|
76
|
+
ensureLocalRunning: false,
|
|
77
|
+
});
|
|
72
78
|
|
|
73
79
|
if (deployment.deploymentFields === null) {
|
|
74
80
|
// Should be unreachable since for now, `select` only allows users
|
|
@@ -89,10 +95,13 @@ export async function selectDeployment(
|
|
|
89
95
|
});
|
|
90
96
|
}
|
|
91
97
|
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
98
|
+
const { convexSiteUrl: siteUrl } =
|
|
99
|
+
deployment.deploymentFields.deploymentType === "local"
|
|
100
|
+
? { convexSiteUrl: null }
|
|
101
|
+
: await fetchDeploymentCanonicalUrls(ctx, {
|
|
102
|
+
adminKey: deployment.adminKey,
|
|
103
|
+
deploymentUrl: deployment.url,
|
|
104
|
+
});
|
|
96
105
|
|
|
97
106
|
await updateEnvAndConfigForDeploymentSelection(
|
|
98
107
|
ctx,
|
|
@@ -104,6 +113,6 @@ export async function selectDeployment(
|
|
|
104
113
|
projectSlug: deployment.deploymentFields.projectSlug,
|
|
105
114
|
deploymentType: deployment.deploymentFields.deploymentType,
|
|
106
115
|
},
|
|
107
|
-
|
|
116
|
+
previousDeploymentName,
|
|
108
117
|
);
|
|
109
118
|
}
|