{"version":3,"file":"template.cjs","sources":["../../src/template.ts"],"sourcesContent":["import { format } from './utils'\nimport type { Config } from './config'\n\ntype TemplateTag = 'tsrImports' | 'tsrPath' | 'tsrExportStart' | 'tsrExportEnd'\n\nexport function fillTemplate(\n  config: Config,\n  template: string,\n  values: Record<TemplateTag, string>,\n) {\n  const replaced = template.replace(\n    /%%(\\w+)%%/g,\n    (_, key) => values[key as TemplateTag] || '',\n  )\n  return format(replaced, config)\n}\n\nexport type TargetTemplate = {\n  fullPkg: string\n  subPkg: string\n  rootRoute: {\n    template: () => string\n    imports: {\n      tsrImports: () => string\n      tsrExportStart: () => string\n      tsrExportEnd: () => string\n    }\n  }\n  route: {\n    template: () => string\n    imports: {\n      tsrImports: () => string\n      tsrExportStart: (routePath: string) => string\n      tsrExportEnd: () => string\n    }\n  }\n  lazyRoute: {\n    template: () => string\n    imports: {\n      tsrImports: () => string\n      tsrExportStart: (routePath: string) => string\n      tsrExportEnd: () => string\n    }\n  }\n}\n\nexport function getTargetTemplate(config: Config): TargetTemplate {\n  const target = config.target\n  switch (target) {\n    case 'react':\n      return {\n        fullPkg: '@tanstack/react-router',\n        subPkg: 'react-router',\n        rootRoute: {\n          template: () =>\n            [\n              'import * as React from \"react\"\\n',\n              '%%tsrImports%%',\n              '\\n\\n',\n              '%%tsrExportStart%%{\\n component: RootComponent\\n }%%tsrExportEnd%%\\n\\n',\n              'function RootComponent() { return (<React.Fragment><div>Hello \"%%tsrPath%%\"!</div><Outlet /></React.Fragment>) };\\n',\n            ].join(''),\n          imports: {\n            tsrImports: () =>\n              \"import { Outlet, createRootRoute } from '@tanstack/react-router';\",\n            tsrExportStart: () => 'export const Route = createRootRoute(',\n            tsrExportEnd: () => ');',\n          },\n        },\n        route: {\n          template: () =>\n            [\n              '%%tsrImports%%',\n              '\\n\\n',\n              '%%tsrExportStart%%{\\n component: RouteComponent\\n }%%tsrExportEnd%%\\n\\n',\n              'function RouteComponent() { return <div>Hello \"%%tsrPath%%\"!</div> };\\n',\n            ].join(''),\n          imports: {\n            tsrImports: () =>\n              config.verboseFileRoutes === false\n                ? ''\n                : \"import { createFileRoute } from '@tanstack/react-router';\",\n            tsrExportStart: (routePath) =>\n              config.verboseFileRoutes === false\n                ? 'export const Route = createFileRoute('\n                : `export const Route = createFileRoute('${routePath}')(`,\n            tsrExportEnd: () => ');',\n          },\n        },\n        lazyRoute: {\n          template: () =>\n            [\n              '%%tsrImports%%',\n              '\\n\\n',\n              '%%tsrExportStart%%{\\n component: RouteComponent\\n }%%tsrExportEnd%%\\n\\n',\n              'function RouteComponent() { return <div>Hello \"%%tsrPath%%\"!</div> };\\n',\n            ].join(''),\n          imports: {\n            tsrImports: () =>\n              config.verboseFileRoutes === false\n                ? ''\n                : \"import { createLazyFileRoute } from '@tanstack/react-router';\",\n            tsrExportStart: (routePath) =>\n              config.verboseFileRoutes === false\n                ? 'export const Route = createLazyFileRoute('\n                : `export const Route = createLazyFileRoute('${routePath}')(`,\n            tsrExportEnd: () => ');',\n          },\n        },\n      }\n    case 'solid':\n      return {\n        fullPkg: '@tanstack/solid-router',\n        subPkg: 'solid-router',\n        rootRoute: {\n          template: () =>\n            [\n              'import * as Solid from \"solid-js\"\\n',\n              '%%tsrImports%%',\n              '\\n\\n',\n              '%%tsrExportStart%%{\\n component: RootComponent\\n }%%tsrExportEnd%%\\n\\n',\n              'function RootComponent() { return (<><div>Hello \"%%tsrPath%%\"!</div><Outlet /></>) };\\n',\n            ].join(''),\n          imports: {\n            tsrImports: () =>\n              \"import { Outlet, createRootRoute } from '@tanstack/solid-router';\",\n            tsrExportStart: () => 'export const Route = createRootRoute(',\n            tsrExportEnd: () => ');',\n          },\n        },\n        route: {\n          template: () =>\n            [\n              '%%tsrImports%%',\n              '\\n\\n',\n              '%%tsrExportStart%%{\\n component: RouteComponent\\n }%%tsrExportEnd%%\\n\\n',\n              'function RouteComponent() { return <div>Hello \"%%tsrPath%%\"!</div> };\\n',\n            ].join(''),\n          imports: {\n            tsrImports: () =>\n              config.verboseFileRoutes === false\n                ? ''\n                : \"import { createFileRoute } from '@tanstack/solid-router';\",\n            tsrExportStart: (routePath) =>\n              config.verboseFileRoutes === false\n                ? 'export const Route = createFileRoute('\n                : `export const Route = createFileRoute('${routePath}')(`,\n            tsrExportEnd: () => ');',\n          },\n        },\n        lazyRoute: {\n          template: () =>\n            [\n              '%%tsrImports%%',\n              '\\n\\n',\n              '%%tsrExportStart%%{\\n component: RouteComponent\\n }%%tsrExportEnd%%\\n\\n',\n              'function RouteComponent() { return <div>Hello \"%%tsrPath%%\"!</div> };\\n',\n            ].join(''),\n          imports: {\n            tsrImports: () =>\n              config.verboseFileRoutes === false\n                ? ''\n                : \"import { createLazyFileRoute } from '@tanstack/solid-router';\",\n\n            tsrExportStart: (routePath) =>\n              config.verboseFileRoutes === false\n                ? 'export const Route = createLazyFileRoute('\n                : `export const Route = createLazyFileRoute('${routePath}')(`,\n\n            tsrExportEnd: () => ');',\n          },\n        },\n      }\n    default:\n      throw new Error(`router-generator: Unknown target type: ${target}`)\n  }\n}\n"],"names":["format"],"mappings":";;;AAKgB,SAAA,aACd,QACA,UACA,QACA;AACA,QAAM,WAAW,SAAS;AAAA,IACxB;AAAA,IACA,CAAC,GAAG,QAAQ,OAAO,GAAkB,KAAK;AAAA,EAC5C;AACO,SAAAA,MAAA,OAAO,UAAU,MAAM;AAChC;AA+BO,SAAS,kBAAkB,QAAgC;AAChE,QAAM,SAAS,OAAO;AACtB,UAAQ,QAAQ;AAAA,IACd,KAAK;AACI,aAAA;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,WAAW;AAAA,UACT,UAAU,MACR;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,EACA,KAAK,EAAE;AAAA,UACX,SAAS;AAAA,YACP,YAAY,MACV;AAAA,YACF,gBAAgB,MAAM;AAAA,YACtB,cAAc,MAAM;AAAA,UAAA;AAAA,QAExB;AAAA,QACA,OAAO;AAAA,UACL,UAAU,MACR;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,EACA,KAAK,EAAE;AAAA,UACX,SAAS;AAAA,YACP,YAAY,MACV,OAAO,sBAAsB,QACzB,KACA;AAAA,YACN,gBAAgB,CAAC,cACf,OAAO,sBAAsB,QACzB,0CACA,yCAAyC,SAAS;AAAA,YACxD,cAAc,MAAM;AAAA,UAAA;AAAA,QAExB;AAAA,QACA,WAAW;AAAA,UACT,UAAU,MACR;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,EACA,KAAK,EAAE;AAAA,UACX,SAAS;AAAA,YACP,YAAY,MACV,OAAO,sBAAsB,QACzB,KACA;AAAA,YACN,gBAAgB,CAAC,cACf,OAAO,sBAAsB,QACzB,8CACA,6CAA6C,SAAS;AAAA,YAC5D,cAAc,MAAM;AAAA,UAAA;AAAA,QACtB;AAAA,MAEJ;AAAA,IACF,KAAK;AACI,aAAA;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,WAAW;AAAA,UACT,UAAU,MACR;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,EACA,KAAK,EAAE;AAAA,UACX,SAAS;AAAA,YACP,YAAY,MACV;AAAA,YACF,gBAAgB,MAAM;AAAA,YACtB,cAAc,MAAM;AAAA,UAAA;AAAA,QAExB;AAAA,QACA,OAAO;AAAA,UACL,UAAU,MACR;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,EACA,KAAK,EAAE;AAAA,UACX,SAAS;AAAA,YACP,YAAY,MACV,OAAO,sBAAsB,QACzB,KACA;AAAA,YACN,gBAAgB,CAAC,cACf,OAAO,sBAAsB,QACzB,0CACA,yCAAyC,SAAS;AAAA,YACxD,cAAc,MAAM;AAAA,UAAA;AAAA,QAExB;AAAA,QACA,WAAW;AAAA,UACT,UAAU,MACR;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,EACA,KAAK,EAAE;AAAA,UACX,SAAS;AAAA,YACP,YAAY,MACV,OAAO,sBAAsB,QACzB,KACA;AAAA,YAEN,gBAAgB,CAAC,cACf,OAAO,sBAAsB,QACzB,8CACA,6CAA6C,SAAS;AAAA,YAE5D,cAAc,MAAM;AAAA,UAAA;AAAA,QACtB;AAAA,MAEJ;AAAA,IACF;AACE,YAAM,IAAI,MAAM,0CAA0C,MAAM,EAAE;AAAA,EAAA;AAExE;;;"}