convex 1.31.1 → 1.31.3

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 (150) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/browser.bundle.js +93 -4
  3. package/dist/browser.bundle.js.map +2 -2
  4. package/dist/cjs/browser/simple_client.js +2 -2
  5. package/dist/cjs/browser/simple_client.js.map +1 -1
  6. package/dist/cjs/browser/sync/web_socket_manager.js +90 -1
  7. package/dist/cjs/browser/sync/web_socket_manager.js.map +2 -2
  8. package/dist/cjs/bundler/debugBundle.js +3 -1
  9. package/dist/cjs/bundler/debugBundle.js.map +2 -2
  10. package/dist/cjs/bundler/index.js +28 -11
  11. package/dist/cjs/bundler/index.js.map +2 -2
  12. package/dist/cjs/cli/codegen_templates/component_api.js +37 -53
  13. package/dist/cjs/cli/codegen_templates/component_api.js.map +2 -2
  14. package/dist/cjs/cli/codegen_templates/validator_helpers.js +1 -3
  15. package/dist/cjs/cli/codegen_templates/validator_helpers.js.map +2 -2
  16. package/dist/cjs/cli/configure.js +4 -4
  17. package/dist/cjs/cli/configure.js.map +2 -2
  18. package/dist/cjs/cli/generatedApi.js.map +1 -1
  19. package/dist/cjs/cli/integration.js +41 -36
  20. package/dist/cjs/cli/integration.js.map +2 -2
  21. package/dist/cjs/cli/lib/components/definition/bundle.js +37 -28
  22. package/dist/cjs/cli/lib/components/definition/bundle.js.map +2 -2
  23. package/dist/cjs/cli/lib/components.js +28 -26
  24. package/dist/cjs/cli/lib/components.js.map +2 -2
  25. package/dist/cjs/cli/lib/config.js +29 -122
  26. package/dist/cjs/cli/lib/config.js.map +3 -3
  27. package/dist/cjs/cli/lib/deploymentSelection.js +1 -1
  28. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  29. package/dist/cjs/cli/lib/usage.js +1 -1
  30. package/dist/cjs/cli/lib/usage.js.map +2 -2
  31. package/dist/cjs/cli/lib/workos/platformApi.js +19 -12
  32. package/dist/cjs/cli/lib/workos/platformApi.js.map +2 -2
  33. package/dist/cjs/cli/lib/workos/workos.js +24 -6
  34. package/dist/cjs/cli/lib/workos/workos.js.map +2 -2
  35. package/dist/cjs/index.js +1 -1
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/server/database.js.map +1 -1
  38. package/dist/cjs/server/impl/registration_impl.js +12 -12
  39. package/dist/cjs/server/impl/registration_impl.js.map +1 -1
  40. package/dist/cjs-types/browser/sync/web_socket_manager.d.ts +13 -0
  41. package/dist/cjs-types/browser/sync/web_socket_manager.d.ts.map +1 -1
  42. package/dist/cjs-types/bundler/debugBundle.d.ts +3 -1
  43. package/dist/cjs-types/bundler/debugBundle.d.ts.map +1 -1
  44. package/dist/cjs-types/bundler/index.d.ts +11 -1
  45. package/dist/cjs-types/bundler/index.d.ts.map +1 -1
  46. package/dist/cjs-types/cli/codegen_templates/component_api.d.ts.map +1 -1
  47. package/dist/cjs-types/cli/codegen_templates/validator_helpers.d.ts.map +1 -1
  48. package/dist/cjs-types/cli/configure.d.ts +1 -1
  49. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  50. package/dist/cjs-types/cli/generatedApi.d.ts +62 -4
  51. package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
  52. package/dist/cjs-types/cli/integration.d.ts.map +1 -1
  53. package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts +9 -1
  54. package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  55. package/dist/cjs-types/cli/lib/components.d.ts.map +1 -1
  56. package/dist/cjs-types/cli/lib/config.d.ts +4 -12
  57. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  58. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  59. package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
  60. package/dist/cjs-types/cli/lib/workos/platformApi.d.ts +2 -2
  61. package/dist/cjs-types/cli/lib/workos/platformApi.d.ts.map +1 -1
  62. package/dist/cjs-types/cli/lib/workos/workos.d.ts.map +1 -1
  63. package/dist/cjs-types/index.d.ts +1 -1
  64. package/dist/cjs-types/server/database.d.ts +4 -4
  65. package/dist/cjs-types/server/database.d.ts.map +1 -1
  66. package/dist/cli.bundle.cjs +2331 -1570
  67. package/dist/cli.bundle.cjs.map +4 -4
  68. package/dist/esm/browser/simple_client.js +2 -2
  69. package/dist/esm/browser/simple_client.js.map +1 -1
  70. package/dist/esm/browser/sync/web_socket_manager.js +90 -1
  71. package/dist/esm/browser/sync/web_socket_manager.js.map +2 -2
  72. package/dist/esm/bundler/debugBundle.js +3 -1
  73. package/dist/esm/bundler/debugBundle.js.map +2 -2
  74. package/dist/esm/bundler/index.js +28 -11
  75. package/dist/esm/bundler/index.js.map +2 -2
  76. package/dist/esm/cli/codegen_templates/component_api.js +37 -53
  77. package/dist/esm/cli/codegen_templates/component_api.js.map +2 -2
  78. package/dist/esm/cli/codegen_templates/validator_helpers.js +1 -5
  79. package/dist/esm/cli/codegen_templates/validator_helpers.js.map +2 -2
  80. package/dist/esm/cli/configure.js +4 -4
  81. package/dist/esm/cli/configure.js.map +2 -2
  82. package/dist/esm/cli/integration.js +41 -36
  83. package/dist/esm/cli/integration.js.map +2 -2
  84. package/dist/esm/cli/lib/components/definition/bundle.js +37 -28
  85. package/dist/esm/cli/lib/components/definition/bundle.js.map +2 -2
  86. package/dist/esm/cli/lib/components.js +28 -26
  87. package/dist/esm/cli/lib/components.js.map +2 -2
  88. package/dist/esm/cli/lib/config.js +29 -123
  89. package/dist/esm/cli/lib/config.js.map +3 -3
  90. package/dist/esm/cli/lib/deploymentSelection.js +1 -1
  91. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  92. package/dist/esm/cli/lib/usage.js +1 -1
  93. package/dist/esm/cli/lib/usage.js.map +2 -2
  94. package/dist/esm/cli/lib/workos/platformApi.js +19 -12
  95. package/dist/esm/cli/lib/workos/platformApi.js.map +2 -2
  96. package/dist/esm/cli/lib/workos/workos.js +24 -6
  97. package/dist/esm/cli/lib/workos/workos.js.map +2 -2
  98. package/dist/esm/index.js +1 -1
  99. package/dist/esm/index.js.map +1 -1
  100. package/dist/esm/server/impl/registration_impl.js +12 -12
  101. package/dist/esm/server/impl/registration_impl.js.map +1 -1
  102. package/dist/esm-types/browser/sync/web_socket_manager.d.ts +13 -0
  103. package/dist/esm-types/browser/sync/web_socket_manager.d.ts.map +1 -1
  104. package/dist/esm-types/bundler/debugBundle.d.ts +3 -1
  105. package/dist/esm-types/bundler/debugBundle.d.ts.map +1 -1
  106. package/dist/esm-types/bundler/index.d.ts +11 -1
  107. package/dist/esm-types/bundler/index.d.ts.map +1 -1
  108. package/dist/esm-types/cli/codegen_templates/component_api.d.ts.map +1 -1
  109. package/dist/esm-types/cli/codegen_templates/validator_helpers.d.ts.map +1 -1
  110. package/dist/esm-types/cli/configure.d.ts +1 -1
  111. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  112. package/dist/esm-types/cli/generatedApi.d.ts +62 -4
  113. package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
  114. package/dist/esm-types/cli/integration.d.ts.map +1 -1
  115. package/dist/esm-types/cli/lib/components/definition/bundle.d.ts +9 -1
  116. package/dist/esm-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  117. package/dist/esm-types/cli/lib/components.d.ts.map +1 -1
  118. package/dist/esm-types/cli/lib/config.d.ts +4 -12
  119. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  120. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  121. package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
  122. package/dist/esm-types/cli/lib/workos/platformApi.d.ts +2 -2
  123. package/dist/esm-types/cli/lib/workos/platformApi.d.ts.map +1 -1
  124. package/dist/esm-types/cli/lib/workos/workos.d.ts.map +1 -1
  125. package/dist/esm-types/index.d.ts +1 -1
  126. package/dist/esm-types/server/database.d.ts +4 -4
  127. package/dist/esm-types/server/database.d.ts.map +1 -1
  128. package/dist/react.bundle.js +91 -2
  129. package/dist/react.bundle.js.map +2 -2
  130. package/package.json +12 -12
  131. package/schemas/convex.schema.json +11 -0
  132. package/src/browser/sync/web_socket_manager.ts +121 -1
  133. package/src/bundler/debugBundle.ts +3 -0
  134. package/src/bundler/index.test.ts +9 -2
  135. package/src/bundler/index.ts +35 -16
  136. package/src/cli/codegen_templates/component_api.ts +49 -65
  137. package/src/cli/codegen_templates/validator_helpers.ts +3 -6
  138. package/src/cli/configure.ts +9 -5
  139. package/src/cli/generatedApi.ts +62 -4
  140. package/src/cli/integration.ts +48 -40
  141. package/src/cli/lib/components/definition/bundle.ts +42 -32
  142. package/src/cli/lib/components.ts +32 -27
  143. package/src/cli/lib/config.ts +45 -162
  144. package/src/cli/lib/deploymentSelection.ts +4 -1
  145. package/src/cli/lib/usage.ts +2 -1
  146. package/src/cli/lib/workos/platformApi.ts +27 -14
  147. package/src/cli/lib/workos/workos.ts +21 -6
  148. package/src/index.ts +1 -1
  149. package/src/server/database.ts +8 -8
  150. package/src/server/database_api.test.ts +84 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.31.3
