convex 1.41.0 → 1.42.1

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 (191) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/browser.bundle.js +24 -6
  3. package/dist/browser.bundle.js.map +2 -2
  4. package/dist/cjs/browser/simple_client-node.js +85 -27
  5. package/dist/cjs/browser/simple_client-node.js.map +3 -3
  6. package/dist/cjs/browser/sync/authentication_manager.js +21 -4
  7. package/dist/cjs/browser/sync/authentication_manager.js.map +2 -2
  8. package/dist/cjs/browser/sync/client.js +2 -1
  9. package/dist/cjs/browser/sync/client.js.map +2 -2
  10. package/dist/cjs/cli/env.js +12 -5
  11. package/dist/cjs/cli/env.js.map +2 -2
  12. package/dist/cjs/cli/envDefault.js +12 -7
  13. package/dist/cjs/cli/envDefault.js.map +2 -2
  14. package/dist/cjs/cli/insights.js +11 -1
  15. package/dist/cjs/cli/insights.js.map +2 -2
  16. package/dist/cjs/cli/lib/env.js +5 -1
  17. package/dist/cjs/cli/lib/env.js.map +2 -2
  18. package/dist/cjs/cli/lib/login.js +16 -12
  19. package/dist/cjs/cli/lib/login.js.map +2 -2
  20. package/dist/cjs/cli/lib/logs.js +4 -1
  21. package/dist/cjs/cli/lib/logs.js.map +2 -2
  22. package/dist/cjs/cli/lib/run.js +27 -2
  23. package/dist/cjs/cli/lib/run.js.map +2 -2
  24. package/dist/cjs/cli/lib/typecheck.js +28 -10
  25. package/dist/cjs/cli/lib/typecheck.js.map +2 -2
  26. package/dist/cjs/cli/lib/utils/utils.js +30 -0
  27. package/dist/cjs/cli/lib/utils/utils.js.map +2 -2
  28. package/dist/cjs/cli/program.js +2 -1
  29. package/dist/cjs/cli/program.js.map +2 -2
  30. package/dist/cjs/cli/project.js +27 -0
  31. package/dist/cjs/cli/project.js.map +7 -0
  32. package/dist/cjs/cli/projectCreate.js +90 -0
  33. package/dist/cjs/cli/projectCreate.js.map +7 -0
  34. package/dist/cjs/index.js +1 -1
  35. package/dist/cjs/index.js.map +1 -1
  36. package/dist/cjs/server/database.js.map +1 -1
  37. package/dist/cjs/server/impl/meta_impl.js +6 -6
  38. package/dist/cjs/server/impl/meta_impl.js.map +2 -2
  39. package/dist/cjs/server/impl/registration_impl.js +9 -4
  40. package/dist/cjs/server/impl/registration_impl.js.map +2 -2
  41. package/dist/cjs/server/index.js.map +2 -2
  42. package/dist/cjs/server/meta.js.map +1 -1
  43. package/dist/cjs/server/query.js.map +1 -1
  44. package/dist/cjs/server/registration.js.map +1 -1
  45. package/dist/cjs/server/storage.js.map +1 -1
  46. package/dist/cjs/server/system_fields.js.map +1 -1
  47. package/dist/cjs-types/browser/sync/authentication_manager.d.ts +2 -0
  48. package/dist/cjs-types/browser/sync/authentication_manager.d.ts.map +1 -1
  49. package/dist/cjs-types/browser/sync/client.d.ts +16 -0
  50. package/dist/cjs-types/browser/sync/client.d.ts.map +1 -1
  51. package/dist/cjs-types/cli/env.d.ts.map +1 -1
  52. package/dist/cjs-types/cli/envDefault.d.ts.map +1 -1
  53. package/dist/cjs-types/cli/insights.d.ts +1 -0
  54. package/dist/cjs-types/cli/insights.d.ts.map +1 -1
  55. package/dist/cjs-types/cli/lib/env.d.ts +3 -1
  56. package/dist/cjs-types/cli/lib/env.d.ts.map +1 -1
  57. package/dist/cjs-types/cli/lib/env.test.d.ts +2 -0
  58. package/dist/cjs-types/cli/lib/env.test.d.ts.map +1 -0
  59. package/dist/cjs-types/cli/lib/login.d.ts.map +1 -1
  60. package/dist/cjs-types/cli/lib/logs.d.ts +1 -1
  61. package/dist/cjs-types/cli/lib/logs.d.ts.map +1 -1
  62. package/dist/cjs-types/cli/lib/run.d.ts +1 -1
  63. package/dist/cjs-types/cli/lib/run.d.ts.map +1 -1
  64. package/dist/cjs-types/cli/lib/utils/utils.d.ts +10 -0
  65. package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
  66. package/dist/cjs-types/cli/program.d.ts.map +1 -1
  67. package/dist/cjs-types/cli/project.d.ts +3 -0
  68. package/dist/cjs-types/cli/project.d.ts.map +1 -0
  69. package/dist/cjs-types/cli/projectCreate.d.ts +5 -0
  70. package/dist/cjs-types/cli/projectCreate.d.ts.map +1 -0
  71. package/dist/cjs-types/index.d.ts +1 -1
  72. package/dist/cjs-types/server/database.d.ts +21 -3
  73. package/dist/cjs-types/server/database.d.ts.map +1 -1
  74. package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -1
  75. package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
  76. package/dist/cjs-types/server/index.d.ts +1 -1
  77. package/dist/cjs-types/server/index.d.ts.map +1 -1
  78. package/dist/cjs-types/server/meta.d.ts +10 -0
  79. package/dist/cjs-types/server/meta.d.ts.map +1 -1
  80. package/dist/cjs-types/server/query.d.ts +1 -1
  81. package/dist/cjs-types/server/registration.d.ts +15 -3
  82. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  83. package/dist/cjs-types/server/storage.d.ts +20 -3
  84. package/dist/cjs-types/server/storage.d.ts.map +1 -1
  85. package/dist/cli.bundle.cjs +1099 -634
  86. package/dist/cli.bundle.cjs.map +4 -4
  87. package/dist/esm/browser/simple_client-node.js +85 -27
  88. package/dist/esm/browser/simple_client-node.js.map +3 -3
  89. package/dist/esm/browser/sync/authentication_manager.js +21 -4
  90. package/dist/esm/browser/sync/authentication_manager.js.map +2 -2
  91. package/dist/esm/browser/sync/client.js +2 -1
  92. package/dist/esm/browser/sync/client.js.map +2 -2
  93. package/dist/esm/cli/env.js +12 -5
  94. package/dist/esm/cli/env.js.map +2 -2
  95. package/dist/esm/cli/envDefault.js +12 -7
  96. package/dist/esm/cli/envDefault.js.map +2 -2
  97. package/dist/esm/cli/insights.js +11 -1
  98. package/dist/esm/cli/insights.js.map +2 -2
  99. package/dist/esm/cli/lib/env.js +5 -1
  100. package/dist/esm/cli/lib/env.js.map +2 -2
  101. package/dist/esm/cli/lib/login.js +18 -13
  102. package/dist/esm/cli/lib/login.js.map +2 -2
  103. package/dist/esm/cli/lib/logs.js +5 -2
  104. package/dist/esm/cli/lib/logs.js.map +2 -2
  105. package/dist/esm/cli/lib/run.js +32 -3
  106. package/dist/esm/cli/lib/run.js.map +2 -2
  107. package/dist/esm/cli/lib/typecheck.js +28 -10
  108. package/dist/esm/cli/lib/typecheck.js.map +3 -3
  109. package/dist/esm/cli/lib/utils/utils.js +29 -0
  110. package/dist/esm/cli/lib/utils/utils.js.map +2 -2
  111. package/dist/esm/cli/program.js +2 -1
  112. package/dist/esm/cli/program.js.map +2 -2
  113. package/dist/esm/cli/project.js +5 -0
  114. package/dist/esm/cli/project.js.map +7 -0
  115. package/dist/esm/cli/projectCreate.js +68 -0
  116. package/dist/esm/cli/projectCreate.js.map +7 -0
  117. package/dist/esm/index.js +1 -1
  118. package/dist/esm/index.js.map +1 -1
  119. package/dist/esm/server/impl/meta_impl.js +6 -6
  120. package/dist/esm/server/impl/meta_impl.js.map +2 -2
  121. package/dist/esm/server/impl/registration_impl.js +9 -4
  122. package/dist/esm/server/impl/registration_impl.js.map +2 -2
  123. package/dist/esm/server/index.js.map +2 -2
  124. package/dist/esm-types/browser/sync/authentication_manager.d.ts +2 -0
  125. package/dist/esm-types/browser/sync/authentication_manager.d.ts.map +1 -1
  126. package/dist/esm-types/browser/sync/client.d.ts +16 -0
  127. package/dist/esm-types/browser/sync/client.d.ts.map +1 -1
  128. package/dist/esm-types/cli/env.d.ts.map +1 -1
  129. package/dist/esm-types/cli/envDefault.d.ts.map +1 -1
  130. package/dist/esm-types/cli/insights.d.ts +1 -0
  131. package/dist/esm-types/cli/insights.d.ts.map +1 -1
  132. package/dist/esm-types/cli/lib/env.d.ts +3 -1
  133. package/dist/esm-types/cli/lib/env.d.ts.map +1 -1
  134. package/dist/esm-types/cli/lib/env.test.d.ts +2 -0
  135. package/dist/esm-types/cli/lib/env.test.d.ts.map +1 -0
  136. package/dist/esm-types/cli/lib/login.d.ts.map +1 -1
  137. package/dist/esm-types/cli/lib/logs.d.ts +1 -1
  138. package/dist/esm-types/cli/lib/logs.d.ts.map +1 -1
  139. package/dist/esm-types/cli/lib/run.d.ts +1 -1
  140. package/dist/esm-types/cli/lib/run.d.ts.map +1 -1
  141. package/dist/esm-types/cli/lib/utils/utils.d.ts +10 -0
  142. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  143. package/dist/esm-types/cli/program.d.ts.map +1 -1
  144. package/dist/esm-types/cli/project.d.ts +3 -0
  145. package/dist/esm-types/cli/project.d.ts.map +1 -0
  146. package/dist/esm-types/cli/projectCreate.d.ts +5 -0
  147. package/dist/esm-types/cli/projectCreate.d.ts.map +1 -0
  148. package/dist/esm-types/index.d.ts +1 -1
  149. package/dist/esm-types/server/database.d.ts +21 -3
  150. package/dist/esm-types/server/database.d.ts.map +1 -1
  151. package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -1
  152. package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
  153. package/dist/esm-types/server/index.d.ts +1 -1
  154. package/dist/esm-types/server/index.d.ts.map +1 -1
  155. package/dist/esm-types/server/meta.d.ts +10 -0
  156. package/dist/esm-types/server/meta.d.ts.map +1 -1
  157. package/dist/esm-types/server/query.d.ts +1 -1
  158. package/dist/esm-types/server/registration.d.ts +15 -3
  159. package/dist/esm-types/server/registration.d.ts.map +1 -1
  160. package/dist/esm-types/server/storage.d.ts +20 -3
  161. package/dist/esm-types/server/storage.d.ts.map +1 -1
  162. package/dist/react.bundle.js +24 -6
  163. package/dist/react.bundle.js.map +2 -2
  164. package/package.json +4 -4
  165. package/src/browser/sync/authentication_manager.ts +42 -14
  166. package/src/browser/sync/client.ts +17 -0
  167. package/src/cli/env.ts +16 -6
  168. package/src/cli/envDefault.ts +13 -7
  169. package/src/cli/insights.ts +12 -0
  170. package/src/cli/lib/env.test.ts +60 -0
  171. package/src/cli/lib/env.ts +9 -1
  172. package/src/cli/lib/login.ts +18 -18
  173. package/src/cli/lib/logs.ts +7 -2
  174. package/src/cli/lib/run.ts +37 -3
  175. package/src/cli/lib/typecheck.ts +26 -10
  176. package/src/cli/lib/utils/utils.ts +56 -0
  177. package/src/cli/program.ts +2 -0
  178. package/src/cli/project.ts +7 -0
  179. package/src/cli/projectCreate.ts +99 -0
  180. package/src/index.ts +1 -1
  181. package/src/react/ConvexAuthState.test.tsx +145 -0
  182. package/src/server/database.ts +21 -3
  183. package/src/server/impl/meta_impl.ts +7 -6
  184. package/src/server/impl/registration_impl.ts +11 -5
  185. package/src/server/index.ts +1 -0
  186. package/src/server/meta.ts +10 -0
  187. package/src/server/query.ts +1 -1
  188. package/src/server/registration.test.ts +25 -1
  189. package/src/server/registration.ts +16 -1
  190. package/src/server/storage.ts +22 -3
  191. package/src/server/system_fields.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.42.1
