spacetimedb 2.0.4 → 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 +9 -3
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.mjs +9 -3
- package/dist/angular/index.mjs.map +1 -1
- package/dist/browser/angular/index.mjs +9 -3
- package/dist/browser/angular/index.mjs.map +1 -1
- package/dist/browser/react/index.mjs +62 -7
- package/dist/browser/react/index.mjs.map +1 -1
- package/dist/browser/svelte/index.mjs +9 -3
- package/dist/browser/svelte/index.mjs.map +1 -1
- package/dist/browser/vue/index.mjs +9 -3
- package/dist/browser/vue/index.mjs.map +1 -1
- package/dist/index.browser.mjs +481 -146
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.cjs +481 -146
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +481 -146
- package/dist/index.mjs.map +1 -1
- package/dist/lib/algebraic_type.d.ts.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/query.d.ts +10 -5
- package/dist/lib/query.d.ts.map +1 -1
- package/dist/lib/table.d.ts +12 -1
- 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 +62 -6
- 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 +62 -7
- 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 +477 -144
- package/dist/sdk/index.browser.mjs.map +1 -1
- package/dist/sdk/index.cjs +477 -144
- package/dist/sdk/index.cjs.map +1 -1
- package/dist/sdk/index.mjs +477 -144
- 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 +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.mjs +76 -15
- 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 +9 -3
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.mjs +9 -3
- package/dist/svelte/index.mjs.map +1 -1
- package/dist/tanstack/index.cjs +9 -3
- package/dist/tanstack/index.cjs.map +1 -1
- package/dist/tanstack/index.mjs +9 -3
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/vue/index.cjs +9 -3
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.mjs +9 -3
- package/dist/vue/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/lib/algebraic_type.ts +5 -1
- 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/query.ts +60 -19
- package/src/lib/table.ts +15 -2
- package/src/react/index.ts +1 -0
- package/src/react/useProcedure.ts +60 -0
- package/src/react/useTable.ts +22 -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 +2 -1
- package/src/server/runtime.ts +39 -1
- package/src/server/sys.d.ts +4 -0
- package/src/server/view.test-d.ts +4 -0
package/dist/react/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from './SpacetimeDBProvider.ts';
|
|
|
2
2
|
export { useSpacetimeDB } from './useSpacetimeDB.ts';
|
|
3
3
|
export { useTable } from './useTable.ts';
|
|
4
4
|
export { useReducer } from './useReducer.ts';
|
|
5
|
+
export { useProcedure } from './useProcedure.ts';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/react/index.mjs
CHANGED
|
@@ -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);
|
|
@@ -1147,7 +1152,8 @@ writer.offset += ${primitiveSizes[tag]};` : `writer.write${tag}(value.${name});`
|
|
|
1147
1152
|
const result = { ${ty.elements.map(getElementInitializer).join(", ")} };
|
|
1148
1153
|
const view = reader.view;
|
|
1149
1154
|
${ty.elements.map(
|
|
1150
|
-
({ name, algebraicType: { tag } }) => tag in primitiveJSName ? `result.${name} = view.
|
|
1155
|
+
({ name, algebraicType: { tag } }) => tag in primitiveJSName ? tag === "Bool" ? `result.${name} = view.getUint8(reader.offset) !== 0;
|
|
1156
|
+
reader.offset += 1;` : `result.${name} = view.get${primitiveJSName[tag]}(reader.offset, ${primitiveSizes[tag] > 1 ? "true" : ""});
|
|
1151
1157
|
reader.offset += ${primitiveSizes[tag]};` : `result.${name} = reader.read${tag}();`
|
|
1152
1158
|
).join("\n")}
|
|
1153
1159
|
return result;`;
|
|
@@ -1693,6 +1699,7 @@ function classifyMembership(whereExpr, oldRow, newRow) {
|
|
|
1693
1699
|
return "stayOut";
|
|
1694
1700
|
}
|
|
1695
1701
|
function useTable(query, callbacks) {
|
|
1702
|
+
const enabled = callbacks?.enabled ?? true;
|
|
1696
1703
|
const accessorName = getQueryAccessorName(query);
|
|
1697
1704
|
const whereExpr = getQueryWhereClause(query);
|
|
1698
1705
|
const [subscribeApplied, setSubscribeApplied] = useState(false);
|
|
@@ -1708,6 +1715,9 @@ function useTable(query, callbacks) {
|
|
|
1708
1715
|
const latestTransactionEventId = useRef(null);
|
|
1709
1716
|
const lastSnapshotRef = useRef(null);
|
|
1710
1717
|
const computeSnapshot = useCallback(() => {
|
|
1718
|
+
if (!enabled) {
|
|
1719
|
+
return [[], true];
|
|
1720
|
+
}
|
|
1711
1721
|
const connection = connectionState.getConnection();
|
|
1712
1722
|
if (!connection) {
|
|
1713
1723
|
return [[], false];
|
|
@@ -1717,11 +1727,15 @@ function useTable(query, callbacks) {
|
|
|
1717
1727
|
(row) => evaluateBooleanExpr(whereExpr, row)
|
|
1718
1728
|
) : Array.from(table.iter());
|
|
1719
1729
|
return [result, subscribeApplied];
|
|
1720
|
-
}, [connectionState, accessorName, querySql, subscribeApplied]);
|
|
1730
|
+
}, [connectionState, accessorName, querySql, subscribeApplied, enabled]);
|
|
1721
1731
|
useEffect(() => {
|
|
1722
1732
|
lastSnapshotRef.current = null;
|
|
1723
1733
|
}, [computeSnapshot]);
|
|
1724
1734
|
useEffect(() => {
|
|
1735
|
+
if (!enabled) {
|
|
1736
|
+
setSubscribeApplied(false);
|
|
1737
|
+
return;
|
|
1738
|
+
}
|
|
1725
1739
|
const connection = connectionState.getConnection();
|
|
1726
1740
|
if (connectionState.isActive && connection) {
|
|
1727
1741
|
const cancel = connection.subscriptionBuilder().onApplied(() => {
|
|
@@ -1731,9 +1745,13 @@ function useTable(query, callbacks) {
|
|
|
1731
1745
|
cancel.unsubscribe();
|
|
1732
1746
|
};
|
|
1733
1747
|
}
|
|
1734
|
-
}, [querySql, connectionState.isActive, connectionState]);
|
|
1748
|
+
}, [querySql, connectionState.isActive, connectionState, enabled]);
|
|
1735
1749
|
const subscribe = useCallback(
|
|
1736
1750
|
(onStoreChange) => {
|
|
1751
|
+
if (!enabled) {
|
|
1752
|
+
return () => {
|
|
1753
|
+
};
|
|
1754
|
+
}
|
|
1737
1755
|
const onInsert = (ctx, row) => {
|
|
1738
1756
|
if (whereExpr && !evaluateBooleanExpr(whereExpr, row)) {
|
|
1739
1757
|
return;
|
|
@@ -1792,14 +1810,18 @@ function useTable(query, callbacks) {
|
|
|
1792
1810
|
table.removeOnUpdate?.(onUpdate);
|
|
1793
1811
|
};
|
|
1794
1812
|
},
|
|
1813
|
+
// TODO: investigating refactoring so that this is no longer necessary, as we have had genuine bugs with missed deps.
|
|
1814
|
+
// See https://github.com/clockworklabs/SpacetimeDB/pull/4580.
|
|
1795
1815
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1796
1816
|
[
|
|
1797
1817
|
connectionState,
|
|
1798
1818
|
accessorName,
|
|
1799
1819
|
querySql,
|
|
1820
|
+
computeSnapshot,
|
|
1800
1821
|
callbacks?.onDelete,
|
|
1801
1822
|
callbacks?.onInsert,
|
|
1802
|
-
callbacks?.onUpdate
|
|
1823
|
+
callbacks?.onUpdate,
|
|
1824
|
+
enabled
|
|
1803
1825
|
]
|
|
1804
1826
|
);
|
|
1805
1827
|
const getSnapshot = useCallback(() => {
|
|
@@ -1841,7 +1863,40 @@ function useReducer(reducerDef) {
|
|
|
1841
1863
|
[getConnection, reducerName]
|
|
1842
1864
|
);
|
|
1843
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
|
+
}
|
|
1844
1899
|
|
|
1845
|
-
export { SpacetimeDBProvider, useReducer, useSpacetimeDB, useTable };
|
|
1900
|
+
export { SpacetimeDBProvider, useProcedure, useReducer, useSpacetimeDB, useTable };
|
|
1846
1901
|
//# sourceMappingURL=index.mjs.map
|
|
1847
1902
|
//# sourceMappingURL=index.mjs.map
|