(renderers = templateRenderers)
| 253 | } |
| 254 | |
| 255 | function createTemplateRendererSource(renderers = templateRenderers) { |
| 256 | const entries = Array.from(renderers.entries()).sort(([a], [b]) => |
| 257 | a.localeCompare(b), |
| 258 | ) |
| 259 | |
| 260 | const functions = entries |
| 261 | .map(([key, body]) => { |
| 262 | const functionName = `__render_${key.replace(/[^a-zA-Z0-9_$]/g, '_')}` |
| 263 | return `function ${functionName}(context: TemplateRenderContext) { |
| 264 | const { |
| 265 | packageManager, |
| 266 | projectName, |
| 267 | typescript, |
| 268 | tailwind, |
| 269 | js, |
| 270 | jsx, |
| 271 | fileRouter, |
| 272 | codeRouter, |
| 273 | routerOnly, |
| 274 | includeExamples, |
| 275 | addOnEnabled, |
| 276 | addOnOption, |
| 277 | addOns, |
| 278 | integrations, |
| 279 | routes, |
| 280 | getPackageManagerAddScript, |
| 281 | getPackageManagerRunScript, |
| 282 | getPackageManagerExecuteScript, |
| 283 | relativePath, |
| 284 | integrationImportContent, |
| 285 | integrationImportCode, |
| 286 | renderTemplate, |
| 287 | ignoreFile, |
| 288 | } = context |
| 289 | let __output = '' |
| 290 | const __append = (value: unknown) => { |
| 291 | if (value !== undefined && value !== null) { |
| 292 | __output += String(value) |
| 293 | } |
| 294 | } |
| 295 | ${body} |
| 296 | return __output |
| 297 | }` |
| 298 | }) |
| 299 | .join('\n\n') |
| 300 | |
| 301 | const mapEntries = entries |
| 302 | .map(([key]) => { |
| 303 | const functionName = `__render_${key.replace(/[^a-zA-Z0-9_$]/g, '_')}` |
| 304 | return ` ${JSON.stringify(key)}: ${functionName},` |
| 305 | }) |
| 306 | .join('\n') |
| 307 | |
| 308 | return `type TemplateRecord = Record<string, any> |
| 309 | type TemplateAddOn = TemplateRecord & { |
| 310 | integrations?: Array<TemplateRecord> |
| 311 | routes?: Array<TemplateRecord> |
| 312 | } |
no test coverage detected