spacetimedb 2.4.1 → 2.6.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/LICENSE.txt +759 -759
- package/README.md +211 -120
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.mjs.map +1 -1
- package/dist/browser/angular/index.mjs.map +1 -1
- package/dist/browser/react/index.mjs +129 -57
- package/dist/browser/react/index.mjs.map +1 -1
- package/dist/browser/solid/index.mjs +1933 -0
- package/dist/browser/solid/index.mjs.map +1 -0
- package/dist/browser/svelte/index.mjs.map +1 -1
- package/dist/browser/vue/index.mjs.map +1 -1
- package/dist/index.browser.mjs +10 -2
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.cjs +10 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +10 -2
- package/dist/index.mjs.map +1 -1
- package/dist/min/index.browser.mjs +1 -1
- package/dist/min/index.browser.mjs.map +1 -1
- package/dist/min/react/index.mjs +1 -1
- package/dist/min/react/index.mjs.map +1 -1
- package/dist/min/sdk/index.browser.mjs +1 -1
- package/dist/min/sdk/index.browser.mjs.map +1 -1
- package/dist/react/index.cjs +129 -57
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.mjs +129 -57
- package/dist/react/index.mjs.map +1 -1
- package/dist/react/useTable.d.ts.map +1 -1
- package/dist/sdk/connection_manager.d.ts +8 -0
- package/dist/sdk/connection_manager.d.ts.map +1 -1
- package/dist/sdk/db_connection_impl.d.ts +7 -0
- package/dist/sdk/db_connection_impl.d.ts.map +1 -1
- package/dist/sdk/index.browser.mjs +10 -2
- package/dist/sdk/index.browser.mjs.map +1 -1
- package/dist/sdk/index.cjs +10 -2
- package/dist/sdk/index.cjs.map +1 -1
- package/dist/sdk/index.mjs +10 -2
- package/dist/sdk/index.mjs.map +1 -1
- package/dist/sdk/websocket_test_adapter.d.ts +2 -1
- package/dist/sdk/websocket_test_adapter.d.ts.map +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/solid/SpacetimeDBProvider.d.ts +7 -0
- package/dist/solid/SpacetimeDBProvider.d.ts.map +1 -0
- package/dist/solid/connection_state.d.ts +6 -0
- package/dist/solid/connection_state.d.ts.map +1 -0
- package/dist/solid/index.cjs +1939 -0
- package/dist/solid/index.cjs.map +1 -0
- package/dist/solid/index.d.ts +6 -0
- package/dist/solid/index.d.ts.map +1 -0
- package/dist/solid/index.mjs +1933 -0
- package/dist/solid/index.mjs.map +1 -0
- package/dist/solid/useProcedure.d.ts +4 -0
- package/dist/solid/useProcedure.d.ts.map +1 -0
- package/dist/solid/useReducer.d.ts +4 -0
- package/dist/solid/useReducer.d.ts.map +1 -0
- package/dist/solid/useSpacetimeDB.d.ts +4 -0
- package/dist/solid/useSpacetimeDB.d.ts.map +1 -0
- package/dist/solid/useTable.d.ts +32 -0
- package/dist/solid/useTable.d.ts.map +1 -0
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.mjs.map +1 -1
- package/dist/tanstack/index.cjs +120 -50
- package/dist/tanstack/index.cjs.map +1 -1
- package/dist/tanstack/index.mjs +120 -50
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.mjs.map +1 -1
- package/package.json +13 -3
- package/src/angular/connection_state.ts +19 -19
- package/src/angular/index.ts +3 -3
- package/src/angular/injectors/index.ts +4 -4
- package/src/angular/injectors/inject-reducer.ts +62 -62
- package/src/angular/injectors/inject-spacetimedb-connected.ts +13 -13
- package/src/angular/injectors/inject-spacetimedb.ts +10 -10
- package/src/angular/injectors/inject-table.ts +234 -234
- package/src/angular/providers/index.ts +1 -1
- package/src/angular/providers/provide-spacetimedb.ts +96 -96
- package/src/index.ts +16 -16
- package/src/lib/algebraic_type.ts +819 -819
- package/src/lib/algebraic_type_variants.ts +26 -26
- package/src/lib/algebraic_value.ts +10 -10
- package/src/lib/autogen/types.ts +746 -746
- package/src/lib/binary_reader.ts +188 -188
- package/src/lib/binary_writer.ts +213 -213
- package/src/lib/connection_id.ts +102 -102
- package/src/lib/constraints.ts +48 -48
- package/src/lib/errors.ts +26 -26
- package/src/lib/filter.ts +195 -195
- package/src/lib/identity.ts +83 -83
- package/src/lib/indexes.ts +251 -251
- package/src/lib/option.ts +34 -34
- package/src/lib/query.ts +1019 -1019
- package/src/lib/reducer_schema.ts +38 -38
- package/src/lib/reducers.ts +116 -116
- package/src/lib/result.ts +36 -36
- package/src/lib/schedule_at.ts +86 -86
- package/src/lib/schema.ts +420 -420
- package/src/lib/table.ts +548 -548
- package/src/lib/table_schema.ts +64 -64
- package/src/lib/time_duration.ts +77 -77
- package/src/lib/timestamp.ts +148 -148
- package/src/lib/type_builders.test-d.ts +128 -128
- package/src/lib/type_builders.ts +4014 -4014
- package/src/lib/type_util.ts +124 -124
- package/src/lib/util.ts +196 -196
- package/src/lib/uuid.ts +337 -337
- package/src/react/SpacetimeDBProvider.ts +84 -84
- package/src/react/connection_state.ts +6 -6
- package/src/react/index.ts +5 -5
- package/src/react/useProcedure.ts +60 -60
- package/src/react/useReducer.ts +53 -53
- package/src/react/useSpacetimeDB.ts +18 -18
- package/src/react/useTable.ts +256 -251
- package/src/sdk/client_api/index.ts +114 -114
- package/src/sdk/client_api/types/procedures.ts +8 -8
- package/src/sdk/client_api/types/reducers.ts +8 -8
- package/src/sdk/client_api/types.ts +288 -288
- package/src/sdk/client_cache.ts +129 -129
- package/src/sdk/client_table.ts +179 -179
- package/src/sdk/connection_manager.ts +352 -237
- package/src/sdk/db_connection_builder.ts +290 -290
- package/src/sdk/db_connection_impl.ts +1356 -1347
- package/src/sdk/db_context.ts +28 -28
- package/src/sdk/db_view.ts +12 -12
- package/src/sdk/decompress.ts +51 -51
- package/src/sdk/event.ts +18 -18
- package/src/sdk/event_context.ts +51 -51
- package/src/sdk/event_emitter.ts +32 -32
- package/src/sdk/index.ts +14 -14
- package/src/sdk/internal.ts +2 -2
- package/src/sdk/json_api.ts +46 -46
- package/src/sdk/logger.ts +134 -134
- package/src/sdk/message_types.ts +46 -46
- package/src/sdk/procedures.ts +83 -83
- package/src/sdk/reducer_event.ts +20 -20
- package/src/sdk/reducer_handle.ts +12 -12
- package/src/sdk/reducers.ts +159 -159
- package/src/sdk/schema.ts +45 -45
- package/src/sdk/spacetime_module.ts +28 -28
- package/src/sdk/subscription_builder_impl.ts +275 -275
- package/src/sdk/table_cache.ts +581 -581
- package/src/sdk/type_utils.ts +19 -19
- package/src/sdk/version.ts +133 -133
- package/src/sdk/websocket_decompress_adapter.ts +63 -63
- package/src/sdk/websocket_protocols.ts +25 -25
- package/src/sdk/websocket_test_adapter.ts +107 -100
- package/src/sdk/websocket_v3_frames.ts +126 -126
- package/src/sdk/ws.ts +105 -105
- package/src/server/console.ts +81 -81
- package/src/server/db_view.ts +21 -21
- package/src/server/errors.ts +138 -138
- package/src/server/http.test-d.ts +80 -80
- package/src/server/http.ts +14 -14
- package/src/server/http_handlers.ts +413 -413
- package/src/server/http_internal.ts +79 -79
- package/src/server/http_shared.ts +186 -186
- package/src/server/index.ts +37 -37
- package/src/server/polyfills.ts +4 -4
- package/src/server/procedures.ts +239 -239
- package/src/server/query.ts +1 -1
- package/src/server/range.ts +53 -53
- package/src/server/reducers.ts +113 -113
- package/src/server/rng.ts +113 -113
- package/src/server/runtime.ts +1102 -1102
- package/src/server/schema.test-d.ts +99 -99
- package/src/server/schema.ts +663 -663
- package/src/server/sys.d.ts +125 -125
- package/src/server/view.test-d.ts +194 -194
- package/src/server/views.ts +340 -340
- package/src/solid/SpacetimeDBProvider.ts +97 -0
- package/src/solid/connection_state.ts +6 -0
- package/src/solid/index.ts +5 -0
- package/src/solid/useProcedure.ts +57 -0
- package/src/solid/useReducer.ts +50 -0
- package/src/solid/useSpacetimeDB.ts +18 -0
- package/src/solid/useTable.ts +203 -0
- package/src/svelte/SpacetimeDBProvider.ts +101 -101
- package/src/svelte/connection_state.ts +16 -16
- package/src/svelte/index.ts +4 -4
- package/src/svelte/useReducer.ts +61 -61
- package/src/svelte/useSpacetimeDB.ts +22 -22
- package/src/svelte/useTable.ts +218 -218
- package/src/tanstack/SpacetimeDBQueryClient.ts +330 -330
- package/src/tanstack/hooks.ts +83 -83
- package/src/tanstack/index.ts +16 -16
- package/src/util-stub.ts +1 -1
- package/src/vue/SpacetimeDBProvider.ts +157 -157
- package/src/vue/connection_state.ts +19 -19
- package/src/vue/index.ts +5 -5
- package/src/vue/useProcedure.ts +62 -62
- package/src/vue/useReducer.ts +55 -55
- package/src/vue/useSpacetimeDB.ts +18 -18
- package/src/vue/useTable.ts +229 -229
package/dist/tanstack/index.mjs
CHANGED
|
@@ -1711,6 +1711,14 @@ function useSpacetimeDB() {
|
|
|
1711
1711
|
}
|
|
1712
1712
|
|
|
1713
1713
|
// src/sdk/connection_manager.ts
|
|
1714
|
+
var CONNECTION_MANAGER_RECONNECT_BASE_DELAY_MS = 1e3;
|
|
1715
|
+
var CONNECTION_MANAGER_RECONNECT_MAX_DELAY_MS = 3e4;
|
|
1716
|
+
function connectionManagerReconnectDelayMs(attempt) {
|
|
1717
|
+
return Math.min(
|
|
1718
|
+
CONNECTION_MANAGER_RECONNECT_BASE_DELAY_MS * 2 ** attempt,
|
|
1719
|
+
CONNECTION_MANAGER_RECONNECT_MAX_DELAY_MS
|
|
1720
|
+
);
|
|
1721
|
+
}
|
|
1714
1722
|
function defaultState() {
|
|
1715
1723
|
return {
|
|
1716
1724
|
isActive: false,
|
|
@@ -1737,10 +1745,13 @@ var ConnectionManagerImpl = class _ConnectionManagerImpl {
|
|
|
1737
1745
|
}
|
|
1738
1746
|
const managed = {
|
|
1739
1747
|
connection: void 0,
|
|
1748
|
+
builder: void 0,
|
|
1740
1749
|
refCount: 0,
|
|
1741
1750
|
state: defaultState(),
|
|
1742
1751
|
listeners: /* @__PURE__ */ new Set(),
|
|
1743
|
-
pendingRelease: null
|
|
1752
|
+
pendingRelease: null,
|
|
1753
|
+
reconnectTimer: null,
|
|
1754
|
+
reconnectAttempt: 0
|
|
1744
1755
|
};
|
|
1745
1756
|
this.#connections.set(key, managed);
|
|
1746
1757
|
return managed;
|
|
@@ -1750,40 +1761,20 @@ var ConnectionManagerImpl = class _ConnectionManagerImpl {
|
|
|
1750
1761
|
listener();
|
|
1751
1762
|
}
|
|
1752
1763
|
}
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
* @returns The managed connection instance
|
|
1761
|
-
*/
|
|
1762
|
-
retain(key, builder) {
|
|
1763
|
-
const managed = this.#ensureEntry(key);
|
|
1764
|
-
if (managed.pendingRelease) {
|
|
1765
|
-
clearTimeout(managed.pendingRelease);
|
|
1766
|
-
managed.pendingRelease = null;
|
|
1767
|
-
}
|
|
1768
|
-
managed.refCount += 1;
|
|
1769
|
-
if (managed.connection) {
|
|
1770
|
-
return managed.connection;
|
|
1764
|
+
#updateState(managed, updates) {
|
|
1765
|
+
managed.state = { ...managed.state, ...updates };
|
|
1766
|
+
this.#notify(managed);
|
|
1767
|
+
}
|
|
1768
|
+
#ensureCallbacks(managed) {
|
|
1769
|
+
if (managed.onConnect) {
|
|
1770
|
+
return;
|
|
1771
1771
|
}
|
|
1772
|
-
const connection = builder.build();
|
|
1773
|
-
managed.connection = connection;
|
|
1774
|
-
const updateState = (updates) => {
|
|
1775
|
-
managed.state = { ...managed.state, ...updates };
|
|
1776
|
-
this.#notify(managed);
|
|
1777
|
-
};
|
|
1778
|
-
updateState({
|
|
1779
|
-
isActive: connection.isActive,
|
|
1780
|
-
identity: connection.identity,
|
|
1781
|
-
token: connection.token,
|
|
1782
|
-
connectionId: connection.connectionId,
|
|
1783
|
-
connectionError: void 0
|
|
1784
|
-
});
|
|
1785
1772
|
managed.onConnect = (conn) => {
|
|
1786
|
-
|
|
1773
|
+
if (conn !== managed.connection) {
|
|
1774
|
+
return;
|
|
1775
|
+
}
|
|
1776
|
+
managed.reconnectAttempt = 0;
|
|
1777
|
+
this.#updateState(managed, {
|
|
1787
1778
|
isActive: conn.isActive,
|
|
1788
1779
|
identity: conn.identity,
|
|
1789
1780
|
token: conn.token,
|
|
@@ -1792,22 +1783,105 @@ var ConnectionManagerImpl = class _ConnectionManagerImpl {
|
|
|
1792
1783
|
});
|
|
1793
1784
|
};
|
|
1794
1785
|
managed.onDisconnect = (ctx, error) => {
|
|
1795
|
-
|
|
1796
|
-
|
|
1786
|
+
if (ctx !== managed.connection) {
|
|
1787
|
+
return;
|
|
1788
|
+
}
|
|
1789
|
+
this.#updateState(managed, {
|
|
1790
|
+
isActive: false,
|
|
1797
1791
|
connectionError: error ?? void 0
|
|
1798
1792
|
});
|
|
1793
|
+
this.#scheduleReconnect(managed);
|
|
1799
1794
|
};
|
|
1800
1795
|
managed.onConnectError = (ctx, error) => {
|
|
1801
|
-
|
|
1802
|
-
|
|
1796
|
+
if (ctx !== managed.connection) {
|
|
1797
|
+
return;
|
|
1798
|
+
}
|
|
1799
|
+
this.#updateState(managed, {
|
|
1800
|
+
isActive: false,
|
|
1803
1801
|
connectionError: error
|
|
1804
1802
|
});
|
|
1803
|
+
this.#scheduleReconnect(managed);
|
|
1805
1804
|
};
|
|
1805
|
+
}
|
|
1806
|
+
#attachCallbacks(managed, builder) {
|
|
1807
|
+
this.#ensureCallbacks(managed);
|
|
1806
1808
|
builder.onConnect(managed.onConnect);
|
|
1807
1809
|
builder.onDisconnect(managed.onDisconnect);
|
|
1808
1810
|
builder.onConnectError(managed.onConnectError);
|
|
1811
|
+
}
|
|
1812
|
+
#detachCallbacks(managed, connection) {
|
|
1813
|
+
if (managed.onConnect) {
|
|
1814
|
+
connection.removeOnConnect(managed.onConnect);
|
|
1815
|
+
}
|
|
1816
|
+
if (managed.onDisconnect) {
|
|
1817
|
+
connection.removeOnDisconnect(managed.onDisconnect);
|
|
1818
|
+
}
|
|
1819
|
+
if (managed.onConnectError) {
|
|
1820
|
+
connection.removeOnConnectError(managed.onConnectError);
|
|
1821
|
+
}
|
|
1822
|
+
}
|
|
1823
|
+
#buildManagedConnection(managed, builder) {
|
|
1824
|
+
managed.builder = builder;
|
|
1825
|
+
const connection = builder.build();
|
|
1826
|
+
managed.connection = connection;
|
|
1827
|
+
this.#attachCallbacks(managed, builder);
|
|
1828
|
+
this.#updateState(managed, {
|
|
1829
|
+
isActive: connection.isActive,
|
|
1830
|
+
identity: connection.identity,
|
|
1831
|
+
token: connection.token,
|
|
1832
|
+
connectionId: connection.connectionId,
|
|
1833
|
+
connectionError: void 0
|
|
1834
|
+
});
|
|
1809
1835
|
return connection;
|
|
1810
1836
|
}
|
|
1837
|
+
#scheduleReconnect(managed) {
|
|
1838
|
+
if (managed.refCount <= 0 || managed.pendingRelease || managed.reconnectTimer || !managed.builder) {
|
|
1839
|
+
return;
|
|
1840
|
+
}
|
|
1841
|
+
const connection = managed.connection;
|
|
1842
|
+
if (connection) {
|
|
1843
|
+
this.#detachCallbacks(managed, connection);
|
|
1844
|
+
}
|
|
1845
|
+
managed.connection = void 0;
|
|
1846
|
+
if (connection?.isDisconnectRequested) {
|
|
1847
|
+
return;
|
|
1848
|
+
}
|
|
1849
|
+
const delay = connectionManagerReconnectDelayMs(managed.reconnectAttempt);
|
|
1850
|
+
managed.reconnectAttempt += 1;
|
|
1851
|
+
managed.reconnectTimer = setTimeout(() => {
|
|
1852
|
+
managed.reconnectTimer = null;
|
|
1853
|
+
if (managed.refCount <= 0 || managed.pendingRelease || managed.connection || !managed.builder) {
|
|
1854
|
+
return;
|
|
1855
|
+
}
|
|
1856
|
+
this.#buildManagedConnection(managed, managed.builder);
|
|
1857
|
+
}, delay);
|
|
1858
|
+
}
|
|
1859
|
+
/**
|
|
1860
|
+
* Retains a connection, incrementing its reference count.
|
|
1861
|
+
* Creates the connection on first call; returns existing connection on subsequent calls.
|
|
1862
|
+
* Cancels any pending release if the connection was about to be cleaned up.
|
|
1863
|
+
*
|
|
1864
|
+
* @param key - Unique identifier for the connection (use getKey to generate)
|
|
1865
|
+
* @param builder - Connection builder to create the connection if needed
|
|
1866
|
+
* @returns The managed connection instance
|
|
1867
|
+
*/
|
|
1868
|
+
retain(key, builder) {
|
|
1869
|
+
const managed = this.#ensureEntry(key);
|
|
1870
|
+
if (managed.pendingRelease) {
|
|
1871
|
+
clearTimeout(managed.pendingRelease);
|
|
1872
|
+
managed.pendingRelease = null;
|
|
1873
|
+
}
|
|
1874
|
+
if (managed.reconnectTimer) {
|
|
1875
|
+
clearTimeout(managed.reconnectTimer);
|
|
1876
|
+
managed.reconnectTimer = null;
|
|
1877
|
+
}
|
|
1878
|
+
managed.refCount += 1;
|
|
1879
|
+
managed.builder = builder;
|
|
1880
|
+
if (managed.connection) {
|
|
1881
|
+
return managed.connection;
|
|
1882
|
+
}
|
|
1883
|
+
return this.#buildManagedConnection(managed, builder);
|
|
1884
|
+
}
|
|
1811
1885
|
release(key) {
|
|
1812
1886
|
const managed = this.#connections.get(key);
|
|
1813
1887
|
if (!managed) {
|
|
@@ -1817,24 +1891,20 @@ var ConnectionManagerImpl = class _ConnectionManagerImpl {
|
|
|
1817
1891
|
if (managed.refCount > 0 || managed.pendingRelease) {
|
|
1818
1892
|
return;
|
|
1819
1893
|
}
|
|
1894
|
+
if (managed.reconnectTimer) {
|
|
1895
|
+
clearTimeout(managed.reconnectTimer);
|
|
1896
|
+
managed.reconnectTimer = null;
|
|
1897
|
+
}
|
|
1820
1898
|
managed.pendingRelease = setTimeout(() => {
|
|
1821
1899
|
managed.pendingRelease = null;
|
|
1822
1900
|
if (managed.refCount > 0) {
|
|
1823
1901
|
return;
|
|
1824
1902
|
}
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
managed.connection.removeOnDisconnect(managed.onDisconnect);
|
|
1831
|
-
}
|
|
1832
|
-
if (managed.onConnectError) {
|
|
1833
|
-
managed.connection.removeOnConnectError(
|
|
1834
|
-
managed.onConnectError
|
|
1835
|
-
);
|
|
1836
|
-
}
|
|
1837
|
-
managed.connection.disconnect();
|
|
1903
|
+
const connection = managed.connection;
|
|
1904
|
+
managed.connection = void 0;
|
|
1905
|
+
if (connection) {
|
|
1906
|
+
this.#detachCallbacks(managed, connection);
|
|
1907
|
+
connection.disconnect();
|
|
1838
1908
|
}
|
|
1839
1909
|
this.#connections.delete(key);
|
|
1840
1910
|
}, 0);
|