convex
Version:
Client for the Convex Cloud
66 lines (65 loc) • 2.21 kB
JavaScript
;
import { convexToJson, jsonToConvex } from "../../values/index.js";
import { setupAuth, setupActionAuth } from "./authentication_impl.js";
import { setupReader, setupWriter } from "./database_impl.js";
import { setupActionDatabaseClient } from "./actions_impl.js";
async function invokeMutation(func, argsStr) {
const args = jsonToConvex(JSON.parse(argsStr));
const mutationCtx = {
db: setupWriter(),
auth: setupAuth()
};
const result = await Promise.resolve(func(mutationCtx, ...args));
return JSON.stringify(convexToJson(result === void 0 ? null : result));
}
export const mutationGeneric = (func) => {
const m = func;
if (m.isRegistered) {
throw new Error("Function registered twice " + func);
}
m.isRegistered = true;
m.isMutation = true;
m.invokeMutation = (argsStr) => invokeMutation(func, argsStr);
return m;
};
async function invokeQuery(func, argsStr) {
const args = jsonToConvex(JSON.parse(argsStr));
const queryCtx = {
db: setupReader(),
auth: setupAuth()
};
const result = await Promise.resolve(func(queryCtx, ...args));
return JSON.stringify(convexToJson(result === void 0 ? null : result));
}
export const queryGeneric = (func) => {
const q = func;
if (q.isRegistered) {
throw new Error("Function registered twice " + func);
}
q.isRegistered = true;
q.isQuery = true;
q.invokeQuery = (argsStr) => invokeQuery(func, argsStr);
return q;
};
async function invokeAction(func, requestId, argsStr) {
const args = jsonToConvex(JSON.parse(argsStr));
const databaseClient = setupActionDatabaseClient(requestId);
const ctx = {
query: databaseClient.query,
mutation: databaseClient.mutation,
auth: setupActionAuth(requestId)
};
const result = await Promise.resolve(func(ctx, ...args));
return JSON.stringify(convexToJson(result === void 0 ? null : result));
}
export const actionGeneric = (func) => {
const q = func;
if (q.isRegistered) {
throw new Error("Function registered twice " + func);
}
q.isRegistered = true;
q.isAction = true;
q.invokeAction = (requestId, argsStr) => invokeAction(func, requestId, argsStr);
return q;
};
//# sourceMappingURL=registration_impl.js.map