UNPKG

convex

Version:

Client for the Convex Cloud

66 lines (65 loc) 2.21 kB
"use strict"; 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