convex-helpers 0.1.82 → 0.1.83
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/package.json +1 -1
- package/react/sessions.d.ts +6 -1
- package/react/sessions.d.ts.map +1 -1
- package/react/sessions.js +15 -6
- package/react/sessions.ts +37 -14
package/package.json
CHANGED
package/react/sessions.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ import type { FunctionArgs, FunctionReference, FunctionReturnType } from "convex
|
|
|
20
20
|
import { ConvexReactClient, type ConvexReactClientOptions, type MutationOptions } from "convex/react";
|
|
21
21
|
import type { SessionId } from "../server/sessions.js";
|
|
22
22
|
import type { EmptyObject, BetterOmit } from "../index.js";
|
|
23
|
+
import type { OptimisticUpdate } from "convex/browser";
|
|
23
24
|
export declare const DEFAULT_STORAGE_KEY = "convex-session-id";
|
|
24
25
|
export type UseStorage<T> = (key: string, initialValue: T) => readonly [T, (value: T) => void] | readonly [T, (value: T) => void, () => void];
|
|
25
26
|
export type RefreshSessionFn = (beforeUpdate?: (newSessionId: SessionId) => any | Promise<any>) => Promise<SessionId>;
|
|
@@ -66,6 +67,10 @@ export declare const SessionProvider: React.FC<{
|
|
|
66
67
|
* second render.
|
|
67
68
|
*/
|
|
68
69
|
export declare function useSessionQuery<Query extends SessionFunction<"query">>(query: Query, ...args: SessionQueryArgsArray<Query>): FunctionReturnType<Query> | undefined;
|
|
70
|
+
type SessionMutation<Mutation extends FunctionReference<"mutation">> = (...args: SessionArgsArray<Mutation>) => Promise<FunctionReturnType<Mutation>>;
|
|
71
|
+
interface ReactSessionMutation<Mutation extends FunctionReference<"mutation">> extends SessionMutation<Mutation> {
|
|
72
|
+
withOptimisticUpdate(optimisticUpdate: OptimisticUpdate<FunctionArgs<Mutation>>): SessionMutation<Mutation>;
|
|
73
|
+
}
|
|
69
74
|
/**
|
|
70
75
|
* Use this in place of {@link useMutation} to run a mutation with a sessionId.
|
|
71
76
|
*
|
|
@@ -75,7 +80,7 @@ export declare function useSessionQuery<Query extends SessionFunction<"query">>(
|
|
|
75
80
|
* @returns A mutation result. For SSR, it will wait until the client has a
|
|
76
81
|
* valid sessionId.
|
|
77
82
|
*/
|
|
78
|
-
export declare function useSessionMutation<Mutation extends SessionFunction<"mutation">>(name: Mutation):
|
|
83
|
+
export declare function useSessionMutation<Mutation extends SessionFunction<"mutation">>(name: Mutation): ReactSessionMutation<Mutation>;
|
|
79
84
|
/**
|
|
80
85
|
* Use this in place of {@link useAction} to run an action with a sessionId.
|
|
81
86
|
*
|
package/react/sessions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["sessions.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAIL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["sessions.ts"],"names":[],"mappings":"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"}
|
package/react/sessions.js
CHANGED
|
@@ -126,13 +126,22 @@ export function useSessionQuery(query, ...args) {
|
|
|
126
126
|
export function useSessionMutation(name) {
|
|
127
127
|
const [sessionId, _, sessionIdPromise] = useSessionId();
|
|
128
128
|
const originalMutation = useMutation(name);
|
|
129
|
-
return
|
|
130
|
-
|
|
131
|
-
...
|
|
132
|
-
|
|
129
|
+
return useMemo(() => {
|
|
130
|
+
function createMutation(originalMutation) {
|
|
131
|
+
return async (...args) => {
|
|
132
|
+
const newArgs = {
|
|
133
|
+
...(args[0] ?? {}),
|
|
134
|
+
sessionId: sessionId || (await sessionIdPromise),
|
|
135
|
+
};
|
|
136
|
+
return originalMutation(...[newArgs]);
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const mutation = createMutation(originalMutation);
|
|
140
|
+
mutation.withOptimisticUpdate = (optimisticUpdate) => {
|
|
141
|
+
return createMutation(originalMutation.withOptimisticUpdate(optimisticUpdate));
|
|
133
142
|
};
|
|
134
|
-
return
|
|
135
|
-
}, [sessionId, originalMutation]);
|
|
143
|
+
return mutation;
|
|
144
|
+
}, [sessionId, sessionIdPromise, originalMutation]);
|
|
136
145
|
}
|
|
137
146
|
/**
|
|
138
147
|
* Use this in place of {@link useAction} to run an action with a sessionId.
|
package/react/sessions.ts
CHANGED
|
@@ -37,9 +37,11 @@ import {
|
|
|
37
37
|
type ConvexReactClientOptions,
|
|
38
38
|
type MutationOptions,
|
|
39
39
|
useConvex,
|
|
40
|
+
type ReactMutation,
|
|
40
41
|
} from "convex/react";
|
|
41
42
|
import type { SessionId } from "../server/sessions.js";
|
|
42
43
|
import type { EmptyObject, BetterOmit } from "../index.js";
|
|
44
|
+
import type { OptimisticUpdate } from "convex/browser";
|
|
43
45
|
|
|
44
46
|
export const DEFAULT_STORAGE_KEY = "convex-session-id";
|
|
45
47
|
|
|
@@ -201,6 +203,18 @@ export function useSessionQuery<Query extends SessionFunction<"query">>(
|
|
|
201
203
|
return useQuery(query, ...([newArgs] as OptionalRestArgs<Query>));
|
|
202
204
|
}
|
|
203
205
|
|
|
206
|
+
type SessionMutation<Mutation extends FunctionReference<"mutation">> = (
|
|
207
|
+
...args: SessionArgsArray<Mutation>
|
|
208
|
+
) => Promise<FunctionReturnType<Mutation>>;
|
|
209
|
+
|
|
210
|
+
// Similar to ReactMutation, but with a sessionId parameter.
|
|
211
|
+
interface ReactSessionMutation<Mutation extends FunctionReference<"mutation">>
|
|
212
|
+
extends SessionMutation<Mutation> {
|
|
213
|
+
withOptimisticUpdate(
|
|
214
|
+
optimisticUpdate: OptimisticUpdate<FunctionArgs<Mutation>>,
|
|
215
|
+
): SessionMutation<Mutation>;
|
|
216
|
+
}
|
|
217
|
+
|
|
204
218
|
/**
|
|
205
219
|
* Use this in place of {@link useMutation} to run a mutation with a sessionId.
|
|
206
220
|
*
|
|
@@ -212,23 +226,32 @@ export function useSessionQuery<Query extends SessionFunction<"query">>(
|
|
|
212
226
|
*/
|
|
213
227
|
export function useSessionMutation<
|
|
214
228
|
Mutation extends SessionFunction<"mutation">,
|
|
215
|
-
>(name: Mutation) {
|
|
229
|
+
>(name: Mutation): ReactSessionMutation<Mutation> {
|
|
216
230
|
const [sessionId, _, sessionIdPromise] = useSessionId();
|
|
217
231
|
const originalMutation = useMutation(name);
|
|
218
232
|
|
|
219
|
-
return
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
):
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
233
|
+
return useMemo(() => {
|
|
234
|
+
function createMutation(
|
|
235
|
+
originalMutation: ReactMutation<Mutation>,
|
|
236
|
+
): SessionMutation<Mutation> {
|
|
237
|
+
return async (...args) => {
|
|
238
|
+
const newArgs: FunctionArgs<Mutation> = {
|
|
239
|
+
...(args[0] ?? {}),
|
|
240
|
+
sessionId: sessionId || (await sessionIdPromise),
|
|
241
|
+
};
|
|
242
|
+
return originalMutation(...[newArgs]);
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
const mutation = createMutation(
|
|
246
|
+
originalMutation,
|
|
247
|
+
) as ReactSessionMutation<Mutation>;
|
|
248
|
+
mutation.withOptimisticUpdate = (optimisticUpdate) => {
|
|
249
|
+
return createMutation(
|
|
250
|
+
originalMutation.withOptimisticUpdate(optimisticUpdate),
|
|
251
|
+
);
|
|
252
|
+
};
|
|
253
|
+
return mutation;
|
|
254
|
+
}, [sessionId, sessionIdPromise, originalMutation]);
|
|
232
255
|
}
|
|
233
256
|
|
|
234
257
|
/**
|