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

Function enhanceRouter

packages/server/src/router-utils.ts:115–169  ·  view source on GitHub ↗
(
  router: T,
  options: EnhanceRouterOptions<TErrorMap>,
)

Source from the content-addressed store, hash-verified

113}
114
115export function enhanceRouter<
116 T extends Lazyable<AnyRouter>,
117 TInitialContext extends Context,
118 TCurrentContext extends Context,
119 TErrorMap extends ErrorMap,
120>(
121 router: T,
122 options: EnhanceRouterOptions<TErrorMap>,
123): EnhancedRouter<T, TInitialContext, TCurrentContext, TErrorMap> {
124 if (isLazy(router)) {
125 const laziedMeta = getLazyMeta(router)
126 const enhancedPrefix = laziedMeta?.prefix ? mergePrefix(options.prefix, laziedMeta?.prefix) : options.prefix
127
128 const enhanced = lazy(async () => {
129 const { default: unlaziedRouter } = await unlazy(router)
130 const enhanced = enhanceRouter(unlaziedRouter, options)
131 return unlazy(enhanced)
132 }, {
133 ...laziedMeta,
134 prefix: enhancedPrefix,
135 })
136
137 const accessible = createAccessibleLazyRouter(enhanced)
138
139 return accessible as any
140 }
141
142 if (isProcedure(router)) {
143 const newMiddlewares = mergeMiddlewares(options.middlewares, router['~orpc'].middlewares, { dedupeLeading: options.dedupeLeadingMiddlewares })
144 const newMiddlewareAdded = newMiddlewares.length - router['~orpc'].middlewares.length
145
146 const enhanced = new Procedure({
147 ...router['~orpc'],
148 route: enhanceRoute(router['~orpc'].route, options),
149 errorMap: mergeErrorMap(options.errorMap, router['~orpc'].errorMap),
150 middlewares: newMiddlewares,
151 inputValidationIndex: router['~orpc'].inputValidationIndex + newMiddlewareAdded,
152 outputValidationIndex: router['~orpc'].outputValidationIndex + newMiddlewareAdded,
153 })
154
155 return enhanced as any
156 }
157
158 if (typeof router !== 'object' || router === null) {
159 return router as any
160 }
161
162 const enhanced = {} as Record<string, any>
163
164 for (const key in router) {
165 enhanced[key] = enhanceRouter(router[key]!, options)
166 }
167
168 return enhanced as any
169}
170
171export interface TraverseContractProceduresOptions {
172 router: AnyContractRouter | AnyRouter

Callers 4

implementerInternalFunction · 0.90
routerMethod · 0.90
lazyMethod · 0.90

Calls 10

isLazyFunction · 0.90
getLazyMetaFunction · 0.90
mergePrefixFunction · 0.90
lazyFunction · 0.90
unlazyFunction · 0.90
isProcedureFunction · 0.90
mergeMiddlewaresFunction · 0.90
enhanceRouteFunction · 0.90
mergeErrorMapFunction · 0.90

Tested by

no test coverage detected