4
+
5
+ - `CONVEX_AGENT_MODE=anonymous` can now be used while logged in.
6
+
7
+ - The client will try to reconnect immediately after being offline instead of
8
+ waiting for the scheduled backoff delay.
9
+
10
+ - Optimize bundling during code push, and add `includeSourcesContent` option in
11
+ `convex.json` to configure whether to include source code content in bundled
12
+ sourcemaps.
13
+
14
+ ## 1.31.2
15
+
16
+ - Bug fix: the TypeScript types of the new `ctx.db` APIs introduced in 1.31.0
17
+ incorrectly allowed passing IDs with types broader than the table name
18
+ argument (e.g. `db.get("table1", id)` where `id` is
19
+ `Id<"table1"> | Id<"table2">`). This issue is fixed in 1.31.2.
20
+
21
+ ## 1.31.1
22
+
23
+ - You can now increase the speed of type checking when using `npx convex dev` by
24
+ enabling the
25
+ [TypeScript native preview](https://devblogs.microsoft.com/typescript/announcing-typescript-native-previews/)
26
+ ([TypeScript 7](https://devblogs.microsoft.com/typescript/typescript-native-port/)).
27
+ To do so, add `@typescript/native-preview` as a dev dependency and
28
+ [set `typescriptCompiler: "tsGo"` in `convex.json`](https://docs.convex.dev/production/project-configuration#configuring-the-typescript-compiler).
29
+
3
30
  ## 1.31.0
4
31
 
5
32
  - `db.get`, `db.patch`, `db.replace`, and `db.delete` now accept a table name as
@@ -28,7 +28,7 @@ var convex = (() => {
28
28
  });
29
29
 
30
30
  // src/index.ts
31
- var version = "1.31.1";
31
+ var version = "1.31.3";
32
32
 
33
33
  // src/values/base64.ts
34
34
  var base64_exports = {};
@@ -1654,6 +1654,7 @@ var convex = (() => {
1654
1654
  this.onMessage = callbacks.onMessage;
1655
1655
  this.onServerDisconnectError = callbacks.onServerDisconnectError;
1656
1656
  this.logger = logger;
1657
+ this.setupNetworkListener();
1657
1658
  this.connect();
1658
1659
  }
1659
1660
  socket;
@@ -1672,6 +1673,11 @@ var convex = (() => {
1672
1673
  * in ms */
1673
1674
  serverInactivityThreshold;
1674
1675
  reconnectDueToServerInactivityTimeout;
1676
+ /** Scheduled reconnect state: timeout handle and timing info */
1677
+ scheduledReconnect = null;
1678
+ networkOnlineHandler = null;
1679
+ /** Pending event to send after reconnecting due to network recovery */
1680
+ pendingNetworkRecoveryInfo = null;
1675
1681
  uri;
1676
1682
  onOpen;
1677
1683
  onResume;
@@ -1686,6 +1692,27 @@ var convex = (() => {
1686
1692
  );
1687
1693
  this.markConnectionStateDirty();
1688
1694
  }
1695
+ setupNetworkListener() {
1696
+ if (typeof window === "undefined") {
1697
+ return;
1698
+ }
1699
+ if (this.networkOnlineHandler !== null) {
1700
+ return;
1701
+ }
1702
+ this.networkOnlineHandler = () => {
1703
+ this._logVerbose("network online event detected");
1704
+ this.tryReconnectImmediately();
1705
+ };
1706
+ window.addEventListener("online", this.networkOnlineHandler);
1707
+ this._logVerbose("network online event listener registered");
1708
+ }
1709
+ cleanupNetworkListener() {
1710
+ if (this.networkOnlineHandler && typeof window !== "undefined") {
1711
+ window.removeEventListener("online", this.networkOnlineHandler);
1712
+ this.networkOnlineHandler = null;
1713
+ this._logVerbose("network online event listener removed");
1714
+ }
1715
+ }
1689
1716
  assembleTransition(chunk) {
1690
1717
  if (chunk.partNumber < 0 || chunk.partNumber >= chunk.totalParts || chunk.totalParts === 0 || this.transitionChunkBuffer && (this.transitionChunkBuffer.totalParts !== chunk.totalParts || this.transitionChunkBuffer.transitionId !== chunk.transitionId)) {
1691
1718
  this.transitionChunkBuffer = null;
@@ -1769,6 +1796,18 @@ var convex = (() => {
1769
1796
  }
1770
1797
  this.connectionCount += 1;
1771
1798
  this.lastCloseReason = null;
1799
+ if (this.pendingNetworkRecoveryInfo !== null) {
1800
+ const { timeSavedMs } = this.pendingNetworkRecoveryInfo;
1801
+ this.pendingNetworkRecoveryInfo = null;
1802
+ this.sendMessage({
1803
+ type: "Event",
1804
+ eventType: "NetworkRecoveryReconnect",
1805
+ event: { timeSavedMs }
1806
+ });
1807
+ this.logger.log(
1808
+ `Network recovery reconnect saved ~${Math.round(timeSavedMs / 1e3)}s of waiting`
1809
+ );
1810
+ }
1772
1811
  };
1773
1812
  ws.onerror = (error) => {
1774
1813
  this.transitionChunkBuffer = null;
@@ -1892,11 +1931,26 @@ var convex = (() => {
1892
1931
  }, this.serverInactivityThreshold);
1893
1932
  }
1894
1933
  scheduleReconnect(reason) {
1934
+ if (this.scheduledReconnect) {
1935
+ clearTimeout(this.scheduledReconnect.timeout);
1936
+ this.scheduledReconnect = null;
1937
+ }
1895
1938
  this.socket = { state: "disconnected" };
1896
1939
  const backoff = this.nextBackoff(reason);
1897
1940
  this.markConnectionStateDirty();
1898
1941
  this.logger.log(`Attempting reconnect in ${Math.round(backoff)}ms`);
1899
- setTimeout(() => this.connect(), backoff);
1942
+ const scheduledAt = monotonicMillis();
1943
+ const timeoutId = setTimeout(() => {
1944
+ if (this.scheduledReconnect?.timeout === timeoutId) {
1945
+ this.scheduledReconnect = null;
1946
+ this.connect();
1947
+ }
1948
+ }, backoff);
1949
+ this.scheduledReconnect = {
1950
+ timeout: timeoutId,
1951
+ scheduledAt,
1952
+ backoffMs: backoff
1953
+ };
1900
1954
  }
1901
1955
  /**
1902
1956
  * Close the WebSocket and schedule a reconnect.
@@ -1980,6 +2034,11 @@ var convex = (() => {
1980
2034
  if (this.reconnectDueToServerInactivityTimeout) {
1981
2035
  clearTimeout(this.reconnectDueToServerInactivityTimeout);
1982
2036
  }
2037
+ if (this.scheduledReconnect) {
2038
+ clearTimeout(this.scheduledReconnect.timeout);
2039
+ this.scheduledReconnect = null;
2040
+ }
2041
+ this.cleanupNetworkListener();
1983
2042
  switch (this.socket.state) {
1984
2043
  case "terminated":
1985
2044
  case "stopped":
@@ -2006,6 +2065,7 @@ var convex = (() => {
2006
2065
  case "stopped":
2007
2066
  case "disconnected":
2008
2067
  case "ready": {
2068
+ this.cleanupNetworkListener();
2009
2069
  const result = this.close();
2010
2070
  this.socket = { state: "stopped" };
2011
2071
  return result;
@@ -2034,6 +2094,7 @@ var convex = (() => {
2034
2094
  this.socket;
2035
2095
  }
2036
2096
  }
2097
+ this.setupNetworkListener();
2037
2098
  this.connect();
2038
2099
  }
2039
2100
  pause() {
@@ -2053,6 +2114,34 @@ var convex = (() => {
2053
2114
  }
2054
2115
  }
2055
2116
  }
2117
+ /**
2118
+ * Try to reconnect immediately, canceling any scheduled reconnect.
2119
+ * This is useful when detecting network recovery.
2120
+ * Only takes action if we're in disconnected state (waiting to reconnect).
2121
+ */
2122
+ tryReconnectImmediately() {
2123
+ this._logVerbose("tryReconnectImmediately called");
2124
+ if (this.socket.state !== "disconnected") {
2125
+ this._logVerbose(
2126
+ `tryReconnectImmediately called but socket state is ${this.socket.state}, no action taken`
2127
+ );
2128
+ return;
2129
+ }
2130
+ let timeSavedMs = null;
2131
+ if (this.scheduledReconnect) {
2132
+ const elapsed = monotonicMillis() - this.scheduledReconnect.scheduledAt;
2133
+ timeSavedMs = Math.max(0, this.scheduledReconnect.backoffMs - elapsed);
2134
+ this._logVerbose(
2135
+ `would have waited ${Math.round(timeSavedMs)}ms more (backoff was ${Math.round(this.scheduledReconnect.backoffMs)}ms, elapsed ${Math.round(elapsed)}ms)`
2136
+ );
2137
+ clearTimeout(this.scheduledReconnect.timeout);
2138
+ this.scheduledReconnect = null;
2139
+ this._logVerbose("canceled scheduled reconnect");
2140
+ }
2141
+ this.logger.log("Network recovery detected, reconnecting immediately");
2142
+ this.pendingNetworkRecoveryInfo = timeSavedMs !== null ? { timeSavedMs } : null;
2143
+ this.connect();
2144
+ }
2056
2145
  /**
2057
2146
  * Resume the state machine if previously paused.
2058
2147
  */
@@ -3852,8 +3941,8 @@ var convex = (() => {
3852
3941
  return this.client.hasLocalQueryResultByToken(queryToken);
3853
3942
  }
3854
3943
  createDisabledUnsubscribe() {
3855
- const disabledUnsubscribe = () => {
3856
- };
3944
+ const disabledUnsubscribe = (() => {
3945
+ });
3857
3946
  const unsubscribeProps = {
3858
3947
  unsubscribe: disabledUnsubscribe,
3859
3948
  getCurrentValue: () => void 0,