convex 1.34.1 → 1.35.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 +86 -43
- package/dist/browser.bundle.js +8 -2
- package/dist/browser.bundle.js.map +3 -3
- package/dist/cjs/browser/index-node.js +3 -1
- package/dist/cjs/browser/index.js +3 -1
- package/dist/cjs/browser/index.js.map +2 -2
- package/dist/cjs/browser/query_options.js.map +2 -2
- package/dist/cjs/cli/aiFiles.js +31 -13
- package/dist/cjs/cli/aiFiles.js.map +3 -3
- package/dist/cjs/cli/codegen_templates/readme.js +14 -1
- package/dist/cjs/cli/codegen_templates/readme.js.map +2 -2
- package/dist/cjs/cli/configure.js +21 -24
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/deploy.js +7 -8
- 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/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/client.js +43 -6
- package/dist/cjs/react/client.js.map +2 -2
- package/dist/cjs/react/index.js +2 -0
- package/dist/cjs/react/index.js.map +2 -2
- package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +1 -1
- package/dist/cjs/server/api.js.map +2 -2
- 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/browser/index.d.ts +1 -0
- package/dist/cjs-types/browser/index.d.ts.map +1 -1
- package/dist/cjs-types/browser/query_options.d.ts +12 -9
- package/dist/cjs-types/browser/query_options.d.ts.map +1 -1
- package/dist/cjs-types/cli/aiFiles.d.ts.map +1 -1
- package/dist/cjs-types/cli/codegen_templates/readme.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/definitionConfig.d.ts +24 -24
- package/dist/cjs-types/cli/lib/deployApi/modules.d.ts +14 -14
- package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +61 -52
- 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/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/mcp/tools/insights.d.ts +2 -2
- 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/client.d.ts +54 -2
- package/dist/cjs-types/react/client.d.ts.map +1 -1
- package/dist/cjs-types/react/index.d.ts +7 -2
- package/dist/cjs-types/react/index.d.ts.map +1 -1
- package/dist/cjs-types/react/use_query_object_options.test.d.ts +5 -0
- package/dist/cjs-types/react/use_query_object_options.test.d.ts.map +1 -0
- package/dist/cjs-types/react/use_query_result.test.d.ts +5 -0
- package/dist/cjs-types/react/use_query_result.test.d.ts.map +1 -0
- package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
- package/dist/cjs-types/server/api.d.ts +5 -1
- package/dist/cjs-types/server/api.d.ts.map +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 +1670 -1214
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/esm/browser/index-node.js +1 -0
- package/dist/esm/browser/index.js +1 -0
- package/dist/esm/browser/index.js.map +2 -2
- package/dist/esm/browser/query_options.js.map +2 -2
- package/dist/esm/cli/aiFiles.js +33 -15
- package/dist/esm/cli/aiFiles.js.map +2 -2
- package/dist/esm/cli/codegen_templates/readme.js +14 -1
- package/dist/esm/cli/codegen_templates/readme.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 +11 -10
- 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/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/client.js +43 -6
- package/dist/esm/react/client.js.map +2 -2
- package/dist/esm/react/index.js +1 -0
- package/dist/esm/react/index.js.map +2 -2
- package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +1 -1
- package/dist/esm/server/api.js.map +2 -2
- 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/browser/index.d.ts +1 -0
- package/dist/esm-types/browser/index.d.ts.map +1 -1
- package/dist/esm-types/browser/query_options.d.ts +12 -9
- package/dist/esm-types/browser/query_options.d.ts.map +1 -1
- package/dist/esm-types/cli/aiFiles.d.ts.map +1 -1
- package/dist/esm-types/cli/codegen_templates/readme.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/definitionConfig.d.ts +24 -24
- package/dist/esm-types/cli/lib/deployApi/modules.d.ts +14 -14
- package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +61 -52
- 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/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/mcp/tools/insights.d.ts +2 -2
- 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/client.d.ts +54 -2
- package/dist/esm-types/react/client.d.ts.map +1 -1
- package/dist/esm-types/react/index.d.ts +7 -2
- package/dist/esm-types/react/index.d.ts.map +1 -1
- package/dist/esm-types/react/use_query_object_options.test.d.ts +5 -0
- package/dist/esm-types/react/use_query_object_options.test.d.ts.map +1 -0
- package/dist/esm-types/react/use_query_result.test.d.ts +5 -0
- package/dist/esm-types/react/use_query_result.test.d.ts.map +1 -0
- package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
- package/dist/esm-types/server/api.d.ts +5 -1
- package/dist/esm-types/server/api.d.ts.map +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 +50 -7
- package/dist/react.bundle.js.map +3 -3
- package/package.json +11 -7
- package/schemas/convex.schema.json +15 -2
- package/src/browser/index.ts +3 -0
- package/src/browser/query_options.test.ts +0 -9
- package/src/browser/query_options.ts +36 -15
- package/src/cli/aiFiles.ts +44 -14
- package/src/cli/codegen_templates/readme.ts +14 -1
- package/src/cli/configure.test.ts +138 -0
- package/src/cli/configure.ts +48 -47
- package/src/cli/deploy.ts +12 -9
- 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/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/client.test.tsx +65 -0
- package/src/react/client.ts +129 -13
- package/src/react/index.ts +9 -1
- package/src/react/use_query_object_options.test.ts +50 -0
- package/src/react/use_query_result.test.ts +41 -0
- package/src/react-clerk/ConvexProviderWithClerk.test.tsx +1 -1
- package/src/react-clerk/ConvexProviderWithClerk.tsx +1 -1
- package/src/server/api.ts +5 -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
package/src/cli/deploy.ts
CHANGED
|
@@ -21,9 +21,12 @@ import { getTeamAndProjectFromPreviewAdminKey } from "./lib/deployment.js";
|
|
|
21
21
|
import { runPush } from "./lib/components.js";
|
|
22
22
|
import { promptYesNo } from "./lib/utils/prompts.js";
|
|
23
23
|
import { deployToDeployment, runCommand } from "./lib/deploy2.js";
|
|
24
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
DeploymentSelection,
|
|
26
|
+
getDeploymentSelection,
|
|
27
|
+
} from "./lib/deploymentSelection.js";
|
|
25
28
|
import { deploymentNameAndTypeFromSelection } from "./lib/deploymentSelection.js";
|
|
26
|
-
import {
|
|
29
|
+
import { checkVersionAndAiFilesStaleness } from "./lib/updates.js";
|
|
27
30
|
import { readProjectConfig, getAuthKitConfig } from "./lib/config.js";
|
|
28
31
|
import { ensureAuthKitProvisionedBeforeBuild } from "./lib/workos/workos.js";
|
|
29
32
|
import { DASHBOARD_HOST } from "./lib/dashboard.js";
|
|
@@ -93,7 +96,10 @@ Same format as .env.local or .env files, and overrides them.`,
|
|
|
93
96
|
.action(async (cmdOptions) => {
|
|
94
97
|
const ctx = await oneoffContext(cmdOptions);
|
|
95
98
|
|
|
96
|
-
const deploymentSelection = await getDeploymentSelection(ctx,
|
|
99
|
+
const deploymentSelection = await getDeploymentSelection(ctx, {
|
|
100
|
+
...cmdOptions,
|
|
101
|
+
implicitProd: true,
|
|
102
|
+
});
|
|
97
103
|
if (
|
|
98
104
|
cmdOptions.checkBuildEnvironment === "enable" &&
|
|
99
105
|
isNonProdBuildEnvironment() &&
|
|
@@ -171,7 +177,7 @@ Same format as .env.local or .env files, and overrides them.`,
|
|
|
171
177
|
});
|
|
172
178
|
}
|
|
173
179
|
|
|
174
|
-
await deployToExistingDeployment(ctx, {
|
|
180
|
+
await deployToExistingDeployment(ctx, deploymentSelection, {
|
|
175
181
|
...cmdOptions,
|
|
176
182
|
skipWorkosCheck: cmdOptions.skipWorkosCheck ?? false,
|
|
177
183
|
allowDeletingLargeIndexes:
|
|
@@ -309,6 +315,7 @@ async function deployToNewPreviewDeployment(
|
|
|
309
315
|
|
|
310
316
|
async function deployToExistingDeployment(
|
|
311
317
|
ctx: Context,
|
|
318
|
+
deploymentSelection: DeploymentSelection,
|
|
312
319
|
options: {
|
|
313
320
|
verbose?: boolean | undefined;
|
|
314
321
|
dryRun?: boolean | undefined;
|
|
@@ -331,10 +338,6 @@ async function deployToExistingDeployment(
|
|
|
331
338
|
allowDeletingLargeIndexes: boolean;
|
|
332
339
|
},
|
|
333
340
|
) {
|
|
334
|
-
const deploymentSelection = await getDeploymentSelection(ctx, {
|
|
335
|
-
...options,
|
|
336
|
-
implicitProd: true,
|
|
337
|
-
});
|
|
338
341
|
const deploymentToActOn = await loadSelectedDeploymentCredentials(
|
|
339
342
|
ctx,
|
|
340
343
|
deploymentSelection,
|
|
@@ -383,7 +386,7 @@ async function deployToExistingDeployment(
|
|
|
383
386
|
...(isCloudDeployment
|
|
384
387
|
? [
|
|
385
388
|
usageStateWarning(ctx, deploymentFields.deploymentName),
|
|
386
|
-
|
|
389
|
+
checkVersionAndAiFilesStaleness(ctx),
|
|
387
390
|
]
|
|
388
391
|
: []),
|
|
389
392
|
]);
|
|
@@ -11,9 +11,20 @@ import { PlatformProjectDetails } from "@convex-dev/platform/managementApi";
|
|
|
11
11
|
import {
|
|
12
12
|
getDeploymentSelection,
|
|
13
13
|
getProjectDetails,
|
|
14
|
+
deploymentNameFromSelection,
|
|
14
15
|
} from "./lib/deploymentSelection.js";
|
|
15
|
-
import {
|
|
16
|
+
import { saveSelectedDeployment } from "./deploymentSelect.js";
|
|
16
17
|
import { deploymentCreate, resolveRegionDetails } from "./deploymentCreate.js";
|
|
18
|
+
import { ensureBackendBinaryDownloaded } from "./lib/localDeployment/download.js";
|
|
19
|
+
import {
|
|
20
|
+
loadProjectLocalConfig,
|
|
21
|
+
saveDeploymentConfig,
|
|
22
|
+
} from "./lib/localDeployment/filePaths.js";
|
|
23
|
+
import {
|
|
24
|
+
chooseLocalBackendPorts,
|
|
25
|
+
LOCAL_BACKEND_INSTANCE_SECRET,
|
|
26
|
+
} from "./lib/localDeployment/utils.js";
|
|
27
|
+
import { bigBrainStart } from "./lib/localDeployment/bigBrain.js";
|
|
17
28
|
|
|
18
29
|
vi.mock("@sentry/node", () => ({
|
|
19
30
|
captureException: vi.fn(),
|
|
@@ -31,10 +42,29 @@ vi.mock("./lib/deploymentSelection.js", () => ({
|
|
|
31
42
|
initializeBigBrainAuth: vi.fn(),
|
|
32
43
|
getDeploymentSelection: vi.fn(),
|
|
33
44
|
getProjectDetails: vi.fn(),
|
|
45
|
+
deploymentNameFromSelection: vi.fn().mockReturnValue(null),
|
|
34
46
|
}));
|
|
35
47
|
|
|
36
48
|
vi.mock("./deploymentSelect.js", () => ({
|
|
37
|
-
|
|
49
|
+
saveSelectedDeployment: vi.fn(),
|
|
50
|
+
}));
|
|
51
|
+
|
|
52
|
+
vi.mock("./lib/localDeployment/download.js", () => ({
|
|
53
|
+
ensureBackendBinaryDownloaded: vi.fn(),
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
vi.mock("./lib/localDeployment/filePaths.js", () => ({
|
|
57
|
+
loadProjectLocalConfig: vi.fn(),
|
|
58
|
+
saveDeploymentConfig: vi.fn(),
|
|
59
|
+
}));
|
|
60
|
+
|
|
61
|
+
vi.mock("./lib/localDeployment/utils.js", () => ({
|
|
62
|
+
chooseLocalBackendPorts: vi.fn(),
|
|
63
|
+
LOCAL_BACKEND_INSTANCE_SECRET: "MockSecret123",
|
|
64
|
+
}));
|
|
65
|
+
|
|
66
|
+
vi.mock("./lib/localDeployment/bigBrain.js", () => ({
|
|
67
|
+
bigBrainStart: vi.fn(),
|
|
38
68
|
}));
|
|
39
69
|
|
|
40
70
|
const mockRegions = [
|
|
@@ -107,7 +137,9 @@ describe("non-interactive create flow", () => {
|
|
|
107
137
|
beforeEach(() => {
|
|
108
138
|
vi.mocked(getDeploymentSelection).mockReset();
|
|
109
139
|
vi.mocked(getProjectDetails).mockReset();
|
|
110
|
-
vi.mocked(
|
|
140
|
+
vi.mocked(saveSelectedDeployment).mockReset();
|
|
141
|
+
vi.mocked(deploymentNameFromSelection).mockReset();
|
|
142
|
+
vi.mocked(deploymentNameFromSelection).mockReturnValue(null);
|
|
111
143
|
});
|
|
112
144
|
|
|
113
145
|
describe("validation errors", () => {
|
|
@@ -128,6 +160,165 @@ describe("non-interactive create flow", () => {
|
|
|
128
160
|
expect.stringContaining("--type is required"),
|
|
129
161
|
);
|
|
130
162
|
});
|
|
163
|
+
|
|
164
|
+
test("creates a local deployment: downloads binary, chooses ports, registers with Big Brain, saves config", async () => {
|
|
165
|
+
vi.mocked(getDeploymentSelection).mockResolvedValue({
|
|
166
|
+
kind: "existingDeployment",
|
|
167
|
+
deploymentToActOn: {
|
|
168
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
169
|
+
adminKey: "admin-key",
|
|
170
|
+
deploymentFields: {
|
|
171
|
+
deploymentName: "joyful-capybara-123",
|
|
172
|
+
deploymentType: "dev",
|
|
173
|
+
teamSlug: "my-team",
|
|
174
|
+
projectSlug: "my-project",
|
|
175
|
+
},
|
|
176
|
+
source: "deployKey" as const,
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
vi.mocked(getProjectDetails).mockResolvedValue(fakeProject);
|
|
180
|
+
vi.mocked(loadProjectLocalConfig).mockReturnValue(null);
|
|
181
|
+
vi.mocked(ensureBackendBinaryDownloaded).mockResolvedValue({
|
|
182
|
+
binaryPath: "/path",
|
|
183
|
+
version: "1.0.0",
|
|
184
|
+
});
|
|
185
|
+
vi.mocked(chooseLocalBackendPorts).mockResolvedValue({
|
|
186
|
+
cloudPort: 3210,
|
|
187
|
+
sitePort: 3211,
|
|
188
|
+
});
|
|
189
|
+
vi.mocked(bigBrainStart).mockResolvedValue({
|
|
190
|
+
deploymentName: "local-test-123",
|
|
191
|
+
adminKey: "test-key",
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
await deploymentCreate.parseAsync(["local"], { from: "user" });
|
|
195
|
+
|
|
196
|
+
expect(saveDeploymentConfig).toHaveBeenCalledWith(
|
|
197
|
+
expect.anything(),
|
|
198
|
+
"local",
|
|
199
|
+
"local-test-123",
|
|
200
|
+
{
|
|
201
|
+
backendVersion: "1.0.0",
|
|
202
|
+
ports: { cloud: 3210, site: 3211 },
|
|
203
|
+
adminKey: "test-key",
|
|
204
|
+
instanceSecret: LOCAL_BACKEND_INSTANCE_SECRET,
|
|
205
|
+
},
|
|
206
|
+
);
|
|
207
|
+
expect(mockPlatformPost).not.toHaveBeenCalled();
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
test("creates a local deployment with --select and selects it", async () => {
|
|
211
|
+
vi.mocked(getDeploymentSelection).mockResolvedValue({
|
|
212
|
+
kind: "existingDeployment",
|
|
213
|
+
deploymentToActOn: {
|
|
214
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
215
|
+
adminKey: "admin-key",
|
|
216
|
+
deploymentFields: {
|
|
217
|
+
deploymentName: "joyful-capybara-123",
|
|
218
|
+
deploymentType: "dev",
|
|
219
|
+
teamSlug: "my-team",
|
|
220
|
+
projectSlug: "my-project",
|
|
221
|
+
},
|
|
222
|
+
source: "deployKey" as const,
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
vi.mocked(getProjectDetails).mockResolvedValue(fakeProject);
|
|
226
|
+
vi.mocked(loadProjectLocalConfig).mockReturnValue(null);
|
|
227
|
+
vi.mocked(ensureBackendBinaryDownloaded).mockResolvedValue({
|
|
228
|
+
binaryPath: "/path",
|
|
229
|
+
version: "1.0.0",
|
|
230
|
+
});
|
|
231
|
+
vi.mocked(chooseLocalBackendPorts).mockResolvedValue({
|
|
232
|
+
cloudPort: 3210,
|
|
233
|
+
sitePort: 3211,
|
|
234
|
+
});
|
|
235
|
+
vi.mocked(bigBrainStart).mockResolvedValue({
|
|
236
|
+
deploymentName: "local-test-123",
|
|
237
|
+
adminKey: "test-key",
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
await deploymentCreate.parseAsync(["local", "--select"], {
|
|
241
|
+
from: "user",
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
expect(saveSelectedDeployment).toHaveBeenCalledWith(
|
|
245
|
+
expect.anything(),
|
|
246
|
+
"local",
|
|
247
|
+
{
|
|
248
|
+
kind: "deploymentWithinProject",
|
|
249
|
+
targetProject: {
|
|
250
|
+
kind: "deploymentName",
|
|
251
|
+
deploymentName: "local-test-123",
|
|
252
|
+
deploymentType: "local",
|
|
253
|
+
},
|
|
254
|
+
selectionWithinProject: {
|
|
255
|
+
kind: "deploymentSelector",
|
|
256
|
+
selector: "local",
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
null,
|
|
260
|
+
);
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
test("crashes when creating a local deployment with --type", async () => {
|
|
264
|
+
await expect(
|
|
265
|
+
deploymentCreate.parseAsync(["local", "--type", "dev"], {
|
|
266
|
+
from: "user",
|
|
267
|
+
}),
|
|
268
|
+
).rejects.toThrow();
|
|
269
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
270
|
+
expect.stringContaining(
|
|
271
|
+
"--type cannot be used when creating a local deployment",
|
|
272
|
+
),
|
|
273
|
+
);
|
|
274
|
+
expect(mockPlatformPost).not.toHaveBeenCalled();
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
test("errors when local deployment already exists", async () => {
|
|
278
|
+
vi.mocked(getDeploymentSelection).mockResolvedValue({
|
|
279
|
+
kind: "existingDeployment",
|
|
280
|
+
deploymentToActOn: {
|
|
281
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
282
|
+
adminKey: "admin-key",
|
|
283
|
+
deploymentFields: {
|
|
284
|
+
deploymentName: "joyful-capybara-123",
|
|
285
|
+
deploymentType: "dev",
|
|
286
|
+
teamSlug: "my-team",
|
|
287
|
+
projectSlug: "my-project",
|
|
288
|
+
},
|
|
289
|
+
source: "deployKey" as const,
|
|
290
|
+
},
|
|
291
|
+
});
|
|
292
|
+
vi.mocked(loadProjectLocalConfig).mockReturnValue({
|
|
293
|
+
deploymentName: "existing-local-123",
|
|
294
|
+
config: {} as any,
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
await expect(
|
|
298
|
+
deploymentCreate.parseAsync(["local"], { from: "user" }),
|
|
299
|
+
).rejects.toThrow();
|
|
300
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
301
|
+
expect.stringContaining("A local deployment already exists"),
|
|
302
|
+
);
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
test.each(["region", "default", "expiration"] as const)(
|
|
306
|
+
"rejects --%s with local",
|
|
307
|
+
async (flag) => {
|
|
308
|
+
const args = ["local", `--${flag}`];
|
|
309
|
+
if (flag === "region") args.push("us");
|
|
310
|
+
if (flag === "expiration") args.push("none");
|
|
311
|
+
|
|
312
|
+
await expect(
|
|
313
|
+
deploymentCreate.parseAsync(args, { from: "user" }),
|
|
314
|
+
).rejects.toThrow();
|
|
315
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
316
|
+
expect.stringContaining(
|
|
317
|
+
`--${flag} cannot be used when creating a local deployment`,
|
|
318
|
+
),
|
|
319
|
+
);
|
|
320
|
+
},
|
|
321
|
+
);
|
|
131
322
|
});
|
|
132
323
|
|
|
133
324
|
describe("with project configured", () => {
|
|
@@ -285,7 +476,7 @@ describe("non-interactive create flow", () => {
|
|
|
285
476
|
);
|
|
286
477
|
});
|
|
287
478
|
|
|
288
|
-
test("creates a deployment with --select calls
|
|
479
|
+
test("creates a deployment with --select calls saveSelectedDeployment", async () => {
|
|
289
480
|
setupPlatformForCreate({
|
|
290
481
|
reference: "dev/my-deployment",
|
|
291
482
|
});
|
|
@@ -295,9 +486,22 @@ describe("non-interactive create flow", () => {
|
|
|
295
486
|
{ from: "user" },
|
|
296
487
|
);
|
|
297
488
|
|
|
298
|
-
expect(
|
|
489
|
+
expect(saveSelectedDeployment).toHaveBeenCalledWith(
|
|
299
490
|
expect.anything(),
|
|
300
491
|
"dev/my-deployment",
|
|
492
|
+
{
|
|
493
|
+
kind: "deploymentWithinProject",
|
|
494
|
+
targetProject: {
|
|
495
|
+
kind: "teamAndProjectSlugs",
|
|
496
|
+
teamSlug: "my-team",
|
|
497
|
+
projectSlug: "my-project",
|
|
498
|
+
},
|
|
499
|
+
selectionWithinProject: {
|
|
500
|
+
kind: "deploymentSelector",
|
|
501
|
+
selector: "dev/my-deployment",
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
null,
|
|
301
505
|
);
|
|
302
506
|
});
|
|
303
507
|
});
|
|
@@ -321,7 +525,6 @@ describe("non-interactive create flow", () => {
|
|
|
321
525
|
teamSlug: "other-team",
|
|
322
526
|
projectSlug: "other-project",
|
|
323
527
|
});
|
|
324
|
-
expect(getDeploymentSelection).not.toHaveBeenCalled();
|
|
325
528
|
expect(mockPlatformPost).toHaveBeenCalledWith(
|
|
326
529
|
"/projects/{project_id}/create_deployment",
|
|
327
530
|
expect.objectContaining({
|
|
@@ -333,6 +536,83 @@ describe("non-interactive create flow", () => {
|
|
|
333
536
|
});
|
|
334
537
|
});
|
|
335
538
|
|
|
539
|
+
describe("--expiration flag", () => {
|
|
540
|
+
beforeEach(() => {
|
|
541
|
+
vi.mocked(getDeploymentSelection).mockResolvedValue({
|
|
542
|
+
kind: "existingDeployment",
|
|
543
|
+
deploymentToActOn: {
|
|
544
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
545
|
+
adminKey: "admin-key",
|
|
546
|
+
deploymentFields: {
|
|
547
|
+
deploymentName: "joyful-capybara-123",
|
|
548
|
+
deploymentType: "dev",
|
|
549
|
+
teamSlug: "my-team",
|
|
550
|
+
projectSlug: "my-project",
|
|
551
|
+
},
|
|
552
|
+
source: "deployKey" as const,
|
|
553
|
+
},
|
|
554
|
+
});
|
|
555
|
+
vi.mocked(getProjectDetails).mockResolvedValue(fakeProject);
|
|
556
|
+
});
|
|
557
|
+
|
|
558
|
+
test("--expiration none sends expiresAt: null", async () => {
|
|
559
|
+
setupPlatformForCreate();
|
|
560
|
+
|
|
561
|
+
await deploymentCreate.parseAsync(
|
|
562
|
+
["my-deployment", "--type", "dev", "--expiration", "none"],
|
|
563
|
+
{ from: "user" },
|
|
564
|
+
);
|
|
565
|
+
|
|
566
|
+
expect(mockPlatformPost).toHaveBeenCalledWith(
|
|
567
|
+
"/projects/{project_id}/create_deployment",
|
|
568
|
+
expect.objectContaining({
|
|
569
|
+
body: expect.objectContaining({
|
|
570
|
+
expiresAt: null,
|
|
571
|
+
}),
|
|
572
|
+
}),
|
|
573
|
+
);
|
|
574
|
+
});
|
|
575
|
+
|
|
576
|
+
test("--expiration with timestamp sends correct ms value", async () => {
|
|
577
|
+
setupPlatformForCreate();
|
|
578
|
+
|
|
579
|
+
// Use a timestamp far enough in the future to pass validation
|
|
580
|
+
const futureMs = Date.now() + 2 * 60 * 60 * 1000; // 2 hours from now
|
|
581
|
+
const futureSec = Math.floor(futureMs / 1000);
|
|
582
|
+
|
|
583
|
+
await deploymentCreate.parseAsync(
|
|
584
|
+
[
|
|
585
|
+
"my-deployment",
|
|
586
|
+
"--type",
|
|
587
|
+
"dev",
|
|
588
|
+
"--expiration",
|
|
589
|
+
futureSec.toString(),
|
|
590
|
+
],
|
|
591
|
+
{ from: "user" },
|
|
592
|
+
);
|
|
593
|
+
|
|
594
|
+
expect(mockPlatformPost).toHaveBeenCalledWith(
|
|
595
|
+
"/projects/{project_id}/create_deployment",
|
|
596
|
+
expect.objectContaining({
|
|
597
|
+
body: expect.objectContaining({
|
|
598
|
+
expiresAt: futureSec * 1000,
|
|
599
|
+
}),
|
|
600
|
+
}),
|
|
601
|
+
);
|
|
602
|
+
});
|
|
603
|
+
|
|
604
|
+
test("no --expiration flag does not include expiresAt in body", async () => {
|
|
605
|
+
setupPlatformForCreate();
|
|
606
|
+
|
|
607
|
+
await deploymentCreate.parseAsync(["my-deployment", "--type", "dev"], {
|
|
608
|
+
from: "user",
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
const call = mockPlatformPost.mock.calls[0];
|
|
612
|
+
expect(call[1].body).not.toHaveProperty("expiresAt");
|
|
613
|
+
});
|
|
614
|
+
});
|
|
615
|
+
|
|
336
616
|
describe("without project configured", () => {
|
|
337
617
|
beforeEach(() => {
|
|
338
618
|
vi.mocked(getDeploymentSelection).mockResolvedValue({
|
|
@@ -367,6 +647,22 @@ describe("non-interactive create flow", () => {
|
|
|
367
647
|
});
|
|
368
648
|
expect(mockPlatformPost).toHaveBeenCalled();
|
|
369
649
|
});
|
|
650
|
+
|
|
651
|
+
test("hint includes full team:project:ref when no project configured in current directory", async () => {
|
|
652
|
+
vi.mocked(getProjectDetails).mockResolvedValue(fakeProject);
|
|
653
|
+
setupPlatformForCreate();
|
|
654
|
+
|
|
655
|
+
await deploymentCreate.parseAsync(
|
|
656
|
+
["my-team:my-project:my-deployment", "--type", "dev"],
|
|
657
|
+
{ from: "user" },
|
|
658
|
+
);
|
|
659
|
+
|
|
660
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
661
|
+
expect.stringContaining(
|
|
662
|
+
"npx convex deployment select my-team:my-project:dev/my-deployment",
|
|
663
|
+
),
|
|
664
|
+
);
|
|
665
|
+
});
|
|
370
666
|
});
|
|
371
667
|
});
|
|
372
668
|
|
|
@@ -375,8 +671,10 @@ describe("interactive create flow", () => {
|
|
|
375
671
|
process.stdin.isTTY = true;
|
|
376
672
|
vi.mocked(getDeploymentSelection).mockReset();
|
|
377
673
|
vi.mocked(getProjectDetails).mockReset();
|
|
378
|
-
vi.mocked(
|
|
674
|
+
vi.mocked(saveSelectedDeployment).mockReset();
|
|
379
675
|
vi.mocked(selectRegion).mockReset();
|
|
676
|
+
vi.mocked(deploymentNameFromSelection).mockReset();
|
|
677
|
+
vi.mocked(deploymentNameFromSelection).mockReturnValue(null);
|
|
380
678
|
|
|
381
679
|
// Default: project configured via deployment selection
|
|
382
680
|
vi.mocked(getDeploymentSelection).mockResolvedValue({
|
|
@@ -447,7 +745,7 @@ describe("interactive create flow", () => {
|
|
|
447
745
|
|
|
448
746
|
// Ref prompt (input)
|
|
449
747
|
await screen.next();
|
|
450
|
-
expect(screen.getScreen()).toContain("
|
|
748
|
+
expect(screen.getScreen()).toContain("How to name this deployment?");
|
|
451
749
|
screen.type("my-feature");
|
|
452
750
|
screen.keypress("enter");
|
|
453
751
|
|
|
@@ -476,7 +774,7 @@ describe("interactive create flow", () => {
|
|
|
476
774
|
|
|
477
775
|
// Ref prompt (input)
|
|
478
776
|
await screen.next();
|
|
479
|
-
expect(screen.getScreen()).toContain("
|
|
777
|
+
expect(screen.getScreen()).toContain("How to name this deployment?");
|
|
480
778
|
screen.type("my-feature");
|
|
481
779
|
screen.keypress("enter");
|
|
482
780
|
|
|
@@ -526,14 +824,16 @@ describe("interactive create flow", () => {
|
|
|
526
824
|
|
|
527
825
|
// Ref prompt — enter invalid ref "dev"
|
|
528
826
|
await screen.next();
|
|
529
|
-
expect(screen.getScreen()).toContain("
|
|
827
|
+
expect(screen.getScreen()).toContain("How to name this deployment?");
|
|
530
828
|
screen.type("dev");
|
|
531
829
|
screen.keypress("enter");
|
|
532
830
|
|
|
533
|
-
//
|
|
831
|
+
// Inline validation error, then edit input
|
|
534
832
|
await screen.next();
|
|
535
|
-
expect(screen.getScreen()).toContain(
|
|
536
|
-
|
|
833
|
+
expect(screen.getScreen()).toContain(
|
|
834
|
+
'"dev" is not a valid deployment reference.',
|
|
835
|
+
);
|
|
836
|
+
screen.type("/my-feature");
|
|
537
837
|
screen.keypress("enter");
|
|
538
838
|
|
|
539
839
|
await promise;
|
|
@@ -542,13 +842,48 @@ describe("interactive create flow", () => {
|
|
|
542
842
|
"/projects/{project_id}/create_deployment",
|
|
543
843
|
expect.objectContaining({
|
|
544
844
|
body: expect.objectContaining({
|
|
545
|
-
reference: "my-feature",
|
|
845
|
+
reference: "dev/my-feature",
|
|
546
846
|
isDefault: null,
|
|
547
847
|
}),
|
|
548
848
|
}),
|
|
549
849
|
);
|
|
550
850
|
});
|
|
551
851
|
|
|
852
|
+
test("interactive ref prompt rejects 'local' as a deployment reference", async () => {
|
|
853
|
+
setupDefaultRoutes();
|
|
854
|
+
|
|
855
|
+
const promise = deploymentCreate.parseAsync(["--type", "dev"], {
|
|
856
|
+
from: "user",
|
|
857
|
+
});
|
|
858
|
+
|
|
859
|
+
// Ref prompt — enter "local"
|
|
860
|
+
await screen.next();
|
|
861
|
+
expect(screen.getScreen()).toContain("How to name this deployment?");
|
|
862
|
+
screen.type("local");
|
|
863
|
+
screen.keypress("enter");
|
|
864
|
+
|
|
865
|
+
// Inline validation error
|
|
866
|
+
await screen.next();
|
|
867
|
+
expect(screen.getScreen()).toContain(
|
|
868
|
+
'"local" is not a valid deployment reference',
|
|
869
|
+
);
|
|
870
|
+
|
|
871
|
+
// Fix the input
|
|
872
|
+
screen.type("ization-improvements");
|
|
873
|
+
screen.keypress("enter");
|
|
874
|
+
|
|
875
|
+
await promise;
|
|
876
|
+
|
|
877
|
+
expect(mockPlatformPost).toHaveBeenCalledWith(
|
|
878
|
+
"/projects/{project_id}/create_deployment",
|
|
879
|
+
expect.objectContaining({
|
|
880
|
+
body: expect.objectContaining({
|
|
881
|
+
reference: "localization-improvements",
|
|
882
|
+
}),
|
|
883
|
+
}),
|
|
884
|
+
);
|
|
885
|
+
});
|
|
886
|
+
|
|
552
887
|
test("--region invalid crashes", async () => {
|
|
553
888
|
setupDefaultRoutes();
|
|
554
889
|
|