convex 1.24.0 → 1.25.0-alpha.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +36 -5
  2. package/dist/browser.bundle.js +13 -6
  3. package/dist/browser.bundle.js.map +2 -2
  4. package/dist/cjs/browser/http_client.js +1 -1
  5. package/dist/cjs/browser/http_client.js.map +2 -2
  6. package/dist/cjs/browser/logging.js +4 -0
  7. package/dist/cjs/browser/logging.js.map +2 -2
  8. package/dist/cjs/browser/simple_client.js +7 -3
  9. package/dist/cjs/browser/simple_client.js.map +2 -2
  10. package/dist/cjs/browser/sync/client.js +1 -1
  11. package/dist/cjs/browser/sync/client.js.map +2 -2
  12. package/dist/cjs/bundler/index.js +5 -2
  13. package/dist/cjs/bundler/index.js.map +2 -2
  14. package/dist/cjs/cli/codegen_templates/tsconfig.js +1 -1
  15. package/dist/cjs/cli/codegen_templates/tsconfig.js.map +1 -1
  16. package/dist/cjs/cli/lib/convexImport.js +9 -3
  17. package/dist/cjs/cli/lib/convexImport.js.map +2 -2
  18. package/dist/cjs/index.js +1 -1
  19. package/dist/cjs/index.js.map +1 -1
  20. package/dist/cjs/react/client.js +1 -1
  21. package/dist/cjs/react/client.js.map +2 -2
  22. package/dist/cjs/server/impl/query_impl.js +6 -0
  23. package/dist/cjs/server/impl/query_impl.js.map +2 -2
  24. package/dist/cjs-types/browser/http_client.d.ts +1 -1
  25. package/dist/cjs-types/browser/http_client.d.ts.map +1 -1
  26. package/dist/cjs-types/browser/logging.d.ts +3 -0
  27. package/dist/cjs-types/browser/logging.d.ts.map +1 -1
  28. package/dist/cjs-types/browser/simple_client.d.ts +3 -2
  29. package/dist/cjs-types/browser/simple_client.d.ts.map +1 -1
  30. package/dist/cjs-types/browser/sync/client.d.ts +4 -4
  31. package/dist/cjs-types/browser/sync/client.d.ts.map +1 -1
  32. package/dist/cjs-types/bundler/index.d.ts.map +1 -1
  33. package/dist/cjs-types/cli/lib/convexImport.d.ts.map +1 -1
  34. package/dist/cjs-types/index.d.ts +1 -1
  35. package/dist/cjs-types/index.d.ts.map +1 -1
  36. package/dist/cjs-types/react/client.d.ts.map +1 -1
  37. package/dist/cjs-types/server/impl/query_impl.d.ts.map +1 -1
  38. package/dist/cli.bundle.cjs +21 -9
  39. package/dist/cli.bundle.cjs.map +2 -2
  40. package/dist/esm/browser/http_client.js +6 -2
  41. package/dist/esm/browser/http_client.js.map +2 -2
  42. package/dist/esm/browser/logging.js +3 -0
  43. package/dist/esm/browser/logging.js.map +2 -2
  44. package/dist/esm/browser/simple_client.js +7 -3
  45. package/dist/esm/browser/simple_client.js.map +2 -2
  46. package/dist/esm/browser/sync/client.js +2 -1
  47. package/dist/esm/browser/sync/client.js.map +2 -2
  48. package/dist/esm/bundler/index.js +5 -2
  49. package/dist/esm/bundler/index.js.map +2 -2
  50. package/dist/esm/cli/codegen_templates/tsconfig.js +1 -1
  51. package/dist/esm/cli/codegen_templates/tsconfig.js.map +1 -1
  52. package/dist/esm/cli/lib/convexImport.js +9 -3
  53. package/dist/esm/cli/lib/convexImport.js.map +2 -2
  54. package/dist/esm/index.js +1 -1
  55. package/dist/esm/index.js.map +1 -1
  56. package/dist/esm/react/client.js +5 -2
  57. package/dist/esm/react/client.js.map +2 -2
  58. package/dist/esm/server/impl/query_impl.js +6 -0
  59. package/dist/esm/server/impl/query_impl.js.map +2 -2
  60. package/dist/esm-types/browser/http_client.d.ts +1 -1
  61. package/dist/esm-types/browser/http_client.d.ts.map +1 -1
  62. package/dist/esm-types/browser/logging.d.ts +3 -0
  63. package/dist/esm-types/browser/logging.d.ts.map +1 -1
  64. package/dist/esm-types/browser/simple_client.d.ts +3 -2
  65. package/dist/esm-types/browser/simple_client.d.ts.map +1 -1
  66. package/dist/esm-types/browser/sync/client.d.ts +4 -4
  67. package/dist/esm-types/browser/sync/client.d.ts.map +1 -1
  68. package/dist/esm-types/bundler/index.d.ts.map +1 -1
  69. package/dist/esm-types/cli/lib/convexImport.d.ts.map +1 -1
  70. package/dist/esm-types/index.d.ts +1 -1
  71. package/dist/esm-types/index.d.ts.map +1 -1
  72. package/dist/esm-types/react/client.d.ts.map +1 -1
  73. package/dist/esm-types/server/impl/query_impl.d.ts.map +1 -1
  74. package/dist/react.bundle.js +6 -3
  75. package/dist/react.bundle.js.map +2 -2
  76. package/package.json +6 -6
  77. package/src/browser/http_client.ts +16 -3
  78. package/src/browser/logging.ts +4 -0
  79. package/src/browser/simple_client.ts +7 -3
  80. package/src/browser/sync/client.ts +10 -6
  81. package/src/bundler/index.ts +4 -2
  82. package/src/cli/codegen_templates/tsconfig.ts +1 -1
  83. package/src/cli/lib/convexImport.ts +15 -4
  84. package/src/index.ts +1 -1
  85. package/src/react/client.ts +10 -3
  86. package/src/server/impl/query_impl.ts +7 -0
