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
|
@@ -18,6 +18,8 @@ import {
|
|
|
18
18
|
handleLocalDeployment,
|
|
19
19
|
loadLocalDeploymentCredentials,
|
|
20
20
|
} from "./lib/localDeployment/localDeployment.js";
|
|
21
|
+
import { handleAnonymousDeployment } from "./lib/localDeployment/anonymous.js";
|
|
22
|
+
import { loadProjectLocalConfig } from "./lib/localDeployment/filePaths.js";
|
|
21
23
|
import {
|
|
22
24
|
validateOrSelectTeam,
|
|
23
25
|
validateOrSelectProject,
|
|
@@ -67,7 +69,7 @@ vi.mock("./lib/localDeployment/run.js", async (importOriginal) => {
|
|
|
67
69
|
await action();
|
|
68
70
|
},
|
|
69
71
|
),
|
|
70
|
-
|
|
72
|
+
fetchLocalBackendStatus: vi.fn().mockResolvedValue({ kind: "running" }),
|
|
71
73
|
};
|
|
72
74
|
});
|
|
73
75
|
|
|
@@ -135,7 +137,7 @@ vi.mock("./lib/updates.js", async (importOriginal) => {
|
|
|
135
137
|
const actual = await importOriginal<typeof import("./lib/updates.js")>();
|
|
136
138
|
return {
|
|
137
139
|
...actual,
|
|
138
|
-
|
|
140
|
+
checkVersionAndAiFilesStaleness: vi.fn(),
|
|
139
141
|
};
|
|
140
142
|
});
|
|
141
143
|
|
|
@@ -156,6 +158,24 @@ vi.mock("./lib/localDeployment/localDeployment.js", async (importOriginal) => {
|
|
|
156
158
|
};
|
|
157
159
|
});
|
|
158
160
|
|
|
161
|
+
vi.mock("./lib/localDeployment/filePaths.js", async (importOriginal) => {
|
|
162
|
+
const actual =
|
|
163
|
+
await importOriginal<typeof import("./lib/localDeployment/filePaths.js")>();
|
|
164
|
+
return {
|
|
165
|
+
...actual,
|
|
166
|
+
loadProjectLocalConfig: vi.fn().mockReturnValue(null),
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
vi.mock("./lib/localDeployment/anonymous.js", async (importOriginal) => {
|
|
171
|
+
const actual =
|
|
172
|
+
await importOriginal<typeof import("./lib/localDeployment/anonymous.js")>();
|
|
173
|
+
return {
|
|
174
|
+
...actual,
|
|
175
|
+
handleAnonymousDeployment: vi.fn(),
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
|
|
159
179
|
vi.mock("./lib/login.js", async (importOriginal) => {
|
|
160
180
|
const actual = await importOriginal<typeof import("./lib/login.js")>();
|
|
161
181
|
return { ...actual, ensureLoggedIn: vi.fn() };
|
|
@@ -164,7 +184,7 @@ vi.mock("./lib/login.js", async (importOriginal) => {
|
|
|
164
184
|
vi.mock("./lib/aiFiles/index.js", async (importOriginal) => {
|
|
165
185
|
const actual =
|
|
166
186
|
await importOriginal<typeof import("./lib/aiFiles/index.js")>();
|
|
167
|
-
return { ...actual,
|
|
187
|
+
return { ...actual, attemptSetupAiFiles: vi.fn() };
|
|
168
188
|
});
|
|
169
189
|
|
|
170
190
|
vi.mock("./configure.js", async (importOriginal) => {
|
|
@@ -227,10 +247,14 @@ function setupBigBrainRoutes(routes: Record<string, (data?: any) => any>) {
|
|
|
227
247
|
|
|
228
248
|
describe("deployment selection flows", () => {
|
|
229
249
|
let savedEnv: NodeJS.ProcessEnv;
|
|
250
|
+
let savedIsTTY: boolean | undefined;
|
|
230
251
|
|
|
231
252
|
beforeEach(() => {
|
|
232
253
|
savedEnv = { ...process.env };
|
|
254
|
+
savedIsTTY = process.stdin.isTTY;
|
|
233
255
|
process.env = {};
|
|
256
|
+
// Default to interactive TTY for existing tests
|
|
257
|
+
process.stdin.isTTY = true as any;
|
|
234
258
|
|
|
235
259
|
vi.resetAllMocks();
|
|
236
260
|
vi.mocked(readGlobalConfig).mockReturnValue(null);
|
|
@@ -261,10 +285,17 @@ describe("deployment selection flows", () => {
|
|
|
261
285
|
new Error("validateOrSelectProject should be mocked"),
|
|
262
286
|
);
|
|
263
287
|
vi.mocked(ensureLoggedIn).mockResolvedValue(undefined);
|
|
288
|
+
vi.mocked(handleAnonymousDeployment).mockResolvedValue({
|
|
289
|
+
deploymentName: "anon-test",
|
|
290
|
+
deploymentUrl: "http://127.0.0.1:3210",
|
|
291
|
+
adminKey: "anon|admin|key",
|
|
292
|
+
onActivity: async () => {},
|
|
293
|
+
});
|
|
264
294
|
});
|
|
265
295
|
|
|
266
296
|
afterEach(() => {
|
|
267
297
|
process.env = savedEnv;
|
|
298
|
+
process.stdin.isTTY = savedIsTTY as any;
|
|
268
299
|
});
|
|
269
300
|
|
|
270
301
|
// Suppress process.exit and stderr
|
|
@@ -475,7 +506,7 @@ describe("deployment selection flows", () => {
|
|
|
475
506
|
expect(bigBrainAPIMaybeThrows).not.toHaveBeenCalled();
|
|
476
507
|
});
|
|
477
508
|
|
|
478
|
-
it("resolves CONVEX_DEPLOYMENT to
|
|
509
|
+
it("resolves CONVEX_DEPLOYMENT to CONVEX_DEPLOYMENT by default", async () => {
|
|
479
510
|
process.env.CONVEX_DEPLOYMENT = "dev:joyful-capybara-123";
|
|
480
511
|
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
481
512
|
accessToken: "test-token",
|
|
@@ -488,10 +519,11 @@ describe("deployment selection flows", () => {
|
|
|
488
519
|
teamId: 1,
|
|
489
520
|
projectId: 1,
|
|
490
521
|
}),
|
|
491
|
-
"deployment/
|
|
522
|
+
"deployment/authorize_within_current_project": () => ({
|
|
492
523
|
adminKey: "dev-key",
|
|
493
|
-
url: "https://
|
|
494
|
-
deploymentName: "
|
|
524
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
525
|
+
deploymentName: "joyful-capybara-123",
|
|
526
|
+
deploymentType: "dev",
|
|
495
527
|
}),
|
|
496
528
|
});
|
|
497
529
|
|
|
@@ -503,7 +535,7 @@ describe("deployment selection flows", () => {
|
|
|
503
535
|
expect(deploymentFetch).toHaveBeenCalledWith(
|
|
504
536
|
expect.anything(),
|
|
505
537
|
expect.objectContaining({
|
|
506
|
-
deploymentUrl: "https://
|
|
538
|
+
deploymentUrl: "https://joyful-capybara-123.convex.cloud",
|
|
507
539
|
adminKey: "dev-key",
|
|
508
540
|
}),
|
|
509
541
|
);
|
|
@@ -516,11 +548,16 @@ describe("deployment selection flows", () => {
|
|
|
516
548
|
}),
|
|
517
549
|
);
|
|
518
550
|
|
|
519
|
-
|
|
520
|
-
expect(bigBrainAPIMaybeThrows).toHaveBeenCalledWith(
|
|
551
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
521
552
|
expect.objectContaining({
|
|
522
|
-
path: "deployment/
|
|
523
|
-
|
|
553
|
+
path: "deployment/authorize_within_current_project",
|
|
554
|
+
data: expect.objectContaining({
|
|
555
|
+
selectedDeploymentName: "joyful-capybara-123",
|
|
556
|
+
projectSelection: expect.objectContaining({
|
|
557
|
+
kind: "deploymentName",
|
|
558
|
+
deploymentName: "joyful-capybara-123",
|
|
559
|
+
}),
|
|
560
|
+
}),
|
|
524
561
|
}),
|
|
525
562
|
);
|
|
526
563
|
});
|
|
@@ -891,12 +928,18 @@ describe("deployment selection flows", () => {
|
|
|
891
928
|
teamId: 1,
|
|
892
929
|
projectId: 1,
|
|
893
930
|
}),
|
|
894
|
-
"
|
|
931
|
+
"teams/my-team/projects/my-project/deployments": () => true,
|
|
932
|
+
"deployment/authorize_within_current_project": () => ({
|
|
895
933
|
adminKey: "dev-key",
|
|
896
934
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
897
935
|
deploymentName: "joyful-capybara-123",
|
|
936
|
+
deploymentType: "dev",
|
|
898
937
|
}),
|
|
899
938
|
});
|
|
939
|
+
mockPlatformGet.mockResolvedValue({
|
|
940
|
+
data: { name: "joyful-capybara-123" },
|
|
941
|
+
error: undefined,
|
|
942
|
+
});
|
|
900
943
|
|
|
901
944
|
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
902
945
|
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
@@ -905,10 +948,24 @@ describe("deployment selection flows", () => {
|
|
|
905
948
|
from: "user",
|
|
906
949
|
});
|
|
907
950
|
|
|
908
|
-
expect(
|
|
951
|
+
expect(mockPlatformGet).toHaveBeenCalledWith(
|
|
952
|
+
"/teams/{team_id_or_slug}/projects/{project_slug}/deployment",
|
|
909
953
|
expect.objectContaining({
|
|
910
|
-
|
|
911
|
-
|
|
954
|
+
params: expect.objectContaining({
|
|
955
|
+
path: {
|
|
956
|
+
team_id_or_slug: "my-team",
|
|
957
|
+
project_slug: "my-project",
|
|
958
|
+
},
|
|
959
|
+
query: { defaultDev: true },
|
|
960
|
+
}),
|
|
961
|
+
}),
|
|
962
|
+
);
|
|
963
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
964
|
+
expect.objectContaining({
|
|
965
|
+
path: "deployment/authorize_within_current_project",
|
|
966
|
+
data: expect.objectContaining({
|
|
967
|
+
selectedDeploymentName: "joyful-capybara-123",
|
|
968
|
+
}),
|
|
912
969
|
}),
|
|
913
970
|
);
|
|
914
971
|
});
|
|
@@ -1150,12 +1207,18 @@ describe("deployment selection flows", () => {
|
|
|
1150
1207
|
teamId: 1,
|
|
1151
1208
|
projectId: 1,
|
|
1152
1209
|
}),
|
|
1153
|
-
"
|
|
1210
|
+
"teams/my-team/projects/other-project/deployments": () => true,
|
|
1211
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1154
1212
|
adminKey: "other-project-dev-key",
|
|
1155
1213
|
url: "https://other-project-dev.convex.cloud",
|
|
1156
1214
|
deploymentName: "other-project-dev",
|
|
1215
|
+
deploymentType: "dev",
|
|
1157
1216
|
}),
|
|
1158
1217
|
});
|
|
1218
|
+
mockPlatformGet.mockResolvedValue({
|
|
1219
|
+
data: { name: "other-project-dev" },
|
|
1220
|
+
error: undefined,
|
|
1221
|
+
});
|
|
1159
1222
|
|
|
1160
1223
|
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
1161
1224
|
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
@@ -1165,13 +1228,23 @@ describe("deployment selection flows", () => {
|
|
|
1165
1228
|
{ from: "user" },
|
|
1166
1229
|
);
|
|
1167
1230
|
|
|
1168
|
-
expect(
|
|
1231
|
+
expect(mockPlatformGet).toHaveBeenCalledWith(
|
|
1232
|
+
"/teams/{team_id_or_slug}/projects/{project_slug}/deployment",
|
|
1169
1233
|
expect.objectContaining({
|
|
1170
|
-
|
|
1234
|
+
params: expect.objectContaining({
|
|
1235
|
+
path: {
|
|
1236
|
+
team_id_or_slug: "my-team",
|
|
1237
|
+
project_slug: "other-project",
|
|
1238
|
+
},
|
|
1239
|
+
query: { defaultDev: true },
|
|
1240
|
+
}),
|
|
1241
|
+
}),
|
|
1242
|
+
);
|
|
1243
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
1244
|
+
expect.objectContaining({
|
|
1245
|
+
path: "deployment/authorize_within_current_project",
|
|
1171
1246
|
data: expect.objectContaining({
|
|
1172
|
-
|
|
1173
|
-
projectSlug: "other-project",
|
|
1174
|
-
deploymentType: "dev",
|
|
1247
|
+
selectedDeploymentName: "other-project-dev",
|
|
1175
1248
|
}),
|
|
1176
1249
|
}),
|
|
1177
1250
|
);
|
|
@@ -1266,12 +1339,17 @@ describe("deployment selection flows", () => {
|
|
|
1266
1339
|
it("resolves --deployment team:project:dev to dev deployment in fully qualified team/project", async () => {
|
|
1267
1340
|
setupBigBrainRoutes({
|
|
1268
1341
|
"teams/myteam/projects/myproject/deployments": () => true,
|
|
1269
|
-
"deployment/
|
|
1342
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1270
1343
|
adminKey: "fq-dev-key",
|
|
1271
1344
|
url: "https://fq-dev-deploy.convex.cloud",
|
|
1272
1345
|
deploymentName: "fq-dev-deploy",
|
|
1346
|
+
deploymentType: "dev",
|
|
1273
1347
|
}),
|
|
1274
1348
|
});
|
|
1349
|
+
mockPlatformGet.mockResolvedValue({
|
|
1350
|
+
data: { name: "fq-dev-deploy" },
|
|
1351
|
+
error: undefined,
|
|
1352
|
+
});
|
|
1275
1353
|
|
|
1276
1354
|
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
1277
1355
|
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
@@ -1281,13 +1359,23 @@ describe("deployment selection flows", () => {
|
|
|
1281
1359
|
{ from: "user" },
|
|
1282
1360
|
);
|
|
1283
1361
|
|
|
1284
|
-
expect(
|
|
1362
|
+
expect(mockPlatformGet).toHaveBeenCalledWith(
|
|
1363
|
+
"/teams/{team_id_or_slug}/projects/{project_slug}/deployment",
|
|
1285
1364
|
expect.objectContaining({
|
|
1286
|
-
|
|
1365
|
+
params: expect.objectContaining({
|
|
1366
|
+
path: {
|
|
1367
|
+
team_id_or_slug: "myteam",
|
|
1368
|
+
project_slug: "myproject",
|
|
1369
|
+
},
|
|
1370
|
+
query: { defaultDev: true },
|
|
1371
|
+
}),
|
|
1372
|
+
}),
|
|
1373
|
+
);
|
|
1374
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
1375
|
+
expect.objectContaining({
|
|
1376
|
+
path: "deployment/authorize_within_current_project",
|
|
1287
1377
|
data: expect.objectContaining({
|
|
1288
|
-
|
|
1289
|
-
projectSlug: "myproject",
|
|
1290
|
-
deploymentType: "dev",
|
|
1378
|
+
selectedDeploymentName: "fq-dev-deploy",
|
|
1291
1379
|
}),
|
|
1292
1380
|
}),
|
|
1293
1381
|
);
|
|
@@ -1332,6 +1420,109 @@ describe("deployment selection flows", () => {
|
|
|
1332
1420
|
),
|
|
1333
1421
|
).rejects.toThrow();
|
|
1334
1422
|
});
|
|
1423
|
+
|
|
1424
|
+
it("resolves --deployment local to local deployment credentials", async () => {
|
|
1425
|
+
vi.mocked(loadProjectLocalConfig).mockReturnValue({
|
|
1426
|
+
deploymentName: "local-my_team-my_project-abc",
|
|
1427
|
+
config: {
|
|
1428
|
+
ports: { cloud: 3210, site: 3211 },
|
|
1429
|
+
adminKey: "local-key",
|
|
1430
|
+
backendVersion: "1.0.0",
|
|
1431
|
+
},
|
|
1432
|
+
});
|
|
1433
|
+
vi.mocked(loadLocalDeploymentCredentials).mockResolvedValue({
|
|
1434
|
+
deploymentName: "local-my_team-my_project-abc",
|
|
1435
|
+
deploymentUrl: "http://127.0.0.1:3210",
|
|
1436
|
+
adminKey: "local-key",
|
|
1437
|
+
});
|
|
1438
|
+
// The local deployment name is resolved via Big Brain for project
|
|
1439
|
+
// access checks (checkAccessToSelectedProject)
|
|
1440
|
+
setupBigBrainRoutes({
|
|
1441
|
+
"deployment/local-my_team-my_project-abc/team_and_project": () => ({
|
|
1442
|
+
team: "my-team",
|
|
1443
|
+
project: "my-project",
|
|
1444
|
+
teamId: 1,
|
|
1445
|
+
projectId: 1,
|
|
1446
|
+
}),
|
|
1447
|
+
});
|
|
1448
|
+
|
|
1449
|
+
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
1450
|
+
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
1451
|
+
|
|
1452
|
+
await env.parseAsync(["set", "ABC", "DEF", "--deployment", "local"], {
|
|
1453
|
+
from: "user",
|
|
1454
|
+
});
|
|
1455
|
+
|
|
1456
|
+
expect(loadLocalDeploymentCredentials).toHaveBeenCalledWith(
|
|
1457
|
+
expect.anything(),
|
|
1458
|
+
"local-my_team-my_project-abc",
|
|
1459
|
+
);
|
|
1460
|
+
expect(deploymentFetch).toHaveBeenCalledWith(
|
|
1461
|
+
expect.anything(),
|
|
1462
|
+
expect.objectContaining({
|
|
1463
|
+
deploymentUrl: "http://127.0.0.1:3210",
|
|
1464
|
+
adminKey: "local-key",
|
|
1465
|
+
}),
|
|
1466
|
+
);
|
|
1467
|
+
});
|
|
1468
|
+
|
|
1469
|
+
it("resolves --deployment local without CONVEX_DEPLOYMENT set", async () => {
|
|
1470
|
+
delete process.env.CONVEX_DEPLOYMENT;
|
|
1471
|
+
|
|
1472
|
+
vi.mocked(loadProjectLocalConfig).mockReturnValue({
|
|
1473
|
+
deploymentName: "local-my_team-my_project-abc",
|
|
1474
|
+
config: {
|
|
1475
|
+
ports: { cloud: 3210, site: 3211 },
|
|
1476
|
+
adminKey: "local-key",
|
|
1477
|
+
backendVersion: "1.0.0",
|
|
1478
|
+
},
|
|
1479
|
+
});
|
|
1480
|
+
vi.mocked(loadLocalDeploymentCredentials).mockResolvedValue({
|
|
1481
|
+
deploymentName: "local-my_team-my_project-abc",
|
|
1482
|
+
deploymentUrl: "http://127.0.0.1:3210",
|
|
1483
|
+
adminKey: "local-key",
|
|
1484
|
+
});
|
|
1485
|
+
setupBigBrainRoutes({
|
|
1486
|
+
"deployment/local-my_team-my_project-abc/team_and_project": () => ({
|
|
1487
|
+
team: "my-team",
|
|
1488
|
+
project: "my-project",
|
|
1489
|
+
teamId: 1,
|
|
1490
|
+
projectId: 1,
|
|
1491
|
+
}),
|
|
1492
|
+
});
|
|
1493
|
+
|
|
1494
|
+
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
1495
|
+
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
1496
|
+
|
|
1497
|
+
await env.parseAsync(["set", "ABC", "DEF", "--deployment", "local"], {
|
|
1498
|
+
from: "user",
|
|
1499
|
+
});
|
|
1500
|
+
|
|
1501
|
+
expect(deploymentFetch).toHaveBeenCalledWith(
|
|
1502
|
+
expect.anything(),
|
|
1503
|
+
expect.objectContaining({
|
|
1504
|
+
deploymentUrl: "http://127.0.0.1:3210",
|
|
1505
|
+
adminKey: "local-key",
|
|
1506
|
+
}),
|
|
1507
|
+
);
|
|
1508
|
+
});
|
|
1509
|
+
|
|
1510
|
+
it("errors when --deployment local but no local deployment exists", async () => {
|
|
1511
|
+
vi.mocked(loadProjectLocalConfig).mockReturnValue(null);
|
|
1512
|
+
|
|
1513
|
+
await expect(
|
|
1514
|
+
env.parseAsync(["set", "ABC", "DEF", "--deployment", "local"], {
|
|
1515
|
+
from: "user",
|
|
1516
|
+
}),
|
|
1517
|
+
).rejects.toThrow();
|
|
1518
|
+
|
|
1519
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
1520
|
+
expect.stringContaining("No local deployment found"),
|
|
1521
|
+
);
|
|
1522
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
1523
|
+
expect.stringContaining("npx convex deployment create local"),
|
|
1524
|
+
);
|
|
1525
|
+
});
|
|
1335
1526
|
});
|
|
1336
1527
|
});
|
|
1337
1528
|
|
|
@@ -1627,7 +1818,7 @@ describe("deployment selection flows", () => {
|
|
|
1627
1818
|
expect(devAgainstDeployment).not.toHaveBeenCalled();
|
|
1628
1819
|
});
|
|
1629
1820
|
|
|
1630
|
-
it("
|
|
1821
|
+
it("resolves CONVEX_DEPLOYMENT to the configured deployment", async () => {
|
|
1631
1822
|
process.env.CONVEX_DEPLOYMENT = "dev:joyful-capybara-123";
|
|
1632
1823
|
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1633
1824
|
accessToken: "test-token",
|
|
@@ -1640,7 +1831,7 @@ describe("deployment selection flows", () => {
|
|
|
1640
1831
|
teamId: 1,
|
|
1641
1832
|
projectId: 1,
|
|
1642
1833
|
}),
|
|
1643
|
-
"deployment/
|
|
1834
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1644
1835
|
adminKey: "dev-key",
|
|
1645
1836
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
1646
1837
|
deploymentName: "joyful-capybara-123",
|
|
@@ -1650,10 +1841,12 @@ describe("deployment selection flows", () => {
|
|
|
1650
1841
|
|
|
1651
1842
|
await dev.parseAsync([], { from: "user" });
|
|
1652
1843
|
|
|
1653
|
-
expect(
|
|
1844
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
1654
1845
|
expect.objectContaining({
|
|
1655
|
-
path: "deployment/
|
|
1656
|
-
data: expect.objectContaining({
|
|
1846
|
+
path: "deployment/authorize_within_current_project",
|
|
1847
|
+
data: expect.objectContaining({
|
|
1848
|
+
selectedDeploymentName: "joyful-capybara-123",
|
|
1849
|
+
}),
|
|
1657
1850
|
}),
|
|
1658
1851
|
);
|
|
1659
1852
|
expect(devAgainstDeployment).toHaveBeenCalledWith(
|
|
@@ -1714,7 +1907,7 @@ describe("deployment selection flows", () => {
|
|
|
1714
1907
|
expect(bigBrainAPIMaybeThrows).not.toHaveBeenCalled();
|
|
1715
1908
|
});
|
|
1716
1909
|
|
|
1717
|
-
it("
|
|
1910
|
+
it("resolves CONVEX_DEPLOYMENT with --cloud to the configured deployment", async () => {
|
|
1718
1911
|
process.env.CONVEX_DEPLOYMENT = "dev:joyful-capybara-123";
|
|
1719
1912
|
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1720
1913
|
accessToken: "test-token",
|
|
@@ -1727,7 +1920,7 @@ describe("deployment selection flows", () => {
|
|
|
1727
1920
|
teamId: 1,
|
|
1728
1921
|
projectId: 1,
|
|
1729
1922
|
}),
|
|
1730
|
-
"deployment/
|
|
1923
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1731
1924
|
adminKey: "cloud-dev-key",
|
|
1732
1925
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
1733
1926
|
deploymentName: "joyful-capybara-123",
|
|
@@ -1746,5 +1939,120 @@ describe("deployment selection flows", () => {
|
|
|
1746
1939
|
expect.anything(),
|
|
1747
1940
|
);
|
|
1748
1941
|
});
|
|
1942
|
+
|
|
1943
|
+
describe("non-interactive terminal", () => {
|
|
1944
|
+
beforeEach(() => {
|
|
1945
|
+
process.stdin.isTTY = false as any;
|
|
1946
|
+
});
|
|
1947
|
+
|
|
1948
|
+
it("non-interactive, not logged in, no config → uses anonymous deployment", async () => {
|
|
1949
|
+
await dev.parseAsync(["--once"], { from: "user" });
|
|
1950
|
+
|
|
1951
|
+
expect(handleAnonymousDeployment).toHaveBeenCalled();
|
|
1952
|
+
expect(bigBrainAPI).not.toHaveBeenCalled();
|
|
1953
|
+
expect(bigBrainAPIMaybeThrows).not.toHaveBeenCalled();
|
|
1954
|
+
expect(validateOrSelectTeam).not.toHaveBeenCalled();
|
|
1955
|
+
expect(validateOrSelectProject).not.toHaveBeenCalled();
|
|
1956
|
+
});
|
|
1957
|
+
|
|
1958
|
+
it("non-interactive, logged in, no CONVEX_DEPLOYMENT → uses anonymous deployment", async () => {
|
|
1959
|
+
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1960
|
+
accessToken: "test-token",
|
|
1961
|
+
});
|
|
1962
|
+
|
|
1963
|
+
await dev.parseAsync(["--once"], { from: "user" });
|
|
1964
|
+
|
|
1965
|
+
expect(handleAnonymousDeployment).toHaveBeenCalled();
|
|
1966
|
+
expect(validateOrSelectTeam).not.toHaveBeenCalled();
|
|
1967
|
+
expect(validateOrSelectProject).not.toHaveBeenCalled();
|
|
1968
|
+
});
|
|
1969
|
+
|
|
1970
|
+
it("non-interactive with CONVEX_DEPLOYMENT → resolves to the configured deployment", async () => {
|
|
1971
|
+
process.env.CONVEX_DEPLOYMENT = "dev:joyful-capybara-123";
|
|
1972
|
+
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1973
|
+
accessToken: "test-token",
|
|
1974
|
+
});
|
|
1975
|
+
|
|
1976
|
+
setupBigBrainRoutes({
|
|
1977
|
+
"deployment/joyful-capybara-123/team_and_project": () => ({
|
|
1978
|
+
team: "my-team",
|
|
1979
|
+
project: "my-project",
|
|
1980
|
+
teamId: 1,
|
|
1981
|
+
projectId: 1,
|
|
1982
|
+
}),
|
|
1983
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1984
|
+
adminKey: "dev-key",
|
|
1985
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
1986
|
+
deploymentName: "joyful-capybara-123",
|
|
1987
|
+
deploymentType: "dev",
|
|
1988
|
+
}),
|
|
1989
|
+
});
|
|
1990
|
+
|
|
1991
|
+
await dev.parseAsync([], { from: "user" });
|
|
1992
|
+
|
|
1993
|
+
expect(devAgainstDeployment).toHaveBeenCalledWith(
|
|
1994
|
+
expect.anything(),
|
|
1995
|
+
expect.objectContaining({
|
|
1996
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
1997
|
+
adminKey: "dev-key",
|
|
1998
|
+
}),
|
|
1999
|
+
expect.anything(),
|
|
2000
|
+
);
|
|
2001
|
+
expect(handleAnonymousDeployment).not.toHaveBeenCalled();
|
|
2002
|
+
});
|
|
2003
|
+
|
|
2004
|
+
it("non-interactive with CONVEX_DEPLOY_KEY → uses deploy key", async () => {
|
|
2005
|
+
process.env.CONVEX_DEPLOY_KEY = "project:identifier|secretkey";
|
|
2006
|
+
|
|
2007
|
+
setupBigBrainRoutes({
|
|
2008
|
+
"deployment/provision_and_authorize": () => ({
|
|
2009
|
+
adminKey: "dev-key",
|
|
2010
|
+
url: "https://swift-squirrel-234.convex.cloud",
|
|
2011
|
+
deploymentName: "swift-squirrel-234",
|
|
2012
|
+
deploymentType: "dev",
|
|
2013
|
+
}),
|
|
2014
|
+
});
|
|
2015
|
+
|
|
2016
|
+
await dev.parseAsync([], { from: "user" });
|
|
2017
|
+
|
|
2018
|
+
expect(devAgainstDeployment).toHaveBeenCalledWith(
|
|
2019
|
+
expect.anything(),
|
|
2020
|
+
expect.objectContaining({
|
|
2021
|
+
url: "https://swift-squirrel-234.convex.cloud",
|
|
2022
|
+
adminKey: "dev-key",
|
|
2023
|
+
}),
|
|
2024
|
+
expect.anything(),
|
|
2025
|
+
);
|
|
2026
|
+
expect(handleAnonymousDeployment).not.toHaveBeenCalled();
|
|
2027
|
+
});
|
|
2028
|
+
|
|
2029
|
+
it("non-interactive with CONVEX_SELF_HOSTED_URL → uses self-hosted", async () => {
|
|
2030
|
+
process.env.CONVEX_SELF_HOSTED_URL = "http://localhost:3210";
|
|
2031
|
+
process.env.CONVEX_SELF_HOSTED_ADMIN_KEY = "self-hosted-key";
|
|
2032
|
+
|
|
2033
|
+
await dev.parseAsync([], { from: "user" });
|
|
2034
|
+
|
|
2035
|
+
expect(devAgainstDeployment).toHaveBeenCalledWith(
|
|
2036
|
+
expect.anything(),
|
|
2037
|
+
expect.objectContaining({
|
|
2038
|
+
url: "http://localhost:3210",
|
|
2039
|
+
adminKey: "self-hosted-key",
|
|
2040
|
+
}),
|
|
2041
|
+
expect.anything(),
|
|
2042
|
+
);
|
|
2043
|
+
expect(handleAnonymousDeployment).not.toHaveBeenCalled();
|
|
2044
|
+
});
|
|
2045
|
+
});
|
|
2046
|
+
});
|
|
2047
|
+
|
|
2048
|
+
it("dev --deployment crashes with helpful message pointing to deployment select", async () => {
|
|
2049
|
+
await expect(
|
|
2050
|
+
dev.parseAsync(["--deployment", "happy-animal-123"], { from: "user" }),
|
|
2051
|
+
).rejects.toThrow();
|
|
2052
|
+
|
|
2053
|
+
expect(process.stderr.write).toHaveBeenCalledWith(
|
|
2054
|
+
expect.stringContaining("npx convex deployment select happy-animal-123"),
|
|
2055
|
+
);
|
|
2056
|
+
expect(devAgainstDeployment).not.toHaveBeenCalled();
|
|
1749
2057
|
});
|
|
1750
2058
|
});
|