( options: TraverseContractProceduresOptions, callback: (options: TraverseContractProcedureCallbackOptions) => void, lazyOptions: LazyTraverseContractProceduresOptions[] = [], )
| 189 | } |
| 190 | |
| 191 | export 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 | |
| 236 | export async function resolveContractProcedures( |
| 237 | options: TraverseContractProceduresOptions, |
no test coverage detected