convex 1.44.0 → 1.45.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 +13 -0
- package/dist/browser.bundle.js +1 -1
- package/dist/browser.bundle.js.map +1 -1
- package/dist/cjs/cli/convexExport.js +1 -1
- package/dist/cjs/cli/convexExport.js.map +1 -1
- package/dist/cjs/cli/index.js +2 -32
- package/dist/cjs/cli/index.js.map +2 -2
- package/dist/cjs/cli/lib/api.js +11 -5
- package/dist/cjs/cli/lib/api.js.map +2 -2
- package/dist/cjs/cli/lib/convexExport.js +12 -1
- package/dist/cjs/cli/lib/convexExport.js.map +2 -2
- package/dist/cjs/cli/lib/dashboard.js.map +2 -2
- package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
- package/dist/cjs/cli/lib/indexes.js +1 -1
- package/dist/cjs/cli/lib/indexes.js.map +1 -1
- package/dist/cjs/cli/lib/localDeployment/upgrade.js +23 -188
- package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +3 -3
- package/dist/cjs/cli/lib/mcp/tools/index.js.map +1 -1
- package/dist/cjs/cli/mcp.js +76 -69
- package/dist/cjs/cli/mcp.js.map +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server/impl/actions_impl.js.map +2 -2
- package/dist/cjs/server/index.js.map +2 -2
- package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/convexExport.d.ts +1 -0
- package/dist/cjs-types/cli/lib/convexExport.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/dashboard.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +2 -0
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts +2 -0
- package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/mcp/tools/index.d.ts +1 -1
- package/dist/cjs-types/cli/lib/mcp/tools/index.d.ts.map +1 -1
- package/dist/cjs-types/cli/mcp.d.ts +3 -0
- package/dist/cjs-types/cli/mcp.d.ts.map +1 -1
- package/dist/cjs-types/index.d.ts +1 -1
- package/dist/cjs-types/server/impl/actions_impl.d.ts +14 -0
- package/dist/cjs-types/server/impl/actions_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/cli.bundle.cjs +31210 -25495
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/esm/cli/convexExport.js +1 -1
- package/dist/esm/cli/convexExport.js.map +1 -1
- package/dist/esm/cli/index.js +2 -32
- package/dist/esm/cli/index.js.map +2 -2
- package/dist/esm/cli/lib/api.js +11 -5
- package/dist/esm/cli/lib/api.js.map +2 -2
- package/dist/esm/cli/lib/convexExport.js +16 -3
- package/dist/esm/cli/lib/convexExport.js.map +2 -2
- package/dist/esm/cli/lib/dashboard.js.map +2 -2
- package/dist/esm/cli/lib/indexes.js +1 -1
- package/dist/esm/cli/lib/indexes.js.map +1 -1
- package/dist/esm/cli/lib/localDeployment/upgrade.js +22 -190
- package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
- package/dist/esm/cli/lib/mcp/tools/index.js.map +1 -1
- package/dist/esm/cli/mcp.js +75 -72
- package/dist/esm/cli/mcp.js.map +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server/impl/actions_impl.js.map +2 -2
- package/dist/esm/server/index.js.map +2 -2
- package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/convexExport.d.ts +1 -0
- package/dist/esm-types/cli/lib/convexExport.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/dashboard.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +2 -0
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts +2 -0
- package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/mcp/tools/index.d.ts +1 -1
- package/dist/esm-types/cli/lib/mcp/tools/index.d.ts.map +1 -1
- package/dist/esm-types/cli/mcp.d.ts +3 -0
- package/dist/esm-types/cli/mcp.d.ts.map +1 -1
- package/dist/esm-types/index.d.ts +1 -1
- package/dist/esm-types/server/impl/actions_impl.d.ts +14 -0
- package/dist/esm-types/server/impl/actions_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/react.bundle.js +1 -1
- package/dist/react.bundle.js.map +1 -1
- package/package.json +3 -3
- package/src/cli/convexExport.ts +1 -1
- package/src/cli/index.ts +2 -35
- package/src/cli/lib/api.ts +11 -5
- package/src/cli/lib/convexExport.ts +21 -0
- package/src/cli/lib/dashboard.ts +2 -0
- package/src/cli/lib/generatedFunctionLogsApi.ts +2 -0
- package/src/cli/lib/indexes.ts +1 -1
- package/src/cli/lib/localDeployment/upgrade.ts +34 -207
- package/src/cli/lib/mcp/tools/index.ts +1 -1
- package/src/cli/mcp.ts +91 -77
- package/src/index.ts +1 -1
- package/src/server/impl/actions_impl.ts +3 -1
- package/src/server/index.ts +0 -3
- package/dist/cjs-types/browser/http_client.test.d.ts +0 -2
- package/dist/cjs-types/browser/http_client.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/query_options.test.d.ts +0 -2
- package/dist/cjs-types/browser/query_options.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/simple_client.test.d.ts +0 -2
- package/dist/cjs-types/browser/simple_client.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/client.test.d.ts +0 -5
- package/dist/cjs-types/browser/sync/client.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/client_node.test.d.ts +0 -2
- package/dist/cjs-types/browser/sync/client_node.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/client_node_test_helpers.d.ts +0 -44
- package/dist/cjs-types/browser/sync/client_node_test_helpers.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/local_state.test.d.ts +0 -2
- package/dist/cjs-types/browser/sync/local_state.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/optimistic_query_set.test.d.ts +0 -2
- package/dist/cjs-types/browser/sync/optimistic_query_set.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/paginated_query_client.test.d.ts +0 -2
- package/dist/cjs-types/browser/sync/paginated_query_client.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/protocol.test.d.ts +0 -5
- package/dist/cjs-types/browser/sync/protocol.test.d.ts.map +0 -1
- package/dist/cjs-types/browser/sync/request_manager.test.d.ts +0 -2
- package/dist/cjs-types/browser/sync/request_manager.test.d.ts.map +0 -1
- package/dist/cjs-types/bundler/fs.test.d.ts +0 -2
- package/dist/cjs-types/bundler/fs.test.d.ts.map +0 -1
- package/dist/cjs-types/bundler/index.test.d.ts +0 -2
- package/dist/cjs-types/bundler/index.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/codegen_templates/api.test.d.ts +0 -2
- package/dist/cjs-types/cli/codegen_templates/api.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/codegen_templates/common.test.d.ts +0 -2
- package/dist/cjs-types/cli/codegen_templates/common.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/codegen_templates/templates.test.d.ts +0 -2
- package/dist/cjs-types/cli/codegen_templates/templates.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/codegen_templates/validator_helpers.test.d.ts +0 -2
- package/dist/cjs-types/cli/codegen_templates/validator_helpers.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/configure.test.d.ts +0 -2
- package/dist/cjs-types/cli/configure.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/deploymentCreate.test.d.ts +0 -2
- package/dist/cjs-types/cli/deploymentCreate.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/deploymentSelect.test.d.ts +0 -2
- package/dist/cjs-types/cli/deploymentSelect.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/deploymentSelection.test.d.ts +0 -2
- package/dist/cjs-types/cli/deploymentSelection.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/deploymentToken.test.d.ts +0 -2
- package/dist/cjs-types/cli/deploymentToken.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/dev.test.d.ts +0 -2
- package/dist/cjs-types/cli/dev.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/envDefault.test.d.ts +0 -2
- package/dist/cjs-types/cli/envDefault.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/index.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/index.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/integration.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/integration.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/prompt.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/prompt.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/codegen.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/codegen.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/components.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/components.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/config.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/config.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/deployment.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/deployment.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/deploymentSelector.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/deploymentSelector.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/env.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/env.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/expiration.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/expiration.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/formatEnvValueForDotfile.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/formatEnvValueForDotfile.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/formatTargetedDeployment.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/formatTargetedDeployment.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/fsUtils.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/fsUtils.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/generateDocs.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/generateDocs.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/indexes.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/indexes.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/localDeployment/run.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/localDeployment/run.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/localDeployment/secrets.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/localDeployment/secrets.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/run.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/run.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/runTestFunction.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/runTestFunction.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/typecheck.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/typecheck.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/updates.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/updates.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/utils/hash.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/utils/hash.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/utils/utils.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/utils/utils.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/versionApi.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/versionApi.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/workos/workos.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/workos/workos.test.d.ts.map +0 -1
- package/dist/cjs-types/cli/login.test.d.ts +0 -2
- package/dist/cjs-types/cli/login.test.d.ts.map +0 -1
- package/dist/cjs-types/common/index.test.d.ts +0 -2
- package/dist/cjs-types/common/index.test.d.ts.map +0 -1
- package/dist/cjs-types/nextjs/nextjs.test.d.ts +0 -2
- package/dist/cjs-types/nextjs/nextjs.test.d.ts.map +0 -1
- package/dist/cjs-types/react/ConvexAuthState.test.d.ts +0 -2
- package/dist/cjs-types/react/ConvexAuthState.test.d.ts.map +0 -1
- package/dist/cjs-types/react/auth_helpers.test.d.ts +0 -2
- package/dist/cjs-types/react/auth_helpers.test.d.ts.map +0 -1
- package/dist/cjs-types/react/auth_websocket.test.d.ts +0 -2
- package/dist/cjs-types/react/auth_websocket.test.d.ts.map +0 -1
- package/dist/cjs-types/react/client.test.d.ts +0 -2
- package/dist/cjs-types/react/client.test.d.ts.map +0 -1
- package/dist/cjs-types/react/client_provided_base_client.test.d.ts +0 -2
- package/dist/cjs-types/react/client_provided_base_client.test.d.ts.map +0 -1
- package/dist/cjs-types/react/queries_observer.test.d.ts +0 -2
- package/dist/cjs-types/react/queries_observer.test.d.ts.map +0 -1
- package/dist/cjs-types/react/react_node.test.d.ts +0 -2
- package/dist/cjs-types/react/react_node.test.d.ts.map +0 -1
- package/dist/cjs-types/react/use_paginated_query.test.d.ts +0 -2
- package/dist/cjs-types/react/use_paginated_query.test.d.ts.map +0 -1
- package/dist/cjs-types/react/use_queries.test.d.ts +0 -5
- package/dist/cjs-types/react/use_queries.test.d.ts.map +0 -1
- package/dist/cjs-types/react/use_query.test.d.ts +0 -5
- package/dist/cjs-types/react/use_query.test.d.ts.map +0 -1
- package/dist/cjs-types/react/use_query_object_options.test.d.ts +0 -5
- package/dist/cjs-types/react/use_query_object_options.test.d.ts.map +0 -1
- package/dist/cjs-types/react/use_query_result.test.d.ts +0 -5
- package/dist/cjs-types/react/use_query_result.test.d.ts.map +0 -1
- package/dist/cjs-types/react-auth0/ConvexProviderWithAuth0.test.d.ts +0 -2
- package/dist/cjs-types/react-auth0/ConvexProviderWithAuth0.test.d.ts.map +0 -1
- package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.test.d.ts +0 -2
- package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.test.d.ts.map +0 -1
- package/dist/cjs-types/server/api.intersect.test.d.ts +0 -2
- package/dist/cjs-types/server/api.intersect.test.d.ts.map +0 -1
- package/dist/cjs-types/server/api.test.d.ts +0 -2
- package/dist/cjs-types/server/api.test.d.ts.map +0 -1
- package/dist/cjs-types/server/audit_logging.test.d.ts +0 -2
- package/dist/cjs-types/server/audit_logging.test.d.ts.map +0 -1
- package/dist/cjs-types/server/components/index.test.d.ts +0 -2
- package/dist/cjs-types/server/components/index.test.d.ts.map +0 -1
- package/dist/cjs-types/server/cron.test.d.ts +0 -2
- package/dist/cjs-types/server/cron.test.d.ts.map +0 -1
- package/dist/cjs-types/server/data_model.test.d.ts +0 -2
- package/dist/cjs-types/server/data_model.test.d.ts.map +0 -1
- package/dist/cjs-types/server/database.test.d.ts +0 -2
- package/dist/cjs-types/server/database.test.d.ts.map +0 -1
- package/dist/cjs-types/server/database_api.test.d.ts +0 -2
- package/dist/cjs-types/server/database_api.test.d.ts.map +0 -1
- package/dist/cjs-types/server/filter_builder.test.d.ts +0 -2
- package/dist/cjs-types/server/filter_builder.test.d.ts.map +0 -1
- package/dist/cjs-types/server/impl/actions_impl.test.d.ts +0 -2
- package/dist/cjs-types/server/impl/actions_impl.test.d.ts.map +0 -1
- package/dist/cjs-types/server/impl/filter_builder_impl.test.d.ts +0 -2
- package/dist/cjs-types/server/impl/filter_builder_impl.test.d.ts.map +0 -1
- package/dist/cjs-types/server/impl/query_impl.test.d.ts +0 -2
- package/dist/cjs-types/server/impl/query_impl.test.d.ts.map +0 -1
- package/dist/cjs-types/server/pagination.test.d.ts +0 -2
- package/dist/cjs-types/server/pagination.test.d.ts.map +0 -1
- package/dist/cjs-types/server/query.test.d.ts +0 -2
- package/dist/cjs-types/server/query.test.d.ts.map +0 -1
- package/dist/cjs-types/server/registration.test.d.ts +0 -2
- package/dist/cjs-types/server/registration.test.d.ts.map +0 -1
- package/dist/cjs-types/server/router.test.d.ts +0 -2
- package/dist/cjs-types/server/router.test.d.ts.map +0 -1
- package/dist/cjs-types/server/scheduler.test.d.ts +0 -2
- package/dist/cjs-types/server/scheduler.test.d.ts.map +0 -1
- package/dist/cjs-types/server/schema.test.d.ts +0 -2
- package/dist/cjs-types/server/schema.test.d.ts.map +0 -1
- package/dist/cjs-types/test/fake_watch.d.ts +0 -16
- package/dist/cjs-types/test/fake_watch.d.ts.map +0 -1
- package/dist/cjs-types/test/type_testing.d.ts +0 -9
- package/dist/cjs-types/test/type_testing.d.ts.map +0 -1
- package/dist/cjs-types/type_utils.test.d.ts +0 -2
- package/dist/cjs-types/type_utils.test.d.ts.map +0 -1
- package/dist/cjs-types/values/size.test.d.ts +0 -2
- package/dist/cjs-types/values/size.test.d.ts.map +0 -1
- package/dist/cjs-types/values/validator.test.d.ts +0 -2
- package/dist/cjs-types/values/validator.test.d.ts.map +0 -1
- package/dist/cjs-types/values/value.test.d.ts +0 -2
- package/dist/cjs-types/values/value.test.d.ts.map +0 -1
- package/dist/esm-types/browser/http_client.test.d.ts +0 -2
- package/dist/esm-types/browser/http_client.test.d.ts.map +0 -1
- package/dist/esm-types/browser/query_options.test.d.ts +0 -2
- package/dist/esm-types/browser/query_options.test.d.ts.map +0 -1
- package/dist/esm-types/browser/simple_client.test.d.ts +0 -2
- package/dist/esm-types/browser/simple_client.test.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/client.test.d.ts +0 -5
- package/dist/esm-types/browser/sync/client.test.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/client_node.test.d.ts +0 -2
- package/dist/esm-types/browser/sync/client_node.test.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/client_node_test_helpers.d.ts +0 -44
- package/dist/esm-types/browser/sync/client_node_test_helpers.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/local_state.test.d.ts +0 -2
- package/dist/esm-types/browser/sync/local_state.test.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/optimistic_query_set.test.d.ts +0 -2
- package/dist/esm-types/browser/sync/optimistic_query_set.test.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/paginated_query_client.test.d.ts +0 -2
- package/dist/esm-types/browser/sync/paginated_query_client.test.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/protocol.test.d.ts +0 -5
- package/dist/esm-types/browser/sync/protocol.test.d.ts.map +0 -1
- package/dist/esm-types/browser/sync/request_manager.test.d.ts +0 -2
- package/dist/esm-types/browser/sync/request_manager.test.d.ts.map +0 -1
- package/dist/esm-types/bundler/fs.test.d.ts +0 -2
- package/dist/esm-types/bundler/fs.test.d.ts.map +0 -1
- package/dist/esm-types/bundler/index.test.d.ts +0 -2
- package/dist/esm-types/bundler/index.test.d.ts.map +0 -1
- package/dist/esm-types/cli/codegen_templates/api.test.d.ts +0 -2
- package/dist/esm-types/cli/codegen_templates/api.test.d.ts.map +0 -1
- package/dist/esm-types/cli/codegen_templates/common.test.d.ts +0 -2
- package/dist/esm-types/cli/codegen_templates/common.test.d.ts.map +0 -1
- package/dist/esm-types/cli/codegen_templates/templates.test.d.ts +0 -2
- package/dist/esm-types/cli/codegen_templates/templates.test.d.ts.map +0 -1
- package/dist/esm-types/cli/codegen_templates/validator_helpers.test.d.ts +0 -2
- package/dist/esm-types/cli/codegen_templates/validator_helpers.test.d.ts.map +0 -1
- package/dist/esm-types/cli/configure.test.d.ts +0 -2
- package/dist/esm-types/cli/configure.test.d.ts.map +0 -1
- package/dist/esm-types/cli/deploymentCreate.test.d.ts +0 -2
- package/dist/esm-types/cli/deploymentCreate.test.d.ts.map +0 -1
- package/dist/esm-types/cli/deploymentSelect.test.d.ts +0 -2
- package/dist/esm-types/cli/deploymentSelect.test.d.ts.map +0 -1
- package/dist/esm-types/cli/deploymentSelection.test.d.ts +0 -2
- package/dist/esm-types/cli/deploymentSelection.test.d.ts.map +0 -1
- package/dist/esm-types/cli/deploymentToken.test.d.ts +0 -2
- package/dist/esm-types/cli/deploymentToken.test.d.ts.map +0 -1
- package/dist/esm-types/cli/dev.test.d.ts +0 -2
- package/dist/esm-types/cli/dev.test.d.ts.map +0 -1
- package/dist/esm-types/cli/envDefault.test.d.ts +0 -2
- package/dist/esm-types/cli/envDefault.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/index.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/index.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/integration.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/integration.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/prompt.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/prompt.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/codegen.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/codegen.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/components.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/components.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/config.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/config.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/deployment.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/deployment.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/deploymentSelector.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/deploymentSelector.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/env.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/env.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/expiration.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/expiration.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/formatEnvValueForDotfile.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/formatEnvValueForDotfile.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/formatTargetedDeployment.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/formatTargetedDeployment.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/fsUtils.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/fsUtils.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/generateDocs.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/generateDocs.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/indexes.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/indexes.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/localDeployment/run.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/localDeployment/run.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/localDeployment/secrets.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/localDeployment/secrets.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/run.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/run.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/runTestFunction.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/runTestFunction.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/typecheck.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/typecheck.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/updates.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/updates.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/utils/hash.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/utils/hash.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/utils/utils.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/utils/utils.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/versionApi.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/versionApi.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/workos/workos.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/workos/workos.test.d.ts.map +0 -1
- package/dist/esm-types/cli/login.test.d.ts +0 -2
- package/dist/esm-types/cli/login.test.d.ts.map +0 -1
- package/dist/esm-types/common/index.test.d.ts +0 -2
- package/dist/esm-types/common/index.test.d.ts.map +0 -1
- package/dist/esm-types/nextjs/nextjs.test.d.ts +0 -2
- package/dist/esm-types/nextjs/nextjs.test.d.ts.map +0 -1
- package/dist/esm-types/react/ConvexAuthState.test.d.ts +0 -2
- package/dist/esm-types/react/ConvexAuthState.test.d.ts.map +0 -1
- package/dist/esm-types/react/auth_helpers.test.d.ts +0 -2
- package/dist/esm-types/react/auth_helpers.test.d.ts.map +0 -1
- package/dist/esm-types/react/auth_websocket.test.d.ts +0 -2
- package/dist/esm-types/react/auth_websocket.test.d.ts.map +0 -1
- package/dist/esm-types/react/client.test.d.ts +0 -2
- package/dist/esm-types/react/client.test.d.ts.map +0 -1
- package/dist/esm-types/react/client_provided_base_client.test.d.ts +0 -2
- package/dist/esm-types/react/client_provided_base_client.test.d.ts.map +0 -1
- package/dist/esm-types/react/queries_observer.test.d.ts +0 -2
- package/dist/esm-types/react/queries_observer.test.d.ts.map +0 -1
- package/dist/esm-types/react/react_node.test.d.ts +0 -2
- package/dist/esm-types/react/react_node.test.d.ts.map +0 -1
- package/dist/esm-types/react/use_paginated_query.test.d.ts +0 -2
- package/dist/esm-types/react/use_paginated_query.test.d.ts.map +0 -1
- package/dist/esm-types/react/use_queries.test.d.ts +0 -5
- package/dist/esm-types/react/use_queries.test.d.ts.map +0 -1
- package/dist/esm-types/react/use_query.test.d.ts +0 -5
- package/dist/esm-types/react/use_query.test.d.ts.map +0 -1
- package/dist/esm-types/react/use_query_object_options.test.d.ts +0 -5
- package/dist/esm-types/react/use_query_object_options.test.d.ts.map +0 -1
- package/dist/esm-types/react/use_query_result.test.d.ts +0 -5
- package/dist/esm-types/react/use_query_result.test.d.ts.map +0 -1
- package/dist/esm-types/react-auth0/ConvexProviderWithAuth0.test.d.ts +0 -2
- package/dist/esm-types/react-auth0/ConvexProviderWithAuth0.test.d.ts.map +0 -1
- package/dist/esm-types/react-clerk/ConvexProviderWithClerk.test.d.ts +0 -2
- package/dist/esm-types/react-clerk/ConvexProviderWithClerk.test.d.ts.map +0 -1
- package/dist/esm-types/server/api.intersect.test.d.ts +0 -2
- package/dist/esm-types/server/api.intersect.test.d.ts.map +0 -1
- package/dist/esm-types/server/api.test.d.ts +0 -2
- package/dist/esm-types/server/api.test.d.ts.map +0 -1
- package/dist/esm-types/server/audit_logging.test.d.ts +0 -2
- package/dist/esm-types/server/audit_logging.test.d.ts.map +0 -1
- package/dist/esm-types/server/components/index.test.d.ts +0 -2
- package/dist/esm-types/server/components/index.test.d.ts.map +0 -1
- package/dist/esm-types/server/cron.test.d.ts +0 -2
- package/dist/esm-types/server/cron.test.d.ts.map +0 -1
- package/dist/esm-types/server/data_model.test.d.ts +0 -2
- package/dist/esm-types/server/data_model.test.d.ts.map +0 -1
- package/dist/esm-types/server/database.test.d.ts +0 -2
- package/dist/esm-types/server/database.test.d.ts.map +0 -1
- package/dist/esm-types/server/database_api.test.d.ts +0 -2
- package/dist/esm-types/server/database_api.test.d.ts.map +0 -1
- package/dist/esm-types/server/filter_builder.test.d.ts +0 -2
- package/dist/esm-types/server/filter_builder.test.d.ts.map +0 -1
- package/dist/esm-types/server/impl/actions_impl.test.d.ts +0 -2
- package/dist/esm-types/server/impl/actions_impl.test.d.ts.map +0 -1
- package/dist/esm-types/server/impl/filter_builder_impl.test.d.ts +0 -2
- package/dist/esm-types/server/impl/filter_builder_impl.test.d.ts.map +0 -1
- package/dist/esm-types/server/impl/query_impl.test.d.ts +0 -2
- package/dist/esm-types/server/impl/query_impl.test.d.ts.map +0 -1
- package/dist/esm-types/server/pagination.test.d.ts +0 -2
- package/dist/esm-types/server/pagination.test.d.ts.map +0 -1
- package/dist/esm-types/server/query.test.d.ts +0 -2
- package/dist/esm-types/server/query.test.d.ts.map +0 -1
- package/dist/esm-types/server/registration.test.d.ts +0 -2
- package/dist/esm-types/server/registration.test.d.ts.map +0 -1
- package/dist/esm-types/server/router.test.d.ts +0 -2
- package/dist/esm-types/server/router.test.d.ts.map +0 -1
- package/dist/esm-types/server/scheduler.test.d.ts +0 -2
- package/dist/esm-types/server/scheduler.test.d.ts.map +0 -1
- package/dist/esm-types/server/schema.test.d.ts +0 -2
- package/dist/esm-types/server/schema.test.d.ts.map +0 -1
- package/dist/esm-types/test/fake_watch.d.ts +0 -16
- package/dist/esm-types/test/fake_watch.d.ts.map +0 -1
- package/dist/esm-types/test/type_testing.d.ts +0 -9
- package/dist/esm-types/test/type_testing.d.ts.map +0 -1
- package/dist/esm-types/type_utils.test.d.ts +0 -2
- package/dist/esm-types/type_utils.test.d.ts.map +0 -1
- package/dist/esm-types/values/size.test.d.ts +0 -2
- package/dist/esm-types/values/size.test.d.ts.map +0 -1
- package/dist/esm-types/values/validator.test.d.ts +0 -2
- package/dist/esm-types/values/validator.test.d.ts.map +0 -1
- package/dist/esm-types/values/value.test.d.ts +0 -2
- package/dist/esm-types/values/value.test.d.ts.map +0 -1
- package/src/browser/http_client.test.ts +0 -202
- package/src/browser/query_options.test.ts +0 -43
- package/src/browser/simple_client.test.ts +0 -104
- package/src/browser/sync/client.test.ts +0 -44
- package/src/browser/sync/client_node.test.ts +0 -1207
- package/src/browser/sync/client_node_test_helpers.ts +0 -200
- package/src/browser/sync/local_state.test.ts +0 -128
- package/src/browser/sync/optimistic_query_set.test.ts +0 -253
- package/src/browser/sync/paginated_query_client.test.ts +0 -597
- package/src/browser/sync/protocol.test.ts +0 -14
- package/src/browser/sync/request_manager.test.ts +0 -273
- package/src/bundler/fs.test.ts +0 -86
- package/src/bundler/index.test.ts +0 -210
- package/src/bundler/test_fixtures/js/project01/bar.js +0 -4
- package/src/bundler/test_fixtures/js/project01/file with spaces.js +0 -1
- package/src/bundler/test_fixtures/js/project01/foo.js +0 -9
- package/src/bundler/test_fixtures/js/project_with_https/https.js +0 -9
- package/src/bundler/test_fixtures/js/project_with_https_not_at_top_level/default.js +0 -3
- package/src/bundler/test_fixtures/js/project_with_https_not_at_top_level/more_code/https.js +0 -5
- package/src/bundler/test_fixtures/js/project_with_https_without_router/https.js +0 -1
- package/src/bundler/test_fixtures/js/project_with_node_shims/uses_node_shims.js +0 -4
- package/src/cli/codegen_templates/api.test.ts +0 -18
- package/src/cli/codegen_templates/common.test.ts +0 -52
- package/src/cli/codegen_templates/templates.test.ts +0 -16
- package/src/cli/codegen_templates/validator_helpers.test.ts +0 -31
- package/src/cli/configure.test.ts +0 -138
- package/src/cli/deploymentCreate.test.ts +0 -1376
- package/src/cli/deploymentSelect.test.ts +0 -1291
- package/src/cli/deploymentSelection.test.ts +0 -2546
- package/src/cli/deploymentToken.test.ts +0 -397
- package/src/cli/dev.test.ts +0 -157
- package/src/cli/envDefault.test.ts +0 -495
- package/src/cli/lib/__snapshots__/formatTargetedDeployment.test.ts.snap +0 -94
- package/src/cli/lib/aiFiles/agentsmd.test.ts +0 -133
- package/src/cli/lib/aiFiles/claudemd.test.ts +0 -92
- package/src/cli/lib/aiFiles/guidelinesmd.test.ts +0 -50
- package/src/cli/lib/aiFiles/index.test.ts +0 -986
- package/src/cli/lib/aiFiles/integration.test.ts +0 -692
- package/src/cli/lib/aiFiles/prompt.test.ts +0 -202
- package/src/cli/lib/aiFiles/state.test.ts +0 -305
- package/src/cli/lib/aiFiles/utils.test.ts +0 -50
- package/src/cli/lib/codegen.test.ts +0 -49
- package/src/cli/lib/components.test.ts +0 -227
- package/src/cli/lib/config.test.ts +0 -1026
- package/src/cli/lib/deployment.test.ts +0 -85
- package/src/cli/lib/deploymentSelector.test.ts +0 -107
- package/src/cli/lib/env.test.ts +0 -60
- package/src/cli/lib/expiration.test.ts +0 -159
- package/src/cli/lib/extractDeploymentNameForWorkOS.test.ts +0 -30
- package/src/cli/lib/formatEnvValueForDotfile.test.ts +0 -294
- package/src/cli/lib/formatTargetedDeployment.test.ts +0 -281
- package/src/cli/lib/fsUtils.test.ts +0 -67
- package/src/cli/lib/generateDocs.test.ts +0 -326
- package/src/cli/lib/indexes.test.ts +0 -77
- package/src/cli/lib/localDeployment/run.test.ts +0 -104
- package/src/cli/lib/localDeployment/secrets.test.ts +0 -53
- package/src/cli/lib/run.test.ts +0 -54
- package/src/cli/lib/runTestFunction.test.ts +0 -84
- package/src/cli/lib/typecheck.test.ts +0 -71
- package/src/cli/lib/updates.test.ts +0 -157
- package/src/cli/lib/utils/hash.test.ts +0 -25
- package/src/cli/lib/utils/utils.test.ts +0 -340
- package/src/cli/lib/versionApi.test.ts +0 -471
- package/src/cli/lib/workos/environmentApi.test.ts +0 -107
- package/src/cli/lib/workos/workos.test.ts +0 -242
- package/src/cli/login.test.ts +0 -261
- package/src/common/README.md +0 -2
- package/src/common/index.test.ts +0 -35
- package/src/nextjs/nextjs.test.tsx +0 -94
- package/src/react/ConvexAuthState.test.tsx +0 -702
- package/src/react/auth_helpers.test.tsx +0 -45
- package/src/react/auth_websocket.test.tsx +0 -1177
- package/src/react/client.test.tsx +0 -261
- package/src/react/client_provided_base_client.test.tsx +0 -174
- package/src/react/queries_observer.test.ts +0 -176
- package/src/react/react_node.test.ts +0 -78
- package/src/react/use_paginated_query.test.tsx +0 -1420
- package/src/react/use_queries.test.ts +0 -140
- package/src/react/use_query.test.ts +0 -71
- package/src/react/use_query_object_options.test.ts +0 -51
- package/src/react/use_query_result.test.ts +0 -75
- package/src/react-auth0/ConvexProviderWithAuth0.test.tsx +0 -17
- package/src/react-clerk/ConvexProviderWithClerk.test.tsx +0 -18
- package/src/server/README.md +0 -15
- package/src/server/api.intersect.test.ts +0 -109
- package/src/server/api.test.ts +0 -447
- package/src/server/audit_logging.test.ts +0 -131
- package/src/server/components/index.test.ts +0 -48
- package/src/server/cron.test.ts +0 -58
- package/src/server/data_model.test.ts +0 -221
- package/src/server/database.test.ts +0 -184
- package/src/server/database_api.test.ts +0 -439
- package/src/server/filter_builder.test.ts +0 -102
- package/src/server/impl/actions_impl.test.ts +0 -59
- package/src/server/impl/filter_builder_impl.test.ts +0 -13
- package/src/server/impl/query_impl.test.ts +0 -46
- package/src/server/pagination.test.ts +0 -49
- package/src/server/query.test.ts +0 -112
- package/src/server/registration.test.ts +0 -589
- package/src/server/router.test.ts +0 -148
- package/src/server/scheduler.test.ts +0 -31
- package/src/server/schema.test.ts +0 -1081
- package/src/test/fake_watch.ts +0 -54
- package/src/test/type_testing.ts +0 -21
- package/src/type_utils.test.ts +0 -62
- package/src/values/size.test.ts +0 -95
- package/src/values/validator.test.ts +0 -619
- package/src/values/value.test.ts +0 -232
- package/src/vendor/README.md +0 -18
- package/src/vendor/jwt-decode/README.md +0 -1
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "vitest";
|
|
2
|
-
import { inlineQueryToQuerySource } from "./runTestFunction.js";
|
|
3
|
-
|
|
4
|
-
test("wraps inline query expressions in a readonly query module", () => {
|
|
5
|
-
expect(inlineQueryToQuerySource('ctx.db.query("messages").first()'))
|
|
6
|
-
.toBe(`import { query, internalQuery } from "convex:/_system/repl/wrappers.js";
|
|
7
|
-
|
|
8
|
-
export default query({
|
|
9
|
-
handler: async (ctx) => {
|
|
10
|
-
return (ctx.db.query("messages").first());
|
|
11
|
-
},
|
|
12
|
-
});`);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
test("preserves explicit return bodies", () => {
|
|
16
|
-
expect(
|
|
17
|
-
inlineQueryToQuerySource('return await ctx.db.query("messages").first();'),
|
|
18
|
-
)
|
|
19
|
-
.toBe(`import { query, internalQuery } from "convex:/_system/repl/wrappers.js";
|
|
20
|
-
|
|
21
|
-
export default query({
|
|
22
|
-
handler: async (ctx) => {
|
|
23
|
-
return await ctx.db.query("messages").first();
|
|
24
|
-
},
|
|
25
|
-
});`);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
test("wraps awaited expressions without changing them", () => {
|
|
29
|
-
expect(inlineQueryToQuerySource('await ctx.db.query("messages").first()'))
|
|
30
|
-
.toBe(`import { query, internalQuery } from "convex:/_system/repl/wrappers.js";
|
|
31
|
-
|
|
32
|
-
export default query({
|
|
33
|
-
handler: async (ctx) => {
|
|
34
|
-
return (await ctx.db.query("messages").first());
|
|
35
|
-
},
|
|
36
|
-
});`);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
test("preserves multi line statement bodies", () => {
|
|
40
|
-
expect(
|
|
41
|
-
inlineQueryToQuerySource(`const firstMessage = await ctx.db.query("messages").first();
|
|
42
|
-
console.log(firstMessage?._id);
|
|
43
|
-
return firstMessage;`),
|
|
44
|
-
)
|
|
45
|
-
.toBe(`import { query, internalQuery } from "convex:/_system/repl/wrappers.js";
|
|
46
|
-
|
|
47
|
-
export default query({
|
|
48
|
-
handler: async (ctx) => {
|
|
49
|
-
const firstMessage = await ctx.db.query("messages").first();
|
|
50
|
-
console.log(firstMessage?._id);
|
|
51
|
-
return firstMessage;
|
|
52
|
-
},
|
|
53
|
-
});`);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
test("preserves full query module source", () => {
|
|
57
|
-
const source = `import { query } from "convex:/_system/repl/wrappers.js";
|
|
58
|
-
|
|
59
|
-
export default query({
|
|
60
|
-
handler: async (ctx) => {
|
|
61
|
-
return await ctx.db.query("messages").first();
|
|
62
|
-
},
|
|
63
|
-
});`;
|
|
64
|
-
|
|
65
|
-
expect(inlineQueryToQuerySource(source)).toBe(source);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
test("injects the wrappers import for full query modules", () => {
|
|
69
|
-
const source = `export default query({
|
|
70
|
-
handler: async (ctx) => {
|
|
71
|
-
return await ctx.db.query("messages").first();
|
|
72
|
-
},
|
|
73
|
-
});`;
|
|
74
|
-
|
|
75
|
-
expect(inlineQueryToQuerySource(source)).toBe(
|
|
76
|
-
`import { query, internalQuery } from "convex:/_system/repl/wrappers.js";
|
|
77
|
-
|
|
78
|
-
export default query({
|
|
79
|
-
handler: async (ctx) => {
|
|
80
|
-
return await ctx.db.query("messages").first();
|
|
81
|
-
},
|
|
82
|
-
});`,
|
|
83
|
-
);
|
|
84
|
-
});
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { findTypeScriptCompilerPath } from "./typecheck.js";
|
|
4
|
-
import type { TypescriptCompiler } from "./typecheck.js";
|
|
5
|
-
|
|
6
|
-
const compilerPaths = {
|
|
7
|
-
tsc: path.join("node_modules", "typescript", "bin", "tsc"),
|
|
8
|
-
native: path.join("node_modules", "@typescript", "native", "bin", "tsc"),
|
|
9
|
-
tsgo: path.join(
|
|
10
|
-
"node_modules",
|
|
11
|
-
"@typescript",
|
|
12
|
-
"native-preview",
|
|
13
|
-
"bin",
|
|
14
|
-
"tsgo",
|
|
15
|
-
),
|
|
16
|
-
legacyTsgo: path.join(
|
|
17
|
-
"node_modules",
|
|
18
|
-
"@typescript",
|
|
19
|
-
"native-preview",
|
|
20
|
-
"bin",
|
|
21
|
-
"tsgo.js",
|
|
22
|
-
),
|
|
23
|
-
} as const;
|
|
24
|
-
|
|
25
|
-
describe("findTypeScriptCompilerPath", () => {
|
|
26
|
-
test.each<{
|
|
27
|
-
compiler: TypescriptCompiler;
|
|
28
|
-
existing: string[];
|
|
29
|
-
expected: string | undefined;
|
|
30
|
-
}>([
|
|
31
|
-
{
|
|
32
|
-
compiler: "tsc",
|
|
33
|
-
existing: [compilerPaths.tsc],
|
|
34
|
-
expected: compilerPaths.tsc,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
compiler: "tsc",
|
|
38
|
-
existing: [compilerPaths.native],
|
|
39
|
-
expected: compilerPaths.native,
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
compiler: "tsc",
|
|
43
|
-
existing: [compilerPaths.tsc, compilerPaths.native],
|
|
44
|
-
expected: compilerPaths.native,
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
compiler: "tsgo",
|
|
48
|
-
existing: [compilerPaths.tsgo],
|
|
49
|
-
expected: compilerPaths.tsgo,
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
compiler: "tsgo",
|
|
53
|
-
existing: [compilerPaths.legacyTsgo],
|
|
54
|
-
expected: compilerPaths.legacyTsgo,
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
compiler: "tsgo",
|
|
58
|
-
existing: [compilerPaths.tsgo, compilerPaths.legacyTsgo],
|
|
59
|
-
expected: compilerPaths.tsgo,
|
|
60
|
-
},
|
|
61
|
-
{ compiler: "tsc", existing: [], expected: undefined },
|
|
62
|
-
{ compiler: "tsgo", existing: [], expected: undefined },
|
|
63
|
-
])("finds $expected for $compiler", ({ compiler, existing, expected }) => {
|
|
64
|
-
expect(
|
|
65
|
-
findTypeScriptCompilerPath(
|
|
66
|
-
{ exists: (candidate) => existing.includes(candidate) },
|
|
67
|
-
compiler,
|
|
68
|
-
),
|
|
69
|
-
).toBe(expected);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
2
|
-
import { checkVersionAndAiFilesStaleness } from "./updates.js";
|
|
3
|
-
import { getVersion } from "./versionApi.js";
|
|
4
|
-
import { logMessage } from "../../bundler/log.js";
|
|
5
|
-
import { checkAiFilesStalenessAndLog } from "./aiFiles/index.js";
|
|
6
|
-
import { readProjectConfig } from "./config.js";
|
|
7
|
-
import type { Context } from "../../bundler/context.js";
|
|
8
|
-
|
|
9
|
-
vi.mock("./versionApi.js", () => ({
|
|
10
|
-
getVersion: vi.fn(),
|
|
11
|
-
}));
|
|
12
|
-
|
|
13
|
-
vi.mock("./aiFiles/index.js", () => ({
|
|
14
|
-
checkAiFilesStalenessAndLog: vi.fn(),
|
|
15
|
-
isAiFilesDisabled: vi.fn((aiFilesConfig) =>
|
|
16
|
-
aiFilesConfig?.enabled !== undefined
|
|
17
|
-
? aiFilesConfig.enabled === false
|
|
18
|
-
: aiFilesConfig?.disableStalenessMessage === true,
|
|
19
|
-
),
|
|
20
|
-
}));
|
|
21
|
-
|
|
22
|
-
vi.mock("../../bundler/log.js", () => ({
|
|
23
|
-
logMessage: vi.fn(),
|
|
24
|
-
}));
|
|
25
|
-
|
|
26
|
-
vi.mock("./config.js", () => ({
|
|
27
|
-
readProjectConfig: vi.fn(),
|
|
28
|
-
}));
|
|
29
|
-
|
|
30
|
-
const mockGetVersion = vi.mocked(getVersion);
|
|
31
|
-
const mockLogMessage = vi.mocked(logMessage);
|
|
32
|
-
const mockCheckAiFilesStalenessAndLog = vi.mocked(checkAiFilesStalenessAndLog);
|
|
33
|
-
const mockReadProjectConfig = vi.mocked(readProjectConfig);
|
|
34
|
-
|
|
35
|
-
const fakeCtx = {} as Context;
|
|
36
|
-
|
|
37
|
-
const okVersion = (overrides?: object) => ({
|
|
38
|
-
kind: "ok" as const,
|
|
39
|
-
data: {
|
|
40
|
-
message: null,
|
|
41
|
-
guidelinesHash: "abc-guidelines-hash",
|
|
42
|
-
agentSkillsSha: "abc-skills-sha",
|
|
43
|
-
disableSkillsCli: false,
|
|
44
|
-
disableSkillsCliMessage: null,
|
|
45
|
-
...overrides,
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe("checkVersionAndAiFilesStaleness", () => {
|
|
50
|
-
beforeEach(() => {
|
|
51
|
-
vi.clearAllMocks();
|
|
52
|
-
mockCheckAiFilesStalenessAndLog.mockResolvedValue(undefined);
|
|
53
|
-
mockReadProjectConfig.mockResolvedValue({
|
|
54
|
-
projectConfig: {
|
|
55
|
-
functions: "convex",
|
|
56
|
-
node: { externalPackages: [] },
|
|
57
|
-
generateCommonJSApi: false,
|
|
58
|
-
codegen: { staticApi: true, staticDataModel: true },
|
|
59
|
-
},
|
|
60
|
-
configPath: "convex.json",
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
afterEach(() => {
|
|
65
|
-
vi.resetAllMocks();
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it("logs version message when server provides one", async () => {
|
|
69
|
-
mockGetVersion.mockResolvedValue(
|
|
70
|
-
okVersion({ message: "New version available: 1.2.3" }),
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
await checkVersionAndAiFilesStaleness(fakeCtx);
|
|
74
|
-
|
|
75
|
-
expect(mockLogMessage).toHaveBeenCalledWith("New version available: 1.2.3");
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it("does not log when version has no message", async () => {
|
|
79
|
-
mockGetVersion.mockResolvedValue(okVersion());
|
|
80
|
-
|
|
81
|
-
await checkVersionAndAiFilesStaleness(fakeCtx);
|
|
82
|
-
|
|
83
|
-
expect(mockLogMessage).not.toHaveBeenCalled();
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it("does nothing when getVersion returns error", async () => {
|
|
87
|
-
mockGetVersion.mockResolvedValue({ kind: "error" });
|
|
88
|
-
|
|
89
|
-
await checkVersionAndAiFilesStaleness(fakeCtx);
|
|
90
|
-
|
|
91
|
-
expect(mockLogMessage).not.toHaveBeenCalled();
|
|
92
|
-
expect(mockCheckAiFilesStalenessAndLog).not.toHaveBeenCalled();
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it("passes hashes and project paths to staleness check", async () => {
|
|
96
|
-
mockGetVersion.mockResolvedValue(
|
|
97
|
-
okVersion({
|
|
98
|
-
guidelinesHash:
|
|
99
|
-
"02e43fc1ff0ee48db8da468f5c7525877d8056fcd56c77d78a166ac447efb91c",
|
|
100
|
-
agentSkillsSha: "abc123def456abc123def456abc123def456abc1",
|
|
101
|
-
}),
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
await checkVersionAndAiFilesStaleness(fakeCtx);
|
|
105
|
-
|
|
106
|
-
expect(mockCheckAiFilesStalenessAndLog).toHaveBeenCalledWith({
|
|
107
|
-
canonicalGuidelinesHash:
|
|
108
|
-
"02e43fc1ff0ee48db8da468f5c7525877d8056fcd56c77d78a166ac447efb91c",
|
|
109
|
-
canonicalAgentSkillsSha: "abc123def456abc123def456abc123def456abc1",
|
|
110
|
-
projectDir: expect.any(String),
|
|
111
|
-
convexDir: expect.any(String),
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it("passes null hashes when version has none", async () => {
|
|
116
|
-
mockGetVersion.mockResolvedValue(
|
|
117
|
-
okVersion({ guidelinesHash: null, agentSkillsSha: null }),
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
await checkVersionAndAiFilesStaleness(fakeCtx);
|
|
121
|
-
|
|
122
|
-
expect(mockCheckAiFilesStalenessAndLog).toHaveBeenCalledWith({
|
|
123
|
-
canonicalGuidelinesHash: null,
|
|
124
|
-
canonicalAgentSkillsSha: null,
|
|
125
|
-
projectDir: expect.any(String),
|
|
126
|
-
convexDir: expect.any(String),
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
it("skips staleness check when aiFiles.disableStalenessMessage is true", async () => {
|
|
131
|
-
mockGetVersion.mockResolvedValue(okVersion());
|
|
132
|
-
mockReadProjectConfig.mockResolvedValue({
|
|
133
|
-
projectConfig: {
|
|
134
|
-
functions: "convex",
|
|
135
|
-
node: { externalPackages: [] },
|
|
136
|
-
generateCommonJSApi: false,
|
|
137
|
-
codegen: { staticApi: true, staticDataModel: true },
|
|
138
|
-
aiFiles: { disableStalenessMessage: true },
|
|
139
|
-
},
|
|
140
|
-
configPath: "convex.json",
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
await checkVersionAndAiFilesStaleness(fakeCtx);
|
|
144
|
-
|
|
145
|
-
expect(mockCheckAiFilesStalenessAndLog).not.toHaveBeenCalled();
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
it("silently skips staleness check when project config cannot be resolved", async () => {
|
|
149
|
-
mockGetVersion.mockResolvedValue(okVersion());
|
|
150
|
-
mockReadProjectConfig.mockRejectedValue(new Error("no convex.json"));
|
|
151
|
-
|
|
152
|
-
await expect(
|
|
153
|
-
checkVersionAndAiFilesStaleness(fakeCtx),
|
|
154
|
-
).resolves.toBeUndefined();
|
|
155
|
-
expect(mockCheckAiFilesStalenessAndLog).not.toHaveBeenCalled();
|
|
156
|
-
});
|
|
157
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from "vitest";
|
|
2
|
-
import { hashSha256 } from "./hash.js";
|
|
3
|
-
|
|
4
|
-
describe("hashSha256", () => {
|
|
5
|
-
test("hashes empty string", () => {
|
|
6
|
-
const result = hashSha256("");
|
|
7
|
-
expect(result).toBe(
|
|
8
|
-
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
9
|
-
);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
test("hashes simple string", () => {
|
|
13
|
-
const result = hashSha256("hello world");
|
|
14
|
-
expect(result).toBe(
|
|
15
|
-
"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
|
|
16
|
-
);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
test("hashes unicode string", () => {
|
|
20
|
-
const result = hashSha256("hello 🌍 world");
|
|
21
|
-
expect(result).toBe(
|
|
22
|
-
"d234e59bf292eb39b3c8ba2ee06c21b50c9040530b577e5bf53f028099b37f54",
|
|
23
|
-
);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect, vi, afterEach, beforeEach } from "vitest";
|
|
2
|
-
// Must be imported before any module that uses @inquirer/*
|
|
3
|
-
import { screen } from "@inquirer/testing/vitest";
|
|
4
|
-
import type { BigBrainAuth, Context } from "../../../bundler/context.js";
|
|
5
|
-
import {
|
|
6
|
-
bigBrainFetch,
|
|
7
|
-
bigBrainAPIMaybeThrows,
|
|
8
|
-
BIG_BRAIN_URL,
|
|
9
|
-
selectRegion,
|
|
10
|
-
} from "./utils.js";
|
|
11
|
-
|
|
12
|
-
// Hoist this mock so it's in place before `retryingFetch` is initialized.
|
|
13
|
-
// We make the factory return a function that delegates to `globalThis.fetch`
|
|
14
|
-
// at call time, so tests can stub it via `vi.stubGlobal`.
|
|
15
|
-
// vitest hoists vi.mock() calls before imports, so this applies to the
|
|
16
|
-
// `retryingFetch = fetchRetryFactory(fetch)` initialization in utils.ts.
|
|
17
|
-
vi.mock("fetch-retry", () => ({
|
|
18
|
-
default: (_fetch: any) => (resource: any, options: any) =>
|
|
19
|
-
(globalThis as any).fetch(resource, options),
|
|
20
|
-
}));
|
|
21
|
-
|
|
22
|
-
function makeContext(auth: BigBrainAuth | null): Context {
|
|
23
|
-
return {
|
|
24
|
-
bigBrainAuth: () => auth,
|
|
25
|
-
crash: vi.fn(),
|
|
26
|
-
registerCleanup: vi.fn(),
|
|
27
|
-
removeCleanup: vi.fn(),
|
|
28
|
-
_updateBigBrainAuth: vi.fn(),
|
|
29
|
-
fs: {} as any,
|
|
30
|
-
deprecationMessagePrinted: false,
|
|
31
|
-
spinner: undefined,
|
|
32
|
-
} as unknown as Context;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function stubFetch() {
|
|
36
|
-
const mockFetch = vi
|
|
37
|
-
.fn()
|
|
38
|
-
.mockResolvedValue(new Response("{}", { status: 200 }));
|
|
39
|
-
vi.stubGlobal("fetch", mockFetch);
|
|
40
|
-
return mockFetch;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function capturedArgs(mockFetch: ReturnType<typeof vi.fn>) {
|
|
44
|
-
const [resource, options] = mockFetch.mock.calls[0] as [
|
|
45
|
-
RequestInfo | URL,
|
|
46
|
-
RequestInit & any,
|
|
47
|
-
];
|
|
48
|
-
return {
|
|
49
|
-
resource,
|
|
50
|
-
options,
|
|
51
|
-
headers: options.headers as Record<string, string>,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function capturedOptionsHeaders(mockFetch: ReturnType<typeof vi.fn>) {
|
|
56
|
-
return capturedArgs(mockFetch).headers;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
afterEach(() => {
|
|
60
|
-
vi.unstubAllGlobals();
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
describe("bigBrainFetch", () => {
|
|
64
|
-
test("sets Convex-Client header and no Authorization when auth is null", async () => {
|
|
65
|
-
const mockFetch = stubFetch();
|
|
66
|
-
const ctx = makeContext(null);
|
|
67
|
-
|
|
68
|
-
const fetch = bigBrainFetch(ctx);
|
|
69
|
-
await fetch("https://api.convex.dev/api/test", { method: "GET" });
|
|
70
|
-
|
|
71
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
72
|
-
const headers = capturedOptionsHeaders(mockFetch);
|
|
73
|
-
expect(headers["Convex-Client"]).toMatch(/^npm-cli-/);
|
|
74
|
-
expect(headers["Authorization"]).toBeUndefined();
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
test("sets both Authorization and Convex-Client headers when auth is present", async () => {
|
|
78
|
-
const mockFetch = stubFetch();
|
|
79
|
-
const ctx = makeContext({
|
|
80
|
-
kind: "accessToken",
|
|
81
|
-
header: "Bearer test-token",
|
|
82
|
-
accessToken: "test-token",
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
const fetch = bigBrainFetch(ctx);
|
|
86
|
-
await fetch("https://api.convex.dev/api/test", { method: "GET" });
|
|
87
|
-
|
|
88
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
89
|
-
const headers = capturedOptionsHeaders(mockFetch);
|
|
90
|
-
expect(headers["Authorization"]).toBe("Bearer test-token");
|
|
91
|
-
expect(headers["Convex-Client"]).toMatch(/^npm-cli-/);
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
test("caller-supplied options headers are merged over bigBrain headers", async () => {
|
|
95
|
-
const mockFetch = stubFetch();
|
|
96
|
-
const ctx = makeContext({
|
|
97
|
-
kind: "accessToken",
|
|
98
|
-
header: "Bearer original-token",
|
|
99
|
-
accessToken: "original-token",
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
const fetch = bigBrainFetch(ctx);
|
|
103
|
-
await fetch("https://api.convex.dev/api/test", {
|
|
104
|
-
method: "POST",
|
|
105
|
-
headers: {
|
|
106
|
-
Authorization: "Bearer caller-override",
|
|
107
|
-
"Content-Type": "application/json",
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
112
|
-
const headers = capturedOptionsHeaders(mockFetch);
|
|
113
|
-
expect(headers["Authorization"]).toBe("Bearer caller-override");
|
|
114
|
-
expect(headers["Content-Type"]).toBe("application/json");
|
|
115
|
-
expect(headers["Convex-Client"]).toMatch(/^npm-cli-/);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
test("uses Request object headers when no options headers provided", async () => {
|
|
119
|
-
const mockFetch = stubFetch();
|
|
120
|
-
const ctx = makeContext(null);
|
|
121
|
-
|
|
122
|
-
const request = new Request("https://api.convex.dev/api/test", {
|
|
123
|
-
method: "GET",
|
|
124
|
-
headers: { "X-Custom-Header": "custom-value" },
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
const fetch = bigBrainFetch(ctx);
|
|
128
|
-
await fetch(request, undefined);
|
|
129
|
-
|
|
130
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
131
|
-
const headers = capturedOptionsHeaders(mockFetch);
|
|
132
|
-
// The Headers object normalizes header names to lowercase when iterated.
|
|
133
|
-
expect(headers["x-custom-header"]).toBe("custom-value");
|
|
134
|
-
expect(headers["Convex-Client"]).toMatch(/^npm-cli-/);
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
test("options headers take precedence over Request object headers", async () => {
|
|
138
|
-
const mockFetch = stubFetch();
|
|
139
|
-
const ctx = makeContext(null);
|
|
140
|
-
|
|
141
|
-
const request = new Request("https://api.convex.dev/api/test", {
|
|
142
|
-
method: "GET",
|
|
143
|
-
headers: { "X-Custom-Header": "from-request" },
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
const fetch = bigBrainFetch(ctx);
|
|
147
|
-
await fetch(request, {
|
|
148
|
-
headers: { "X-Custom-Header": "from-options" },
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
152
|
-
const headers = capturedOptionsHeaders(mockFetch);
|
|
153
|
-
expect(headers["X-Custom-Header"]).toBe("from-options");
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
test("passes the request through to throwingFetch", async () => {
|
|
157
|
-
const mockFetch = stubFetch();
|
|
158
|
-
const ctx = makeContext(null);
|
|
159
|
-
const request = new Request("https://api.convex.dev/api/some-endpoint", {
|
|
160
|
-
method: "POST",
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
const fetch = bigBrainFetch(ctx);
|
|
164
|
-
await fetch(request);
|
|
165
|
-
|
|
166
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
167
|
-
const [resource] = mockFetch.mock.calls[0] as [any, any];
|
|
168
|
-
expect(resource).toBe(request);
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
describe("bigBrainAPIMaybeThrows", () => {
|
|
173
|
-
test("joins url with BIG_BRAIN_URL", async () => {
|
|
174
|
-
const mockFetch = stubFetch();
|
|
175
|
-
const ctx = makeContext(null);
|
|
176
|
-
|
|
177
|
-
await bigBrainAPIMaybeThrows({ ctx, method: "GET", path: "has_projects" });
|
|
178
|
-
|
|
179
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
180
|
-
const { resource } = capturedArgs(mockFetch);
|
|
181
|
-
expect(resource.toString()).toBe(
|
|
182
|
-
new URL("has_projects", BIG_BRAIN_URL).toString(),
|
|
183
|
-
);
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
test("passes method through for GET with no body", async () => {
|
|
187
|
-
const mockFetch = stubFetch();
|
|
188
|
-
const ctx = makeContext(null);
|
|
189
|
-
|
|
190
|
-
await bigBrainAPIMaybeThrows({ ctx, method: "GET", path: "test" });
|
|
191
|
-
|
|
192
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
193
|
-
const { options } = capturedArgs(mockFetch);
|
|
194
|
-
expect(options.method).toBe("GET");
|
|
195
|
-
expect(options.body).toBeUndefined();
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
test("POST with no data sends empty object body", async () => {
|
|
199
|
-
const mockFetch = stubFetch();
|
|
200
|
-
const ctx = makeContext(null);
|
|
201
|
-
|
|
202
|
-
await bigBrainAPIMaybeThrows({ ctx, method: "POST", path: "test" });
|
|
203
|
-
|
|
204
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
205
|
-
const { options, headers } = capturedArgs(mockFetch);
|
|
206
|
-
expect(options.method).toBe("POST");
|
|
207
|
-
expect(options.body).toBe("{}");
|
|
208
|
-
expect(headers["Content-Type"]).toBe("application/json");
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
test("POST with object data serializes it to JSON", async () => {
|
|
212
|
-
const mockFetch = stubFetch();
|
|
213
|
-
const ctx = makeContext(null);
|
|
214
|
-
const data = { name: "test", value: 42 };
|
|
215
|
-
|
|
216
|
-
await bigBrainAPIMaybeThrows({ ctx, method: "POST", path: "test", data });
|
|
217
|
-
|
|
218
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
219
|
-
const { options } = capturedArgs(mockFetch);
|
|
220
|
-
expect(options.body).toBe(JSON.stringify(data));
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
test("POST with string data passes it through as-is", async () => {
|
|
224
|
-
const mockFetch = stubFetch();
|
|
225
|
-
const ctx = makeContext(null);
|
|
226
|
-
|
|
227
|
-
await bigBrainAPIMaybeThrows({
|
|
228
|
-
ctx,
|
|
229
|
-
method: "POST",
|
|
230
|
-
path: "test",
|
|
231
|
-
data: '{"raw":true}',
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
expect(mockFetch).toHaveBeenCalledOnce();
|
|
235
|
-
const { options } = capturedArgs(mockFetch);
|
|
236
|
-
expect(options.body).toBe('{"raw":true}');
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
const testRegions = [
|
|
241
|
-
{ name: "aws-eu-west-1", displayName: "EU West (Ireland)", available: true },
|
|
242
|
-
{
|
|
243
|
-
name: "aws-us-east-1",
|
|
244
|
-
displayName: "US East (Virginia)",
|
|
245
|
-
available: true,
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
name: "aws-ap-southeast-1",
|
|
249
|
-
displayName: "Asia Pacific (Singapore)",
|
|
250
|
-
available: false,
|
|
251
|
-
},
|
|
252
|
-
];
|
|
253
|
-
|
|
254
|
-
function stubRegionsFetch() {
|
|
255
|
-
const mockFetch = vi.fn().mockImplementation(async (resource: any) => {
|
|
256
|
-
const url = resource instanceof Request ? resource.url : String(resource);
|
|
257
|
-
if (url.includes("/list_deployment_regions")) {
|
|
258
|
-
return new Response(JSON.stringify({ items: testRegions }), {
|
|
259
|
-
status: 200,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
return new Response("{}", { status: 200 });
|
|
263
|
-
});
|
|
264
|
-
vi.stubGlobal("fetch", mockFetch);
|
|
265
|
-
return mockFetch;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
describe("selectRegion", () => {
|
|
269
|
-
beforeEach(() => {
|
|
270
|
-
stubRegionsFetch();
|
|
271
|
-
process.stdin.isTTY = true;
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
afterEach(() => {
|
|
275
|
-
process.stdin.isTTY = false;
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
test("US region is shown first", async () => {
|
|
279
|
-
const ctx = makeContext(null);
|
|
280
|
-
|
|
281
|
-
const promise = selectRegion(ctx, 123, "dev");
|
|
282
|
-
|
|
283
|
-
await screen.next();
|
|
284
|
-
const rendered = screen.getScreen();
|
|
285
|
-
// US East should appear before EU West in the rendered output
|
|
286
|
-
const usIndex = rendered.indexOf("US East");
|
|
287
|
-
const euIndex = rendered.indexOf("EU West");
|
|
288
|
-
expect(usIndex).toBeGreaterThanOrEqual(0);
|
|
289
|
-
expect(euIndex).toBeGreaterThanOrEqual(0);
|
|
290
|
-
expect(usIndex).toBeLessThan(euIndex);
|
|
291
|
-
|
|
292
|
-
// Select the first option (US East) and resolve the promise
|
|
293
|
-
screen.keypress("enter");
|
|
294
|
-
const result = await promise;
|
|
295
|
-
expect(result).toBe("aws-us-east-1");
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
test("unavailable regions are not displayed", async () => {
|
|
299
|
-
const ctx = makeContext(null);
|
|
300
|
-
|
|
301
|
-
const promise = selectRegion(ctx, 123, "dev");
|
|
302
|
-
|
|
303
|
-
await screen.next();
|
|
304
|
-
const rendered = screen.getScreen();
|
|
305
|
-
expect(rendered).not.toContain("Asia Pacific (Singapore)");
|
|
306
|
-
expect(rendered).toContain("US East (Virginia)");
|
|
307
|
-
expect(rendered).toContain("EU West (Ireland)");
|
|
308
|
-
|
|
309
|
-
screen.keypress("enter");
|
|
310
|
-
await promise;
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
const availableRegions = testRegions.filter((r) => r.available);
|
|
314
|
-
|
|
315
|
-
test.each(availableRegions.map((r, i) => ({ ...r, downPresses: i })))(
|
|
316
|
-
"selecting option at position $downPresses returns the correct region",
|
|
317
|
-
async ({ downPresses }) => {
|
|
318
|
-
const ctx = makeContext(null);
|
|
319
|
-
|
|
320
|
-
const promise = selectRegion(ctx, 123, "dev");
|
|
321
|
-
|
|
322
|
-
await screen.next();
|
|
323
|
-
for (let i = 0; i < downPresses; i++) {
|
|
324
|
-
screen.keypress("down");
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// Check which option is currently highlighted on screen,
|
|
328
|
-
// then find the matching region to know what value to expect.
|
|
329
|
-
const rendered = screen.getScreen();
|
|
330
|
-
const selectedRegion = testRegions.find(
|
|
331
|
-
(r) => r.available && rendered.includes(`❯ ${r.displayName}`),
|
|
332
|
-
);
|
|
333
|
-
expect(selectedRegion).toBeDefined();
|
|
334
|
-
|
|
335
|
-
screen.keypress("enter");
|
|
336
|
-
const result = await promise;
|
|
337
|
-
expect(result).toBe(selectedRegion!.name);
|
|
338
|
-
},
|
|
339
|
-
);
|
|
340
|
-
});
|