( router: T, options: EnhanceRouterOptions<TErrorMap>, )
| 113 | } |
| 114 | |
| 115 | export 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 | |
| 171 | export interface TraverseContractProceduresOptions { |
| 172 | router: AnyContractRouter | AnyRouter |
no test coverage detected