MCPcopy Create free account
hub / github.com/middleapi/orpc / traverseContractProcedures

Function traverseContractProcedures

packages/server/src/router-utils.ts:191–234  ·  view source on GitHub ↗
(
  options: TraverseContractProceduresOptions,
  callback: (options: TraverseContractProcedureCallbackOptions) => void,
  lazyOptions: LazyTraverseContractProceduresOptions[] = [],
)

Source from the content-addressed store, hash-verified

189}
190
191export function traverseContractProcedures(
192 options: TraverseContractProceduresOptions,
193 callback: (options: TraverseContractProcedureCallbackOptions) => void,
194 lazyOptions: LazyTraverseContractProceduresOptions[] = [],
195): LazyTraverseContractProceduresOptions[] {
196 let currentRouter: AnyContractRouter | Lazyable<AnyRouter> = options.router
197
198 const hiddenContract = isTypescriptObject(options.router)
199 ? getHiddenRouterContract(options.router)
200 : undefined
201
202 if (hiddenContract !== undefined) {
203 currentRouter = hiddenContract
204 }
205
206 if (isLazy(currentRouter)) {
207 lazyOptions.push({
208 router: currentRouter,
209 path: options.path,
210 })
211 }
212
213 else if (isContractProcedure(currentRouter)) {
214 callback({
215 contract: currentRouter,
216 path: options.path,
217 })
218 }
219
220 else if (typeof currentRouter === 'object' && currentRouter !== null) {
221 for (const key in currentRouter) {
222 traverseContractProcedures(
223 {
224 router: (currentRouter as any)[key],
225 path: [...options.path, key],
226 },
227 callback,
228 lazyOptions,
229 )
230 }
231 }
232
233 return lazyOptions
234}
235
236export async function resolveContractProcedures(
237 options: TraverseContractProceduresOptions,

Callers 4

initMethod · 0.90
initMethod · 0.90

Calls 6

isTypescriptObjectFunction · 0.90
getHiddenRouterContractFunction · 0.90
isLazyFunction · 0.90
isContractProcedureFunction · 0.90
callbackFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected