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,294 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NOTE: This test file is intentionally duplicated in dashboard-common.
|
|
3
|
-
* If you change this file, also update:
|
|
4
|
-
* npm-packages/dashboard-common/src/features/settings/components/formatEnvValueForDotfile.test.ts
|
|
5
|
-
*/
|
|
6
|
-
import { test, expect, describe } from "vitest";
|
|
7
|
-
import * as dotenv from "dotenv";
|
|
8
|
-
import { formatEnvValueForDotfile } from "./formatEnvValueForDotfile.js";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Attempts a round-trip: format the value for dotenv, then parse it back.
|
|
12
|
-
*/
|
|
13
|
-
function roundTrip(
|
|
14
|
-
originalValue: string,
|
|
15
|
-
name = "TEST_VAR",
|
|
16
|
-
): {
|
|
17
|
-
success: boolean;
|
|
18
|
-
parsedValue: string | undefined;
|
|
19
|
-
formatted: string;
|
|
20
|
-
warning: string | undefined;
|
|
21
|
-
envFileContent: string;
|
|
22
|
-
} {
|
|
23
|
-
const { formatted, warning } = formatEnvValueForDotfile(originalValue);
|
|
24
|
-
const envFileContent = `${name}=${formatted}`;
|
|
25
|
-
const parsed = dotenv.parse(envFileContent);
|
|
26
|
-
const parsedValue = parsed[name];
|
|
27
|
-
const success = parsedValue === originalValue;
|
|
28
|
-
return { success, parsedValue, formatted, warning, envFileContent };
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Values that should round-trip successfully through formatEnvValueForDotfile -> dotenv.parse */
|
|
32
|
-
const ROUND_TRIP_CASES: [string, string][] = [
|
|
33
|
-
// Basic values
|
|
34
|
-
["simple string", "hello"],
|
|
35
|
-
["string with spaces", "hello world"],
|
|
36
|
-
["empty string", ""],
|
|
37
|
-
["numeric string", "12345"],
|
|
38
|
-
|
|
39
|
-
// Newlines
|
|
40
|
-
["newline", "first\nsecond"],
|
|
41
|
-
["newline with trailing", "line1\nline2\n"],
|
|
42
|
-
["multiple newlines", "line1\nline2\nline3"],
|
|
43
|
-
["only newlines", "\n\n\n"],
|
|
44
|
-
["newline + single quotes", "first's\nsecond's"],
|
|
45
|
-
["newline + literal \\n", "first\\n\nsec\\nond"],
|
|
46
|
-
|
|
47
|
-
// Quotes
|
|
48
|
-
["wrapped in single quotes", "'single'"],
|
|
49
|
-
["wrapped in double quotes", '"double"'],
|
|
50
|
-
["nested quotes: single containing double", "'single \"and\" double'"],
|
|
51
|
-
["nested quotes: double containing single", "\"double 'and' single\""],
|
|
52
|
-
["single quote in middle", "it's a test"],
|
|
53
|
-
["double quote in middle", 'say "hello"'],
|
|
54
|
-
["starts with single quote", "'starts"],
|
|
55
|
-
["ends with single quote", "ends'"],
|
|
56
|
-
["starts with double quote", '"starts'],
|
|
57
|
-
["ends with double quote", 'ends"'],
|
|
58
|
-
["both quote types", 'it\'s a "test"'],
|
|
59
|
-
["both quote types + newline", 'it\'s a "test"\nline2'],
|
|
60
|
-
|
|
61
|
-
// Hash/comment character
|
|
62
|
-
["hash in middle", "before # after"],
|
|
63
|
-
["hash + newlines", "first # after\nsecond # after"],
|
|
64
|
-
["hash at start", "#hashtag"],
|
|
65
|
-
["hash + single quote", "before#'after'"],
|
|
66
|
-
["hash + double quote", 'before#"after"'],
|
|
67
|
-
["hash + newline + single quote", "first # 'after'\nsecond # 'after'"],
|
|
68
|
-
|
|
69
|
-
// Tabs and whitespace
|
|
70
|
-
["tab", "hello\tworld"],
|
|
71
|
-
["whitespace padding + newline", " both \n sides "],
|
|
72
|
-
|
|
73
|
-
// Control characters
|
|
74
|
-
["formfeed", "\f"],
|
|
75
|
-
["vertical tab", "\v"],
|
|
76
|
-
["escape char", "\x1b"],
|
|
77
|
-
["bell", "\x07"],
|
|
78
|
-
["DEL", "\x7f"],
|
|
79
|
-
["ANSI color sequence", "\x1b[31mred?\x1b[0m"],
|
|
80
|
-
["null byte", "before\x00after"],
|
|
81
|
-
["mixed control bytes", "\x01\x02\x03ABC\x7f\x1b"],
|
|
82
|
-
|
|
83
|
-
// Backticks
|
|
84
|
-
["backticks wrapping", "`command`"],
|
|
85
|
-
["backticks in middle", "run `command` here"],
|
|
86
|
-
|
|
87
|
-
// Backslashes
|
|
88
|
-
["backslash path", "path\\to\\file"],
|
|
89
|
-
["literal \\n", "hello\\nworld"],
|
|
90
|
-
["literal \\n + single quote", "it's\\nhello"],
|
|
91
|
-
["literal escape sequences", "backslash: \\n \\t \\r \\0 \\x41"],
|
|
92
|
-
|
|
93
|
-
// Dollar signs
|
|
94
|
-
["dollar sign variable", "$HOME/path"],
|
|
95
|
-
["dollar sign braces", "${HOME}/path"],
|
|
96
|
-
|
|
97
|
-
// Equals sign
|
|
98
|
-
["equals in value", "key=value=extra"],
|
|
99
|
-
|
|
100
|
-
// Unicode
|
|
101
|
-
["unicode", "hello 世界 🌍"],
|
|
102
|
-
["emoji", "🎉🎊🎁"],
|
|
103
|
-
|
|
104
|
-
// JSON
|
|
105
|
-
["JSON object", '{"key": "value", "nested": {"a": 1}}'],
|
|
106
|
-
["JSON multiline", '{\n "pretty": true,\n "indent": 2\n}\n'],
|
|
107
|
-
["JSON with \\n in string", '{"multiline":"line1\\nline2"}'],
|
|
108
|
-
|
|
109
|
-
// Config formats
|
|
110
|
-
["INI format", "key=value\nother=two\n"],
|
|
111
|
-
["YAML", 'a: 1\nb: "two"\nc:\n - x\n - y\n'],
|
|
112
|
-
|
|
113
|
-
// Real-world
|
|
114
|
-
[
|
|
115
|
-
"PEM private key",
|
|
116
|
-
"-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASC\n-----END PRIVATE KEY-----",
|
|
117
|
-
],
|
|
118
|
-
["URL with hash anchor", "https://example.com/path?key=value&foo=bar#anchor"],
|
|
119
|
-
["URL with encoded chars", "redis://:p%40ss@127.0.0.1:6379/0"],
|
|
120
|
-
["base64", "SGVsbG8gV29ybGQh"],
|
|
121
|
-
[
|
|
122
|
-
"JWT",
|
|
123
|
-
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U",
|
|
124
|
-
],
|
|
125
|
-
["SQL with quotes", "SELECT * FROM users WHERE name = 'John' AND age > 18"],
|
|
126
|
-
["regex", "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"],
|
|
127
|
-
];
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Known limitations - these cannot round-trip due to dotenv parser constraints.
|
|
131
|
-
* Format: [name, value, reason]
|
|
132
|
-
*/
|
|
133
|
-
const KNOWN_FAILURES: [string, string, string][] = [
|
|
134
|
-
// Carriage returns - dotenv strips \r
|
|
135
|
-
["CRLF", "line1\r\nline2", "dotenv strips \\r"],
|
|
136
|
-
["CR only", "classicmac\rline2\r", "dotenv strips \\r"],
|
|
137
|
-
["CRLF multi-line", "windows\r\nline2\r\n", "dotenv strips \\r"],
|
|
138
|
-
["mixed \\n\\t\\r", "escapes:\n\t\r", "dotenv strips \\r"],
|
|
139
|
-
|
|
140
|
-
// Impossible quoting scenarios
|
|
141
|
-
[
|
|
142
|
-
"newline + literal \\n + single quote",
|
|
143
|
-
"it's\\n\nsec\\nond",
|
|
144
|
-
"conflicting escape requirements",
|
|
145
|
-
],
|
|
146
|
-
[
|
|
147
|
-
"hash + newline + both quotes",
|
|
148
|
-
"first # 'after'\nsecond # \"after\"",
|
|
149
|
-
"no quoting strategy protects hash with both quote types",
|
|
150
|
-
],
|
|
151
|
-
[
|
|
152
|
-
"hash + literal \\n + single quote",
|
|
153
|
-
"value # 'test'\\n",
|
|
154
|
-
"single quotes needed for \\n but break on inner quotes",
|
|
155
|
-
],
|
|
156
|
-
];
|
|
157
|
-
|
|
158
|
-
describe("formatEnvValueForDotfile", () => {
|
|
159
|
-
describe("round-trip tests", () => {
|
|
160
|
-
describe("values that round-trip", () => {
|
|
161
|
-
test.each(ROUND_TRIP_CASES)("%s", (_, value) => {
|
|
162
|
-
expect(roundTrip(value).success).toBe(true);
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
describe("known limitations", () => {
|
|
167
|
-
test.each(KNOWN_FAILURES)("%s (%s)", (_, value) => {
|
|
168
|
-
expect(roundTrip(value).success).toBe(false);
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
describe("formatted output", () => {
|
|
174
|
-
test("newline uses single quotes", () => {
|
|
175
|
-
expect(roundTrip("first\nsecond").formatted).toBe("'first\nsecond'");
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
test("newline + single quotes uses double quotes with escaped newlines", () => {
|
|
179
|
-
expect(roundTrip("first's\nsecond's").formatted).toBe(
|
|
180
|
-
"\"first's\\nsecond's\"",
|
|
181
|
-
);
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
test("wrapped single quotes uses double quote wrapper", () => {
|
|
185
|
-
expect(roundTrip("'single'").formatted).toBe("\"'single'\"");
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
test("wrapped double quotes uses single quote wrapper", () => {
|
|
189
|
-
expect(roundTrip('"double"').formatted).toBe("'\"double\"'");
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
test("hash uses single quotes", () => {
|
|
193
|
-
expect(roundTrip("before # after").formatted).toBe("'before # after'");
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
test("hash + single quote uses double quotes", () => {
|
|
197
|
-
expect(roundTrip("before#'after'").formatted).toBe("\"before#'after'\"");
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
describe("warnings", () => {
|
|
202
|
-
test("no warning for simple hash", () => {
|
|
203
|
-
expect(roundTrip("api_key # secret").warning).toBeUndefined();
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
test("warns about newline + single quotes + literal \\n", () => {
|
|
207
|
-
expect(formatEnvValueForDotfile("it's\ncomplex\\n").warning).toContain(
|
|
208
|
-
"may not round-trip",
|
|
209
|
-
);
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
test("warns about unprotectable hash", () => {
|
|
213
|
-
expect(
|
|
214
|
-
formatEnvValueForDotfile("first # 'a'\nsecond # \"b\"").warning,
|
|
215
|
-
).toContain("#");
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
test("warns about carriage return", () => {
|
|
219
|
-
expect(formatEnvValueForDotfile("line1\r\nline2").warning).toContain(
|
|
220
|
-
"carriage return",
|
|
221
|
-
);
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
describe("permutation matrix", () => {
|
|
226
|
-
interface Flags {
|
|
227
|
-
newline: boolean;
|
|
228
|
-
hash: boolean;
|
|
229
|
-
slashN: boolean;
|
|
230
|
-
single: boolean;
|
|
231
|
-
double: boolean;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const build = (f: Flags): string => {
|
|
235
|
-
let v = "value";
|
|
236
|
-
if (f.newline) v += "\n";
|
|
237
|
-
if (f.hash) v += " # comment";
|
|
238
|
-
if (f.slashN) v += "\\n";
|
|
239
|
-
if (f.single) v += "'q'";
|
|
240
|
-
if (f.double) v += '"q"';
|
|
241
|
-
return v;
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
const describe_ = (f: Flags): string => {
|
|
245
|
-
const p: string[] = [];
|
|
246
|
-
if (f.newline) p.push("newline");
|
|
247
|
-
if (f.hash) p.push("hash");
|
|
248
|
-
if (f.slashN) p.push("\\n");
|
|
249
|
-
if (f.single) p.push("'");
|
|
250
|
-
if (f.double) p.push('"');
|
|
251
|
-
return p.length ? p.join("+") : "plain";
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
// Patterns that cannot round-trip
|
|
255
|
-
const badPatterns: Partial<Flags>[] = [
|
|
256
|
-
{ newline: true, slashN: true, single: true },
|
|
257
|
-
{ hash: true, single: true, double: true },
|
|
258
|
-
{ hash: true, slashN: true, single: true },
|
|
259
|
-
];
|
|
260
|
-
|
|
261
|
-
const matches = (f: Flags, p: Partial<Flags>) =>
|
|
262
|
-
(!p.newline || f.newline) &&
|
|
263
|
-
(!p.hash || f.hash) &&
|
|
264
|
-
(!p.slashN || f.slashN) &&
|
|
265
|
-
(!p.single || f.single) &&
|
|
266
|
-
(!p.double || f.double);
|
|
267
|
-
|
|
268
|
-
const isBad = (f: Flags) => badPatterns.some((p) => matches(f, p));
|
|
269
|
-
|
|
270
|
-
const all: Flags[] = [];
|
|
271
|
-
for (let i = 0; i < 32; i++) {
|
|
272
|
-
all.push({
|
|
273
|
-
newline: !!(i & 1),
|
|
274
|
-
hash: !!(i & 2),
|
|
275
|
-
slashN: !!(i & 4),
|
|
276
|
-
single: !!(i & 8),
|
|
277
|
-
double: !!(i & 16),
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
describe("supported", () => {
|
|
282
|
-
test.each(all.filter((f) => !isBad(f)).map((f) => [describe_(f), f]))(
|
|
283
|
-
"%s",
|
|
284
|
-
(_, f) => expect(roundTrip(build(f as Flags)).success).toBe(true),
|
|
285
|
-
);
|
|
286
|
-
});
|
|
287
|
-
|
|
288
|
-
describe("unsupported", () => {
|
|
289
|
-
test.each(all.filter(isBad).map((f) => [describe_(f), f]))("%s", (_, f) =>
|
|
290
|
-
expect(roundTrip(build(f as Flags)).success).toBe(false),
|
|
291
|
-
);
|
|
292
|
-
});
|
|
293
|
-
});
|
|
294
|
-
});
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import { afterAll, beforeAll, describe, expect, test } from "vitest";
|
|
2
|
-
import { Chalk } from "chalk";
|
|
3
|
-
import { formatTargetedDeployment } from "./announceDeploymentTarget.js";
|
|
4
|
-
import type { DetailedDeploymentCredentials } from "./api.js";
|
|
5
|
-
|
|
6
|
-
const chalk = new Chalk({ level: 3 });
|
|
7
|
-
|
|
8
|
-
function creds(
|
|
9
|
-
overrides: Partial<DetailedDeploymentCredentials> & {
|
|
10
|
-
fields?: Partial<
|
|
11
|
-
NonNullable<DetailedDeploymentCredentials["deploymentFields"]>
|
|
12
|
-
> | null;
|
|
13
|
-
} = {},
|
|
14
|
-
): DetailedDeploymentCredentials {
|
|
15
|
-
const { fields, ...rest } = overrides;
|
|
16
|
-
// Explicit `fields: null` clears the deployment fields entirely (the
|
|
17
|
-
// self-hosted / `--url+--admin-key` case). Otherwise merge with defaults.
|
|
18
|
-
const deploymentFields =
|
|
19
|
-
fields === null
|
|
20
|
-
? null
|
|
21
|
-
: {
|
|
22
|
-
deploymentName: "happy-animal-123",
|
|
23
|
-
deploymentType: "dev" as const,
|
|
24
|
-
teamSlug: "my-team",
|
|
25
|
-
projectSlug: "my-project",
|
|
26
|
-
reference: null,
|
|
27
|
-
isDefault: false,
|
|
28
|
-
...fields,
|
|
29
|
-
};
|
|
30
|
-
return {
|
|
31
|
-
adminKey: "test-admin-key",
|
|
32
|
-
url: "https://happy-animal-123.convex.cloud",
|
|
33
|
-
deploymentFields,
|
|
34
|
-
...rest,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
describe("formatTargetedDeployment", () => {
|
|
39
|
-
let originalIsTTY = process.stderr.isTTY;
|
|
40
|
-
beforeAll(() => {
|
|
41
|
-
process.stderr.isTTY = true;
|
|
42
|
-
});
|
|
43
|
-
afterAll(() => {
|
|
44
|
-
process.stderr.isTTY = originalIsTTY;
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe("standard terminal", () => {
|
|
48
|
-
test("default dev deployment shows reference and (dev) alias", () => {
|
|
49
|
-
expect(
|
|
50
|
-
formatTargetedDeployment(
|
|
51
|
-
null,
|
|
52
|
-
creds({
|
|
53
|
-
fields: {
|
|
54
|
-
deploymentType: "dev",
|
|
55
|
-
reference: "dev/nicolas",
|
|
56
|
-
isDefault: true,
|
|
57
|
-
},
|
|
58
|
-
}),
|
|
59
|
-
chalk,
|
|
60
|
-
),
|
|
61
|
-
).toMatchSnapshot();
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
test("non-default dev deployment shows reference without alias", () => {
|
|
65
|
-
expect(
|
|
66
|
-
formatTargetedDeployment(
|
|
67
|
-
null,
|
|
68
|
-
creds({
|
|
69
|
-
fields: {
|
|
70
|
-
deploymentType: "dev",
|
|
71
|
-
reference: "dev/staging-test",
|
|
72
|
-
isDefault: false,
|
|
73
|
-
},
|
|
74
|
-
}),
|
|
75
|
-
chalk,
|
|
76
|
-
),
|
|
77
|
-
).toMatchSnapshot();
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test("default prod deployment shows reference and (prod) alias", () => {
|
|
81
|
-
expect(
|
|
82
|
-
formatTargetedDeployment(
|
|
83
|
-
null,
|
|
84
|
-
creds({
|
|
85
|
-
fields: {
|
|
86
|
-
deploymentType: "prod",
|
|
87
|
-
reference: "production",
|
|
88
|
-
isDefault: true,
|
|
89
|
-
},
|
|
90
|
-
}),
|
|
91
|
-
chalk,
|
|
92
|
-
),
|
|
93
|
-
).toMatchSnapshot();
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
test("non-default prod deployment shows reference without alias", () => {
|
|
97
|
-
expect(
|
|
98
|
-
formatTargetedDeployment(
|
|
99
|
-
null,
|
|
100
|
-
creds({
|
|
101
|
-
fields: {
|
|
102
|
-
deploymentType: "prod",
|
|
103
|
-
reference: "prod-shadow",
|
|
104
|
-
isDefault: false,
|
|
105
|
-
},
|
|
106
|
-
}),
|
|
107
|
-
chalk,
|
|
108
|
-
),
|
|
109
|
-
).toMatchSnapshot();
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
test("preview deployment with team and project", () => {
|
|
113
|
-
expect(
|
|
114
|
-
formatTargetedDeployment(
|
|
115
|
-
null,
|
|
116
|
-
creds({
|
|
117
|
-
fields: {
|
|
118
|
-
deploymentType: "preview",
|
|
119
|
-
deploymentName: "happy-otter-123",
|
|
120
|
-
reference: "preview/pr-42",
|
|
121
|
-
},
|
|
122
|
-
}),
|
|
123
|
-
chalk,
|
|
124
|
-
),
|
|
125
|
-
).toMatchSnapshot();
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
test("preview deployment without a reference falls back to deploymentName", () => {
|
|
129
|
-
expect(
|
|
130
|
-
formatTargetedDeployment(
|
|
131
|
-
null,
|
|
132
|
-
creds({
|
|
133
|
-
fields: {
|
|
134
|
-
deploymentType: "preview",
|
|
135
|
-
deploymentName: "happy-otter-123",
|
|
136
|
-
reference: null,
|
|
137
|
-
},
|
|
138
|
-
}),
|
|
139
|
-
chalk,
|
|
140
|
-
),
|
|
141
|
-
).toMatchSnapshot();
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
test("custom deployment with team and project", () => {
|
|
145
|
-
expect(
|
|
146
|
-
formatTargetedDeployment(
|
|
147
|
-
null,
|
|
148
|
-
creds({
|
|
149
|
-
fields: {
|
|
150
|
-
deploymentType: "custom",
|
|
151
|
-
deploymentName: "playful-otter-999",
|
|
152
|
-
reference: "my-staging-shadow",
|
|
153
|
-
},
|
|
154
|
-
}),
|
|
155
|
-
chalk,
|
|
156
|
-
),
|
|
157
|
-
).toMatchSnapshot();
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
test("dev deployment without team/project slugs", () => {
|
|
161
|
-
expect(
|
|
162
|
-
formatTargetedDeployment(
|
|
163
|
-
null,
|
|
164
|
-
creds({ fields: { teamSlug: null, projectSlug: null } }),
|
|
165
|
-
chalk,
|
|
166
|
-
),
|
|
167
|
-
).toMatchSnapshot();
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
test("local deployment with team and project", () => {
|
|
171
|
-
expect(
|
|
172
|
-
formatTargetedDeployment(
|
|
173
|
-
null,
|
|
174
|
-
creds({
|
|
175
|
-
url: "http://127.0.0.1:3210",
|
|
176
|
-
fields: {
|
|
177
|
-
deploymentType: "local",
|
|
178
|
-
deploymentName: "local",
|
|
179
|
-
},
|
|
180
|
-
}),
|
|
181
|
-
chalk,
|
|
182
|
-
),
|
|
183
|
-
).toMatchSnapshot();
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
test("local deployment without team/project slugs", () => {
|
|
187
|
-
expect(
|
|
188
|
-
formatTargetedDeployment(
|
|
189
|
-
null,
|
|
190
|
-
creds({
|
|
191
|
-
url: "http://127.0.0.1:3210",
|
|
192
|
-
fields: {
|
|
193
|
-
deploymentType: "local",
|
|
194
|
-
deploymentName: "local",
|
|
195
|
-
teamSlug: null,
|
|
196
|
-
projectSlug: null,
|
|
197
|
-
},
|
|
198
|
-
}),
|
|
199
|
-
chalk,
|
|
200
|
-
),
|
|
201
|
-
).toMatchSnapshot();
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
test("anonymous deployment", () => {
|
|
205
|
-
expect(
|
|
206
|
-
formatTargetedDeployment(
|
|
207
|
-
null,
|
|
208
|
-
creds({
|
|
209
|
-
url: "http://127.0.0.1:3210",
|
|
210
|
-
fields: {
|
|
211
|
-
deploymentType: "anonymous",
|
|
212
|
-
deploymentName: "anonymous",
|
|
213
|
-
teamSlug: null,
|
|
214
|
-
projectSlug: null,
|
|
215
|
-
},
|
|
216
|
-
}),
|
|
217
|
-
chalk,
|
|
218
|
-
),
|
|
219
|
-
).toMatchSnapshot();
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
test("self-hosted deployment", () => {
|
|
223
|
-
expect(
|
|
224
|
-
formatTargetedDeployment(
|
|
225
|
-
"Deploying code to deployment:",
|
|
226
|
-
creds({
|
|
227
|
-
url: "https://convex.my-company.com",
|
|
228
|
-
fields: null,
|
|
229
|
-
}),
|
|
230
|
-
chalk,
|
|
231
|
-
),
|
|
232
|
-
).toMatchSnapshot();
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
describe("every header value", () => {
|
|
237
|
-
test("no header (used after logFinishedStep)", () => {
|
|
238
|
-
expect(formatTargetedDeployment(null, creds(), chalk)).toMatchSnapshot();
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
test("dev", () => {
|
|
242
|
-
expect(
|
|
243
|
-
formatTargetedDeployment(
|
|
244
|
-
"Developing against deployment:",
|
|
245
|
-
creds(),
|
|
246
|
-
chalk,
|
|
247
|
-
),
|
|
248
|
-
).toMatchSnapshot();
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
test("logs", () => {
|
|
252
|
-
expect(
|
|
253
|
-
formatTargetedDeployment("Showing logs of deployment:", creds(), chalk),
|
|
254
|
-
).toMatchSnapshot();
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
test("deploy", () => {
|
|
258
|
-
expect(
|
|
259
|
-
formatTargetedDeployment(
|
|
260
|
-
"Deploying code to deployment:",
|
|
261
|
-
creds(),
|
|
262
|
-
chalk,
|
|
263
|
-
),
|
|
264
|
-
).toMatchSnapshot();
|
|
265
|
-
});
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
describe("terminals with partial feature support", () => {
|
|
269
|
-
test("without colors", () => {
|
|
270
|
-
expect(
|
|
271
|
-
formatTargetedDeployment(null, creds(), new Chalk({ level: 0 })),
|
|
272
|
-
).toMatchSnapshot();
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
test("without link support", () => {
|
|
276
|
-
process.stderr.isTTY = false;
|
|
277
|
-
|
|
278
|
-
expect(formatTargetedDeployment(null, creds(), chalk)).toMatchSnapshot();
|
|
279
|
-
});
|
|
280
|
-
});
|
|
281
|
-
});
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { test, expect, describe, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { oneoffContext, Context } from "../../bundler/context.js";
|
|
3
|
-
import fs from "fs";
|
|
4
|
-
import os from "os";
|
|
5
|
-
import path from "path";
|
|
6
|
-
import { recursivelyDelete } from "./fsUtils.js";
|
|
7
|
-
|
|
8
|
-
describe("fsUtils", async () => {
|
|
9
|
-
let tmpDir: string;
|
|
10
|
-
let ctx: Context;
|
|
11
|
-
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
ctx = await oneoffContext({
|
|
14
|
-
url: undefined,
|
|
15
|
-
adminKey: undefined,
|
|
16
|
-
envFile: undefined,
|
|
17
|
-
});
|
|
18
|
-
tmpDir = fs.mkdtempSync(`${os.tmpdir()}${path.sep}`);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
describe("recursivelyDelete", () => {
|
|
22
|
-
test("deletes file", () => {
|
|
23
|
-
const file = path.join(tmpDir, "file");
|
|
24
|
-
ctx.fs.writeUtf8File(file, "contents");
|
|
25
|
-
expect(ctx.fs.exists(file)).toBe(true);
|
|
26
|
-
|
|
27
|
-
recursivelyDelete(ctx, file);
|
|
28
|
-
expect(ctx.fs.exists(file)).toBe(false);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test("throws an error on non-existent file", () => {
|
|
32
|
-
const nonexistentFile = path.join(tmpDir, "nonexistent_file");
|
|
33
|
-
expect(() => {
|
|
34
|
-
recursivelyDelete(ctx, nonexistentFile);
|
|
35
|
-
}).toThrow("ENOENT: no such file or directory");
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test("does not throw error if `force` is used", () => {
|
|
39
|
-
const nonexistentFile = path.join(tmpDir, "nonexistent_file");
|
|
40
|
-
recursivelyDelete(ctx, nonexistentFile, { force: true });
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
test("recursively deletes a directory", () => {
|
|
44
|
-
const dir = path.join(tmpDir, "dir");
|
|
45
|
-
ctx.fs.mkdir(dir);
|
|
46
|
-
const nestedFile = path.join(dir, "nested_file");
|
|
47
|
-
ctx.fs.writeUtf8File(nestedFile, "content");
|
|
48
|
-
const nestedDir = path.join(dir, "nested_dir");
|
|
49
|
-
ctx.fs.mkdir(nestedDir);
|
|
50
|
-
|
|
51
|
-
expect(ctx.fs.exists(dir)).toBe(true);
|
|
52
|
-
|
|
53
|
-
recursivelyDelete(ctx, dir);
|
|
54
|
-
expect(ctx.fs.exists(dir)).toBe(false);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
test("`recursive` and `force` work together", () => {
|
|
58
|
-
const nonexistentDir = path.join(tmpDir, "nonexistent_dir");
|
|
59
|
-
// Shouldn't throw an exception.
|
|
60
|
-
recursivelyDelete(ctx, nonexistentDir, { force: true });
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
afterEach(() => {
|
|
65
|
-
fs.rmSync(tmpDir, { recursive: true });
|
|
66
|
-
});
|
|
67
|
-
});
|