convex 1.26.0-alpha.2 → 1.26.0-alpha.4
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 +43 -0
- package/dist/browser.bundle.js +102 -25
- package/dist/browser.bundle.js.map +2 -2
- package/dist/cjs/browser/http_client.js +2 -0
- package/dist/cjs/browser/http_client.js.map +2 -2
- package/dist/cjs/browser/logging.js +4 -4
- package/dist/cjs/browser/logging.js.map +2 -2
- package/dist/cjs/browser/simple_client.js +25 -0
- package/dist/cjs/browser/simple_client.js.map +2 -2
- package/dist/cjs/browser/sync/client.js +41 -2
- package/dist/cjs/browser/sync/client.js.map +2 -2
- package/dist/cjs/browser/sync/remote_query_set.js.map +2 -2
- package/dist/cjs/browser/sync/request_manager.js +8 -1
- package/dist/cjs/browser/sync/request_manager.js.map +2 -2
- package/dist/cjs/browser/sync/web_socket_manager.js +5 -1
- package/dist/cjs/browser/sync/web_socket_manager.js.map +2 -2
- package/dist/cjs/bundler/context.js.map +1 -1
- package/dist/cjs/bundler/debugBundle.js +31 -6
- package/dist/cjs/bundler/debugBundle.js.map +2 -2
- package/dist/cjs/bundler/depgraph.js +24 -26
- package/dist/cjs/bundler/depgraph.js.map +3 -3
- package/dist/cjs/cli/codegen_templates/api.js +51 -0
- package/dist/cjs/cli/codegen_templates/api.js.map +2 -2
- package/dist/cjs/cli/codegen_templates/readme.js +4 -4
- package/dist/cjs/cli/codegen_templates/readme.js.map +1 -1
- package/dist/cjs/cli/configure.js +11 -6
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/dev.js +5 -0
- package/dist/cjs/cli/dev.js.map +2 -2
- package/dist/cjs/cli/index.js +7 -3
- package/dist/cjs/cli/index.js.map +3 -3
- package/dist/cjs/cli/lib/codegen.js +33 -24
- package/dist/cjs/cli/lib/codegen.js.map +3 -3
- package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
- package/dist/cjs/cli/lib/envvars.js +29 -0
- package/dist/cjs/cli/lib/envvars.js.map +2 -2
- package/dist/cjs/cli/lib/localDeployment/anonymous.js +21 -7
- package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
- package/dist/cjs/cli/lib/mcp/tools/run.js +1 -1
- package/dist/cjs/cli/lib/mcp/tools/run.js.map +2 -2
- package/dist/cjs/cli/lib/networkTest.js +8 -2
- package/dist/cjs/cli/lib/networkTest.js.map +2 -2
- package/dist/cjs/cli/lib/usage.js +4 -4
- package/dist/cjs/cli/lib/usage.js.map +1 -1
- package/dist/cjs/cli/lib/utils/prompts.js +4 -4
- package/dist/cjs/cli/lib/utils/prompts.js.map +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/nextjs/index.js +9 -1
- package/dist/cjs/nextjs/index.js.map +2 -2
- package/dist/cjs/react/client.js +37 -0
- package/dist/cjs/react/client.js.map +2 -2
- package/dist/cjs/react/index.js +1 -0
- package/dist/cjs/react/index.js.map +2 -2
- package/dist/cjs/server/database.js.map +1 -1
- package/dist/cjs/server/impl/database_impl.js +26 -20
- package/dist/cjs/server/impl/database_impl.js.map +2 -2
- package/dist/cjs/server/impl/registration_impl.js +10 -2
- package/dist/cjs/server/impl/registration_impl.js.map +2 -2
- package/dist/cjs/values/validators.js +19 -0
- package/dist/cjs/values/validators.js.map +2 -2
- package/dist/cjs-types/browser/http_client.d.ts +2 -0
- package/dist/cjs-types/browser/http_client.d.ts.map +1 -1
- package/dist/cjs-types/browser/logging.d.ts +7 -1
- package/dist/cjs-types/browser/logging.d.ts.map +1 -1
- package/dist/cjs-types/browser/simple_client.d.ts +19 -0
- package/dist/cjs-types/browser/simple_client.d.ts.map +1 -1
- package/dist/cjs-types/browser/sync/client.d.ts +21 -0
- package/dist/cjs-types/browser/sync/client.d.ts.map +1 -1
- package/dist/cjs-types/browser/sync/client_node_test_helpers.d.ts +5 -0
- package/dist/cjs-types/browser/sync/client_node_test_helpers.d.ts.map +1 -1
- package/dist/cjs-types/browser/sync/remote_query_set.d.ts +2 -0
- package/dist/cjs-types/browser/sync/remote_query_set.d.ts.map +1 -1
- package/dist/cjs-types/browser/sync/request_manager.d.ts +2 -1
- package/dist/cjs-types/browser/sync/request_manager.d.ts.map +1 -1
- package/dist/cjs-types/browser/sync/web_socket_manager.d.ts +2 -1
- package/dist/cjs-types/browser/sync/web_socket_manager.d.ts.map +1 -1
- package/dist/cjs-types/bundler/debugBundle.d.ts +4 -2
- package/dist/cjs-types/bundler/debugBundle.d.ts.map +1 -1
- package/dist/cjs-types/bundler/depgraph.d.ts +5 -4
- package/dist/cjs-types/bundler/depgraph.d.ts.map +1 -1
- package/dist/cjs-types/cli/codegen.d.ts +1 -1
- package/dist/cjs-types/cli/codegen_templates/api.d.ts.map +1 -1
- package/dist/cjs-types/cli/configure.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploy.d.ts +1 -1
- package/dist/cjs-types/cli/dev.d.ts +1 -1
- package/dist/cjs-types/cli/dev.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/codegen.d.ts +1 -0
- package/dist/cjs-types/cli/lib/codegen.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/envvars.d.ts +1 -0
- package/dist/cjs-types/cli/lib/envvars.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/networkTest.d.ts.map +1 -1
- package/dist/cjs-types/cli/run.d.ts +1 -1
- package/dist/cjs-types/index.d.ts +1 -1
- package/dist/cjs-types/nextjs/index.d.ts +2 -2
- package/dist/cjs-types/react/client.d.ts +30 -0
- package/dist/cjs-types/react/client.d.ts.map +1 -1
- package/dist/cjs-types/react/index.d.ts +1 -1
- package/dist/cjs-types/react/index.d.ts.map +1 -1
- package/dist/cjs-types/server/database.d.ts.map +1 -1
- package/dist/cjs-types/server/database_api.test.d.ts +2 -0
- package/dist/cjs-types/server/database_api.test.d.ts.map +1 -0
- package/dist/cjs-types/server/impl/database_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/cjs-types/values/validators.d.ts.map +1 -1
- package/dist/cli.bundle.cjs +291 -97
- package/dist/cli.bundle.cjs.map +3 -3
- package/dist/esm/browser/http_client.js +2 -0
- package/dist/esm/browser/http_client.js.map +2 -2
- package/dist/esm/browser/logging.js +3 -3
- package/dist/esm/browser/logging.js.map +2 -2
- package/dist/esm/browser/simple_client.js +25 -0
- package/dist/esm/browser/simple_client.js.map +2 -2
- package/dist/esm/browser/sync/client.js +41 -2
- package/dist/esm/browser/sync/client.js.map +2 -2
- package/dist/esm/browser/sync/remote_query_set.js.map +2 -2
- package/dist/esm/browser/sync/request_manager.js +8 -1
- package/dist/esm/browser/sync/request_manager.js.map +2 -2
- package/dist/esm/browser/sync/web_socket_manager.js +5 -1
- package/dist/esm/browser/sync/web_socket_manager.js.map +2 -2
- package/dist/esm/bundler/context.js.map +1 -1
- package/dist/esm/bundler/debugBundle.js +33 -7
- package/dist/esm/bundler/debugBundle.js.map +2 -2
- package/dist/esm/bundler/depgraph.js +24 -26
- package/dist/esm/bundler/depgraph.js.map +3 -3
- package/dist/esm/cli/codegen_templates/api.js +51 -0
- package/dist/esm/cli/codegen_templates/api.js.map +2 -2
- package/dist/esm/cli/codegen_templates/readme.js +4 -4
- package/dist/esm/cli/codegen_templates/readme.js.map +1 -1
- package/dist/esm/cli/configure.js +12 -8
- package/dist/esm/cli/configure.js.map +2 -2
- package/dist/esm/cli/dev.js +5 -0
- package/dist/esm/cli/dev.js.map +2 -2
- package/dist/esm/cli/index.js +7 -3
- package/dist/esm/cli/index.js.map +2 -2
- package/dist/esm/cli/lib/codegen.js +33 -25
- package/dist/esm/cli/lib/codegen.js.map +3 -3
- package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
- package/dist/esm/cli/lib/envvars.js +28 -0
- package/dist/esm/cli/lib/envvars.js.map +2 -2
- package/dist/esm/cli/lib/localDeployment/anonymous.js +21 -7
- package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
- package/dist/esm/cli/lib/mcp/tools/run.js +2 -2
- package/dist/esm/cli/lib/mcp/tools/run.js.map +2 -2
- package/dist/esm/cli/lib/networkTest.js +9 -3
- package/dist/esm/cli/lib/networkTest.js.map +2 -2
- package/dist/esm/cli/lib/usage.js +4 -4
- package/dist/esm/cli/lib/usage.js.map +1 -1
- package/dist/esm/cli/lib/utils/prompts.js +4 -4
- package/dist/esm/cli/lib/utils/prompts.js.map +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/nextjs/index.js +9 -1
- package/dist/esm/nextjs/index.js.map +2 -2
- package/dist/esm/react/client.js +37 -1
- package/dist/esm/react/client.js.map +2 -2
- package/dist/esm/react/index.js +2 -1
- package/dist/esm/react/index.js.map +2 -2
- package/dist/esm/server/impl/database_impl.js +26 -20
- package/dist/esm/server/impl/database_impl.js.map +2 -2
- package/dist/esm/server/impl/registration_impl.js +10 -2
- package/dist/esm/server/impl/registration_impl.js.map +2 -2
- package/dist/esm/values/validators.js +19 -0
- package/dist/esm/values/validators.js.map +2 -2
- package/dist/esm-types/browser/http_client.d.ts +2 -0
- package/dist/esm-types/browser/http_client.d.ts.map +1 -1
- package/dist/esm-types/browser/logging.d.ts +7 -1
- package/dist/esm-types/browser/logging.d.ts.map +1 -1
- package/dist/esm-types/browser/simple_client.d.ts +19 -0
- package/dist/esm-types/browser/simple_client.d.ts.map +1 -1
- package/dist/esm-types/browser/sync/client.d.ts +21 -0
- package/dist/esm-types/browser/sync/client.d.ts.map +1 -1
- package/dist/esm-types/browser/sync/client_node_test_helpers.d.ts +5 -0
- package/dist/esm-types/browser/sync/client_node_test_helpers.d.ts.map +1 -1
- package/dist/esm-types/browser/sync/remote_query_set.d.ts +2 -0
- package/dist/esm-types/browser/sync/remote_query_set.d.ts.map +1 -1
- package/dist/esm-types/browser/sync/request_manager.d.ts +2 -1
- package/dist/esm-types/browser/sync/request_manager.d.ts.map +1 -1
- package/dist/esm-types/browser/sync/web_socket_manager.d.ts +2 -1
- package/dist/esm-types/browser/sync/web_socket_manager.d.ts.map +1 -1
- package/dist/esm-types/bundler/debugBundle.d.ts +4 -2
- package/dist/esm-types/bundler/debugBundle.d.ts.map +1 -1
- package/dist/esm-types/bundler/depgraph.d.ts +5 -4
- package/dist/esm-types/bundler/depgraph.d.ts.map +1 -1
- package/dist/esm-types/cli/codegen.d.ts +1 -1
- package/dist/esm-types/cli/codegen_templates/api.d.ts.map +1 -1
- package/dist/esm-types/cli/configure.d.ts.map +1 -1
- package/dist/esm-types/cli/deploy.d.ts +1 -1
- package/dist/esm-types/cli/dev.d.ts +1 -1
- package/dist/esm-types/cli/dev.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/codegen.d.ts +1 -0
- package/dist/esm-types/cli/lib/codegen.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/envvars.d.ts +1 -0
- package/dist/esm-types/cli/lib/envvars.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/networkTest.d.ts.map +1 -1
- package/dist/esm-types/cli/run.d.ts +1 -1
- package/dist/esm-types/index.d.ts +1 -1
- package/dist/esm-types/nextjs/index.d.ts +2 -2
- package/dist/esm-types/react/client.d.ts +30 -0
- package/dist/esm-types/react/client.d.ts.map +1 -1
- package/dist/esm-types/react/index.d.ts +1 -1
- package/dist/esm-types/react/index.d.ts.map +1 -1
- package/dist/esm-types/server/database.d.ts.map +1 -1
- package/dist/esm-types/server/database_api.test.d.ts +2 -0
- package/dist/esm-types/server/database_api.test.d.ts.map +1 -0
- package/dist/esm-types/server/impl/database_impl.d.ts.map +1 -1
- package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/esm-types/values/validators.d.ts.map +1 -1
- package/dist/react.bundle.js +172 -84
- package/dist/react.bundle.js.map +4 -4
- package/package.json +3 -3
- package/src/browser/.claude/settings.local.json +1 -1
- package/src/browser/http_client.ts +2 -0
- package/src/browser/logging.ts +10 -3
- package/src/browser/simple_client.ts +29 -0
- package/src/browser/sync/client.ts +54 -1
- package/src/browser/sync/client_node.test.ts +415 -0
- package/src/browser/sync/client_node_test_helpers.ts +19 -0
- package/src/browser/sync/remote_query_set.ts +2 -0
- package/src/browser/sync/request_manager.test.ts +59 -1
- package/src/browser/sync/request_manager.ts +10 -1
- package/src/browser/sync/web_socket_manager.ts +4 -0
- package/src/bundler/context.ts +1 -1
- package/src/bundler/debugBundle.ts +32 -4
- package/src/bundler/depgraph.ts +39 -41
- package/src/cli/codegen_templates/api.ts +54 -0
- package/src/cli/codegen_templates/readme.ts +4 -4
- package/src/cli/configure.ts +27 -21
- package/src/cli/dev.ts +6 -0
- package/src/cli/index.ts +12 -3
- package/src/cli/lib/codegen.ts +11 -1
- package/src/cli/lib/deploymentSelection.ts +2 -0
- package/src/cli/lib/envvars.ts +42 -0
- package/src/cli/lib/localDeployment/anonymous.ts +25 -7
- package/src/cli/lib/mcp/tools/run.ts +2 -2
- package/src/cli/lib/networkTest.ts +10 -3
- package/src/cli/lib/usage.ts +4 -4
- package/src/cli/lib/utils/prompts.ts +4 -4
- package/src/index.ts +1 -1
- package/src/nextjs/index.ts +21 -3
- package/src/react/client.ts +62 -1
- package/src/react/index.ts +1 -0
- package/src/server/database.ts +71 -0
- package/src/server/database_api.test.ts +360 -0
- package/src/server/impl/database_impl.ts +37 -17
- package/src/server/impl/registration_impl.ts +10 -2
- package/src/values/validator.test.ts +71 -0
- package/src/values/validators.ts +24 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.25.3
|
|
4
|
+
|
|
5
|
+
- Experimental `convex dev --once --debug-node-apis` debug flag for tracing
|
|
6
|
+
through imports to find Node.js APIs imported from non-"use node" convex
|
|
7
|
+
endpoint files.
|
|
8
|
+
|
|
9
|
+
- Experimental `CONVEX_AGENT_MODE=anonymous npx convex dev` for a
|
|
10
|
+
non-interactive anonymous development flow when not logged in.
|
|
11
|
+
|
|
12
|
+
- Simplify the `Logger` interface of Convex clients making it easier to replace.
|
|
13
|
+
|
|
14
|
+
- Reactive `ConnectionState` via `useConvexConnectionState` hook. How often this
|
|
15
|
+
value updates may change in the future if more information is added to
|
|
16
|
+
`ConnectionState`.
|
|
17
|
+
|
|
18
|
+
- Escape JavaScript keywords in codegen, fixing issues with files in the convex
|
|
19
|
+
folder named things like convex/delete.ts.
|
|
20
|
+
|
|
21
|
+
- Warn when the explicit value `undefined` is passed to Next.js server-side
|
|
22
|
+
helpers, indicating the issue may have been an unset environment variable.
|
|
23
|
+
This may become an error in the future.
|
|
24
|
+
|
|
25
|
+
- Error closer to the call site when invalid validators are contructed.
|
|
26
|
+
|
|
27
|
+
## 1.25.2
|
|
28
|
+
|
|
29
|
+
- Increase a network timeout that was causing Node.js v20+ issues on slow
|
|
30
|
+
connections, good old Happy Eyeballs
|
|
31
|
+
https://github.com/nodejs/node/issues/54359.
|
|
32
|
+
|
|
33
|
+
## 1.25.1
|
|
34
|
+
|
|
35
|
+
- Print more error info in `npx convex network-test`.
|
|
36
|
+
|
|
37
|
+
- Crash when it looks like an environment variable is missing:
|
|
38
|
+
`CONVEX_DEPLOY_KEY=project:me:new-project|eyABCD0= npx convex` parses as
|
|
39
|
+
`CONVEX_DEPLOY_KEY=project:me:new-project | eyABCD0='' npx convex` but when
|
|
40
|
+
was meant was
|
|
41
|
+
`CONVEX_DEPLOY_KEY='project:me:new-project|eyABCD0=' npx convex`.
|
|
42
|
+
|
|
43
|
+
Crash when an environment variable like `ey...0=` is present to surface errors
|
|
44
|
+
like this quicker.
|
|
45
|
+
|
|
3
46
|
## 1.25.0
|
|
4
47
|
|
|
5
48
|
To upgrade to this release you'll need to upgrade any Convex components you use.
|
package/dist/browser.bundle.js
CHANGED
|
@@ -28,7 +28,7 @@ var convex = (() => {
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
// src/index.ts
|
|
31
|
-
var version = "1.26.0-alpha.
|
|
31
|
+
var version = "1.26.0-alpha.4";
|
|
32
32
|
|
|
33
33
|
// src/values/base64.ts
|
|
34
34
|
var base64_exports = {};
|
|
@@ -481,7 +481,7 @@ var convex = (() => {
|
|
|
481
481
|
return "?";
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
|
-
var
|
|
484
|
+
var DefaultLogger = class {
|
|
485
485
|
_onLogLineFuncs;
|
|
486
486
|
_verbose;
|
|
487
487
|
constructor(options) {
|
|
@@ -525,7 +525,7 @@ var convex = (() => {
|
|
|
525
525
|
}
|
|
526
526
|
};
|
|
527
527
|
function instantiateDefaultLogger(options) {
|
|
528
|
-
const logger = new
|
|
528
|
+
const logger = new DefaultLogger(options);
|
|
529
529
|
logger.addLogLineListener((level, ...args) => {
|
|
530
530
|
switch (level) {
|
|
531
531
|
case "debug":
|
|
@@ -549,7 +549,7 @@ var convex = (() => {
|
|
|
549
549
|
return logger;
|
|
550
550
|
}
|
|
551
551
|
function instantiateNoopLogger(options) {
|
|
552
|
-
return new
|
|
552
|
+
return new DefaultLogger(options);
|
|
553
553
|
}
|
|
554
554
|
function logForFunction(logger, type, source, udfPath, message) {
|
|
555
555
|
const prefix = prefix_for_source(source);
|
|
@@ -897,8 +897,9 @@ var convex = (() => {
|
|
|
897
897
|
|
|
898
898
|
// src/browser/sync/request_manager.ts
|
|
899
899
|
var RequestManager = class {
|
|
900
|
-
constructor(logger) {
|
|
900
|
+
constructor(logger, markConnectionStateDirty) {
|
|
901
901
|
this.logger = logger;
|
|
902
|
+
this.markConnectionStateDirty = markConnectionStateDirty;
|
|
902
903
|
this.inflightRequests = /* @__PURE__ */ new Map();
|
|
903
904
|
this.requestsOlderThanRestart = /* @__PURE__ */ new Set();
|
|
904
905
|
}
|
|
@@ -919,6 +920,7 @@ var convex = (() => {
|
|
|
919
920
|
this.inflightActionsCount++;
|
|
920
921
|
}
|
|
921
922
|
});
|
|
923
|
+
this.markConnectionStateDirty();
|
|
922
924
|
return result;
|
|
923
925
|
}
|
|
924
926
|
/**
|
|
@@ -971,6 +973,7 @@ var convex = (() => {
|
|
|
971
973
|
} else if (requestInfo.message.type === "Mutation") {
|
|
972
974
|
this.inflightMutationsCount--;
|
|
973
975
|
}
|
|
976
|
+
this.markConnectionStateDirty();
|
|
974
977
|
return { requestId: response.requestId, result };
|
|
975
978
|
}
|
|
976
979
|
requestInfo.status = {
|
|
@@ -998,6 +1001,9 @@ var convex = (() => {
|
|
|
998
1001
|
this.requestsOlderThanRestart.delete(requestId);
|
|
999
1002
|
}
|
|
1000
1003
|
}
|
|
1004
|
+
if (completeRequests.size > 0) {
|
|
1005
|
+
this.markConnectionStateDirty();
|
|
1006
|
+
}
|
|
1001
1007
|
return completeRequests;
|
|
1002
1008
|
}
|
|
1003
1009
|
restart() {
|
|
@@ -1025,6 +1031,7 @@ var convex = (() => {
|
|
|
1025
1031
|
});
|
|
1026
1032
|
}
|
|
1027
1033
|
}
|
|
1034
|
+
this.markConnectionStateDirty();
|
|
1028
1035
|
return allMessages;
|
|
1029
1036
|
}
|
|
1030
1037
|
resume() {
|
|
@@ -1576,6 +1583,25 @@ var convex = (() => {
|
|
|
1576
1583
|
return "Unknown";
|
|
1577
1584
|
}
|
|
1578
1585
|
var WebSocketManager = class {
|
|
1586
|
+
constructor(uri, callbacks, webSocketConstructor, logger, markConnectionStateDirty) {
|
|
1587
|
+
this.markConnectionStateDirty = markConnectionStateDirty;
|
|
1588
|
+
this.webSocketConstructor = webSocketConstructor;
|
|
1589
|
+
this.socket = { state: "disconnected" };
|
|
1590
|
+
this.connectionCount = 0;
|
|
1591
|
+
this.lastCloseReason = "InitialConnect";
|
|
1592
|
+
this.defaultInitialBackoff = 1e3;
|
|
1593
|
+
this.maxBackoff = 16e3;
|
|
1594
|
+
this.retries = 0;
|
|
1595
|
+
this.serverInactivityThreshold = 3e4;
|
|
1596
|
+
this.reconnectDueToServerInactivityTimeout = null;
|
|
1597
|
+
this.uri = uri;
|
|
1598
|
+
this.onOpen = callbacks.onOpen;
|
|
1599
|
+
this.onResume = callbacks.onResume;
|
|
1600
|
+
this.onMessage = callbacks.onMessage;
|
|
1601
|
+
this.onServerDisconnectError = callbacks.onServerDisconnectError;
|
|
1602
|
+
this.logger = logger;
|
|
1603
|
+
this.connect();
|
|
1604
|
+
}
|
|
1579
1605
|
socket;
|
|
1580
1606
|
connectionCount;
|
|
1581
1607
|
_hasEverConnected = false;
|
|
@@ -1597,29 +1623,12 @@ var convex = (() => {
|
|
|
1597
1623
|
webSocketConstructor;
|
|
1598
1624
|
logger;
|
|
1599
1625
|
onServerDisconnectError;
|
|
1600
|
-
constructor(uri, callbacks, webSocketConstructor, logger) {
|
|
1601
|
-
this.webSocketConstructor = webSocketConstructor;
|
|
1602
|
-
this.socket = { state: "disconnected" };
|
|
1603
|
-
this.connectionCount = 0;
|
|
1604
|
-
this.lastCloseReason = "InitialConnect";
|
|
1605
|
-
this.defaultInitialBackoff = 1e3;
|
|
1606
|
-
this.maxBackoff = 16e3;
|
|
1607
|
-
this.retries = 0;
|
|
1608
|
-
this.serverInactivityThreshold = 3e4;
|
|
1609
|
-
this.reconnectDueToServerInactivityTimeout = null;
|
|
1610
|
-
this.uri = uri;
|
|
1611
|
-
this.onOpen = callbacks.onOpen;
|
|
1612
|
-
this.onResume = callbacks.onResume;
|
|
1613
|
-
this.onMessage = callbacks.onMessage;
|
|
1614
|
-
this.onServerDisconnectError = callbacks.onServerDisconnectError;
|
|
1615
|
-
this.logger = logger;
|
|
1616
|
-
this.connect();
|
|
1617
|
-
}
|
|
1618
1626
|
setSocketState(state) {
|
|
1619
1627
|
this.socket = state;
|
|
1620
1628
|
this._logVerbose(
|
|
1621
1629
|
`socket state changed: ${this.socket.state}, paused: ${"paused" in this.socket ? this.socket.paused : void 0}`
|
|
1622
1630
|
);
|
|
1631
|
+
this.markConnectionStateDirty();
|
|
1623
1632
|
}
|
|
1624
1633
|
connect() {
|
|
1625
1634
|
if (this.socket.state === "terminated") {
|
|
@@ -1673,6 +1682,7 @@ var convex = (() => {
|
|
|
1673
1682
|
const response = this.onMessage(serverMessage);
|
|
1674
1683
|
if (response.hasSyncedPastLastReconnect) {
|
|
1675
1684
|
this.retries = 0;
|
|
1685
|
+
this.markConnectionStateDirty();
|
|
1676
1686
|
}
|
|
1677
1687
|
};
|
|
1678
1688
|
ws.onclose = (event) => {
|
|
@@ -1753,6 +1763,7 @@ var convex = (() => {
|
|
|
1753
1763
|
scheduleReconnect(reason) {
|
|
1754
1764
|
this.socket = { state: "disconnected" };
|
|
1755
1765
|
const backoff = this.nextBackoff(reason);
|
|
1766
|
+
this.markConnectionStateDirty();
|
|
1756
1767
|
this.logger.log(`Attempting reconnect in ${backoff}ms`);
|
|
1757
1768
|
setTimeout(() => this.connect(), backoff);
|
|
1758
1769
|
}
|
|
@@ -2388,6 +2399,9 @@ var convex = (() => {
|
|
|
2388
2399
|
debug;
|
|
2389
2400
|
logger;
|
|
2390
2401
|
maxObservedTimestamp;
|
|
2402
|
+
connectionStateSubscribers = /* @__PURE__ */ new Map();
|
|
2403
|
+
nextConnectionStateSubscriberId = 0;
|
|
2404
|
+
_lastPublishedConnectionState;
|
|
2391
2405
|
/**
|
|
2392
2406
|
* @param address - The url of your Convex deployment, often provided
|
|
2393
2407
|
* by an environment variable. E.g. `https://small-mouse-123.convex.cloud`.
|
|
@@ -2437,7 +2451,10 @@ var convex = (() => {
|
|
|
2437
2451
|
(queryId) => this.state.queryPath(queryId),
|
|
2438
2452
|
this.logger
|
|
2439
2453
|
);
|
|
2440
|
-
this.requestManager = new RequestManager(
|
|
2454
|
+
this.requestManager = new RequestManager(
|
|
2455
|
+
this.logger,
|
|
2456
|
+
this.markConnectionStateDirty
|
|
2457
|
+
);
|
|
2441
2458
|
this.authenticationManager = new AuthenticationManager(
|
|
2442
2459
|
this.state,
|
|
2443
2460
|
{
|
|
@@ -2588,7 +2605,8 @@ var convex = (() => {
|
|
|
2588
2605
|
onServerDisconnectError: options.onServerDisconnectError
|
|
2589
2606
|
},
|
|
2590
2607
|
webSocketConstructor,
|
|
2591
|
-
this.logger
|
|
2608
|
+
this.logger,
|
|
2609
|
+
this.markConnectionStateDirty
|
|
2592
2610
|
);
|
|
2593
2611
|
this.mark("convexClientConstructed");
|
|
2594
2612
|
}
|
|
@@ -2805,6 +2823,38 @@ var convex = (() => {
|
|
|
2805
2823
|
inflightActions: this.requestManager.inflightActions()
|
|
2806
2824
|
};
|
|
2807
2825
|
}
|
|
2826
|
+
/**
|
|
2827
|
+
* Call this whenever the connection state may have changed in a way that could
|
|
2828
|
+
* require publishing it. Schedules a possibly update.
|
|
2829
|
+
*/
|
|
2830
|
+
markConnectionStateDirty = () => {
|
|
2831
|
+
void Promise.resolve().then(() => {
|
|
2832
|
+
const curConnectionState = this.connectionState();
|
|
2833
|
+
if (JSON.stringify(curConnectionState) !== JSON.stringify(this._lastPublishedConnectionState)) {
|
|
2834
|
+
this._lastPublishedConnectionState = curConnectionState;
|
|
2835
|
+
for (const cb of this.connectionStateSubscribers.values()) {
|
|
2836
|
+
cb(curConnectionState);
|
|
2837
|
+
}
|
|
2838
|
+
}
|
|
2839
|
+
});
|
|
2840
|
+
};
|
|
2841
|
+
/**
|
|
2842
|
+
* Subscribe to the {@link ConnectionState} between the client and the Convex
|
|
2843
|
+
* backend, calling a callback each time it changes.
|
|
2844
|
+
*
|
|
2845
|
+
* Subscribed callbacks will be called when any part of ConnectionState changes.
|
|
2846
|
+
* ConnectionState may grow in future versions (e.g. to provide a array of
|
|
2847
|
+
* inflight requests) in which case callbacks would be called more frequently.
|
|
2848
|
+
*
|
|
2849
|
+
* @returns An unsubscribe function to stop listening.
|
|
2850
|
+
*/
|
|
2851
|
+
subscribeToConnectionState(cb) {
|
|
2852
|
+
const id = this.nextConnectionStateSubscriberId++;
|
|
2853
|
+
this.connectionStateSubscribers.set(id, cb);
|
|
2854
|
+
return () => {
|
|
2855
|
+
this.connectionStateSubscribers.delete(id);
|
|
2856
|
+
};
|
|
2857
|
+
}
|
|
2808
2858
|
/**
|
|
2809
2859
|
* Execute a mutation function.
|
|
2810
2860
|
*
|
|
@@ -3275,6 +3325,31 @@ var convex = (() => {
|
|
|
3275
3325
|
);
|
|
3276
3326
|
});
|
|
3277
3327
|
}
|
|
3328
|
+
/**
|
|
3329
|
+
* Get the current {@link ConnectionState} between the client and the Convex
|
|
3330
|
+
* backend.
|
|
3331
|
+
*
|
|
3332
|
+
* @returns The {@link ConnectionState} with the Convex backend.
|
|
3333
|
+
*/
|
|
3334
|
+
connectionState() {
|
|
3335
|
+
if (this.disabled) throw new Error("ConvexClient is disabled");
|
|
3336
|
+
return this.client.connectionState();
|
|
3337
|
+
}
|
|
3338
|
+
/**
|
|
3339
|
+
* Subscribe to the {@link ConnectionState} between the client and the Convex
|
|
3340
|
+
* backend, calling a callback each time it changes.
|
|
3341
|
+
*
|
|
3342
|
+
* Subscribed callbacks will be called when any part of ConnectionState changes.
|
|
3343
|
+
* ConnectionState may grow in future versions (e.g. to provide a array of
|
|
3344
|
+
* inflight requests) in which case callbacks would be called more frequently.
|
|
3345
|
+
*
|
|
3346
|
+
* @returns An unsubscribe function to stop listening.
|
|
3347
|
+
*/
|
|
3348
|
+
subscribeToConnectionState(cb) {
|
|
3349
|
+
if (this.disabled) return () => {
|
|
3350
|
+
};
|
|
3351
|
+
return this.client.subscribeToConnectionState(cb);
|
|
3352
|
+
}
|
|
3278
3353
|
};
|
|
3279
3354
|
|
|
3280
3355
|
// src/browser/http_client.ts
|
|
@@ -3302,6 +3377,8 @@ var convex = (() => {
|
|
|
3302
3377
|
* - `logger` - A logger or a boolean. If not provided, logs to the console.
|
|
3303
3378
|
* You can construct your own logger to customize logging to log elsewhere
|
|
3304
3379
|
* or not log at all, or use `false` as a shorthand for a no-op logger.
|
|
3380
|
+
* A logger is an object with 4 methods: log(), warn(), error(), and logVerbose().
|
|
3381
|
+
* These methods can receive multiple arguments of any types, like console.log().
|
|
3305
3382
|
* - `auth` - A JWT containing identity claims accessible in Convex functions.
|
|
3306
3383
|
* This identity may expire so it may be necessary to call `setAuth()` later,
|
|
3307
3384
|
* but for short-lived clients it's convenient to specify this value here.
|