Skip to main content
Glama
helpers.ts2.33 kB
import { performOp } from "udf-syscall-ffi"; /** * Throw an uncatchable error for unimplemented portions of JS builtins. * * We want to avoid obscure error messages due to code (i.e. external node modules) * try / catch-ing errors around JS builtins. * @param operation * @param className */ export const throwNotImplementedMethodError = ( operation: string, className: string, extraMessage?: string, ): never => { const baseMessage = `Not implemented: ${operation} for ${className}`; const useNodeSuggestion = "Consider calling an action defined in Node.js instead (https://docs.convex.dev/functions/actions)."; const message = extraMessage ? `${baseMessage}: ${extraMessage}. ${useNodeSuggestion}` : `${baseMessage}. ${useNodeSuggestion}`; return throwUncatchableDeveloperError(message); }; /** * Throw an uncatchable error for unimplemented JS builtins. * * We want to avoid obscure error messages due to code (i.e. external node modules) * try / catch-ing errors around JS builtins. * @param operation * @param className */ export const throwNotImplementedError = ( operation: string, extraMessage?: string, ): never => { const baseMessage = `Not implemented ${operation}`; const useNodeSuggestion = "Consider calling an action defined in Node.js instead (https://docs.convex.dev/functions/actions)."; const message = extraMessage ? `${baseMessage}: ${extraMessage}. ${useNodeSuggestion}` : `${baseMessage}. ${useNodeSuggestion}`; return throwUncatchableDeveloperError(message); }; export const throwUncatchableDeveloperError = (message: string): never => { return performOp("throwUncatchableDeveloperError", message) as never; }; export function requiredArguments( length: number, required: number, prefix: string, ): void { if (length < required) { const errMsg = `${prefix ? prefix + ": " : ""}${required} argument${ required === 1 ? "" : "s" } required, but only ${length} present.`; throw new TypeError(errMsg); } } export function copyBuffer(input: ArrayBufferView | ArrayBuffer): Uint8Array { if (ArrayBuffer.isView(input)) { return new Uint8Array( input.buffer, input.byteOffset, input.byteLength, ).slice(); } // ArrayBuffer return new Uint8Array(input, 0, input.byteLength).slice(); }

Latest Blog Posts

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