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
package/dist/react/index.cjs
CHANGED
|
@@ -450,8 +450,8 @@ var BinaryReader = class {
|
|
|
450
450
|
this.view = input instanceof DataView ? input : new DataView(input.buffer, input.byteOffset, input.byteLength);
|
|
451
451
|
this.offset = 0;
|
|
452
452
|
}
|
|
453
|
-
reset(
|
|
454
|
-
this.view =
|
|
453
|
+
reset(input) {
|
|
454
|
+
this.view = input instanceof DataView ? input : new DataView(input.buffer, input.byteOffset, input.byteLength);
|
|
455
455
|
this.offset = 0;
|
|
456
456
|
}
|
|
457
457
|
get remaining() {
|
|
@@ -643,6 +643,11 @@ var BinaryWriter = class {
|
|
|
643
643
|
this.view.setUint8(this.offset, value);
|
|
644
644
|
this.offset += 1;
|
|
645
645
|
}
|
|
646
|
+
writeBytes(value) {
|
|
647
|
+
this.expandBuffer(value.length);
|
|
648
|
+
new Uint8Array(this.buffer.buffer, this.offset, value.length).set(value);
|
|
649
|
+
this.offset += value.length;
|
|
650
|
+
}
|
|
646
651
|
writeI8(value) {
|
|
647
652
|
this.expandBuffer(1);
|
|
648
653
|
this.view.setInt8(this.offset, value);
|
|
@@ -1715,6 +1720,7 @@ function classifyMembership(whereExpr, oldRow, newRow) {
|
|
|
1715
1720
|
return "stayOut";
|
|
1716
1721
|
}
|
|
1717
1722
|
function useTable(query, callbacks) {
|
|
1723
|
+
const enabled = callbacks?.enabled ?? true;
|
|
1718
1724
|
const accessorName = getQueryAccessorName(query);
|
|
1719
1725
|
const whereExpr = getQueryWhereClause(query);
|
|
1720
1726
|
const [subscribeApplied, setSubscribeApplied] = React.useState(false);
|
|
@@ -1730,6 +1736,9 @@ function useTable(query, callbacks) {
|
|
|
1730
1736
|
const latestTransactionEventId = React.useRef(null);
|
|
1731
1737
|
const lastSnapshotRef = React.useRef(null);
|
|
1732
1738
|
const computeSnapshot = React.useCallback(() => {
|
|
1739
|
+
if (!enabled) {
|
|
1740
|
+
return [[], true];
|
|
1741
|
+
}
|
|
1733
1742
|
const connection = connectionState.getConnection();
|
|
1734
1743
|
if (!connection) {
|
|
1735
1744
|
return [[], false];
|
|
@@ -1739,11 +1748,15 @@ function useTable(query, callbacks) {
|
|
|
1739
1748
|
(row) => evaluateBooleanExpr(whereExpr, row)
|
|
1740
1749
|
) : Array.from(table.iter());
|
|
1741
1750
|
return [result, subscribeApplied];
|
|
1742
|
-
}, [connectionState, accessorName, querySql, subscribeApplied]);
|
|
1751
|
+
}, [connectionState, accessorName, querySql, subscribeApplied, enabled]);
|
|
1743
1752
|
React.useEffect(() => {
|
|
1744
1753
|
lastSnapshotRef.current = null;
|
|
1745
1754
|
}, [computeSnapshot]);
|
|
1746
1755
|
React.useEffect(() => {
|
|
1756
|
+
if (!enabled) {
|
|
1757
|
+
setSubscribeApplied(false);
|
|
1758
|
+
return;
|
|
1759
|
+
}
|
|
1747
1760
|
const connection = connectionState.getConnection();
|
|
1748
1761
|
if (connectionState.isActive && connection) {
|
|
1749
1762
|
const cancel = connection.subscriptionBuilder().onApplied(() => {
|
|
@@ -1753,9 +1766,13 @@ function useTable(query, callbacks) {
|
|
|
1753
1766
|
cancel.unsubscribe();
|
|
1754
1767
|
};
|
|
1755
1768
|
}
|
|
1756
|
-
}, [querySql, connectionState.isActive, connectionState]);
|
|
1769
|
+
}, [querySql, connectionState.isActive, connectionState, enabled]);
|
|
1757
1770
|
const subscribe = React.useCallback(
|
|
1758
1771
|
(onStoreChange) => {
|
|
1772
|
+
if (!enabled) {
|
|
1773
|
+
return () => {
|
|
1774
|
+
};
|
|
1775
|
+
}
|
|
1759
1776
|
const onInsert = (ctx, row) => {
|
|
1760
1777
|
if (whereExpr && !evaluateBooleanExpr(whereExpr, row)) {
|
|
1761
1778
|
return;
|
|
@@ -1824,7 +1841,8 @@ function useTable(query, callbacks) {
|
|
|
1824
1841
|
computeSnapshot,
|
|
1825
1842
|
callbacks?.onDelete,
|
|
1826
1843
|
callbacks?.onInsert,
|
|
1827
|
-
callbacks?.onUpdate
|
|
1844
|
+
callbacks?.onUpdate,
|
|
1845
|
+
enabled
|
|
1828
1846
|
]
|
|
1829
1847
|
);
|
|
1830
1848
|
const getSnapshot = React.useCallback(() => {
|
|
@@ -1866,8 +1884,42 @@ function useReducer(reducerDef) {
|
|
|
1866
1884
|
[getConnection, reducerName]
|
|
1867
1885
|
);
|
|
1868
1886
|
}
|
|
1887
|
+
function useProcedure(procedureDef) {
|
|
1888
|
+
const { getConnection, isActive } = useSpacetimeDB();
|
|
1889
|
+
const procedureName = procedureDef.accessorName;
|
|
1890
|
+
const queueRef = React.useRef([]);
|
|
1891
|
+
React.useEffect(() => {
|
|
1892
|
+
const conn = getConnection();
|
|
1893
|
+
if (!conn) {
|
|
1894
|
+
return;
|
|
1895
|
+
}
|
|
1896
|
+
const fn = conn.procedures[procedureName];
|
|
1897
|
+
if (queueRef.current.length) {
|
|
1898
|
+
const pending = queueRef.current.splice(0);
|
|
1899
|
+
for (const item of pending) {
|
|
1900
|
+
fn(...item.params).then(item.resolve, item.reject);
|
|
1901
|
+
}
|
|
1902
|
+
}
|
|
1903
|
+
}, [getConnection, procedureName, isActive]);
|
|
1904
|
+
return React.useCallback(
|
|
1905
|
+
(...params) => {
|
|
1906
|
+
const conn = getConnection();
|
|
1907
|
+
if (!conn) {
|
|
1908
|
+
return new Promise(
|
|
1909
|
+
(resolve, reject) => {
|
|
1910
|
+
queueRef.current.push({ params, resolve, reject });
|
|
1911
|
+
}
|
|
1912
|
+
);
|
|
1913
|
+
}
|
|
1914
|
+
const fn = conn.procedures[procedureName];
|
|
1915
|
+
return fn(...params);
|
|
1916
|
+
},
|
|
1917
|
+
[getConnection, procedureName]
|
|
1918
|
+
);
|
|
1919
|
+
}
|
|
1869
1920
|
|
|
1870
1921
|
exports.SpacetimeDBProvider = SpacetimeDBProvider;
|
|
1922
|
+
exports.useProcedure = useProcedure;
|
|
1871
1923
|
exports.useReducer = useReducer;
|
|
1872
1924
|
exports.useSpacetimeDB = useSpacetimeDB;
|
|
1873
1925
|
exports.useTable = useTable;
|