spacetimedb 2.2.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/browser/vue/index.mjs +36 -1
- package/dist/browser/vue/index.mjs.map +1 -1
- package/dist/lib/reducers.d.ts +2 -0
- package/dist/lib/reducers.d.ts.map +1 -1
- package/dist/server/index.mjs +8 -2
- 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 +1 -0
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/tanstack/index.cjs +34 -0
- 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 +34 -1
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/vue/index.cjs +36 -0
- 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 +36 -1
- 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 +1 -1
- package/src/lib/reducers.ts +2 -0
- package/src/server/procedures.ts +7 -1
- package/src/server/runtime.ts +5 -1
- package/src/tanstack/index.ts +1 -0
- package/src/vue/index.ts +1 -0
- package/src/vue/useProcedure.ts +62 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { UntypedProcedureDef } from '../sdk/procedures';
|
|
2
|
+
import type { ProcedureParamsType, ProcedureReturnType } from '../sdk/type_utils';
|
|
3
|
+
export declare function useProcedure<ProcedureDef extends UntypedProcedureDef>(procedureDef: ProcedureDef): (...params: ProcedureParamsType<ProcedureDef>) => Promise<ProcedureReturnType<ProcedureDef>>;
|
|
4
|
+
//# sourceMappingURL=useProcedure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useProcedure.d.ts","sourceRoot":"","sources":["../../src/vue/useProcedure.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,YAAY,CAAC,YAAY,SAAS,mBAAmB,EACnE,YAAY,EAAE,YAAY,GACzB,CACD,GAAG,MAAM,EAAE,mBAAmB,CAAC,YAAY,CAAC,KACzC,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAiD9C"}
|
package/package.json
CHANGED
package/src/lib/reducers.ts
CHANGED
|
@@ -103,6 +103,8 @@ export interface JwtClaims {
|
|
|
103
103
|
*/
|
|
104
104
|
export type ReducerCtx<SchemaDef extends UntypedSchemaDef> = Readonly<{
|
|
105
105
|
sender: Identity;
|
|
106
|
+
databaseIdentity: Identity;
|
|
107
|
+
/** @deprecated Use `databaseIdentity` instead. */
|
|
106
108
|
identity: Identity;
|
|
107
109
|
timestamp: Timestamp;
|
|
108
110
|
connectionId: ConnectionId | null;
|
package/src/server/procedures.ts
CHANGED
|
@@ -75,6 +75,8 @@ export interface ProcedureOpts {
|
|
|
75
75
|
|
|
76
76
|
export interface ProcedureCtx<S extends UntypedSchemaDef> {
|
|
77
77
|
readonly sender: Identity;
|
|
78
|
+
readonly databaseIdentity: Identity;
|
|
79
|
+
/** @deprecated Use `databaseIdentity` instead. */
|
|
78
80
|
readonly identity: Identity;
|
|
79
81
|
readonly timestamp: Timestamp;
|
|
80
82
|
readonly connectionId: ConnectionId | null;
|
|
@@ -195,10 +197,14 @@ const ProcedureCtxImpl = class ProcedureCtx<S extends UntypedSchemaDef>
|
|
|
195
197
|
this.#dbView = dbView;
|
|
196
198
|
}
|
|
197
199
|
|
|
198
|
-
get
|
|
200
|
+
get databaseIdentity() {
|
|
199
201
|
return (this.#identity ??= new Identity(sys.identity()));
|
|
200
202
|
}
|
|
201
203
|
|
|
204
|
+
get identity() {
|
|
205
|
+
return this.databaseIdentity;
|
|
206
|
+
}
|
|
207
|
+
|
|
202
208
|
get random() {
|
|
203
209
|
return (this.#random ??= makeRandom(this.timestamp));
|
|
204
210
|
}
|
package/src/server/runtime.ts
CHANGED
|
@@ -221,10 +221,14 @@ export const ReducerCtxImpl = class ReducerCtx<
|
|
|
221
221
|
me.#senderAuth = undefined;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
get
|
|
224
|
+
get databaseIdentity() {
|
|
225
225
|
return (this.#identity ??= new Identity(sys.identity()));
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
get identity() {
|
|
229
|
+
return this.databaseIdentity;
|
|
230
|
+
}
|
|
231
|
+
|
|
228
232
|
get senderAuth() {
|
|
229
233
|
return (this.#senderAuth ??= AuthCtxImpl.fromSystemTables(
|
|
230
234
|
this.connectionId,
|
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
|
+
}
|