spacetimedb 2.1.0 → 2.3.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 +43 -3
- 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/reducers.d.ts +2 -0
- package/dist/lib/reducers.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 +61 -8
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/procedures.d.ts +2 -0
- package/dist/server/procedures.d.ts.map +1 -1
- package/dist/server/runtime.d.ts +30 -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 +41 -2
- package/dist/tanstack/index.cjs.map +1 -1
- package/dist/tanstack/index.d.ts +1 -0
- package/dist/tanstack/index.d.ts.map +1 -1
- package/dist/tanstack/index.mjs +41 -3
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/vue/index.cjs +43 -2
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.mjs +43 -3
- package/dist/vue/index.mjs.map +1 -1
- package/dist/vue/useProcedure.d.ts +4 -0
- package/dist/vue/useProcedure.d.ts.map +1 -0
- 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/reducers.ts +2 -0
- 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/procedures.ts +7 -1
- package/src/server/runtime.ts +44 -2
- package/src/server/sys.d.ts +4 -0
- package/src/tanstack/index.ts +1 -0
- package/src/vue/index.ts +1 -0
- package/src/vue/useProcedure.ts +62 -0
package/src/server/runtime.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as _syscalls2_0 from 'spacetime:sys@2.0';
|
|
2
|
+
import * as _syscalls2_1 from 'spacetime:sys@2.1';
|
|
2
3
|
|
|
3
4
|
import type { ModuleHooks, u128, u16, u256, u32 } from 'spacetime:sys@2.0';
|
|
4
5
|
import {
|
|
@@ -45,7 +46,7 @@ import type { SchemaInner } from './schema';
|
|
|
45
46
|
|
|
46
47
|
const { freeze } = Object;
|
|
47
48
|
|
|
48
|
-
export const sys = _syscalls2_0;
|
|
49
|
+
export const sys = { ..._syscalls2_0, ..._syscalls2_1 };
|
|
49
50
|
|
|
50
51
|
export function parseJsonObject(json: string): JsonObject {
|
|
51
52
|
let value: unknown;
|
|
@@ -220,10 +221,14 @@ export const ReducerCtxImpl = class ReducerCtx<
|
|
|
220
221
|
me.#senderAuth = undefined;
|
|
221
222
|
}
|
|
222
223
|
|
|
223
|
-
get
|
|
224
|
+
get databaseIdentity() {
|
|
224
225
|
return (this.#identity ??= new Identity(sys.identity()));
|
|
225
226
|
}
|
|
226
227
|
|
|
228
|
+
get identity() {
|
|
229
|
+
return this.databaseIdentity;
|
|
230
|
+
}
|
|
231
|
+
|
|
227
232
|
get senderAuth() {
|
|
228
233
|
return (this.#senderAuth ??= AuthCtxImpl.fromSystemTables(
|
|
229
234
|
this.connectionId,
|
|
@@ -508,6 +513,7 @@ function makeTableView(
|
|
|
508
513
|
);
|
|
509
514
|
return count > 0;
|
|
510
515
|
},
|
|
516
|
+
clear: () => sys.datastore_clear(table_id),
|
|
511
517
|
};
|
|
512
518
|
|
|
513
519
|
const tableView = Object.assign(
|
|
@@ -667,9 +673,37 @@ function makeTableView(
|
|
|
667
673
|
index = base as UniqueIndex<any, any>;
|
|
668
674
|
} else if (serializeSinglePoint) {
|
|
669
675
|
// numColumns == 1
|
|
676
|
+
|
|
677
|
+
const serializeSingleRange = !isHashIndex
|
|
678
|
+
? (buffer: ResizableBuffer, range: Range<any>): IndexScanArgs => {
|
|
679
|
+
BINARY_WRITER.reset(buffer);
|
|
680
|
+
const writer = BINARY_WRITER;
|
|
681
|
+
const writeBound = (bound: Bound<any>) => {
|
|
682
|
+
const tags = { included: 0, excluded: 1, unbounded: 2 };
|
|
683
|
+
writer.writeU8(tags[bound.tag]);
|
|
684
|
+
if (bound.tag !== 'unbounded')
|
|
685
|
+
serializeSingleElement!(writer, bound.value);
|
|
686
|
+
};
|
|
687
|
+
writeBound(range.from);
|
|
688
|
+
const rstartLen = writer.offset;
|
|
689
|
+
writeBound(range.to);
|
|
690
|
+
const rendLen = writer.offset - rstartLen;
|
|
691
|
+
return [0, 0, rstartLen, rendLen];
|
|
692
|
+
}
|
|
693
|
+
: null;
|
|
694
|
+
|
|
670
695
|
const rawIndex = {
|
|
671
696
|
filter: (range: any): IteratorObject<RowType<any>> => {
|
|
672
697
|
const buf = LEAF_BUF;
|
|
698
|
+
if (serializeSingleRange && range instanceof Range) {
|
|
699
|
+
const args = serializeSingleRange(buf, range);
|
|
700
|
+
const iter_id = sys.datastore_index_scan_range_bsatn(
|
|
701
|
+
index_id,
|
|
702
|
+
buf.buffer,
|
|
703
|
+
...args
|
|
704
|
+
);
|
|
705
|
+
return tableIterator(iter_id, deserializeRow);
|
|
706
|
+
}
|
|
673
707
|
const point_len = serializeSinglePoint(buf, range);
|
|
674
708
|
const iter_id = sys.datastore_index_scan_point_bsatn(
|
|
675
709
|
index_id,
|
|
@@ -680,6 +714,14 @@ function makeTableView(
|
|
|
680
714
|
},
|
|
681
715
|
delete: (range: any): u32 => {
|
|
682
716
|
const buf = LEAF_BUF;
|
|
717
|
+
if (serializeSingleRange && range instanceof Range) {
|
|
718
|
+
const args = serializeSingleRange(buf, range);
|
|
719
|
+
return sys.datastore_delete_by_index_scan_range_bsatn(
|
|
720
|
+
index_id,
|
|
721
|
+
buf.buffer,
|
|
722
|
+
...args
|
|
723
|
+
);
|
|
724
|
+
}
|
|
683
725
|
const point_len = serializeSinglePoint(buf, range);
|
|
684
726
|
return sys.datastore_delete_by_index_scan_point_bsatn(
|
|
685
727
|
index_id,
|
package/src/server/sys.d.ts
CHANGED
package/src/tanstack/index.ts
CHANGED
package/src/vue/index.ts
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { shallowRef, watch, onUnmounted } from 'vue';
|
|
2
|
+
import { useSpacetimeDB } from './useSpacetimeDB';
|
|
3
|
+
import type { UntypedProcedureDef } from '../sdk/procedures';
|
|
4
|
+
import type {
|
|
5
|
+
ProcedureParamsType,
|
|
6
|
+
ProcedureReturnType,
|
|
7
|
+
} from '../sdk/type_utils';
|
|
8
|
+
|
|
9
|
+
export function useProcedure<ProcedureDef extends UntypedProcedureDef>(
|
|
10
|
+
procedureDef: ProcedureDef
|
|
11
|
+
): (
|
|
12
|
+
...params: ProcedureParamsType<ProcedureDef>
|
|
13
|
+
) => Promise<ProcedureReturnType<ProcedureDef>> {
|
|
14
|
+
const conn = useSpacetimeDB();
|
|
15
|
+
const procedureName = procedureDef.accessorName;
|
|
16
|
+
|
|
17
|
+
const queueRef = shallowRef<
|
|
18
|
+
{
|
|
19
|
+
params: ProcedureParamsType<ProcedureDef>;
|
|
20
|
+
resolve: (val: any) => void;
|
|
21
|
+
reject: (err: unknown) => void;
|
|
22
|
+
}[]
|
|
23
|
+
>([]);
|
|
24
|
+
|
|
25
|
+
const stopWatch = watch(
|
|
26
|
+
() => conn.isActive,
|
|
27
|
+
() => {
|
|
28
|
+
const connection = conn.getConnection();
|
|
29
|
+
if (!connection) return;
|
|
30
|
+
|
|
31
|
+
const fn = (connection.procedures as any)[procedureName] as (
|
|
32
|
+
...p: ProcedureParamsType<ProcedureDef>
|
|
33
|
+
) => Promise<ProcedureReturnType<ProcedureDef>>;
|
|
34
|
+
if (queueRef.value.length) {
|
|
35
|
+
const pending = queueRef.value.splice(0);
|
|
36
|
+
for (const item of pending) {
|
|
37
|
+
fn(...item.params).then(item.resolve, item.reject);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{ immediate: true }
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
onUnmounted(() => {
|
|
45
|
+
stopWatch();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return (...params: ProcedureParamsType<ProcedureDef>) => {
|
|
49
|
+
const connection = conn.getConnection();
|
|
50
|
+
if (!connection) {
|
|
51
|
+
return new Promise<ProcedureReturnType<ProcedureDef>>(
|
|
52
|
+
(resolve, reject) => {
|
|
53
|
+
queueRef.value.push({ params, resolve, reject });
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
const fn = (connection.procedures as any)[procedureName] as (
|
|
58
|
+
...p: ProcedureParamsType<ProcedureDef>
|
|
59
|
+
) => Promise<ProcedureReturnType<ProcedureDef>>;
|
|
60
|
+
return fn(...params);
|
|
61
|
+
};
|
|
62
|
+
}
|