Skip to main content
Glama

Convex MCP server

Official
by get-convex
logging.ts2.75 kB
import { api } from "./_generated/api"; import { query, mutation } from "./_generated/server"; import { assert } from "chai"; export const logString = query(() => { console.log("myString"); }); export const logNumber = query(() => { console.log(42); }); export const logUndefined = query(() => { console.log(undefined); }); export const logNull = query(() => { console.log(null); }); export const logFunction = query(() => { // eslint-disable-next-line @typescript-eslint/no-empty-function function myFunction() {} console.log(myFunction); }); export const logInstance = query(() => { class MyClass {} console.log(new MyClass()); }); export const logObject = query(() => { console.log({ property: "value", nested_object: {}, }); }); export const logArray = query(() => { console.log(["string", 42]); }); export const logDocument = mutation(async ({ db }) => { const id = await db.insert("table", { property: "value" }); const document = await db.get(id); console.log(document); }); export const logFromSubfunction = query(async (ctx) => { console.log("from parent"); await ctx.runQuery(api.logging.logString, {}); }); export const consoleTrace = query(() => { console.trace("myString"); }); export const errorStack = query(() => { function innerFunc() { return new Error(); } function outerFunc() { return innerFunc(); } const stack = outerFunc().stack!.split("\n"); assert.strictEqual(stack.length, 3); assert(stack[0].includes(" at innerFunc (../convex/logging.ts:")); assert(stack[1].includes(" at outerFunc (../convex/logging.ts:")); assert(stack[2].includes(" at <anonymous> (../convex/logging.ts:")); Error.stackTraceLimit = 2; const stackLimited = outerFunc().stack!.split("\n"); assert.strictEqual(stackLimited.length, 2); assert(stackLimited[0].includes(" at innerFunc (../convex/logging.ts:")); assert(stackLimited[1].includes(" at outerFunc (../convex/logging.ts:")); function capture() { const trace = { type: "TRACE" } as any; Error.captureStackTrace(trace); return trace; } const trace = capture(); assert.strictEqual(trace.type, "TRACE"); const stackTrace = trace.stack.split("\n")!; assert.strictEqual(stackTrace.length, 2); assert(stackTrace[0].includes(" at capture (../convex/logging.ts:")); assert(stackTrace[1].includes(" at <anonymous> (../convex/logging.ts:")); }); export const consoleTime = query(() => { console.time(); console.timeLog(); // default: Xms console.timeEnd(); // default: Xms console.time("foo"); console.time("foo"); // Timer "foo" already exists console.timeLog("foo", "bar", "baz"); // foo: Xms bar baz console.timeEnd("foo"); // foo: Xms });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/get-convex/convex-backend'

If you have feedback or need assistance with the MCP directory API, please join our Discord server