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,200 +0,0 @@
|
|
|
1
|
-
import { Base64 } from "../../values/index.js";
|
|
2
|
-
import { Long } from "../../vendor/long.js";
|
|
3
|
-
|
|
4
|
-
// --experimental-vm-modules which we use for jest doesn't support named exports
|
|
5
|
-
import WebSocket, { WebSocketServer } from "ws";
|
|
6
|
-
|
|
7
|
-
// Let's pretend this ws WebSocket is a browser WebSocket (it's very close)
|
|
8
|
-
export const nodeWebSocket = WebSocket as unknown as typeof window.WebSocket;
|
|
9
|
-
|
|
10
|
-
import { ClientMessage, WireServerMessage } from "./protocol.js";
|
|
11
|
-
import {
|
|
12
|
-
PaginatedQueryToken,
|
|
13
|
-
QueryToken,
|
|
14
|
-
serializedQueryTokenIsPaginated,
|
|
15
|
-
} from "./udf_path_utils.js";
|
|
16
|
-
import { BaseConvexClient } from "./client.js";
|
|
17
|
-
import { PaginatedQueryClient } from "./paginated_query_client.js";
|
|
18
|
-
|
|
19
|
-
export type InMemoryWebSocketTest = (args: {
|
|
20
|
-
address: string;
|
|
21
|
-
socket: () => WebSocket;
|
|
22
|
-
receive: () => Promise<ClientMessage>;
|
|
23
|
-
send: (message: WireServerMessage) => void;
|
|
24
|
-
close: () => void;
|
|
25
|
-
}) => Promise<void>;
|
|
26
|
-
|
|
27
|
-
function listeningSocketServer(): Promise<WebSocketServer> {
|
|
28
|
-
return new Promise((resolve) => {
|
|
29
|
-
const wss = new WebSocketServer({ port: 0 });
|
|
30
|
-
wss.on("listening", () => resolve(wss));
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Run a test with a real node WebSocket instance connected
|
|
35
|
-
export async function withInMemoryWebSocket(
|
|
36
|
-
cb: InMemoryWebSocketTest,
|
|
37
|
-
debug = false,
|
|
38
|
-
) {
|
|
39
|
-
// These state variables are consistent over multiple sockets.
|
|
40
|
-
let received: (msg: string) => void;
|
|
41
|
-
// prettier-ignore
|
|
42
|
-
const messages: Promise<string>[] = [ new Promise((r) => { received = r; }) ];
|
|
43
|
-
let socket: WebSocket | null = null;
|
|
44
|
-
|
|
45
|
-
const wss = await listeningSocketServer();
|
|
46
|
-
|
|
47
|
-
const setUpSocket = () => {
|
|
48
|
-
wss.once("connection", function connection(ws: WebSocket) {
|
|
49
|
-
socket = ws;
|
|
50
|
-
ws.on("message", function message(data: string) {
|
|
51
|
-
received(data);
|
|
52
|
-
// eslint-disable-next-line no-console
|
|
53
|
-
if (debug) console.debug(`client --${JSON.parse(data).type}--> `);
|
|
54
|
-
messages.push(
|
|
55
|
-
new Promise((r) => {
|
|
56
|
-
received = r;
|
|
57
|
-
}),
|
|
58
|
-
);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
setUpSocket();
|
|
63
|
-
|
|
64
|
-
// receive and send are stable across multiple socket connections
|
|
65
|
-
async function receive(): Promise<ClientMessage> {
|
|
66
|
-
const msgP = messages.shift();
|
|
67
|
-
if (!msgP) {
|
|
68
|
-
throw new Error("Receive() called twice? No message promise found.");
|
|
69
|
-
}
|
|
70
|
-
const text = await msgP;
|
|
71
|
-
const structured = JSON.parse(text);
|
|
72
|
-
return structured;
|
|
73
|
-
}
|
|
74
|
-
function send(message: WireServerMessage) {
|
|
75
|
-
// eslint-disable-next-line no-console
|
|
76
|
-
if (debug) console.debug(` <--${message.type}-- server`);
|
|
77
|
-
socket!.send(encodeServerMessage(message));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const s: any = wss.address();
|
|
81
|
-
const address = typeof s === "string" ? s : `http://127.0.0.1:${s.port}`;
|
|
82
|
-
|
|
83
|
-
try {
|
|
84
|
-
await cb({
|
|
85
|
-
address,
|
|
86
|
-
socket: () => socket as unknown as WebSocket,
|
|
87
|
-
receive,
|
|
88
|
-
send,
|
|
89
|
-
close: () => {
|
|
90
|
-
// eslint-disable-next-line no-console
|
|
91
|
-
if (debug) console.debug(` --CLOSE-->8-- server`);
|
|
92
|
-
socket!.close();
|
|
93
|
-
setUpSocket();
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
} finally {
|
|
97
|
-
const s = socket!;
|
|
98
|
-
if (s!) {
|
|
99
|
-
socket!.close();
|
|
100
|
-
}
|
|
101
|
-
wss.close();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export function encodeServerMessage(message: WireServerMessage): string {
|
|
106
|
-
function replacer(_key: string, value: any) {
|
|
107
|
-
if (Long.isLong(value)) {
|
|
108
|
-
return encodeLong(value);
|
|
109
|
-
}
|
|
110
|
-
return value;
|
|
111
|
-
}
|
|
112
|
-
return JSON.stringify(message, replacer);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function encodeLong(n: Long) {
|
|
116
|
-
const integerBytes = Uint8Array.from(n.toBytesLE());
|
|
117
|
-
return Base64.fromByteArray(integerBytes);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* const q = new UpdateQueue();
|
|
122
|
-
* const client = new BaseConvexClient(address, queryTokens => { q.onTransition(client)(queryTokens) });
|
|
123
|
-
*
|
|
124
|
-
* await q.updatePromises[3];
|
|
125
|
-
*
|
|
126
|
-
*/
|
|
127
|
-
export class UpdateQueue {
|
|
128
|
-
updateResolves: ((v: Record<QueryToken, any>) => void)[];
|
|
129
|
-
updatePromises: Promise<Record<QueryToken, any>>[];
|
|
130
|
-
updates: Record<QueryToken, any>[];
|
|
131
|
-
allResults: Record<QueryToken, any>;
|
|
132
|
-
nextIndex: number;
|
|
133
|
-
|
|
134
|
-
constructor(maxLength = 10) {
|
|
135
|
-
this.updateResolves = [];
|
|
136
|
-
this.updatePromises = [];
|
|
137
|
-
this.allResults = {};
|
|
138
|
-
this.updates = [];
|
|
139
|
-
this.nextIndex = 0;
|
|
140
|
-
|
|
141
|
-
let nextResolve: (v: Record<QueryToken, any>) => void;
|
|
142
|
-
let nextPromise: Promise<Record<QueryToken, any>>;
|
|
143
|
-
|
|
144
|
-
for (let i = 0; i < maxLength; i++) {
|
|
145
|
-
nextPromise = new Promise((r) => {
|
|
146
|
-
nextResolve = r;
|
|
147
|
-
});
|
|
148
|
-
this.updateResolves.push(nextResolve!);
|
|
149
|
-
this.updatePromises.push(nextPromise);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Useful to use instead of directly awaiting so that the timeout has a line number
|
|
155
|
-
* unlike the default Vite test timeout.
|
|
156
|
-
*/
|
|
157
|
-
async awaitPromiseAtIndexWithTimeout(
|
|
158
|
-
i: number,
|
|
159
|
-
): Promise<Record<QueryToken | PaginatedQueryToken, any>> {
|
|
160
|
-
if (!this.updatePromises[i]) {
|
|
161
|
-
throw new Error("That promise doesn't exist yet");
|
|
162
|
-
}
|
|
163
|
-
const inBandSignal = "UpdateQueue await timed out";
|
|
164
|
-
const result = await Promise.race([
|
|
165
|
-
new Promise((r) => setTimeout(() => r(inBandSignal), 1000)),
|
|
166
|
-
this.updatePromises[i],
|
|
167
|
-
]);
|
|
168
|
-
if (result === inBandSignal) {
|
|
169
|
-
throw new Error("Awaiting promise in UpdateQueue");
|
|
170
|
-
}
|
|
171
|
-
// cast from the updatePromises where this was any, but know it's unknown
|
|
172
|
-
return result as any;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
onTransition =
|
|
176
|
-
(client: BaseConvexClient, paginatedClient?: PaginatedQueryClient) =>
|
|
177
|
-
(updatedQueryTokens: (QueryToken | PaginatedQueryToken)[]) => {
|
|
178
|
-
const update: Record<QueryToken, any> = {};
|
|
179
|
-
for (const queryToken of updatedQueryTokens) {
|
|
180
|
-
if (serializedQueryTokenIsPaginated(queryToken)) {
|
|
181
|
-
if (!paginatedClient) {
|
|
182
|
-
throw new Error(
|
|
183
|
-
"No PaginatedQueryClient provided to look up value for token " +
|
|
184
|
-
queryToken,
|
|
185
|
-
);
|
|
186
|
-
}
|
|
187
|
-
const value = paginatedClient?.localQueryResultByToken(queryToken);
|
|
188
|
-
update[queryToken] = value;
|
|
189
|
-
this.allResults[queryToken] = value;
|
|
190
|
-
} else {
|
|
191
|
-
const value = client.localQueryResultByToken(queryToken);
|
|
192
|
-
update[queryToken] = value;
|
|
193
|
-
this.allResults[queryToken] = value;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
this.updateResolves[this.nextIndex](update);
|
|
197
|
-
this.updates.push(update);
|
|
198
|
-
this.nextIndex++;
|
|
199
|
-
};
|
|
200
|
-
}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "vitest";
|
|
2
|
-
import { Long } from "../../vendor/long.js";
|
|
3
|
-
|
|
4
|
-
import { LocalSyncState } from "./local_state.js";
|
|
5
|
-
|
|
6
|
-
test("can create a local state", () => {
|
|
7
|
-
new LocalSyncState();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
test("has outstanding state older than restart", () => {
|
|
11
|
-
const state = new LocalSyncState();
|
|
12
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
13
|
-
|
|
14
|
-
// Restarting w/o outstanding queries
|
|
15
|
-
state.restart();
|
|
16
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
17
|
-
|
|
18
|
-
// Do two subscriptions.
|
|
19
|
-
state.subscribe("hello:world1", {});
|
|
20
|
-
state.subscribe("hello:world2", {});
|
|
21
|
-
const queryId1 = state.queryId("hello:world1", {})!;
|
|
22
|
-
const queryId2 = state.queryId("hello:world2", {})!;
|
|
23
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
24
|
-
|
|
25
|
-
// Restart before we get results. This should flip synced to false.
|
|
26
|
-
state.restart();
|
|
27
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(false);
|
|
28
|
-
|
|
29
|
-
// If we provide partial results, then synced should remain false
|
|
30
|
-
state.transition({
|
|
31
|
-
type: "Transition",
|
|
32
|
-
startVersion: {
|
|
33
|
-
querySet: 0,
|
|
34
|
-
ts: Long.fromNumber(500),
|
|
35
|
-
identity: 0,
|
|
36
|
-
},
|
|
37
|
-
endVersion: {
|
|
38
|
-
querySet: 0,
|
|
39
|
-
ts: Long.fromNumber(1000),
|
|
40
|
-
identity: 0,
|
|
41
|
-
},
|
|
42
|
-
modifications: [
|
|
43
|
-
{
|
|
44
|
-
type: "QueryUpdated",
|
|
45
|
-
queryId: queryId1,
|
|
46
|
-
value: "hi",
|
|
47
|
-
logLines: [],
|
|
48
|
-
journal: null,
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
});
|
|
52
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(false);
|
|
53
|
-
|
|
54
|
-
// If we provide full results, then synced should go true
|
|
55
|
-
state.transition({
|
|
56
|
-
type: "Transition",
|
|
57
|
-
startVersion: {
|
|
58
|
-
querySet: 0,
|
|
59
|
-
ts: Long.fromNumber(1000),
|
|
60
|
-
identity: 0,
|
|
61
|
-
},
|
|
62
|
-
endVersion: {
|
|
63
|
-
querySet: 0,
|
|
64
|
-
ts: Long.fromNumber(1500),
|
|
65
|
-
identity: 0,
|
|
66
|
-
},
|
|
67
|
-
modifications: [
|
|
68
|
-
{
|
|
69
|
-
type: "QueryUpdated",
|
|
70
|
-
queryId: queryId2,
|
|
71
|
-
value: "hi",
|
|
72
|
-
logLines: [],
|
|
73
|
-
journal: null,
|
|
74
|
-
},
|
|
75
|
-
],
|
|
76
|
-
});
|
|
77
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test("unsubscribe resets outstanding state older than restart", () => {
|
|
81
|
-
const state = new LocalSyncState();
|
|
82
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
83
|
-
|
|
84
|
-
// Do one subscription.
|
|
85
|
-
const sub1 = state.subscribe("hello:world", {});
|
|
86
|
-
|
|
87
|
-
// Restart before we get results. This should flip synced to false.
|
|
88
|
-
state.restart();
|
|
89
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(false);
|
|
90
|
-
|
|
91
|
-
// Unsubscribe. This should flip synced back to true, even before getting result.
|
|
92
|
-
sub1.unsubscribe();
|
|
93
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
test("complete auth resets outstanding state older than restart", () => {
|
|
97
|
-
const state = new LocalSyncState();
|
|
98
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
99
|
-
|
|
100
|
-
// Set auth
|
|
101
|
-
state.setAuth("auth123");
|
|
102
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
103
|
-
|
|
104
|
-
// Restart before we get results. This should flip synced to false.
|
|
105
|
-
state.restart();
|
|
106
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(false);
|
|
107
|
-
|
|
108
|
-
// Mark auth completion
|
|
109
|
-
state.markAuthCompletion();
|
|
110
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
test("cleared auth resets outstanding state older than restart", () => {
|
|
114
|
-
const state = new LocalSyncState();
|
|
115
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
116
|
-
|
|
117
|
-
// Set auth
|
|
118
|
-
state.setAuth("auth123");
|
|
119
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
120
|
-
|
|
121
|
-
// Restart before we get results. This should flip synced to false.
|
|
122
|
-
state.restart();
|
|
123
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(false);
|
|
124
|
-
|
|
125
|
-
// Mark auth cleared
|
|
126
|
-
state.clearAuth();
|
|
127
|
-
expect(state.hasSyncedPastLastReconnect()).toBe(true);
|
|
128
|
-
});
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import { Value } from "../../values/index.js";
|
|
2
|
-
import { test, expect, beforeEach } from "vitest";
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
OptimisticQueryResults,
|
|
6
|
-
QueryResultsMap,
|
|
7
|
-
} from "./optimistic_updates_impl.js";
|
|
8
|
-
import { serializePathAndArgs } from "./udf_path_utils.js";
|
|
9
|
-
import { FunctionResult } from "./function_result.js";
|
|
10
|
-
import { anyApi } from "../../server/api.js";
|
|
11
|
-
|
|
12
|
-
let optimisticQuerySet: OptimisticQueryResults;
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
optimisticQuerySet = new OptimisticQueryResults();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
function success(value: Value): FunctionResult {
|
|
18
|
-
return { success: true, value, logLines: [] };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
test("server results are returned back if no optimistic updates exist", () => {
|
|
22
|
-
const queryToken1 = serializePathAndArgs("query1", {});
|
|
23
|
-
const queryToken2 = serializePathAndArgs("query2", {});
|
|
24
|
-
const queryResults: QueryResultsMap = new Map([
|
|
25
|
-
[
|
|
26
|
-
queryToken1,
|
|
27
|
-
{
|
|
28
|
-
result: success("query1 result"),
|
|
29
|
-
udfPath: "query1",
|
|
30
|
-
args: {},
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
[
|
|
34
|
-
queryToken2,
|
|
35
|
-
{
|
|
36
|
-
result: success("query2 result"),
|
|
37
|
-
udfPath: "query2",
|
|
38
|
-
args: {},
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
]);
|
|
42
|
-
const changedQueries = optimisticQuerySet.ingestQueryResultsFromServer(
|
|
43
|
-
queryResults,
|
|
44
|
-
new Set(),
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
expect(changedQueries).toEqual([queryToken1, queryToken2]);
|
|
48
|
-
expect(optimisticQuerySet.queryResult(queryToken1)).toEqual("query1 result");
|
|
49
|
-
expect(optimisticQuerySet.queryResult(queryToken2)).toEqual("query2 result");
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test("errors are thrown if we receive an error from the server", () => {
|
|
53
|
-
const queryToken = serializePathAndArgs("query", {});
|
|
54
|
-
const serverQueryResults: QueryResultsMap = new Map([
|
|
55
|
-
[
|
|
56
|
-
queryToken,
|
|
57
|
-
{
|
|
58
|
-
result: {
|
|
59
|
-
success: false,
|
|
60
|
-
errorMessage: "Server Error",
|
|
61
|
-
logLines: [],
|
|
62
|
-
},
|
|
63
|
-
udfPath: "query",
|
|
64
|
-
args: {},
|
|
65
|
-
},
|
|
66
|
-
],
|
|
67
|
-
]);
|
|
68
|
-
const changedQueries = optimisticQuerySet.ingestQueryResultsFromServer(
|
|
69
|
-
serverQueryResults,
|
|
70
|
-
new Set(),
|
|
71
|
-
);
|
|
72
|
-
expect(changedQueries).toEqual([queryToken]);
|
|
73
|
-
expect(() => optimisticQuerySet.queryResult(queryToken)).toThrow(
|
|
74
|
-
"[CONVEX Q(query)] Server Error",
|
|
75
|
-
);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
test("optimistic updates edit query results", () => {
|
|
79
|
-
const queryToken = serializePathAndArgs("query", {});
|
|
80
|
-
function createQueryResults(value: number): QueryResultsMap {
|
|
81
|
-
return new Map([
|
|
82
|
-
[
|
|
83
|
-
queryToken,
|
|
84
|
-
{
|
|
85
|
-
result: success(value),
|
|
86
|
-
udfPath: "query",
|
|
87
|
-
args: {},
|
|
88
|
-
},
|
|
89
|
-
],
|
|
90
|
-
]);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Add a query to our store
|
|
94
|
-
const changedQueries = optimisticQuerySet.ingestQueryResultsFromServer(
|
|
95
|
-
createQueryResults(100),
|
|
96
|
-
new Set(),
|
|
97
|
-
);
|
|
98
|
-
expect(changedQueries).toEqual([queryToken]);
|
|
99
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(100);
|
|
100
|
-
|
|
101
|
-
// Edit the query with an optimistic update and confirm it ran.
|
|
102
|
-
const changedQueries2 = optimisticQuerySet.applyOptimisticUpdate(
|
|
103
|
-
(localStore) => {
|
|
104
|
-
const oldResult = localStore.getQuery(anyApi.query.default, {});
|
|
105
|
-
localStore.setQuery(anyApi.query.default, {}, oldResult + 1);
|
|
106
|
-
},
|
|
107
|
-
0,
|
|
108
|
-
);
|
|
109
|
-
expect(changedQueries2).toEqual([queryToken]);
|
|
110
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(101);
|
|
111
|
-
|
|
112
|
-
// If we receive a new query result while the update is in place, the update is
|
|
113
|
-
// replayed on top.
|
|
114
|
-
const changedQueries3 = optimisticQuerySet.ingestQueryResultsFromServer(
|
|
115
|
-
createQueryResults(200),
|
|
116
|
-
new Set(),
|
|
117
|
-
);
|
|
118
|
-
expect(changedQueries3).toEqual([queryToken]);
|
|
119
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(201);
|
|
120
|
-
|
|
121
|
-
// The update can be dropped
|
|
122
|
-
const changedQueries4 = optimisticQuerySet.ingestQueryResultsFromServer(
|
|
123
|
-
createQueryResults(300),
|
|
124
|
-
new Set([0]),
|
|
125
|
-
);
|
|
126
|
-
expect(changedQueries4).toEqual([queryToken]);
|
|
127
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(300);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
test("optimistic updates only notify changed queries", () => {
|
|
131
|
-
// Set up 2 queries
|
|
132
|
-
const queryToken1 = serializePathAndArgs("query1", {});
|
|
133
|
-
const queryToken2 = serializePathAndArgs("query2", {});
|
|
134
|
-
const queryResults: QueryResultsMap = new Map([
|
|
135
|
-
[
|
|
136
|
-
queryToken1,
|
|
137
|
-
{
|
|
138
|
-
result: success("query1 result"),
|
|
139
|
-
udfPath: "query1",
|
|
140
|
-
args: {},
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
[
|
|
144
|
-
queryToken2,
|
|
145
|
-
{
|
|
146
|
-
result: success("query2 result"),
|
|
147
|
-
udfPath: "query2",
|
|
148
|
-
args: {},
|
|
149
|
-
},
|
|
150
|
-
],
|
|
151
|
-
]);
|
|
152
|
-
const changedQueries = optimisticQuerySet.ingestQueryResultsFromServer(
|
|
153
|
-
queryResults,
|
|
154
|
-
new Set(),
|
|
155
|
-
);
|
|
156
|
-
// Confirm they were both added
|
|
157
|
-
expect(changedQueries).toEqual([queryToken1, queryToken2]);
|
|
158
|
-
expect(optimisticQuerySet.queryResult(queryToken1)).toEqual("query1 result");
|
|
159
|
-
expect(optimisticQuerySet.queryResult(queryToken2)).toEqual("query2 result");
|
|
160
|
-
|
|
161
|
-
// Update the first query
|
|
162
|
-
const changedQueries2 = optimisticQuerySet.applyOptimisticUpdate(
|
|
163
|
-
(localStore) => {
|
|
164
|
-
localStore.setQuery(anyApi.query1.default, {}, "new query1 result");
|
|
165
|
-
},
|
|
166
|
-
0,
|
|
167
|
-
);
|
|
168
|
-
|
|
169
|
-
// Only the first query changed
|
|
170
|
-
expect(changedQueries2).toEqual([queryToken1]);
|
|
171
|
-
expect(optimisticQuerySet.queryResult(queryToken1)).toEqual(
|
|
172
|
-
"new query1 result",
|
|
173
|
-
);
|
|
174
|
-
expect(optimisticQuerySet.queryResult(queryToken2)).toEqual("query2 result");
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
test("optimistic updates stack", () => {
|
|
178
|
-
// Start our server query value at 2.
|
|
179
|
-
const queryToken = serializePathAndArgs("query", {});
|
|
180
|
-
const serverQueryResults: QueryResultsMap = new Map([
|
|
181
|
-
[
|
|
182
|
-
queryToken,
|
|
183
|
-
{
|
|
184
|
-
result: success(2),
|
|
185
|
-
udfPath: "query",
|
|
186
|
-
args: {},
|
|
187
|
-
},
|
|
188
|
-
],
|
|
189
|
-
]);
|
|
190
|
-
optimisticQuerySet.ingestQueryResultsFromServer(
|
|
191
|
-
serverQueryResults,
|
|
192
|
-
new Set(),
|
|
193
|
-
);
|
|
194
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(2);
|
|
195
|
-
|
|
196
|
-
// The first update adds 1.
|
|
197
|
-
optimisticQuerySet.applyOptimisticUpdate((localStore) => {
|
|
198
|
-
const oldResult = localStore.getQuery(anyApi.query.default, {});
|
|
199
|
-
localStore.setQuery(anyApi.query.default, {}, oldResult + 1);
|
|
200
|
-
}, 0);
|
|
201
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(3);
|
|
202
|
-
|
|
203
|
-
// The second update multiplies by 2.
|
|
204
|
-
optimisticQuerySet.applyOptimisticUpdate((localStore) => {
|
|
205
|
-
const oldResult = localStore.getQuery(anyApi.query.default, {});
|
|
206
|
-
localStore.setQuery(anyApi.query.default, {}, oldResult * 2);
|
|
207
|
-
}, 1);
|
|
208
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(6);
|
|
209
|
-
|
|
210
|
-
// Drop the first update. Now we're just multiplying by 2.
|
|
211
|
-
optimisticQuerySet.ingestQueryResultsFromServer(
|
|
212
|
-
serverQueryResults,
|
|
213
|
-
new Set([0]),
|
|
214
|
-
);
|
|
215
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(4);
|
|
216
|
-
// Drop the second update. We're back to the start
|
|
217
|
-
optimisticQuerySet.ingestQueryResultsFromServer(
|
|
218
|
-
serverQueryResults,
|
|
219
|
-
new Set([1]),
|
|
220
|
-
);
|
|
221
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(2);
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
test("optimistic updates can set query results to undefined", () => {
|
|
225
|
-
// This is an important use case because we want to allow devs to set queries
|
|
226
|
-
// to be "loading"
|
|
227
|
-
|
|
228
|
-
// set up a query
|
|
229
|
-
const queryToken = serializePathAndArgs("query", {});
|
|
230
|
-
const serverQueryResults: QueryResultsMap = new Map([
|
|
231
|
-
[
|
|
232
|
-
queryToken,
|
|
233
|
-
{
|
|
234
|
-
result: success("query value"),
|
|
235
|
-
udfPath: "query",
|
|
236
|
-
args: {},
|
|
237
|
-
},
|
|
238
|
-
],
|
|
239
|
-
]);
|
|
240
|
-
const changedQueries = optimisticQuerySet.ingestQueryResultsFromServer(
|
|
241
|
-
serverQueryResults,
|
|
242
|
-
new Set(),
|
|
243
|
-
);
|
|
244
|
-
expect(changedQueries).toEqual([queryToken]);
|
|
245
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual("query value");
|
|
246
|
-
|
|
247
|
-
// make it undefined
|
|
248
|
-
optimisticQuerySet.applyOptimisticUpdate((localStore) => {
|
|
249
|
-
localStore.setQuery(anyApi.query.default, {}, undefined);
|
|
250
|
-
}, 0);
|
|
251
|
-
expect(changedQueries).toEqual([queryToken]);
|
|
252
|
-
expect(optimisticQuerySet.queryResult(queryToken)).toEqual(undefined);
|
|
253
|
-
});
|