convex 1.34.0 → 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 +98 -43
- package/dist/browser.bundle.js +13 -10
- 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/browser/sync/authentication_manager.js +4 -1
- package/dist/cjs/browser/sync/authentication_manager.js.map +2 -2
- package/dist/cjs/browser/sync/web_socket_manager.js +1 -7
- package/dist/cjs/browser/sync/web_socket_manager.js.map +2 -2
- package/dist/cjs/cli/aiFiles.js +39 -20
- 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 +34 -32
- 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 +73 -0
- package/dist/cjs/cli/lib/aiFiles/agentsmd.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/claudemd.js +73 -0
- package/dist/cjs/cli/lib/aiFiles/claudemd.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/cursorrules.js +48 -0
- package/dist/cjs/cli/lib/aiFiles/cursorrules.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js +58 -0
- package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/index.js +215 -0
- package/dist/cjs/cli/lib/aiFiles/index.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/paths.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/skills.js +196 -0
- package/dist/cjs/cli/lib/aiFiles/skills.js.map +7 -0
- 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 +198 -0
- package/dist/cjs/cli/lib/aiFiles/status.js.map +7 -0
- package/dist/cjs/cli/lib/aiFiles/utils.js +128 -0
- package/dist/cjs/cli/lib/aiFiles/utils.js.map +7 -0
- 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 +10 -6
- package/dist/cjs/cli/lib/command.js.map +2 -2
- package/dist/cjs/cli/lib/config.js +43 -7
- 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 +15 -8
- 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 +12 -13
- 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/cli/lib/versionApi.js +7 -4
- package/dist/cjs/cli/lib/versionApi.js.map +2 -2
- package/dist/cjs/cli/lib/workos/workos.js +4 -6
- package/dist/cjs/cli/lib/workos/workos.js.map +2 -2
- 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/browser/sync/authentication_manager.d.ts.map +1 -1
- package/dist/cjs-types/browser/sync/web_socket_manager.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 +19 -0
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts +19 -0
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/cursorrules.d.ts +10 -0
- package/dist/cjs-types/cli/lib/aiFiles/cursorrules.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts +12 -0
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/index.d.ts +42 -0
- package/dist/cjs-types/cli/lib/aiFiles/index.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/index.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/integration.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/{ai → aiFiles}/paths.d.ts +4 -0
- package/dist/cjs-types/cli/lib/aiFiles/paths.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/prompt.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts +20 -0
- package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts.map +1 -0
- 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 +6 -0
- package/dist/cjs-types/cli/lib/aiFiles/status.d.ts.map +1 -0
- package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts +56 -0
- package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts.map +1 -0
- 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 +18 -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/cli/lib/versionApi.d.ts +7 -1
- package/dist/cjs-types/cli/lib/versionApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/workos/workos.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 +2446 -1933
- 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/browser/sync/authentication_manager.js +4 -1
- package/dist/esm/browser/sync/authentication_manager.js.map +2 -2
- package/dist/esm/browser/sync/web_socket_manager.js +1 -7
- package/dist/esm/browser/sync/web_socket_manager.js.map +2 -2
- package/dist/esm/cli/aiFiles.js +41 -23
- 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 +35 -33
- 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 +56 -0
- package/dist/esm/cli/lib/aiFiles/agentsmd.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/claudemd.js +56 -0
- package/dist/esm/cli/lib/aiFiles/claudemd.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/cursorrules.js +16 -0
- package/dist/esm/cli/lib/aiFiles/cursorrules.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/guidelinesmd.js +35 -0
- package/dist/esm/cli/lib/aiFiles/guidelinesmd.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/index.js +193 -0
- package/dist/esm/cli/lib/aiFiles/index.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/paths.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/skills.js +163 -0
- package/dist/esm/cli/lib/aiFiles/skills.js.map +7 -0
- 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 +178 -0
- package/dist/esm/cli/lib/aiFiles/status.js.map +7 -0
- package/dist/esm/cli/lib/aiFiles/utils.js +97 -0
- package/dist/esm/cli/lib/aiFiles/utils.js.map +7 -0
- 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 +10 -6
- package/dist/esm/cli/lib/command.js.map +2 -2
- package/dist/esm/cli/lib/config.js +41 -6
- 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 +14 -12
- 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/cli/lib/versionApi.js +7 -4
- package/dist/esm/cli/lib/versionApi.js.map +2 -2
- package/dist/esm/cli/lib/workos/workos.js +4 -6
- package/dist/esm/cli/lib/workos/workos.js.map +2 -2
- 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/browser/sync/authentication_manager.d.ts.map +1 -1
- package/dist/esm-types/browser/sync/web_socket_manager.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 +19 -0
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts +19 -0
- package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/cursorrules.d.ts +10 -0
- package/dist/esm-types/cli/lib/aiFiles/cursorrules.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts +12 -0
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/index.d.ts +42 -0
- package/dist/esm-types/cli/lib/aiFiles/index.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/index.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/integration.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/{ai → aiFiles}/paths.d.ts +4 -0
- package/dist/esm-types/cli/lib/aiFiles/paths.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/prompt.test.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/skills.d.ts +20 -0
- package/dist/esm-types/cli/lib/aiFiles/skills.d.ts.map +1 -0
- 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 +6 -0
- package/dist/esm-types/cli/lib/aiFiles/status.d.ts.map +1 -0
- package/dist/esm-types/cli/lib/aiFiles/utils.d.ts +56 -0
- package/dist/esm-types/cli/lib/aiFiles/utils.d.ts.map +1 -0
- 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 +18 -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/cli/lib/versionApi.d.ts +7 -1
- package/dist/esm-types/cli/lib/versionApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/workos/workos.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 +55 -15
- package/dist/react.bundle.js.map +3 -3
- package/package.json +11 -7
- package/schemas/convex.schema.json +22 -3
- 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/browser/sync/authentication_manager.ts +9 -4
- package/src/browser/sync/client_node.test.ts +125 -0
- package/src/browser/sync/web_socket_manager.ts +1 -7
- package/src/cli/aiFiles.ts +56 -33
- package/src/cli/codegen_templates/readme.ts +14 -1
- package/src/cli/configure.test.ts +138 -0
- package/src/cli/configure.ts +62 -55
- 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 +399 -37
- 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/{ai → aiFiles}/MANUAL_TESTING.md +6 -2
- package/src/cli/lib/aiFiles/agentsmd.test.ts +133 -0
- package/src/cli/lib/aiFiles/agentsmd.ts +81 -0
- package/src/cli/lib/aiFiles/claudemd.test.ts +92 -0
- package/src/cli/lib/aiFiles/claudemd.ts +81 -0
- package/src/cli/lib/aiFiles/cursorrules.ts +25 -0
- package/src/cli/lib/aiFiles/guidelinesmd.test.ts +50 -0
- package/src/cli/lib/aiFiles/guidelinesmd.ts +49 -0
- package/src/cli/lib/{ai → aiFiles}/index.test.ts +343 -516
- package/src/cli/lib/aiFiles/index.ts +297 -0
- package/src/cli/lib/{ai → aiFiles}/integration.test.ts +195 -158
- package/src/cli/lib/{ai → aiFiles}/paths.ts +5 -0
- package/src/cli/lib/{ai → aiFiles}/prompt.test.ts +79 -31
- package/src/cli/lib/aiFiles/skills.ts +243 -0
- 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 +246 -0
- package/src/cli/lib/aiFiles/utils.test.ts +50 -0
- package/src/cli/lib/aiFiles/utils.ts +191 -0
- package/src/cli/lib/api.ts +88 -7
- package/src/cli/lib/command.ts +18 -8
- package/src/cli/lib/config.test.ts +185 -8
- package/src/cli/lib/config.ts +73 -12
- 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 +97 -60
- package/src/cli/lib/updates.ts +17 -15
- 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/cli/lib/versionApi.test.ts +13 -10
- package/src/cli/lib/versionApi.ts +13 -5
- package/src/cli/lib/workos/workos.ts +4 -5
- 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/ai/config.js +0 -144
- package/dist/cjs/cli/lib/ai/config.js.map +0 -7
- package/dist/cjs/cli/lib/ai/index.js +0 -704
- package/dist/cjs/cli/lib/ai/index.js.map +0 -7
- package/dist/cjs/cli/lib/ai/paths.js.map +0 -7
- package/dist/cjs-types/cli/lib/ai/config.d.ts +0 -50
- package/dist/cjs-types/cli/lib/ai/config.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/ai/config.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/ai/config.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/ai/index.d.ts +0 -56
- package/dist/cjs-types/cli/lib/ai/index.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/ai/index.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/ai/integration.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/ai/paths.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/ai/prompt.test.d.ts.map +0 -1
- package/dist/esm/cli/lib/ai/config.js +0 -109
- package/dist/esm/cli/lib/ai/config.js.map +0 -7
- package/dist/esm/cli/lib/ai/index.js +0 -684
- package/dist/esm/cli/lib/ai/index.js.map +0 -7
- package/dist/esm/cli/lib/ai/paths.js.map +0 -7
- package/dist/esm-types/cli/lib/ai/config.d.ts +0 -50
- package/dist/esm-types/cli/lib/ai/config.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/ai/config.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/ai/config.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/ai/index.d.ts +0 -56
- package/dist/esm-types/cli/lib/ai/index.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/ai/index.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/ai/integration.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/ai/paths.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/ai/prompt.test.d.ts.map +0 -1
- package/src/cli/lib/ai/config.test.ts +0 -338
- package/src/cli/lib/ai/config.ts +0 -159
- package/src/cli/lib/ai/index.ts +0 -1006
- /package/dist/cjs/cli/lib/{ai → aiFiles}/paths.js +0 -0
- /package/dist/cjs-types/cli/lib/{ai → aiFiles}/index.test.d.ts +0 -0
- /package/dist/cjs-types/cli/lib/{ai → aiFiles}/integration.test.d.ts +0 -0
- /package/dist/cjs-types/cli/lib/{ai → aiFiles}/prompt.test.d.ts +0 -0
- /package/dist/esm/cli/lib/{ai → aiFiles}/paths.js +0 -0
- /package/dist/esm-types/cli/lib/{ai → aiFiles}/index.test.d.ts +0 -0
- /package/dist/esm-types/cli/lib/{ai → aiFiles}/integration.test.d.ts +0 -0
- /package/dist/esm-types/cli/lib/{ai → aiFiles}/prompt.test.d.ts +0 -0
|
@@ -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,14 +158,33 @@ 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() };
|
|
162
182
|
});
|
|
163
183
|
|
|
164
|
-
vi.mock("./lib/
|
|
165
|
-
const actual =
|
|
166
|
-
|
|
184
|
+
vi.mock("./lib/aiFiles/index.js", async (importOriginal) => {
|
|
185
|
+
const actual =
|
|
186
|
+
await importOriginal<typeof import("./lib/aiFiles/index.js")>();
|
|
187
|
+
return { ...actual, attemptSetupAiFiles: vi.fn() };
|
|
167
188
|
});
|
|
168
189
|
|
|
169
190
|
vi.mock("./configure.js", async (importOriginal) => {
|
|
@@ -226,10 +247,14 @@ function setupBigBrainRoutes(routes: Record<string, (data?: any) => any>) {
|
|
|
226
247
|
|
|
227
248
|
describe("deployment selection flows", () => {
|
|
228
249
|
let savedEnv: NodeJS.ProcessEnv;
|
|
250
|
+
let savedIsTTY: boolean | undefined;
|
|
229
251
|
|
|
230
252
|
beforeEach(() => {
|
|
231
253
|
savedEnv = { ...process.env };
|
|
254
|
+
savedIsTTY = process.stdin.isTTY;
|
|
232
255
|
process.env = {};
|
|
256
|
+
// Default to interactive TTY for existing tests
|
|
257
|
+
process.stdin.isTTY = true as any;
|
|
233
258
|
|
|
234
259
|
vi.resetAllMocks();
|
|
235
260
|
vi.mocked(readGlobalConfig).mockReturnValue(null);
|
|
@@ -260,10 +285,17 @@ describe("deployment selection flows", () => {
|
|
|
260
285
|
new Error("validateOrSelectProject should be mocked"),
|
|
261
286
|
);
|
|
262
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
|
+
});
|
|
263
294
|
});
|
|
264
295
|
|
|
265
296
|
afterEach(() => {
|
|
266
297
|
process.env = savedEnv;
|
|
298
|
+
process.stdin.isTTY = savedIsTTY as any;
|
|
267
299
|
});
|
|
268
300
|
|
|
269
301
|
// Suppress process.exit and stderr
|
|
@@ -474,7 +506,7 @@ describe("deployment selection flows", () => {
|
|
|
474
506
|
expect(bigBrainAPIMaybeThrows).not.toHaveBeenCalled();
|
|
475
507
|
});
|
|
476
508
|
|
|
477
|
-
it("resolves CONVEX_DEPLOYMENT to
|
|
509
|
+
it("resolves CONVEX_DEPLOYMENT to CONVEX_DEPLOYMENT by default", async () => {
|
|
478
510
|
process.env.CONVEX_DEPLOYMENT = "dev:joyful-capybara-123";
|
|
479
511
|
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
480
512
|
accessToken: "test-token",
|
|
@@ -487,10 +519,11 @@ describe("deployment selection flows", () => {
|
|
|
487
519
|
teamId: 1,
|
|
488
520
|
projectId: 1,
|
|
489
521
|
}),
|
|
490
|
-
"deployment/
|
|
522
|
+
"deployment/authorize_within_current_project": () => ({
|
|
491
523
|
adminKey: "dev-key",
|
|
492
|
-
url: "https://
|
|
493
|
-
deploymentName: "
|
|
524
|
+
url: "https://joyful-capybara-123.convex.cloud",
|
|
525
|
+
deploymentName: "joyful-capybara-123",
|
|
526
|
+
deploymentType: "dev",
|
|
494
527
|
}),
|
|
495
528
|
});
|
|
496
529
|
|
|
@@ -502,7 +535,7 @@ describe("deployment selection flows", () => {
|
|
|
502
535
|
expect(deploymentFetch).toHaveBeenCalledWith(
|
|
503
536
|
expect.anything(),
|
|
504
537
|
expect.objectContaining({
|
|
505
|
-
deploymentUrl: "https://
|
|
538
|
+
deploymentUrl: "https://joyful-capybara-123.convex.cloud",
|
|
506
539
|
adminKey: "dev-key",
|
|
507
540
|
}),
|
|
508
541
|
);
|
|
@@ -515,11 +548,16 @@ describe("deployment selection flows", () => {
|
|
|
515
548
|
}),
|
|
516
549
|
);
|
|
517
550
|
|
|
518
|
-
|
|
519
|
-
expect(bigBrainAPIMaybeThrows).toHaveBeenCalledWith(
|
|
551
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
520
552
|
expect.objectContaining({
|
|
521
|
-
path: "deployment/
|
|
522
|
-
|
|
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
|
+
}),
|
|
523
561
|
}),
|
|
524
562
|
);
|
|
525
563
|
});
|
|
@@ -890,12 +928,18 @@ describe("deployment selection flows", () => {
|
|
|
890
928
|
teamId: 1,
|
|
891
929
|
projectId: 1,
|
|
892
930
|
}),
|
|
893
|
-
"
|
|
931
|
+
"teams/my-team/projects/my-project/deployments": () => true,
|
|
932
|
+
"deployment/authorize_within_current_project": () => ({
|
|
894
933
|
adminKey: "dev-key",
|
|
895
934
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
896
935
|
deploymentName: "joyful-capybara-123",
|
|
936
|
+
deploymentType: "dev",
|
|
897
937
|
}),
|
|
898
938
|
});
|
|
939
|
+
mockPlatformGet.mockResolvedValue({
|
|
940
|
+
data: { name: "joyful-capybara-123" },
|
|
941
|
+
error: undefined,
|
|
942
|
+
});
|
|
899
943
|
|
|
900
944
|
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
901
945
|
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
@@ -904,10 +948,24 @@ describe("deployment selection flows", () => {
|
|
|
904
948
|
from: "user",
|
|
905
949
|
});
|
|
906
950
|
|
|
907
|
-
expect(
|
|
951
|
+
expect(mockPlatformGet).toHaveBeenCalledWith(
|
|
952
|
+
"/teams/{team_id_or_slug}/projects/{project_slug}/deployment",
|
|
908
953
|
expect.objectContaining({
|
|
909
|
-
|
|
910
|
-
|
|
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
|
+
}),
|
|
911
969
|
}),
|
|
912
970
|
);
|
|
913
971
|
});
|
|
@@ -1149,12 +1207,18 @@ describe("deployment selection flows", () => {
|
|
|
1149
1207
|
teamId: 1,
|
|
1150
1208
|
projectId: 1,
|
|
1151
1209
|
}),
|
|
1152
|
-
"
|
|
1210
|
+
"teams/my-team/projects/other-project/deployments": () => true,
|
|
1211
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1153
1212
|
adminKey: "other-project-dev-key",
|
|
1154
1213
|
url: "https://other-project-dev.convex.cloud",
|
|
1155
1214
|
deploymentName: "other-project-dev",
|
|
1215
|
+
deploymentType: "dev",
|
|
1156
1216
|
}),
|
|
1157
1217
|
});
|
|
1218
|
+
mockPlatformGet.mockResolvedValue({
|
|
1219
|
+
data: { name: "other-project-dev" },
|
|
1220
|
+
error: undefined,
|
|
1221
|
+
});
|
|
1158
1222
|
|
|
1159
1223
|
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
1160
1224
|
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
@@ -1164,13 +1228,23 @@ describe("deployment selection flows", () => {
|
|
|
1164
1228
|
{ from: "user" },
|
|
1165
1229
|
);
|
|
1166
1230
|
|
|
1167
|
-
expect(
|
|
1231
|
+
expect(mockPlatformGet).toHaveBeenCalledWith(
|
|
1232
|
+
"/teams/{team_id_or_slug}/projects/{project_slug}/deployment",
|
|
1168
1233
|
expect.objectContaining({
|
|
1169
|
-
|
|
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",
|
|
1170
1246
|
data: expect.objectContaining({
|
|
1171
|
-
|
|
1172
|
-
projectSlug: "other-project",
|
|
1173
|
-
deploymentType: "dev",
|
|
1247
|
+
selectedDeploymentName: "other-project-dev",
|
|
1174
1248
|
}),
|
|
1175
1249
|
}),
|
|
1176
1250
|
);
|
|
@@ -1265,12 +1339,17 @@ describe("deployment selection flows", () => {
|
|
|
1265
1339
|
it("resolves --deployment team:project:dev to dev deployment in fully qualified team/project", async () => {
|
|
1266
1340
|
setupBigBrainRoutes({
|
|
1267
1341
|
"teams/myteam/projects/myproject/deployments": () => true,
|
|
1268
|
-
"deployment/
|
|
1342
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1269
1343
|
adminKey: "fq-dev-key",
|
|
1270
1344
|
url: "https://fq-dev-deploy.convex.cloud",
|
|
1271
1345
|
deploymentName: "fq-dev-deploy",
|
|
1346
|
+
deploymentType: "dev",
|
|
1272
1347
|
}),
|
|
1273
1348
|
});
|
|
1349
|
+
mockPlatformGet.mockResolvedValue({
|
|
1350
|
+
data: { name: "fq-dev-deploy" },
|
|
1351
|
+
error: undefined,
|
|
1352
|
+
});
|
|
1274
1353
|
|
|
1275
1354
|
const mockFetch = vi.fn().mockResolvedValue({ ok: true });
|
|
1276
1355
|
vi.mocked(deploymentFetch).mockReturnValue(mockFetch as any);
|
|
@@ -1280,13 +1359,23 @@ describe("deployment selection flows", () => {
|
|
|
1280
1359
|
{ from: "user" },
|
|
1281
1360
|
);
|
|
1282
1361
|
|
|
1283
|
-
expect(
|
|
1362
|
+
expect(mockPlatformGet).toHaveBeenCalledWith(
|
|
1363
|
+
"/teams/{team_id_or_slug}/projects/{project_slug}/deployment",
|
|
1284
1364
|
expect.objectContaining({
|
|
1285
|
-
|
|
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",
|
|
1286
1377
|
data: expect.objectContaining({
|
|
1287
|
-
|
|
1288
|
-
projectSlug: "myproject",
|
|
1289
|
-
deploymentType: "dev",
|
|
1378
|
+
selectedDeploymentName: "fq-dev-deploy",
|
|
1290
1379
|
}),
|
|
1291
1380
|
}),
|
|
1292
1381
|
);
|
|
@@ -1331,6 +1420,109 @@ describe("deployment selection flows", () => {
|
|
|
1331
1420
|
),
|
|
1332
1421
|
).rejects.toThrow();
|
|
1333
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
|
+
});
|
|
1334
1526
|
});
|
|
1335
1527
|
});
|
|
1336
1528
|
|
|
@@ -1555,6 +1747,59 @@ describe("deployment selection flows", () => {
|
|
|
1555
1747
|
expect(bigBrainAPIMaybeThrows).not.toHaveBeenCalled();
|
|
1556
1748
|
});
|
|
1557
1749
|
|
|
1750
|
+
it("dev with CONVEX_DEPLOYMENT=local:... uses fresh credentials from handleLocalDeployment", async () => {
|
|
1751
|
+
process.env.CONVEX_DEPLOYMENT = "local:my-local-deployment";
|
|
1752
|
+
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1753
|
+
accessToken: "test-token",
|
|
1754
|
+
});
|
|
1755
|
+
|
|
1756
|
+
// loadLocalDeploymentCredentials returns stale saved config (e.g. from a
|
|
1757
|
+
// previous run on a different port).
|
|
1758
|
+
vi.mocked(loadLocalDeploymentCredentials).mockResolvedValue({
|
|
1759
|
+
deploymentName: "my-local-deployment",
|
|
1760
|
+
deploymentUrl: "http://127.0.0.1:3212",
|
|
1761
|
+
adminKey: "stale|admin|key",
|
|
1762
|
+
});
|
|
1763
|
+
|
|
1764
|
+
// handleLocalDeployment starts a new backend, potentially on different
|
|
1765
|
+
// ports, and returns the actual credentials.
|
|
1766
|
+
vi.mocked(handleLocalDeployment).mockResolvedValue({
|
|
1767
|
+
deploymentName: "my-local-deployment",
|
|
1768
|
+
deploymentUrl: "http://127.0.0.1:3210",
|
|
1769
|
+
adminKey: "fresh|admin|key",
|
|
1770
|
+
onActivity: async () => {},
|
|
1771
|
+
} as any);
|
|
1772
|
+
|
|
1773
|
+
setupBigBrainRoutes({
|
|
1774
|
+
"deployment/my-local-deployment/team_and_project": () => ({
|
|
1775
|
+
team: "my-team",
|
|
1776
|
+
project: "my-project",
|
|
1777
|
+
teamId: 1,
|
|
1778
|
+
projectId: 1,
|
|
1779
|
+
}),
|
|
1780
|
+
});
|
|
1781
|
+
|
|
1782
|
+
await dev.parseAsync([], { from: "user" });
|
|
1783
|
+
|
|
1784
|
+
expect(handleLocalDeployment).toHaveBeenCalledWith(
|
|
1785
|
+
expect.anything(),
|
|
1786
|
+
expect.objectContaining({
|
|
1787
|
+
teamSlug: "my-team",
|
|
1788
|
+
projectSlug: "my-project",
|
|
1789
|
+
}),
|
|
1790
|
+
);
|
|
1791
|
+
// Must use the fresh credentials from handleLocalDeployment, not the
|
|
1792
|
+
// stale ones from loadLocalDeploymentCredentials.
|
|
1793
|
+
expect(devAgainstDeployment).toHaveBeenCalledWith(
|
|
1794
|
+
expect.anything(),
|
|
1795
|
+
expect.objectContaining({
|
|
1796
|
+
url: "http://127.0.0.1:3210",
|
|
1797
|
+
adminKey: "fresh|admin|key",
|
|
1798
|
+
}),
|
|
1799
|
+
expect.anything(),
|
|
1800
|
+
);
|
|
1801
|
+
});
|
|
1802
|
+
|
|
1558
1803
|
it("dev --local crashes when local deployments are globally disabled", async () => {
|
|
1559
1804
|
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1560
1805
|
accessToken: "test-token",
|
|
@@ -1573,7 +1818,7 @@ describe("deployment selection flows", () => {
|
|
|
1573
1818
|
expect(devAgainstDeployment).not.toHaveBeenCalled();
|
|
1574
1819
|
});
|
|
1575
1820
|
|
|
1576
|
-
it("
|
|
1821
|
+
it("resolves CONVEX_DEPLOYMENT to the configured deployment", async () => {
|
|
1577
1822
|
process.env.CONVEX_DEPLOYMENT = "dev:joyful-capybara-123";
|
|
1578
1823
|
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1579
1824
|
accessToken: "test-token",
|
|
@@ -1586,7 +1831,7 @@ describe("deployment selection flows", () => {
|
|
|
1586
1831
|
teamId: 1,
|
|
1587
1832
|
projectId: 1,
|
|
1588
1833
|
}),
|
|
1589
|
-
"deployment/
|
|
1834
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1590
1835
|
adminKey: "dev-key",
|
|
1591
1836
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
1592
1837
|
deploymentName: "joyful-capybara-123",
|
|
@@ -1596,10 +1841,12 @@ describe("deployment selection flows", () => {
|
|
|
1596
1841
|
|
|
1597
1842
|
await dev.parseAsync([], { from: "user" });
|
|
1598
1843
|
|
|
1599
|
-
expect(
|
|
1844
|
+
expect(bigBrainAPI).toHaveBeenCalledWith(
|
|
1600
1845
|
expect.objectContaining({
|
|
1601
|
-
path: "deployment/
|
|
1602
|
-
data: expect.objectContaining({
|
|
1846
|
+
path: "deployment/authorize_within_current_project",
|
|
1847
|
+
data: expect.objectContaining({
|
|
1848
|
+
selectedDeploymentName: "joyful-capybara-123",
|
|
1849
|
+
}),
|
|
1603
1850
|
}),
|
|
1604
1851
|
);
|
|
1605
1852
|
expect(devAgainstDeployment).toHaveBeenCalledWith(
|
|
@@ -1660,7 +1907,7 @@ describe("deployment selection flows", () => {
|
|
|
1660
1907
|
expect(bigBrainAPIMaybeThrows).not.toHaveBeenCalled();
|
|
1661
1908
|
});
|
|
1662
1909
|
|
|
1663
|
-
it("
|
|
1910
|
+
it("resolves CONVEX_DEPLOYMENT with --cloud to the configured deployment", async () => {
|
|
1664
1911
|
process.env.CONVEX_DEPLOYMENT = "dev:joyful-capybara-123";
|
|
1665
1912
|
vi.mocked(readGlobalConfig).mockReturnValue({
|
|
1666
1913
|
accessToken: "test-token",
|
|
@@ -1673,7 +1920,7 @@ describe("deployment selection flows", () => {
|
|
|
1673
1920
|
teamId: 1,
|
|
1674
1921
|
projectId: 1,
|
|
1675
1922
|
}),
|
|
1676
|
-
"deployment/
|
|
1923
|
+
"deployment/authorize_within_current_project": () => ({
|
|
1677
1924
|
adminKey: "cloud-dev-key",
|
|
1678
1925
|
url: "https://joyful-capybara-123.convex.cloud",
|
|
1679
1926
|
deploymentName: "joyful-capybara-123",
|
|
@@ -1692,5 +1939,120 @@ describe("deployment selection flows", () => {
|
|
|
1692
1939
|
expect.anything(),
|
|
1693
1940
|
);
|
|
1694
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();
|
|
1695
2057
|
});
|
|
1696
2058
|
});
|