Skip to content

Commit 92ffa80

Browse files
jameskranzclaude
andcommitted
docs: add JSDoc comments to exported router utility functions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 24438df commit 92ffa80

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

packages/server/src/router-utils.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ import { mergeMiddlewares } from './middleware-utils'
1010
import { isProcedure, Procedure } from './procedure'
1111
import { getHiddenRouterContract } from './router-hidden'
1212

13+
/**
14+
* Resolves a nested router by walking the given path segments.
15+
*
16+
* @info If a lazy router is encountered mid-path, the remaining segments are deferred into a new lazy loader.
17+
*/
1318
export function getRouter<T extends Lazyable<AnyRouter | undefined>>(
1419
router: T,
1520
path: readonly string[],
@@ -57,6 +62,9 @@ export type AccessibleLazyRouter<T extends Lazyable<AnyRouter | undefined>>
5762
[K in keyof T]: T[K] extends Lazyable<AnyRouter> ? AccessibleLazyRouter<T[K]> : never
5863
}
5964

65+
/**
66+
* Creates a proxy around a lazy router that enables dot-notation property access without eager loading.
67+
*/
6068
export function createAccessibleLazyRouter<T extends Lazy<AnyRouter | undefined>>(lazied: T): AccessibleLazyRouter<T> {
6169
const recursive = new Proxy(lazied, {
6270
get(target, key) {
@@ -107,6 +115,11 @@ export interface EnhanceRouterOptions<TErrorMap extends ErrorMap> extends Enhanc
107115
dedupeLeadingMiddlewares: boolean
108116
}
109117

118+
/**
119+
* Recursively applies middlewares, error maps, and route options to every procedure in a router tree.
120+
*
121+
* @info Lazy routers are wrapped so enhancement is deferred until loading. Non-object primitive values are safely skipped.
122+
*/
110123
export function enhanceRouter<
111124
T extends Lazyable<AnyRouter>,
112125
TInitialContext extends Context,
@@ -183,6 +196,11 @@ export interface LazyTraverseContractProceduresOptions {
183196
path: readonly string[]
184197
}
185198

199+
/**
200+
* Synchronously walks a router tree, invoking the callback for each contract procedure and collecting lazy routers for deferred resolution.
201+
*
202+
* @info Non-object primitive values in the tree are safely skipped.
203+
*/
186204
export function traverseContractProcedures(
187205
options: TraverseContractProceduresOptions,
188206
callback: (options: TraverseContractProcedureCallbackOptions) => void,
@@ -226,6 +244,9 @@ export function traverseContractProcedures(
226244
return lazyOptions
227245
}
228246

247+
/**
248+
* Asynchronously resolves all procedures in a router tree, including those behind lazy loaders.
249+
*/
229250
export async function resolveContractProcedures(
230251
options: TraverseContractProceduresOptions,
231252
callback: (options: TraverseContractProcedureCallbackOptions) => void,
@@ -253,6 +274,11 @@ export type UnlaziedRouter<T extends AnyRouter>
253274
[K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? UnlaziedRouter<U> : never
254275
}
255276

277+
/**
278+
* Recursively resolves all lazy-loaded components in a router tree, returning a fully eager copy.
279+
*
280+
* @info Procedures are returned as-is. Non-object primitive values are safely skipped.
281+
*/
256282
export async function unlazyRouter<T extends AnyRouter>(router: T): Promise<UnlaziedRouter<T>> {
257283
if (isProcedure(router)) {
258284
return router as any

0 commit comments

Comments
 (0)