package/CHANGELOG.md CHANGED
@@ -1,16 +1,47 @@
1
1
  # Changelog
2
2
 
3
- ## Unreleased
3
+ ## 1.24.1
4
4
 
5
- - The `npx convex login --login-flow paste` flag can be used to explicitly opt
6
- into the manual token paste login method.
5
+ - Accept `true` and `false` as values for logger in all clients, making
6
+ disabling logs from convex functions run on a development deployment simpler:
7
+ it's no longer necessary write your own no-op logger.
8
+
9
+ ## 1.24.0
7
10
 
8
- - Drop support for React 17 and remove use of `unstable_batchedUpdates` as react
11
+ - Drop support for React 17 and remove use of `unstable_batchedUpdates` as React
9
12
  18 introduced
10
13
  [Automatic batching](https://react.dev/blog/2022/03/29/react-v18#new-feature-automatic-batching)
11
14
 
15
+ If you use React 17 and choose to override the change in supported peer
16
+ dependencies (please don't), you may notice query updates are no longer
17
+ batched: it's possible for one Convex query update to occur on a different
18
+ React render than another causing single frames of discrepancies in UI or
19
+ worse, errors if you have code that relies on the client-side consistency like
20
+ client-side joins.
21
+
22
+ You may also notice nothing. Without batched updates some queries may be a few
23
+ milliseconds ahead of other queries, which is still much less than the
24
+ differences in other data fetching solutions, e.g. React Query or SWR, in
25
+ non-batched mode.
26
+
12
27
  - Remove dependency on `react-dom`, making it possible to use on "React Native
13
- only" projects.
28
+ only" projects without overriding any dependency resolution.
29
+
30
+ - New optimistic update helpers for paginated queries: three helpers
31
+ `insertAtTop`, `insertAtBottomIfLoaded`, and `insertAtPosition`.
32
+
33
+ - The `npx convex login --login-flow paste` flag can be used to explicitly opt
34
+ into the manual token paste login method.
35
+
36
+ - Fix MCP servers for self-hosted deployments: previously MCP CLI commands were
37
+ attempting to contact a cloud deployment (which didn't exist) in self-hosted
38
+ setups.
39
+
40
+ - New `compareValues` function exported from `convex/values` which matches
41
+ Convex values semantics as implemented in backends. This function should match
42
+ the Rust implementation in backend (and it property-tested in pursuit of
43
+ this!) but in the event of discrepancies the Rust implementation should be
44
+ considered authoritative.
14
45
 
15
46
  ## 1.23.0
16
47
 
@@ -28,7 +28,7 @@ var convex = (() => {
28
28
  });
29
29
 
30
30
  // src/index.ts
31
- var version = "1.24.0";
31
+ var version = "1.25.0-alpha.0";
32
32
 
33
33
  // src/values/base64.ts
34
34
  var base64_exports = {};
@@ -548,6 +548,9 @@ var convex = (() => {
548
548
  });
549
549
  return logger;
550
550
  }
551
+ function instantiateNoopLogger(options) {
552
+ return new Logger(options);
553
+ }
551
554
  function logForFunction(logger, type, source, udfPath, message) {
552
555
  const prefix = prefix_for_source(source);
553
556
  if (typeof message === "object") {
@@ -2367,7 +2370,7 @@ var convex = (() => {
2367
2370
  webSocketConstructor = webSocketConstructor || WebSocket;
2368
2371
  this.debug = options.reportDebugInfoToConvex ?? false;
2369
2372
  this.address = address;
2370
- this.logger = options.logger ?? instantiateDefaultLogger({ verbose: options.verbose ?? false });
2373
+ this.logger = options.logger === false ? instantiateNoopLogger({ verbose: options.verbose ?? false }) : options.logger !== true && options.logger ? options.logger : instantiateDefaultLogger({ verbose: options.verbose ?? false });
2371
2374
  const i = address.search("://");
2372
2375
  if (i === -1) {
2373
2376
  throw new Error("Provided address was not an absolute URL.");
@@ -2971,7 +2974,7 @@ var convex = (() => {
2971
2974
  // A synthetic server event to run callbacks the first time
2972
2975
  callNewListenersWithCurrentValuesTimer;
2973
2976
  _closed;
2974
- disabled;
2977
+ _disabled;
2975
2978
  /**
2976
2979
  * Once closed no registered callbacks will fire again.
2977
2980
  */
@@ -2982,6 +2985,9 @@ var convex = (() => {
2982
2985
  if (this._client) return this._client;
2983
2986
  throw new Error("ConvexClient is disabled");
2984
2987
  }
2988
+ get disabled() {
2989
+ return this._disabled;
2990
+ }
2985
2991
  /**
2986
2992
  * Construct a client and immediately initiate a WebSocket connection to the passed address.
2987
2993
  *
@@ -2993,7 +2999,7 @@ var convex = (() => {
2993
2999
  }
2994
3000
  const { disabled, ...baseOptions } = options;
2995
3001
  this._closed = false;
2996
- this.disabled = !!disabled;
3002
+ this._disabled = !!disabled;
2997
3003
  if (defaultWebSocketConstructor && !("webSocketConstructor" in baseOptions) && typeof WebSocket === "undefined") {
2998
3004
  baseOptions.webSocketConstructor = defaultWebSocketConstructor;
2999
3005
  }
@@ -3108,10 +3114,11 @@ var convex = (() => {
3108
3114
  * `fetchToken` will be called automatically again if a token expires.
3109
3115
  * `fetchToken` should return `null` if the token cannot be retrieved, for example
3110
3116
  * when the user's rights were permanently revoked.
3111
- * @param fetchToken - an async function returning the JWT-encoded OpenID Connect Identity Token
3117
+ * @param fetchToken - an async function returning the JWT (typically an OpenID Connect Identity Token)
3112
3118
  * @param onChange - a callback that will be called when the authentication status changes
3113
3119
  */
3114
3120
  setAuth(fetchToken, onChange) {
3121
+ if (this.disabled) return;
3115
3122
  this.client.setAuth(
3116
3123
  fetchToken,
3117
3124
  onChange ?? (() => {
@@ -3246,7 +3253,7 @@ var convex = (() => {
3246
3253
  if (opts.skipConvexDeploymentUrlCheck !== true) {
3247
3254
  validateDeploymentUrl(address);
3248
3255
  }
3249
- this.logger = opts.logger ?? instantiateDefaultLogger({ verbose: false });
3256
+ this.logger = options?.logger === false ? instantiateNoopLogger({ verbose: false }) : options?.logger !== true && options?.logger ? options.logger : instantiateDefaultLogger({ verbose: false });
3250
3257
  this.address = address;
3251
3258
  this.debug = true;
3252
3259
  }