UNPKG

@orpc/client

Version:

<div align="center"> <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 alt="oRPC logo" /> </div>

66 lines (61 loc) 2.13 kB
import { i as isDefinedError } from './shared/client.BX0_8bnM.mjs'; export { C as COMMON_ORPC_ERROR_DEFS, O as ORPCError, d as createORPCErrorFromJson, a as fallbackORPCErrorMessage, f as fallbackORPCErrorStatus, c as isORPCErrorJson, b as isORPCErrorStatus, m as mapEventIterator, t as toORPCError } from './shared/client.BX0_8bnM.mjs'; export { EventPublisher, onError, onFinish, onStart, onSuccess } from '@orpc/shared'; export { ErrorEvent } from '@orpc/standard-server'; async function safe(promise) { try { const output = await promise; return Object.assign( [null, output, false, true], { error: null, data: output, isDefined: false, isSuccess: true } ); } catch (e) { const error = e; if (isDefinedError(error)) { return Object.assign( [error, void 0, true, false], { error, data: void 0, isDefined: true, isSuccess: false } ); } return Object.assign( [error, void 0, false, false], { error, data: void 0, isDefined: false, isSuccess: false } ); } } function resolveFriendlyClientOptions(options) { return { ...options, context: options.context ?? {} // Context only optional if all fields are optional }; } function createORPCClient(link, options) { const path = options?.path ?? []; const procedureClient = async (...[input, options2 = {}]) => { return await link.call(path, input, resolveFriendlyClientOptions(options2)); }; const recursive = new Proxy(procedureClient, { get(target, key) { if (typeof key !== "string") { return Reflect.get(target, key); } return createORPCClient(link, { ...options, path: [...path, key] }); } }); return recursive; } class DynamicLink { constructor(linkResolver) { this.linkResolver = linkResolver; } async call(path, input, options) { const resolvedLink = await this.linkResolver(options, path, input); const output = await resolvedLink.call(path, input, options); return output; } } export { DynamicLink, createORPCClient, isDefinedError, resolveFriendlyClientOptions, safe };