UNPKG

convex

Version:

Client for the Convex Cloud

101 lines (100 loc) 3.33 kB
"use strict"; import { convexToJson, jsonToConvex } from "../../values/index.js"; import { setupActionDatabaseClient } from "./actions_impl.js"; import { setupActionAuth, setupAuth } from "./authentication_impl.js"; import { setupReader, setupWriter } from "./database_impl.js"; import { setupHttpCalls } from "./http_impl.js"; import { setupActionScheduler, setupMutationScheduler } from "./scheduler_impl.js"; import { setupStorageReader, setupStorageWriter } from "./storage_impl.js"; import { performJsSyscall } from "./syscall.js"; async function invokeMutation(func, argsStr) { const args = jsonToConvex(JSON.parse(argsStr)); const mutationCtx = { db: setupWriter(), auth: setupAuth(), storage: setupStorageWriter(), scheduler: setupMutationScheduler() }; 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(), storage: setupStorageReader() }; 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 = { runQuery: databaseClient.runQuery, runMutation: databaseClient.runMutation, auth: setupActionAuth(requestId), scheduler: setupActionScheduler(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; }; async function invokeHttpEndpoint(func, argsStr) { const calls = setupHttpCalls(); const ctx = { ...calls, auth: setupAuth() }; const request = performJsSyscall("requestFromConvexJson", { convexJson: JSON.parse(argsStr) }); const response = await Promise.resolve(func(ctx, request)); return JSON.stringify( performJsSyscall("convexJsonFromResponse", { response }) ); } export const httpEndpointGeneric = (func) => { const q = func; if (q.isRegistered) { throw new Error("Function registered twice " + func); } q.isRegistered = true; q.isHttp = true; q.invokeHttpEndpoint = (argsStr) => invokeHttpEndpoint(func, argsStr); return q; }; //# sourceMappingURL=registration_impl.js.map