spacetimedb 2.1.0 → 2.2.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 +2 -2
- package/dist/angular/index.cjs +7 -2
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.mjs +7 -2
- package/dist/angular/index.mjs.map +1 -1
- package/dist/browser/angular/index.mjs +7 -2
- package/dist/browser/angular/index.mjs.map +1 -1
- package/dist/browser/react/index.mjs +57 -6
- package/dist/browser/react/index.mjs.map +1 -1
- package/dist/browser/svelte/index.mjs +7 -2
- package/dist/browser/svelte/index.mjs.map +1 -1
- package/dist/browser/vue/index.mjs +7 -2
- package/dist/browser/vue/index.mjs.map +1 -1
- package/dist/index.browser.mjs +459 -138
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.cjs +459 -138
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +459 -138
- package/dist/index.mjs.map +1 -1
- package/dist/lib/binary_reader.d.ts +1 -1
- package/dist/lib/binary_reader.d.ts.map +1 -1
- package/dist/lib/binary_writer.d.ts +2 -1
- package/dist/lib/binary_writer.d.ts.map +1 -1
- package/dist/lib/filter.d.ts +2 -1
- package/dist/lib/filter.d.ts.map +1 -1
- package/dist/lib/table.d.ts +6 -0
- package/dist/lib/table.d.ts.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 +57 -5
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.mjs +57 -6
- package/dist/react/index.mjs.map +1 -1
- package/dist/react/useProcedure.d.ts +4 -0
- package/dist/react/useProcedure.d.ts.map +1 -0
- package/dist/react/useTable.d.ts +2 -0
- package/dist/react/useTable.d.ts.map +1 -1
- package/dist/sdk/db_connection_builder.d.ts +3 -3
- package/dist/sdk/db_connection_builder.d.ts.map +1 -1
- package/dist/sdk/db_connection_impl.d.ts +3 -3
- package/dist/sdk/db_connection_impl.d.ts.map +1 -1
- package/dist/sdk/decompress.d.ts +1 -1
- package/dist/sdk/decompress.d.ts.map +1 -1
- package/dist/sdk/index.browser.mjs +459 -138
- package/dist/sdk/index.browser.mjs.map +1 -1
- package/dist/sdk/index.cjs +459 -138
- package/dist/sdk/index.cjs.map +1 -1
- package/dist/sdk/index.mjs +459 -138
- package/dist/sdk/index.mjs.map +1 -1
- package/dist/sdk/table_cache.d.ts +1 -0
- package/dist/sdk/table_cache.d.ts.map +1 -1
- package/dist/sdk/type_utils.d.ts +4 -1
- package/dist/sdk/type_utils.d.ts.map +1 -1
- package/dist/sdk/websocket_decompress_adapter.d.ts +5 -21
- package/dist/sdk/websocket_decompress_adapter.d.ts.map +1 -1
- package/dist/sdk/websocket_protocols.d.ts +6 -0
- package/dist/sdk/websocket_protocols.d.ts.map +1 -0
- package/dist/sdk/websocket_test_adapter.d.ts +14 -18
- package/dist/sdk/websocket_test_adapter.d.ts.map +1 -1
- package/dist/sdk/websocket_v3_frames.d.ts +9 -0
- package/dist/sdk/websocket_v3_frames.d.ts.map +1 -0
- package/dist/sdk/ws.d.ts +26 -1
- package/dist/sdk/ws.d.ts.map +1 -1
- package/dist/server/http_internal.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.mjs +53 -6
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/runtime.d.ts +29 -2
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/svelte/index.cjs +7 -2
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.mjs +7 -2
- package/dist/svelte/index.mjs.map +1 -1
- package/dist/tanstack/index.cjs +7 -2
- package/dist/tanstack/index.cjs.map +1 -1
- package/dist/tanstack/index.mjs +7 -2
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/vue/index.cjs +7 -2
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.mjs +7 -2
- package/dist/vue/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/lib/binary_reader.ts +5 -2
- package/src/lib/binary_writer.ts +7 -1
- package/src/lib/filter.ts +12 -1
- package/src/lib/table.ts +9 -1
- package/src/react/index.ts +1 -0
- package/src/react/useProcedure.ts +60 -0
- package/src/react/useTable.ts +17 -2
- package/src/sdk/db_connection_builder.ts +16 -7
- package/src/sdk/db_connection_impl.ts +404 -89
- package/src/sdk/decompress.ts +7 -23
- package/src/sdk/table_cache.ts +5 -5
- package/src/sdk/type_utils.ts +10 -1
- package/src/sdk/websocket_decompress_adapter.ts +15 -77
- package/src/sdk/websocket_protocols.ts +25 -0
- package/src/sdk/websocket_test_adapter.ts +65 -29
- package/src/sdk/websocket_v3_frames.ts +126 -0
- package/src/sdk/ws.ts +81 -3
- package/src/server/http_internal.ts +10 -1
- package/src/server/index.ts +1 -1
- package/src/server/runtime.ts +39 -1
- package/src/server/sys.d.ts +4 -0
|
@@ -429,8 +429,8 @@ var BinaryReader = class {
|
|
|
429
429
|
this.view = input instanceof DataView ? input : new DataView(input.buffer, input.byteOffset, input.byteLength);
|
|
430
430
|
this.offset = 0;
|
|
431
431
|
}
|
|
432
|
-
reset(
|
|
433
|
-
this.view =
|
|
432
|
+
reset(input) {
|
|
433
|
+
this.view = input instanceof DataView ? input : new DataView(input.buffer, input.byteOffset, input.byteLength);
|
|
434
434
|
this.offset = 0;
|
|
435
435
|
}
|
|
436
436
|
get remaining() {
|
|
@@ -622,6 +622,11 @@ var BinaryWriter = class {
|
|
|
622
622
|
this.view.setUint8(this.offset, value);
|
|
623
623
|
this.offset += 1;
|
|
624
624
|
}
|
|
625
|
+
writeBytes(value) {
|
|
626
|
+
this.expandBuffer(value.length);
|
|
627
|
+
new Uint8Array(this.buffer.buffer, this.offset, value.length).set(value);
|
|
628
|
+
this.offset += value.length;
|
|
629
|
+
}
|
|
625
630
|
writeI8(value) {
|
|
626
631
|
this.expandBuffer(1);
|
|
627
632
|
this.view.setInt8(this.offset, value);
|
|
@@ -1694,6 +1699,7 @@ function classifyMembership(whereExpr, oldRow, newRow) {
|
|
|
1694
1699
|
return "stayOut";
|
|
1695
1700
|
}
|
|
1696
1701
|
function useTable(query, callbacks) {
|
|
1702
|
+
const enabled = callbacks?.enabled ?? true;
|
|
1697
1703
|
const accessorName = getQueryAccessorName(query);
|
|
1698
1704
|
const whereExpr = getQueryWhereClause(query);
|
|
1699
1705
|
const [subscribeApplied, setSubscribeApplied] = useState(false);
|
|
@@ -1709,6 +1715,9 @@ function useTable(query, callbacks) {
|
|
|
1709
1715
|
const latestTransactionEventId = useRef(null);
|
|
1710
1716
|
const lastSnapshotRef = useRef(null);
|
|
1711
1717
|
const computeSnapshot = useCallback(() => {
|
|
1718
|
+
if (!enabled) {
|
|
1719
|
+
return [[], true];
|
|
1720
|
+
}
|
|
1712
1721
|
const connection = connectionState.getConnection();
|
|
1713
1722
|
if (!connection) {
|
|
1714
1723
|
return [[], false];
|
|
@@ -1718,11 +1727,15 @@ function useTable(query, callbacks) {
|
|
|
1718
1727
|
(row) => evaluateBooleanExpr(whereExpr, row)
|
|
1719
1728
|
) : Array.from(table.iter());
|
|
1720
1729
|
return [result, subscribeApplied];
|
|
1721
|
-
}, [connectionState, accessorName, querySql, subscribeApplied]);
|
|
1730
|
+
}, [connectionState, accessorName, querySql, subscribeApplied, enabled]);
|
|
1722
1731
|
useEffect(() => {
|
|
1723
1732
|
lastSnapshotRef.current = null;
|
|
1724
1733
|
}, [computeSnapshot]);
|
|
1725
1734
|
useEffect(() => {
|
|
1735
|
+
if (!enabled) {
|
|
1736
|
+
setSubscribeApplied(false);
|
|
1737
|
+
return;
|
|
1738
|
+
}
|
|
1726
1739
|
const connection = connectionState.getConnection();
|
|
1727
1740
|
if (connectionState.isActive && connection) {
|
|
1728
1741
|
const cancel = connection.subscriptionBuilder().onApplied(() => {
|
|
@@ -1732,9 +1745,13 @@ function useTable(query, callbacks) {
|
|
|
1732
1745
|
cancel.unsubscribe();
|
|
1733
1746
|
};
|
|
1734
1747
|
}
|
|
1735
|
-
}, [querySql, connectionState.isActive, connectionState]);
|
|
1748
|
+
}, [querySql, connectionState.isActive, connectionState, enabled]);
|
|
1736
1749
|
const subscribe = useCallback(
|
|
1737
1750
|
(onStoreChange) => {
|
|
1751
|
+
if (!enabled) {
|
|
1752
|
+
return () => {
|
|
1753
|
+
};
|
|
1754
|
+
}
|
|
1738
1755
|
const onInsert = (ctx, row) => {
|
|
1739
1756
|
if (whereExpr && !evaluateBooleanExpr(whereExpr, row)) {
|
|
1740
1757
|
return;
|
|
@@ -1803,7 +1820,8 @@ function useTable(query, callbacks) {
|
|
|
1803
1820
|
computeSnapshot,
|
|
1804
1821
|
callbacks?.onDelete,
|
|
1805
1822
|
callbacks?.onInsert,
|
|
1806
|
-
callbacks?.onUpdate
|
|
1823
|
+
callbacks?.onUpdate,
|
|
1824
|
+
enabled
|
|
1807
1825
|
]
|
|
1808
1826
|
);
|
|
1809
1827
|
const getSnapshot = useCallback(() => {
|
|
@@ -1845,7 +1863,40 @@ function useReducer(reducerDef) {
|
|
|
1845
1863
|
[getConnection, reducerName]
|
|
1846
1864
|
);
|
|
1847
1865
|
}
|
|
1866
|
+
function useProcedure(procedureDef) {
|
|
1867
|
+
const { getConnection, isActive } = useSpacetimeDB();
|
|
1868
|
+
const procedureName = procedureDef.accessorName;
|
|
1869
|
+
const queueRef = useRef([]);
|
|
1870
|
+
useEffect(() => {
|
|
1871
|
+
const conn = getConnection();
|
|
1872
|
+
if (!conn) {
|
|
1873
|
+
return;
|
|
1874
|
+
}
|
|
1875
|
+
const fn = conn.procedures[procedureName];
|
|
1876
|
+
if (queueRef.current.length) {
|
|
1877
|
+
const pending = queueRef.current.splice(0);
|
|
1878
|
+
for (const item of pending) {
|
|
1879
|
+
fn(...item.params).then(item.resolve, item.reject);
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
}, [getConnection, procedureName, isActive]);
|
|
1883
|
+
return useCallback(
|
|
1884
|
+
(...params) => {
|
|
1885
|
+
const conn = getConnection();
|
|
1886
|
+
if (!conn) {
|
|
1887
|
+
return new Promise(
|
|
1888
|
+
(resolve, reject) => {
|
|
1889
|
+
queueRef.current.push({ params, resolve, reject });
|
|
1890
|
+
}
|
|
1891
|
+
);
|
|
1892
|
+
}
|
|
1893
|
+
const fn = conn.procedures[procedureName];
|
|
1894
|
+
return fn(...params);
|
|
1895
|
+
},
|
|
1896
|
+
[getConnection, procedureName]
|
|
1897
|
+
);
|
|
1898
|
+
}
|
|
1848
1899
|
|
|
1849
|
-
export { SpacetimeDBProvider, useReducer, useSpacetimeDB, useTable };
|
|
1900
|
+
export { SpacetimeDBProvider, useProcedure, useReducer, useSpacetimeDB, useTable };
|
|
1850
1901
|
//# sourceMappingURL=index.mjs.map
|
|
1851
1902
|
//# sourceMappingURL=index.mjs.map
|