4
+
5
+ - Fixed an issue where the CLI would be unable to find the `tsgo` binary in
6
+ newer versions of `@typescript/native-preview`.
7
+ - Added a new `initialAuthTokenReuse` option to `ConvexReactClient` that
8
+ prevents extra function calls when users re-authenticate.
9
+
10
+ ## 1.42.0
11
+
12
+ - Added a new `npx convex project create` command that can be used
13
+ to create new projects programmatically.
14
+ - Added a new `--names-only` flag to `npx convex env list`
15
+ (and `npx convex env default list`). This flag shows the names of
16
+ the env vars that are set, without the values. It can be useful
17
+ to let AI coding agents know the variables that are set on a deployment,
18
+ without giving them the actual values.
19
+ - Added a new `useStaleSnapshot` option to the arguments for `runQuery`.
20
+ This is an advanced feature that can be used to allow mutations
21
+ to avoid optimistic concurrency control (OCC) conflicts in some cases
22
+ where they can commit even though they depend on conflicting reads.
23
+ This change allows us to improve the performance of some of the
24
+ official Convex components, including Workpool.
25
+ - Improved the documentation of `db.*` methods to more clearly explain
26
+ the difference between the old APIs without table names
27
+ (e.g. `db.get(userId)`) and the new APIs with table names
28
+ (e.g. `db.get("users", userId)`).
29
+ - Fixed an issue where the CLI would not surface permission errors
30
+ correctly when the user or token doesn’t have permission to do something.
31
+ - Exposes the current scheduled function's ID as `scheduledFunctionId` in
32
+ `ctx.meta.getRequestMetadata()`.
33
+ - `npx convex insights` has a new `--json` flag that makes the command
34
+ output easier to parse programmatically.
35
+ - File storage: marked a few TypeScript types in `convex/server` as `@deprecated`
36
+ (`FileMetadata`, `FileStorageId`, `StorageId`). These types are used
37
+ only by file storage APIs that were deprecated in `convex@1.6.0`,
38
+ so we also marked them as `@deprecated` for clarity.
39
+ - Bumps the `ws` peer dependency to avoid a vulnerable range.
40
+
3
41
  ## 1.41.0
4
42
  - It is now possible to set limits on nested queries and mutations
5
43
  with the new `transactionLimits` option in `runQuery`/`runMutation`.
@@ -29,7 +29,7 @@ var convex = (() => {
29
29
  });
30
30
 
31
31
  // src/index.ts
32
- var version = "1.41.0";
32
+ var version = "1.42.1";
33
33
 
34
34
  // src/values/base64.ts
35
35
  var base64_exports = {};
@@ -2325,6 +2325,7 @@ var convex = (() => {
2325
2325
  clearAuth;
2326
2326
  logger;
2327
2327
  refreshTokenLeewaySeconds;
2328
+ initialAuthTokenReuse;
2328
2329
  // Track last value to avoid redundant calls
2329
2330
  lastRefreshChange;
2330
2331
  // Number of times we have attempted to confirm the latest token. We retry up
@@ -2340,6 +2341,7 @@ var convex = (() => {
2340
2341
  this.clearAuth = callbacks.clearAuth;
2341
2342
  this.logger = config.logger;
2342
2343
  this.refreshTokenLeewaySeconds = config.refreshTokenLeewaySeconds;
2344
+ this.initialAuthTokenReuse = config.initialAuthTokenReuse;
2343
2345
  this.lastRefreshChange = false;
2344
2346
  }
2345
2347
  notifyRefreshChange(isRefreshing) {
@@ -2395,7 +2397,12 @@ var convex = (() => {
2395
2397
  this.syncState.markAuthCompletion();
2396
2398
  if (this.authState.state === "waitingForServerConfirmationOfCachedToken") {
2397
2399
  this._logVerbose("server confirmed auth token is valid");
2398
- void this.refetchToken();
2400
+ const cachedToken = this.syncState.getAuth()?.value;
2401
+ if (this.initialAuthTokenReuse && cachedToken) {
2402
+ this.scheduleTokenRefetch(cachedToken, serverMessage.clientClockSkew);
2403
+ } else {
2404
+ void this.refetchToken();
2405
+ }
2399
2406
  this.authState.config.onAuthChange(true);
2400
2407
  return;
2401
2408
  }
@@ -2526,7 +2533,7 @@ var convex = (() => {
2526
2533
  );
2527
2534
  this.tryRestartSocket();
2528
2535
  }
2529
- scheduleTokenRefetch(token) {
2536
+ scheduleTokenRefetch(token, clientClockSkewMs) {
2530
2537
  if (this.authState.state === "noAuth") {
2531
2538
  return;
2532
2539
  }
@@ -2544,13 +2551,23 @@ var convex = (() => {
2544
2551
  );
2545
2552
  return;
2546
2553
  }
2547
- const tokenValiditySeconds = exp - iat;
2548
- if (tokenValiditySeconds <= 2) {
2554
+ const fullLifetimeSeconds = exp - iat;
2555
+ if (fullLifetimeSeconds <= 2) {
2549
2556
  this.logger.error(
2550
2557
  "Auth token does not live long enough, cannot refetch the token"
2551
2558
  );
2552
2559
  return;
2553
2560
  }
2561
+ let tokenValiditySeconds;
2562
+ if (clientClockSkewMs !== void 0) {
2563
+ const estimatedServerNowSeconds = (Date.now() - clientClockSkewMs) / 1e3;
2564
+ tokenValiditySeconds = exp - estimatedServerNowSeconds;
2565
+ if (tokenValiditySeconds <= 0) {
2566
+ tokenValiditySeconds = 0;
2567
+ }
2568
+ } else {
2569
+ tokenValiditySeconds = fullLifetimeSeconds;
2570
+ }
2554
2571
  let delay = Math.min(
2555
2572
  MAXIMUM_REFRESH_DELAY,
2556
2573
  (tokenValiditySeconds - this.refreshTokenLeewaySeconds) * 1e3
@@ -2775,7 +2792,8 @@ var convex = (() => {
2775
2792
  },
2776
2793
  {
2777
2794
  logger: this.logger,
2778
- refreshTokenLeewaySeconds: authRefreshTokenLeewaySeconds
2795
+ refreshTokenLeewaySeconds: authRefreshTokenLeewaySeconds,
2796
+ initialAuthTokenReuse: options.initialAuthTokenReuse ?? false
2779
2797
  }
2780
2798
  );
2781
2799
  this.optimisticQueryResults = new OptimisticQueryResults();