@tanstack/router-cli 0.0.1-beta.69 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/bin/tsr.js +1 -1
- package/build/cjs/config.js +14 -10
- package/build/cjs/config.js.map +1 -1
- package/build/cjs/generate.js +1 -3
- package/build/cjs/generate.js.map +1 -1
- package/build/cjs/generator.js +203 -237
- package/build/cjs/generator.js.map +1 -1
- package/build/cjs/index.js +4 -7
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/watch.js +17 -24
- package/build/cjs/watch.js.map +1 -1
- package/build/types/config.d.ts +20 -0
- package/build/types/generate.d.ts +2 -0
- package/build/types/generator.d.ts +20 -0
- package/build/types/index.d.ts +1 -1
- package/build/types/watch.d.ts +1 -0
- package/package.json +8 -2
- package/src/config.ts +13 -8
- package/src/generator.ts +290 -394
- package/src/watch.ts +19 -16
- package/build/cjs/transformCode.js +0 -584
- package/build/cjs/transformCode.js.map +0 -1
- package/build/esm/index.js +0 -903
- package/build/esm/index.js.map +0 -1
- package/src/transformCode.ts +0 -860
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sources":["../../src/generator.ts"],"sourcesContent":["import klaw from 'klaw'\nimport through2 from 'through2'\nimport path from 'path'\nimport fs from 'fs-extra'\nimport crypto from 'crypto'\nimport {\n detectExports,\n ensureBoilerplate,\n generateRouteConfig,\n isolatedProperties,\n isolateOptionToExport,\n} from './transformCode'\nimport { Config } from './config'\n\nlet latestTask = 0\nexport const rootRouteName = '__root'\nexport const rootRouteClientName = '__root.client'\n\nexport type RouteNode = {\n filename: string\n clientFilename: string\n fileNameNoExt: string\n fullPath: string\n fullDir: string\n isDirectory: boolean\n isIndex: boolean\n variable: string\n childRoutesDir?: string\n genPath: string\n genDir: string\n genPathNoExt: string\n parent?: RouteNode\n hash?: string\n importedFiles?: string[]\n version?: number\n changed?: boolean\n new?: boolean\n isRoot?: boolean\n children?: RouteNode[]\n}\n\nexport type IsolatedExport = {\n key: string\n exported: boolean\n code?: string | null\n}\n\nlet nodeCache: RouteNode[] = undefined!\n\nexport async function generator(config: Config) {\n console.log()\n\n let first = false\n\n if (!nodeCache) {\n first = true\n console.log('🔄 Generating routes...')\n nodeCache = []\n } else {\n console.log('♻️ Regenerating routes...')\n }\n\n const taskId = latestTask + 1\n latestTask = taskId\n\n const checkLatest = () => {\n if (latestTask !== taskId) {\n console.log(`- Skipping since file changes were made while generating.`)\n return false\n }\n\n return true\n }\n\n const start = Date.now()\n let routeConfigImports: string[] = []\n let routeConfigClientImports: string[] = []\n\n let nodesChanged = false\n const fileQueue: [string, string][] = []\n const queueWriteFile = (filename: string, content: string) => {\n fileQueue.push([filename, content])\n }\n\n async function reparent(dir: string): Promise<RouteNode[]> {\n let dirList\n\n try {\n dirList = await fs.readdir(dir)\n } catch (err) {\n console.log()\n console.error(\n 'TSR: Error reading the config.routesDirectory. Does it exist?',\n )\n console.log()\n throw err\n }\n\n const dirListCombo = multiSortBy(\n await Promise.all(\n dirList.map(async (filename): Promise<RouteNode> => {\n const fullPath = path.resolve(dir, filename)\n const stat = await fs.lstat(fullPath)\n const ext = path.extname(filename)\n\n const clientFilename = filename.replace(ext, `.client${ext}`)\n\n const pathFromRoutes = path.relative(config.routesDirectory, fullPath)\n const genPath = path.resolve(config.routeGenDirectory, pathFromRoutes)\n\n const genPathNoExt = removeExt(genPath)\n const genDir = path.resolve(genPath, '..')\n\n const fileNameNoExt = removeExt(filename)\n\n return {\n filename,\n clientFilename,\n fileNameNoExt,\n fullPath,\n fullDir: dir,\n genPath,\n genDir,\n genPathNoExt,\n variable: fileToVariable(removeExt(pathFromRoutes)),\n isDirectory: stat.isDirectory(),\n isIndex: fileNameNoExt === 'index',\n }\n }),\n ),\n [\n (d) => (d.fileNameNoExt === 'index' ? -1 : 1),\n (d) => d.fileNameNoExt,\n (d) => (d.isDirectory ? 1 : -1),\n ],\n )\n\n const reparented: typeof dirListCombo = []\n\n dirListCombo.forEach(async (d, i) => {\n if (d.isDirectory) {\n const parent = reparented.find(\n (dd) => !dd.isDirectory && dd.fileNameNoExt === d.filename,\n )\n\n if (parent) {\n parent.childRoutesDir = d.fullPath\n } else {\n reparented.push(d)\n }\n } else {\n reparented.push(d)\n }\n })\n\n return Promise.all(\n reparented.map(async (d) => {\n if (d.childRoutesDir) {\n const children = await reparent(d.childRoutesDir)\n\n d = {\n ...d,\n children,\n }\n\n children.forEach((child) => (child.parent = d))\n\n return d\n }\n return d\n }),\n )\n }\n\n const reparented = await reparent(config.routesDirectory)\n\n async function buildRouteConfig(\n nodes: RouteNode[],\n depth = 1,\n ): Promise<string> {\n const children = nodes.map(async (n) => {\n let node = nodeCache.find((d) => d.fullPath === n.fullPath)!\n\n if (node) {\n node.new = false\n } else {\n node = n\n nodeCache.push(node)\n if (!first) {\n node.new = true\n }\n }\n\n node.version = latestTask\n if (node.fileNameNoExt === '__root') {\n node.isRoot = true\n }\n\n const routeCode = await fs.readFile(node.fullPath, 'utf-8')\n\n const hashSum = crypto.createHash('sha256')\n hashSum.update(routeCode)\n const hash = hashSum.digest('hex')\n\n node.changed = node.hash !== hash\n if (node.changed) {\n nodesChanged = true\n node.hash = hash\n\n try {\n // Ensure the boilerplate for the route exists\n const code = await ensureBoilerplate(node, routeCode)\n\n if (code) {\n await fs.writeFile(node.fullPath, code)\n }\n\n let imports: IsolatedExport[] = []\n\n if (!node.isRoot) {\n // Generate the isolated files\n const transforms = await Promise.all(\n isolatedProperties.map(async (key): Promise<IsolatedExport> => {\n let exported = false\n let exports: string[] = []\n\n const transformed = await isolateOptionToExport(\n node,\n routeCode,\n {\n isolate: key,\n },\n )\n\n if (transformed) {\n exports = await detectExports(transformed)\n if (exports.includes(key)) {\n exported = true\n }\n }\n\n return { key, exported, code: transformed }\n }),\n )\n\n imports = transforms.filter(({ exported }) => exported)\n\n node.importedFiles = await Promise.all(\n imports.map(({ key, code }) => {\n const importFilename = `${node.genPathNoExt}-${key}.tsx`\n queueWriteFile(importFilename, code!)\n return importFilename\n }),\n )\n }\n\n const routeConfigCode = await generateRouteConfig(\n node,\n routeCode,\n imports,\n false,\n )\n\n const clientRouteConfigCode = await generateRouteConfig(\n node,\n routeCode,\n imports,\n true,\n )\n\n queueWriteFile(node.genPath, routeConfigCode)\n queueWriteFile(\n path.resolve(node.genDir, node.clientFilename),\n clientRouteConfigCode,\n )\n } catch (err) {\n node.hash = ''\n }\n }\n\n routeConfigImports.push(\n `import { route as ${node.variable}Route } from './${removeExt(\n path\n .relative(config.routeGenDirectory, node.genPath)\n .replace(/\\\\/gi, '/'),\n )}'`,\n )\n\n routeConfigClientImports.push(\n `import { route as ${node.variable}Route } from './${removeExt(\n path\n .relative(\n config.routeGenDirectory,\n path.resolve(node.genDir, node.clientFilename),\n )\n .replace(/\\\\/gi, '/'),\n )}'`,\n )\n\n if (node.isRoot) {\n return undefined\n }\n\n const route = `${node.variable}Route`\n\n if (node.children?.length) {\n const childConfigs = await buildRouteConfig(node.children, depth + 1)\n return `${route}.addChildren([\\n${spaces(\n depth * 4,\n )}${childConfigs}\\n${spaces(depth * 2)}])`\n }\n\n return route\n })\n\n return (await Promise.all(children))\n .filter(Boolean)\n .join(`,\\n${spaces(depth * 2)}`)\n }\n\n const routeConfigChildrenText = await buildRouteConfig(reparented)\n\n routeConfigImports = multiSortBy(routeConfigImports, [\n (d) => (d.includes('__root') ? -1 : 1),\n (d) => d.split('/').length,\n (d) => (d.endsWith(\"index'\") ? -1 : 1),\n (d) => d,\n ])\n\n routeConfigClientImports = multiSortBy(routeConfigClientImports, [\n (d) => (d.includes('__root') ? -1 : 1),\n (d) => d.split('/').length,\n (d) => (d.endsWith(\"index.client'\") ? -1 : 1),\n (d) => d,\n ])\n\n const routeConfig = `export const routeTree = rootRoute.addChildren([\\n ${routeConfigChildrenText}\\n])\\nexport type __GeneratedRouteConfig = typeof routeTree`\n const routeConfigClient = `export const routeTreeClient = rootRoute.addChildren([\\n ${routeConfigChildrenText}\\n]) as __GeneratedRouteConfig`\n\n const routeConfigFileContent = [\n routeConfigImports.join('\\n'),\n routeConfig,\n ].join('\\n\\n')\n\n const routeConfigClientFileContent = [\n `import type { __GeneratedRouteConfig } from './routeTree'`,\n routeConfigClientImports.join('\\n'),\n routeConfigClient,\n ].join('\\n\\n')\n\n if (nodesChanged) {\n queueWriteFile(\n path.resolve(config.routeGenDirectory, 'routeTree.ts'),\n routeConfigFileContent,\n )\n queueWriteFile(\n path.resolve(config.routeGenDirectory, 'routeTree.client.ts'),\n routeConfigClientFileContent,\n )\n }\n\n // Do all of our file system manipulation at the end\n await fs.mkdir(config.routeGenDirectory, { recursive: true })\n\n if (!checkLatest()) return\n\n await Promise.all(\n fileQueue.map(async ([filename, content]) => {\n await fs.ensureDir(path.dirname(filename))\n const exists = await fs.pathExists(filename)\n let current = ''\n if (exists) {\n current = await fs.readFile(filename, 'utf-8')\n }\n if (current !== content) {\n await fs.writeFile(filename, content)\n }\n }),\n )\n\n if (!checkLatest()) return\n\n const allFiles = await getAllFiles(config.routeGenDirectory)\n\n if (!checkLatest()) return\n\n const removedNodes: RouteNode[] = []\n\n nodeCache = nodeCache.filter((d) => {\n if (d.version !== latestTask) {\n removedNodes.push(d)\n return false\n }\n return true\n })\n\n const newNodes = nodeCache.filter((d) => d.new)\n const updatedNodes = nodeCache.filter((d) => !d.new && d.changed)\n\n const unusedFiles = allFiles.filter((d) => {\n if (\n d === path.resolve(config.routeGenDirectory, 'routeTree.ts') ||\n d === path.resolve(config.routeGenDirectory, 'routeTree.client.ts')\n ) {\n return false\n }\n\n let node = nodeCache.find(\n (n) =>\n n.genPath === d ||\n path.resolve(n.genDir, n.clientFilename) === d ||\n n.importedFiles?.includes(d),\n )\n\n return !node\n })\n\n await Promise.all(\n unusedFiles.map((d) => {\n fs.remove(d)\n }),\n )\n\n console.log(\n `🌲 Processed ${nodeCache.length} routes in ${Date.now() - start}ms`,\n )\n\n if (newNodes.length || updatedNodes.length || removedNodes.length) {\n if (newNodes.length) {\n console.log(`🥳 Added ${newNodes.length} new routes`)\n }\n\n if (updatedNodes.length) {\n console.log(`✅ Updated ${updatedNodes.length} routes`)\n }\n\n if (removedNodes.length) {\n console.log(`🗑 Removed ${removedNodes.length} unused routes`)\n }\n } else {\n console.log(`🎉 No changes were found. Carry on!`)\n }\n}\n\nfunction getAllFiles(dir: string): Promise<string[]> {\n return new Promise((resolve, reject) => {\n const excludeDirFilter = through2.obj(function (item, enc, next) {\n if (!item.stats.isDirectory()) this.push(item)\n next()\n })\n\n const items: string[] = []\n\n klaw(dir)\n .pipe(excludeDirFilter)\n .on('data', (item) => items.push(item.path))\n .on('error', (err) => reject(err))\n .on('end', () => resolve(items))\n })\n}\n\nfunction fileToVariable(d: string) {\n return d\n .split('/')\n .map((d, i) => (i > 0 ? capitalize(d) : d))\n .join('')\n .replace(/([^a-zA-Z0-9]|[\\.])/gm, '')\n}\n\nexport function removeExt(d: string) {\n return d.substring(0, d.lastIndexOf('.')) || d\n}\n\nfunction spaces(d: number): string {\n return Array.from({ length: d })\n .map(() => ' ')\n .join('')\n}\n\nexport function multiSortBy<T>(\n arr: T[],\n accessors: ((item: T) => any)[] = [(d) => d],\n): T[] {\n return arr\n .map((d, i) => [d, i] as const)\n .sort(([a, ai], [b, bi]) => {\n for (const accessor of accessors) {\n const ao = accessor(a)\n const bo = accessor(b)\n\n if (typeof ao === 'undefined') {\n if (typeof bo === 'undefined') {\n continue\n }\n return 1\n }\n\n if (ao === bo) {\n continue\n }\n\n return ao > bo ? 1 : -1\n }\n\n return ai - bi\n })\n .map(([d]) => d)\n}\n\nfunction capitalize(s: string) {\n if (typeof s !== 'string') return ''\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n"],"names":["latestTask","rootRouteName","rootRouteClientName","nodeCache","undefined","generator","config","console","log","first","taskId","checkLatest","start","Date","now","routeConfigImports","routeConfigClientImports","nodesChanged","fileQueue","queueWriteFile","filename","content","push","reparent","dir","dirList","fs","readdir","err","error","dirListCombo","multiSortBy","Promise","all","map","fullPath","path","resolve","stat","lstat","ext","extname","clientFilename","replace","pathFromRoutes","relative","routesDirectory","genPath","routeGenDirectory","genPathNoExt","removeExt","genDir","fileNameNoExt","fullDir","variable","fileToVariable","isDirectory","isIndex","d","reparented","forEach","i","parent","find","dd","childRoutesDir","children","child","buildRouteConfig","nodes","depth","n","node","new","version","isRoot","routeCode","readFile","hashSum","crypto","createHash","update","hash","digest","changed","code","ensureBoilerplate","writeFile","imports","transforms","isolatedProperties","key","exported","exports","transformed","isolateOptionToExport","isolate","detectExports","includes","filter","importedFiles","importFilename","routeConfigCode","generateRouteConfig","clientRouteConfigCode","route","length","childConfigs","spaces","Boolean","join","routeConfigChildrenText","split","endsWith","routeConfig","routeConfigClient","routeConfigFileContent","routeConfigClientFileContent","mkdir","recursive","ensureDir","dirname","exists","pathExists","current","allFiles","getAllFiles","removedNodes","newNodes","updatedNodes","unusedFiles","remove","reject","excludeDirFilter","through2","obj","item","enc","next","stats","items","klaw","pipe","on","capitalize","substring","lastIndexOf","Array","from","arr","accessors","sort","a","ai","b","bi","accessor","ao","bo","s","charAt","toUpperCase","slice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generator.js","sources":["../../src/generator.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs-extra'\nimport * as prettier from 'prettier'\nimport { Config } from './config'\nimport { cleanPath, trimPathLeft } from '@tanstack/react-router'\n\nlet latestTask = 0\nexport const rootPathId = '__root'\nexport const fileRouteRegex = /new\\s+FileRoute\\(([^)]*)\\)/g\n\nexport type RouteNode = {\n filePath: string\n fullPath: string\n variableName: string\n routePath?: string\n cleanedPath?: string\n path?: string\n isNonPath?: boolean\n isNonLayout?: boolean\n isRoot?: boolean\n children?: RouteNode[]\n parent?: RouteNode\n}\n\nasync function getRouteNodes(config: Config) {\n const { routeFilePrefix, routeFileIgnorePrefix } = config\n\n let routeNodes: RouteNode[] = []\n\n async function recurse(dir: string) {\n const fullDir = path.resolve(config.routesDirectory, dir)\n let dirList = await fs.readdir(fullDir)\n\n dirList = dirList.filter((d) => {\n if (\n d.startsWith('.') ||\n (routeFileIgnorePrefix && d.startsWith(routeFileIgnorePrefix))\n ) {\n return false\n }\n\n if (routeFilePrefix) {\n return d.startsWith(routeFilePrefix)\n }\n\n return true\n })\n\n await Promise.all(\n dirList.map(async (fileName) => {\n const fullPath = path.join(fullDir, fileName)\n const relativePath = path.join(dir, fileName)\n const stat = await fs.stat(fullPath)\n\n if (stat.isDirectory()) {\n await recurse(relativePath)\n } else {\n const filePath = path.join(dir, fileName)\n const filePathNoExt = removeExt(filePath)\n let routePath =\n replaceBackslash(\n cleanPath(`/${filePathNoExt.split('.').join('/')}`),\n ) ?? ''\n const variableName = fileToVariable(routePath)\n\n // Remove the index from the route path and\n // if the route path is empty, use `/'\n if (routePath === 'index') {\n routePath = '/'\n } else if (routePath.endsWith('/index')) {\n routePath = routePath.replace(/\\/index$/, '/')\n }\n\n routeNodes.push({\n filePath,\n fullPath,\n routePath,\n variableName,\n })\n }\n }),\n )\n\n return routeNodes\n }\n\n await recurse('./')\n\n return routeNodes\n}\n\nlet first = false\nlet skipMessage = false\n\nexport async function generator(config: Config) {\n console.log()\n\n if (!first) {\n console.log('🔄 Generating routes...')\n first = true\n } else if (skipMessage) {\n skipMessage = false\n } else {\n console.log('♻️ Regenerating routes...')\n }\n\n const taskId = latestTask + 1\n latestTask = taskId\n\n const checkLatest = () => {\n if (latestTask !== taskId) {\n skipMessage = true\n return false\n }\n\n return true\n }\n\n const start = Date.now()\n const routePathIdPrefix = config.routeFilePrefix ?? ''\n\n let routeNodes = await getRouteNodes(config)\n\n routeNodes = multiSortBy(routeNodes, [\n (d) => (d.routePath === '/' ? -1 : 1),\n (d) => d.routePath?.split('/').length,\n (d) => (d.routePath?.endsWith('/') ? -1 : 1),\n (d) => d.routePath,\n ]).filter((d) => d.routePath !== `/${routePathIdPrefix + rootPathId}`)\n\n const routeTree: RouteNode[] = []\n\n // Loop over the flat list of routeNodes and\n // build up a tree based on the routeNodes' routePath\n routeNodes.forEach((node) => {\n // routeNodes.forEach((existingNode) => {\n // if (\n // node.routePath?.startsWith(`${existingNode?.routePath ?? ''}/`)\n // // node.routePath.length > existingNode.routePath!.length\n // ) {\n // node.parent = existingNode\n // }\n // })\n const parentRoute = hasParentRoute(routeNodes, node.routePath)\n if (parentRoute) node.parent = parentRoute\n\n node.path = node.parent\n ? node.routePath?.replace(node.parent.routePath!, '') || '/'\n : node.routePath\n\n const trimmedPath = trimPathLeft(node.path ?? '')\n\n const split = trimmedPath?.split('/') ?? []\n let first = split[0] ?? trimmedPath ?? ''\n\n node.isNonPath = first.startsWith('_')\n node.isNonLayout = first.endsWith('_')\n\n node.cleanedPath = removeUnderscores(node.path) ?? ''\n\n if (node.parent) {\n node.parent.children = node.parent.children ?? []\n node.parent.children.push(node)\n } else {\n routeTree.push(node)\n }\n })\n\n async function buildRouteConfig(\n nodes: RouteNode[],\n depth = 1,\n ): Promise<string> {\n const children = nodes.map(async (node) => {\n const routeCode = await fs.readFile(node.fullPath, 'utf-8')\n\n // Ensure the boilerplate for the route exists\n if (node.isRoot) {\n return\n }\n\n // Ensure that new FileRoute(anything?) is replace with FileRoute(${node.routePath})\n // routePath can contain $ characters, which have special meaning when used in replace\n // so we have to escape it by turning all $ into $$. But since we do it through a replace call\n // we have to double escape it into $$$$. For more information, see\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_the_replacement\n const escapedRoutePath = node.routePath?.replaceAll('$', '$$$$') ?? ''\n const replaced = routeCode.replace(\n fileRouteRegex,\n `new FileRoute('${escapedRoutePath}')`,\n )\n\n if (replaced !== routeCode) {\n await fs.writeFile(node.fullPath, replaced)\n }\n\n const route = `${node.variableName}Route`\n\n if (node.children?.length) {\n const childConfigs = await buildRouteConfig(node.children, depth + 1)\n return `${route}.addChildren([${spaces(depth * 4)}${childConfigs}])`\n }\n\n return route\n })\n\n return (await Promise.all(children)).filter(Boolean).join(`,`)\n }\n\n const routeConfigChildrenText = await buildRouteConfig(routeTree)\n\n const routeImports = [\n `import { Route as rootRoute } from './${sanitize(\n path.relative(\n path.dirname(config.generatedRouteTree),\n path.resolve(config.routesDirectory, routePathIdPrefix + rootPathId),\n ),\n )}'`,\n ...multiSortBy(routeNodes, [\n (d) =>\n d.routePath?.includes(`/${routePathIdPrefix + rootPathId}`) ? -1 : 1,\n (d) => d.routePath?.split('/').length,\n (d) => (d.routePath?.endsWith(\"index'\") ? -1 : 1),\n (d) => d,\n ]).map((node) => {\n return `import { Route as ${node.variableName}Route } from './${sanitize(\n removeExt(\n path.relative(\n path.dirname(config.generatedRouteTree),\n path.resolve(config.routesDirectory, node.filePath),\n ),\n ),\n )}'`\n }),\n ].join('\\n')\n\n const routeTypes = `declare module '@tanstack/react-router' {\n interface FileRoutesByPath {\n ${routeNodes\n .map((routeNode) => {\n return `'${routeNode.routePath}': {\n parentRoute: typeof ${routeNode.parent?.variableName ?? 'root'}Route\n }`\n })\n .join('\\n')}\n }\n}`\n\n const routeOptions = routeNodes\n .map((routeNode) => {\n return `Object.assign(${routeNode.variableName ?? 'root'}Route.options, {\n ${[\n routeNode.isNonPath\n ? `id: '${routeNode.cleanedPath}'`\n : `path: '${routeNode.cleanedPath}'`,\n `getParentRoute: () => ${\n routeNode.parent?.variableName ?? 'root'\n }Route`,\n // `\\n// ${JSON.stringify(\n // {\n // ...routeNode,\n // parent: undefined,\n // children: undefined,\n // fullPath: undefined,\n // variableName: undefined,\n // },\n // null,\n // 2,\n // )\n // .split('\\n')\n // .join('\\n// ')}`,\n ]\n .filter(Boolean)\n .join(',')}\n })`\n })\n .join('\\n\\n')\n\n const routeConfig = `export const routeTree = rootRoute.addChildren([${routeConfigChildrenText}])`\n\n const routeConfigFileContent = await prettier.format(\n [routeImports, routeTypes, routeOptions, routeConfig].join('\\n\\n'),\n {\n semi: false,\n parser: 'typescript',\n },\n )\n\n const routeTreeContent = await fs\n .readFile(path.resolve(config.generatedRouteTree), 'utf-8')\n .catch((err: any) => {\n if (err.code === 'ENOENT') {\n return undefined\n }\n throw err\n })\n\n if (!checkLatest()) return\n\n if (routeTreeContent !== routeConfigFileContent) {\n await fs.ensureDir(path.dirname(path.resolve(config.generatedRouteTree)))\n if (!checkLatest()) return\n await fs.writeFile(\n path.resolve(config.generatedRouteTree),\n routeConfigFileContent,\n )\n }\n\n console.log(\n `🌲 Processed ${routeNodes.length} routes in ${Date.now() - start}ms`,\n )\n}\n\nfunction fileToVariable(d: string): string {\n return (\n removeUnderscores(d)\n ?.replace(/\\$/g, '')\n ?.split(/[/-]/g)\n .map((d, i) => (i > 0 ? capitalize(d) : d))\n .join('')\n .replace(/([^a-zA-Z0-9]|[\\.])/gm, '') ?? ''\n )\n}\n\nexport function removeExt(d: string) {\n return d.substring(0, d.lastIndexOf('.')) || d\n}\n\nfunction spaces(d: number): string {\n return Array.from({ length: d })\n .map(() => ' ')\n .join('')\n}\n\nexport function multiSortBy<T>(\n arr: T[],\n accessors: ((item: T) => any)[] = [(d) => d],\n): T[] {\n return arr\n .map((d, i) => [d, i] as const)\n .sort(([a, ai], [b, bi]) => {\n for (const accessor of accessors) {\n const ao = accessor(a)\n const bo = accessor(b)\n\n if (typeof ao === 'undefined') {\n if (typeof bo === 'undefined') {\n continue\n }\n return 1\n }\n\n if (ao === bo) {\n continue\n }\n\n return ao > bo ? 1 : -1\n }\n\n return ai - bi\n })\n .map(([d]) => d)\n}\n\nfunction capitalize(s: string) {\n if (typeof s !== 'string') return ''\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nfunction sanitize(s?: string) {\n return replaceBackslash(s?.replace(/\\\\index/gi, ''))\n}\n\nfunction removeUnderscores(s?: string) {\n return s?.replace(/(^_|_$)/, '').replace(/(\\/_|_\\/)/, '/')\n}\n\nfunction replaceBackslash(s?: string) {\n return s?.replace(/\\\\/gi, '/')\n}\n\nexport function hasParentRoute(\n routes: RouteNode[],\n routeToCheck: string | undefined,\n): RouteNode | null {\n if (!routeToCheck || routeToCheck === '/') {\n return null\n }\n\n const sortedNodes = multiSortBy(routes, [\n (d) => d.routePath!.length * -1,\n (d) => d.variableName,\n ]).filter((d) => d.routePath !== `/${rootPathId}`)\n\n for (const route of sortedNodes) {\n if (route.routePath === '/') continue\n\n if (\n routeToCheck.startsWith(`${route.routePath}/`) &&\n route.routePath !== routeToCheck\n ) {\n return route\n }\n }\n const segments = routeToCheck.split('/')\n segments.pop() // Remove the last segment\n const parentRoute = segments.join('/')\n\n return hasParentRoute(routes, parentRoute)\n}\n"],"names":["latestTask","rootPathId","fileRouteRegex","getRouteNodes","config","routeFilePrefix","routeFileIgnorePrefix","routeNodes","recurse","dir","fullDir","path","resolve","routesDirectory","dirList","fs","readdir","filter","d","startsWith","Promise","all","map","fileName","fullPath","join","relativePath","stat","isDirectory","filePath","filePathNoExt","removeExt","routePath","replaceBackslash","cleanPath","split","variableName","fileToVariable","endsWith","replace","push","first","skipMessage","generator","console","log","taskId","checkLatest","start","Date","now","routePathIdPrefix","multiSortBy","length","routeTree","forEach","node","parentRoute","hasParentRoute","parent","trimmedPath","trimPathLeft","isNonPath","isNonLayout","cleanedPath","removeUnderscores","children","buildRouteConfig","nodes","depth","routeCode","readFile","isRoot","escapedRoutePath","replaceAll","replaced","writeFile","route","childConfigs","spaces","Boolean","routeConfigChildrenText","routeImports","sanitize","relative","dirname","generatedRouteTree","includes","routeTypes","routeNode","routeOptions","routeConfig","routeConfigFileContent","prettier","format","semi","parser","routeTreeContent","catch","err","code","undefined","ensureDir","i","capitalize","substring","lastIndexOf","Array","from","arr","accessors","sort","a","ai","b","bi","accessor","ao","bo","s","charAt","toUpperCase","slice","routes","routeToCheck","sortedNodes","segments","pop"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAIA,UAAU,GAAG,CAAC,CAAA;AACX,MAAMC,UAAU,GAAG,SAAQ;AAC3B,MAAMC,cAAc,GAAG,8BAA6B;AAgB3D,eAAeC,aAAaA,CAACC,MAAc,EAAE;EAC3C,MAAM;IAAEC,eAAe;AAAEC,IAAAA,qBAAAA;AAAsB,GAAC,GAAGF,MAAM,CAAA;EAEzD,IAAIG,UAAuB,GAAG,EAAE,CAAA;EAEhC,eAAeC,OAAOA,CAACC,GAAW,EAAE;IAClC,MAAMC,OAAO,GAAGC,IAAI,CAACC,OAAO,CAACR,MAAM,CAACS,eAAe,EAAEJ,GAAG,CAAC,CAAA;IACzD,IAAIK,OAAO,GAAG,MAAMC,EAAE,CAACC,OAAO,CAACN,OAAO,CAAC,CAAA;AAEvCI,IAAAA,OAAO,GAAGA,OAAO,CAACG,MAAM,CAAEC,CAAC,IAAK;AAC9B,MAAA,IACEA,CAAC,CAACC,UAAU,CAAC,GAAG,CAAC,IAChBb,qBAAqB,IAAIY,CAAC,CAACC,UAAU,CAACb,qBAAqB,CAAE,EAC9D;AACA,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AAEA,MAAA,IAAID,eAAe,EAAE;AACnB,QAAA,OAAOa,CAAC,CAACC,UAAU,CAACd,eAAe,CAAC,CAAA;AACtC,OAAA;AAEA,MAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;IAEF,MAAMe,OAAO,CAACC,GAAG,CACfP,OAAO,CAACQ,GAAG,CAAC,MAAOC,QAAQ,IAAK;MAC9B,MAAMC,QAAQ,GAAGb,IAAI,CAACc,IAAI,CAACf,OAAO,EAAEa,QAAQ,CAAC,CAAA;MAC7C,MAAMG,YAAY,GAAGf,IAAI,CAACc,IAAI,CAAChB,GAAG,EAAEc,QAAQ,CAAC,CAAA;MAC7C,MAAMI,IAAI,GAAG,MAAMZ,EAAE,CAACY,IAAI,CAACH,QAAQ,CAAC,CAAA;AAEpC,MAAA,IAAIG,IAAI,CAACC,WAAW,EAAE,EAAE;QACtB,MAAMpB,OAAO,CAACkB,YAAY,CAAC,CAAA;AAC7B,OAAC,MAAM;QACL,MAAMG,QAAQ,GAAGlB,IAAI,CAACc,IAAI,CAAChB,GAAG,EAAEc,QAAQ,CAAC,CAAA;AACzC,QAAA,MAAMO,aAAa,GAAGC,SAAS,CAACF,QAAQ,CAAC,CAAA;QACzC,IAAIG,SAAS,GACXC,gBAAgB,CACdC,qBAAS,CAAE,CAAA,CAAA,EAAGJ,aAAa,CAACK,KAAK,CAAC,GAAG,CAAC,CAACV,IAAI,CAAC,GAAG,CAAE,CAAC,CAAA,CACpD,CAAC,IAAI,EAAE,CAAA;AACT,QAAA,MAAMW,YAAY,GAAGC,cAAc,CAACL,SAAS,CAAC,CAAA;;AAE9C;AACA;QACA,IAAIA,SAAS,KAAK,OAAO,EAAE;AACzBA,UAAAA,SAAS,GAAG,GAAG,CAAA;SAChB,MAAM,IAAIA,SAAS,CAACM,QAAQ,CAAC,QAAQ,CAAC,EAAE;UACvCN,SAAS,GAAGA,SAAS,CAACO,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AAChD,SAAA;QAEAhC,UAAU,CAACiC,IAAI,CAAC;UACdX,QAAQ;UACRL,QAAQ;UACRQ,SAAS;AACTI,UAAAA,YAAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAA;AACF,KAAC,CACH,CAAC,CAAA;AAED,IAAA,OAAO7B,UAAU,CAAA;AACnB,GAAA;EAEA,MAAMC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEnB,EAAA,OAAOD,UAAU,CAAA;AACnB,CAAA;AAEA,IAAIkC,KAAK,GAAG,KAAK,CAAA;AACjB,IAAIC,WAAW,GAAG,KAAK,CAAA;AAEhB,eAAeC,SAASA,CAACvC,MAAc,EAAE;EAC9CwC,OAAO,CAACC,GAAG,EAAE,CAAA;EAEb,IAAI,CAACJ,KAAK,EAAE;AACVG,IAAAA,OAAO,CAACC,GAAG,CAAC,yBAAyB,CAAC,CAAA;AACtCJ,IAAAA,KAAK,GAAG,IAAI,CAAA;GACb,MAAM,IAAIC,WAAW,EAAE;AACtBA,IAAAA,WAAW,GAAG,KAAK,CAAA;AACrB,GAAC,MAAM;AACLE,IAAAA,OAAO,CAACC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAC3C,GAAA;AAEA,EAAA,MAAMC,MAAM,GAAG9C,UAAU,GAAG,CAAC,CAAA;AAC7BA,EAAAA,UAAU,GAAG8C,MAAM,CAAA;EAEnB,MAAMC,WAAW,GAAGA,MAAM;IACxB,IAAI/C,UAAU,KAAK8C,MAAM,EAAE;AACzBJ,MAAAA,WAAW,GAAG,IAAI,CAAA;AAClB,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AAEA,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAED,EAAA,MAAMM,KAAK,GAAGC,IAAI,CAACC,GAAG,EAAE,CAAA;AACxB,EAAA,MAAMC,iBAAiB,GAAG/C,MAAM,CAACC,eAAe,IAAI,EAAE,CAAA;AAEtD,EAAA,IAAIE,UAAU,GAAG,MAAMJ,aAAa,CAACC,MAAM,CAAC,CAAA;AAE5CG,EAAAA,UAAU,GAAG6C,WAAW,CAAC7C,UAAU,EAAE,CAClCW,CAAC,IAAMA,CAAC,CAACc,SAAS,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAE,EACpCd,CAAC,IAAKA,CAAC,CAACc,SAAS,EAAEG,KAAK,CAAC,GAAG,CAAC,CAACkB,MAAM,EACpCnC,CAAC,IAAMA,CAAC,CAACc,SAAS,EAAEM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAE,EAC3CpB,CAAC,IAAKA,CAAC,CAACc,SAAS,CACnB,CAAC,CAACf,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACc,SAAS,KAAM,CAAGmB,CAAAA,EAAAA,iBAAiB,GAAGlD,UAAW,EAAC,CAAC,CAAA;EAEtE,MAAMqD,SAAsB,GAAG,EAAE,CAAA;;AAEjC;AACA;AACA/C,EAAAA,UAAU,CAACgD,OAAO,CAAEC,IAAI,IAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACA,MAAMC,WAAW,GAAGC,cAAc,CAACnD,UAAU,EAAEiD,IAAI,CAACxB,SAAS,CAAC,CAAA;AAC9D,IAAA,IAAIyB,WAAW,EAAED,IAAI,CAACG,MAAM,GAAGF,WAAW,CAAA;IAE1CD,IAAI,CAAC7C,IAAI,GAAG6C,IAAI,CAACG,MAAM,GACnBH,IAAI,CAACxB,SAAS,EAAEO,OAAO,CAACiB,IAAI,CAACG,MAAM,CAAC3B,SAAS,EAAG,EAAE,CAAC,IAAI,GAAG,GAC1DwB,IAAI,CAACxB,SAAS,CAAA;IAElB,MAAM4B,WAAW,GAAGC,wBAAY,CAACL,IAAI,CAAC7C,IAAI,IAAI,EAAE,CAAC,CAAA;IAEjD,MAAMwB,KAAK,GAAGyB,WAAW,EAAEzB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IAC3C,IAAIM,KAAK,GAAGN,KAAK,CAAC,CAAC,CAAC,IAAIyB,WAAW,IAAI,EAAE,CAAA;IAEzCJ,IAAI,CAACM,SAAS,GAAGrB,KAAK,CAACtB,UAAU,CAAC,GAAG,CAAC,CAAA;IACtCqC,IAAI,CAACO,WAAW,GAAGtB,KAAK,CAACH,QAAQ,CAAC,GAAG,CAAC,CAAA;IAEtCkB,IAAI,CAACQ,WAAW,GAAGC,iBAAiB,CAACT,IAAI,CAAC7C,IAAI,CAAC,IAAI,EAAE,CAAA;IAErD,IAAI6C,IAAI,CAACG,MAAM,EAAE;MACfH,IAAI,CAACG,MAAM,CAACO,QAAQ,GAAGV,IAAI,CAACG,MAAM,CAACO,QAAQ,IAAI,EAAE,CAAA;MACjDV,IAAI,CAACG,MAAM,CAACO,QAAQ,CAAC1B,IAAI,CAACgB,IAAI,CAAC,CAAA;AACjC,KAAC,MAAM;AACLF,MAAAA,SAAS,CAACd,IAAI,CAACgB,IAAI,CAAC,CAAA;AACtB,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,eAAeW,gBAAgBA,CAC7BC,KAAkB,EAClBC,KAAK,GAAG,CAAC,EACQ;IACjB,MAAMH,QAAQ,GAAGE,KAAK,CAAC9C,GAAG,CAAC,MAAOkC,IAAI,IAAK;AACzC,MAAA,MAAMc,SAAS,GAAG,MAAMvD,EAAE,CAACwD,QAAQ,CAACf,IAAI,CAAChC,QAAQ,EAAE,OAAO,CAAC,CAAA;;AAE3D;MACA,IAAIgC,IAAI,CAACgB,MAAM,EAAE;AACf,QAAA,OAAA;AACF,OAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMC,gBAAgB,GAAGjB,IAAI,CAACxB,SAAS,EAAE0C,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;MACtE,MAAMC,QAAQ,GAAGL,SAAS,CAAC/B,OAAO,CAChCrC,cAAc,EACb,CAAA,eAAA,EAAiBuE,gBAAiB,CAAA,EAAA,CACrC,CAAC,CAAA;MAED,IAAIE,QAAQ,KAAKL,SAAS,EAAE;QAC1B,MAAMvD,EAAE,CAAC6D,SAAS,CAACpB,IAAI,CAAChC,QAAQ,EAAEmD,QAAQ,CAAC,CAAA;AAC7C,OAAA;AAEA,MAAA,MAAME,KAAK,GAAI,CAAA,EAAErB,IAAI,CAACpB,YAAa,CAAM,KAAA,CAAA,CAAA;AAEzC,MAAA,IAAIoB,IAAI,CAACU,QAAQ,EAAEb,MAAM,EAAE;AACzB,QAAA,MAAMyB,YAAY,GAAG,MAAMX,gBAAgB,CAACX,IAAI,CAACU,QAAQ,EAAEG,KAAK,GAAG,CAAC,CAAC,CAAA;QACrE,OAAQ,CAAA,EAAEQ,KAAM,CAAA,cAAA,EAAgBE,MAAM,CAACV,KAAK,GAAG,CAAC,CAAE,CAAES,EAAAA,YAAa,CAAG,EAAA,CAAA,CAAA;AACtE,OAAA;AAEA,MAAA,OAAOD,KAAK,CAAA;AACd,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,CAAC,MAAMzD,OAAO,CAACC,GAAG,CAAC6C,QAAQ,CAAC,EAAEjD,MAAM,CAAC+D,OAAO,CAAC,CAACvD,IAAI,CAAE,GAAE,CAAC,CAAA;AAChE,GAAA;AAEA,EAAA,MAAMwD,uBAAuB,GAAG,MAAMd,gBAAgB,CAACb,SAAS,CAAC,CAAA;EAEjE,MAAM4B,YAAY,GAAG,CAClB,CAAA,sCAAA,EAAwCC,QAAQ,CAC/CxE,IAAI,CAACyE,QAAQ,CACXzE,IAAI,CAAC0E,OAAO,CAACjF,MAAM,CAACkF,kBAAkB,CAAC,EACvC3E,IAAI,CAACC,OAAO,CAACR,MAAM,CAACS,eAAe,EAAEsC,iBAAiB,GAAGlD,UAAU,CACrE,CACF,CAAE,CAAA,CAAA,CAAE,EACJ,GAAGmD,WAAW,CAAC7C,UAAU,EAAE,CACxBW,CAAC,IACAA,CAAC,CAACc,SAAS,EAAEuD,QAAQ,CAAE,IAAGpC,iBAAiB,GAAGlD,UAAW,CAAC,CAAA,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACrEiB,CAAC,IAAKA,CAAC,CAACc,SAAS,EAAEG,KAAK,CAAC,GAAG,CAAC,CAACkB,MAAM,EACpCnC,CAAC,IAAMA,CAAC,CAACc,SAAS,EAAEM,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAE,EAChDpB,CAAC,IAAKA,CAAC,CACT,CAAC,CAACI,GAAG,CAAEkC,IAAI,IAAK;AACf,IAAA,OAAQ,qBAAoBA,IAAI,CAACpB,YAAa,CAAA,gBAAA,EAAkB+C,QAAQ,CACtEpD,SAAS,CACPpB,IAAI,CAACyE,QAAQ,CACXzE,IAAI,CAAC0E,OAAO,CAACjF,MAAM,CAACkF,kBAAkB,CAAC,EACvC3E,IAAI,CAACC,OAAO,CAACR,MAAM,CAACS,eAAe,EAAE2C,IAAI,CAAC3B,QAAQ,CACpD,CACF,CACF,CAAE,CAAE,CAAA,CAAA,CAAA;AACN,GAAC,CAAC,CACH,CAACJ,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,EAAA,MAAM+D,UAAU,GAAI,CAAA;AACtB;AACA,IAAA,EAAMjF,UAAU,CACTe,GAAG,CAAEmE,SAAS,IAAK;IAClB,OAAQ,CAAA,CAAA,EAAGA,SAAS,CAACzD,SAAU,CAAA;AACvC,8BAAA,EAAgCyD,SAAS,CAAC9B,MAAM,EAAEvB,YAAY,IAAI,MAAO,CAAA;AACzE,SAAU,CAAA,CAAA;AACJ,GAAC,CAAC,CACDX,IAAI,CAAC,IAAI,CAAE,CAAA;AAClB;AACA,CAAE,CAAA,CAAA;AAEA,EAAA,MAAMiE,YAAY,GAAGnF,UAAU,CAC5Be,GAAG,CAAEmE,SAAS,IAAK;AAClB,IAAA,OAAQ,CAAgBA,cAAAA,EAAAA,SAAS,CAACrD,YAAY,IAAI,MAAO,CAAA;AAC/D,QAAU,EAAA,CACAqD,SAAS,CAAC3B,SAAS,GACd,QAAO2B,SAAS,CAACzB,WAAY,CAAA,CAAA,CAAE,GAC/B,CAAA,OAAA,EAASyB,SAAS,CAACzB,WAAY,CAAE,CAAA,CAAA,EACrC,CACCyB,sBAAAA,EAAAA,SAAS,CAAC9B,MAAM,EAAEvB,YAAY,IAAI,MACnC,CAAA,KAAA,CAAA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;KACD,CACEnB,MAAM,CAAC+D,OAAO,CAAC,CACfvD,IAAI,CAAC,GAAG,CAAE,CAAA;AACrB,QAAS,CAAA,CAAA;AACL,GAAC,CAAC,CACDA,IAAI,CAAC,MAAM,CAAC,CAAA;AAEf,EAAA,MAAMkE,WAAW,GAAI,CAAkDV,gDAAAA,EAAAA,uBAAwB,CAAG,EAAA,CAAA,CAAA;EAElG,MAAMW,sBAAsB,GAAG,MAAMC,mBAAQ,CAACC,MAAM,CAClD,CAACZ,YAAY,EAAEM,UAAU,EAAEE,YAAY,EAAEC,WAAW,CAAC,CAAClE,IAAI,CAAC,MAAM,CAAC,EAClE;AACEsE,IAAAA,IAAI,EAAE,KAAK;AACXC,IAAAA,MAAM,EAAE,YAAA;AACV,GACF,CAAC,CAAA;EAED,MAAMC,gBAAgB,GAAG,MAAMlF,EAAE,CAC9BwD,QAAQ,CAAC5D,IAAI,CAACC,OAAO,CAACR,MAAM,CAACkF,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAC1DY,KAAK,CAAEC,GAAQ,IAAK;AACnB,IAAA,IAAIA,GAAG,CAACC,IAAI,KAAK,QAAQ,EAAE;AACzB,MAAA,OAAOC,SAAS,CAAA;AAClB,KAAA;AACA,IAAA,MAAMF,GAAG,CAAA;AACX,GAAC,CAAC,CAAA;AAEJ,EAAA,IAAI,CAACpD,WAAW,EAAE,EAAE,OAAA;EAEpB,IAAIkD,gBAAgB,KAAKL,sBAAsB,EAAE;AAC/C,IAAA,MAAM7E,EAAE,CAACuF,SAAS,CAAC3F,IAAI,CAAC0E,OAAO,CAAC1E,IAAI,CAACC,OAAO,CAACR,MAAM,CAACkF,kBAAkB,CAAC,CAAC,CAAC,CAAA;AACzE,IAAA,IAAI,CAACvC,WAAW,EAAE,EAAE,OAAA;AACpB,IAAA,MAAMhC,EAAE,CAAC6D,SAAS,CAChBjE,IAAI,CAACC,OAAO,CAACR,MAAM,CAACkF,kBAAkB,CAAC,EACvCM,sBACF,CAAC,CAAA;AACH,GAAA;AAEAhD,EAAAA,OAAO,CAACC,GAAG,CACR,CAAetC,aAAAA,EAAAA,UAAU,CAAC8C,MAAO,CAAA,WAAA,EAAaJ,IAAI,CAACC,GAAG,EAAE,GAAGF,KAAM,IACpE,CAAC,CAAA;AACH,CAAA;AAEA,SAASX,cAAcA,CAACnB,CAAS,EAAU;EACzC,OACE+C,iBAAiB,CAAC/C,CAAC,CAAC,EAChBqB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAClBJ,KAAK,CAAC,OAAO,CAAC,CACfb,GAAG,CAAC,CAACJ,CAAC,EAAEqF,CAAC,KAAMA,CAAC,GAAG,CAAC,GAAGC,UAAU,CAACtF,CAAC,CAAC,GAAGA,CAAE,CAAC,CAC1CO,IAAI,CAAC,EAAE,CAAC,CACRc,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;AAEjD,CAAA;AAEO,SAASR,SAASA,CAACb,CAAS,EAAE;AACnC,EAAA,OAAOA,CAAC,CAACuF,SAAS,CAAC,CAAC,EAAEvF,CAAC,CAACwF,WAAW,CAAC,GAAG,CAAC,CAAC,IAAIxF,CAAC,CAAA;AAChD,CAAA;AAEA,SAAS6D,MAAMA,CAAC7D,CAAS,EAAU;EACjC,OAAOyF,KAAK,CAACC,IAAI,CAAC;AAAEvD,IAAAA,MAAM,EAAEnC,CAAAA;GAAG,CAAC,CAC7BI,GAAG,CAAC,MAAM,GAAG,CAAC,CACdG,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAA;AAEO,SAAS2B,WAAWA,CACzByD,GAAQ,EACRC,SAA+B,GAAG,CAAE5F,CAAC,IAAKA,CAAC,CAAC,EACvC;AACL,EAAA,OAAO2F,GAAG,CACPvF,GAAG,CAAC,CAACJ,CAAC,EAAEqF,CAAC,KAAK,CAACrF,CAAC,EAAEqF,CAAC,CAAU,CAAC,CAC9BQ,IAAI,CAAC,CAAC,CAACC,CAAC,EAAEC,EAAE,CAAC,EAAE,CAACC,CAAC,EAAEC,EAAE,CAAC,KAAK;AAC1B,IAAA,KAAK,MAAMC,QAAQ,IAAIN,SAAS,EAAE;AAChC,MAAA,MAAMO,EAAE,GAAGD,QAAQ,CAACJ,CAAC,CAAC,CAAA;AACtB,MAAA,MAAMM,EAAE,GAAGF,QAAQ,CAACF,CAAC,CAAC,CAAA;AAEtB,MAAA,IAAI,OAAOG,EAAE,KAAK,WAAW,EAAE;AAC7B,QAAA,IAAI,OAAOC,EAAE,KAAK,WAAW,EAAE;AAC7B,UAAA,SAAA;AACF,SAAA;AACA,QAAA,OAAO,CAAC,CAAA;AACV,OAAA;MAEA,IAAID,EAAE,KAAKC,EAAE,EAAE;AACb,QAAA,SAAA;AACF,OAAA;AAEA,MAAA,OAAOD,EAAE,GAAGC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AACzB,KAAA;IAEA,OAAOL,EAAE,GAAGE,EAAE,CAAA;GACf,CAAC,CACD7F,GAAG,CAAC,CAAC,CAACJ,CAAC,CAAC,KAAKA,CAAC,CAAC,CAAA;AACpB,CAAA;AAEA,SAASsF,UAAUA,CAACe,CAAS,EAAE;AAC7B,EAAA,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE,OAAO,EAAE,CAAA;AACpC,EAAA,OAAOA,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGF,CAAC,CAACG,KAAK,CAAC,CAAC,CAAC,CAAA;AAC/C,CAAA;AAEA,SAASvC,QAAQA,CAACoC,CAAU,EAAE;EAC5B,OAAOtF,gBAAgB,CAACsF,CAAC,EAAEhF,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;AACtD,CAAA;AAEA,SAAS0B,iBAAiBA,CAACsD,CAAU,EAAE;AACrC,EAAA,OAAOA,CAAC,EAAEhF,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;AAC5D,CAAA;AAEA,SAASN,gBAAgBA,CAACsF,CAAU,EAAE;AACpC,EAAA,OAAOA,CAAC,EAAEhF,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAChC,CAAA;AAEO,SAASmB,cAAcA,CAC5BiE,MAAmB,EACnBC,YAAgC,EACd;AAClB,EAAA,IAAI,CAACA,YAAY,IAAIA,YAAY,KAAK,GAAG,EAAE;AACzC,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,MAAMC,WAAW,GAAGzE,WAAW,CAACuE,MAAM,EAAE,CACrCzG,CAAC,IAAKA,CAAC,CAACc,SAAS,CAAEqB,MAAM,GAAG,CAAC,CAAC,EAC9BnC,CAAC,IAAKA,CAAC,CAACkB,YAAY,CACtB,CAAC,CAACnB,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACc,SAAS,KAAM,CAAG/B,CAAAA,EAAAA,UAAW,EAAC,CAAC,CAAA;AAElD,EAAA,KAAK,MAAM4E,KAAK,IAAIgD,WAAW,EAAE;AAC/B,IAAA,IAAIhD,KAAK,CAAC7C,SAAS,KAAK,GAAG,EAAE,SAAA;AAE7B,IAAA,IACE4F,YAAY,CAACzG,UAAU,CAAE,CAAA,EAAE0D,KAAK,CAAC7C,SAAU,CAAE,CAAA,CAAA,CAAC,IAC9C6C,KAAK,CAAC7C,SAAS,KAAK4F,YAAY,EAChC;AACA,MAAA,OAAO/C,KAAK,CAAA;AACd,KAAA;AACF,GAAA;AACA,EAAA,MAAMiD,QAAQ,GAAGF,YAAY,CAACzF,KAAK,CAAC,GAAG,CAAC,CAAA;AACxC2F,EAAAA,QAAQ,CAACC,GAAG,EAAE,CAAC;AACf,EAAA,MAAMtE,WAAW,GAAGqE,QAAQ,CAACrG,IAAI,CAAC,GAAG,CAAC,CAAA;AAEtC,EAAA,OAAOiC,cAAc,CAACiE,MAAM,EAAElE,WAAW,CAAC,CAAA;AAC5C;;;;;;;;;"}
|
package/build/cjs/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* router-cli
|
|
2
|
+
* @tanstack/router-cli/src/index.ts
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) TanStack
|
|
5
5
|
*
|
|
@@ -10,15 +10,12 @@
|
|
|
10
10
|
*/
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
13
|
var yargs = require('yargs');
|
|
16
14
|
var config = require('./config.js');
|
|
17
15
|
var generate = require('./generate.js');
|
|
18
16
|
var watch = require('./watch.js');
|
|
19
17
|
|
|
20
|
-
function
|
|
21
|
-
if (e && e.__esModule) return e;
|
|
18
|
+
function _interopNamespaceDefault(e) {
|
|
22
19
|
var n = Object.create(null);
|
|
23
20
|
if (e) {
|
|
24
21
|
Object.keys(e).forEach(function (k) {
|
|
@@ -31,11 +28,11 @@ function _interopNamespace(e) {
|
|
|
31
28
|
}
|
|
32
29
|
});
|
|
33
30
|
}
|
|
34
|
-
n
|
|
31
|
+
n.default = e;
|
|
35
32
|
return Object.freeze(n);
|
|
36
33
|
}
|
|
37
34
|
|
|
38
|
-
var yargs__namespace = /*#__PURE__*/
|
|
35
|
+
var yargs__namespace = /*#__PURE__*/_interopNamespaceDefault(yargs);
|
|
39
36
|
|
|
40
37
|
main();
|
|
41
38
|
function main() {
|
package/build/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import * as yargs from 'yargs'\nimport { getConfig } from './config'\nimport { generate } from './generate'\nimport { watch } from './watch'\n\nmain()\n\nexport function main() {\n yargs\n .scriptName('tsr')\n .usage('$0 <cmd> [args]')\n .command('generate', 'Generate the routes for a project', async (argv) => {\n const config = await getConfig()\n await generate(config)\n })\n .command(\n 'watch',\n 'Continuously watch and generate the routes for a project',\n async (argv) => {\n watch()\n },\n )\n .help().argv\n}\n"],"names":["main","yargs","scriptName","usage","command","argv","config","getConfig","generate","watch","help"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import * as yargs from 'yargs'\nimport { getConfig } from './config'\nimport { generate } from './generate'\nimport { watch } from './watch'\n\nmain()\n\nexport function main() {\n yargs\n .scriptName('tsr')\n .usage('$0 <cmd> [args]')\n .command('generate', 'Generate the routes for a project', async (argv) => {\n const config = await getConfig()\n await generate(config)\n })\n .command(\n 'watch',\n 'Continuously watch and generate the routes for a project',\n async (argv) => {\n watch()\n },\n )\n .help().argv\n}\n"],"names":["main","yargs","scriptName","usage","command","argv","config","getConfig","generate","watch","help"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKAA,IAAI,EAAE,CAAA;AAEC,SAASA,IAAIA,GAAG;AACrBC,EAAAA,gBAAK,CACFC,UAAU,CAAC,KAAK,CAAC,CACjBC,KAAK,CAAC,iBAAiB,CAAC,CACxBC,OAAO,CAAC,UAAU,EAAE,mCAAmC,EAAE,MAAOC,IAAI,IAAK;AACxE,IAAA,MAAMC,QAAM,GAAG,MAAMC,gBAAS,EAAE,CAAA;IAChC,MAAMC,iBAAQ,CAACF,QAAM,CAAC,CAAA;GACvB,CAAC,CACDF,OAAO,CACN,OAAO,EACP,0DAA0D,EAC1D,MAAOC,IAAI,IAAK;AACdI,IAAAA,WAAK,EAAE,CAAA;AACT,GACF,CAAC,CACAC,IAAI,EAAE,CAACL,IAAI,CAAA;AAChB;;;;"}
|
package/build/cjs/watch.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* router-cli
|
|
2
|
+
* @tanstack/router-cli/src/index.ts
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) TanStack
|
|
5
5
|
*
|
|
@@ -10,46 +10,39 @@
|
|
|
10
10
|
*/
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
13
|
var chokidar = require('chokidar');
|
|
16
14
|
var path = require('path');
|
|
17
15
|
var config = require('./config.js');
|
|
18
16
|
var generator = require('./generator.js');
|
|
19
17
|
|
|
20
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
21
|
-
|
|
22
|
-
var chokidar__default = /*#__PURE__*/_interopDefaultLegacy(chokidar);
|
|
23
|
-
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
24
|
-
|
|
25
18
|
async function watch() {
|
|
26
|
-
const configWatcher =
|
|
27
|
-
let watcher = new
|
|
19
|
+
const configWatcher = chokidar.watch(path.resolve(process.cwd(), 'tsr.config.json'));
|
|
20
|
+
let watcher = new chokidar.FSWatcher({});
|
|
28
21
|
const generatorWatcher = async () => {
|
|
29
22
|
const config$1 = await config.getConfig();
|
|
30
23
|
watcher.close();
|
|
31
|
-
console.
|
|
32
|
-
watcher =
|
|
24
|
+
console.info(`TSR: Watching routes (${config$1.routesDirectory})...`);
|
|
25
|
+
watcher = chokidar.watch(config$1.routesDirectory);
|
|
33
26
|
watcher.on('ready', async () => {
|
|
34
|
-
try {
|
|
35
|
-
await generator.generator(config$1);
|
|
36
|
-
} catch (err) {
|
|
37
|
-
console.error(err);
|
|
38
|
-
console.log();
|
|
39
|
-
}
|
|
40
27
|
const handle = async () => {
|
|
41
28
|
try {
|
|
42
29
|
await generator.generator(config$1);
|
|
43
30
|
} catch (err) {
|
|
44
31
|
console.error(err);
|
|
45
|
-
console.
|
|
32
|
+
console.info();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
await handle();
|
|
36
|
+
let timeout;
|
|
37
|
+
const deduped = file => {
|
|
38
|
+
if (timeout) {
|
|
39
|
+
clearTimeout(timeout);
|
|
46
40
|
}
|
|
41
|
+
timeout = setTimeout(handle, 10);
|
|
47
42
|
};
|
|
48
|
-
watcher.on('change',
|
|
49
|
-
watcher.on('add',
|
|
50
|
-
watcher.on('
|
|
51
|
-
watcher.on('unlink', handle);
|
|
52
|
-
watcher.on('unlinkDir', handle);
|
|
43
|
+
watcher.on('change', deduped);
|
|
44
|
+
watcher.on('add', deduped);
|
|
45
|
+
watcher.on('unlink', deduped);
|
|
53
46
|
});
|
|
54
47
|
};
|
|
55
48
|
configWatcher.on('ready', generatorWatcher);
|
package/build/cjs/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sources":["../../src/watch.ts"],"sourcesContent":["import chokidar from 'chokidar'\nimport path from 'path'\nimport { getConfig } from './config'\nimport { generator } from './generator'\n\nexport async function watch() {\n const configWatcher = chokidar.watch(\n path.resolve(process.cwd(), 'tsr.config.
|
|
1
|
+
{"version":3,"file":"watch.js","sources":["../../src/watch.ts"],"sourcesContent":["import chokidar from 'chokidar'\nimport path from 'path'\nimport { getConfig } from './config'\nimport { generator } from './generator'\n\nexport async function watch() {\n const configWatcher = chokidar.watch(\n path.resolve(process.cwd(), 'tsr.config.json'),\n )\n\n let watcher = new chokidar.FSWatcher({})\n\n const generatorWatcher = async () => {\n const config = await getConfig()\n\n watcher.close()\n\n console.info(`TSR: Watching routes (${config.routesDirectory})...`)\n watcher = chokidar.watch(config.routesDirectory)\n\n watcher.on('ready', async () => {\n const handle = async () => {\n try {\n await generator(config)\n } catch (err) {\n console.error(err)\n console.info()\n }\n }\n\n await handle()\n\n let timeout: ReturnType<typeof setTimeout>\n\n const deduped = (file: string) => {\n if (timeout) {\n clearTimeout(timeout)\n }\n\n timeout = setTimeout(handle, 10)\n }\n\n watcher.on('change', deduped)\n watcher.on('add', deduped)\n watcher.on('unlink', deduped)\n })\n }\n\n configWatcher.on('ready', generatorWatcher)\n configWatcher.on('change', generatorWatcher)\n}\n"],"names":["watch","configWatcher","chokidar","path","resolve","process","cwd","watcher","FSWatcher","generatorWatcher","config","getConfig","close","console","info","routesDirectory","on","handle","generator","err","error","timeout","deduped","file","clearTimeout","setTimeout"],"mappings":";;;;;;;;;;;;;;;;;AAKO,eAAeA,KAAKA,GAAG;AAC5B,EAAA,MAAMC,aAAa,GAAGC,QAAQ,CAACF,KAAK,CAClCG,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,GAAG,EAAE,EAAE,iBAAiB,CAC/C,CAAC,CAAA;EAED,IAAIC,OAAO,GAAG,IAAIL,QAAQ,CAACM,SAAS,CAAC,EAAE,CAAC,CAAA;AAExC,EAAA,MAAMC,gBAAgB,GAAG,YAAY;AACnC,IAAA,MAAMC,QAAM,GAAG,MAAMC,gBAAS,EAAE,CAAA;IAEhCJ,OAAO,CAACK,KAAK,EAAE,CAAA;IAEfC,OAAO,CAACC,IAAI,CAAE,CAAA,sBAAA,EAAwBJ,QAAM,CAACK,eAAgB,MAAK,CAAC,CAAA;IACnER,OAAO,GAAGL,QAAQ,CAACF,KAAK,CAACU,QAAM,CAACK,eAAe,CAAC,CAAA;AAEhDR,IAAAA,OAAO,CAACS,EAAE,CAAC,OAAO,EAAE,YAAY;AAC9B,MAAA,MAAMC,MAAM,GAAG,YAAY;QACzB,IAAI;UACF,MAAMC,mBAAS,CAACR,QAAM,CAAC,CAAA;SACxB,CAAC,OAAOS,GAAG,EAAE;AACZN,UAAAA,OAAO,CAACO,KAAK,CAACD,GAAG,CAAC,CAAA;UAClBN,OAAO,CAACC,IAAI,EAAE,CAAA;AAChB,SAAA;OACD,CAAA;MAED,MAAMG,MAAM,EAAE,CAAA;AAEd,MAAA,IAAII,OAAsC,CAAA;MAE1C,MAAMC,OAAO,GAAIC,IAAY,IAAK;AAChC,QAAA,IAAIF,OAAO,EAAE;UACXG,YAAY,CAACH,OAAO,CAAC,CAAA;AACvB,SAAA;AAEAA,QAAAA,OAAO,GAAGI,UAAU,CAACR,MAAM,EAAE,EAAE,CAAC,CAAA;OACjC,CAAA;AAEDV,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEM,OAAO,CAAC,CAAA;AAC7Bf,MAAAA,OAAO,CAACS,EAAE,CAAC,KAAK,EAAEM,OAAO,CAAC,CAAA;AAC1Bf,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEM,OAAO,CAAC,CAAA;AAC/B,KAAC,CAAC,CAAA;GACH,CAAA;AAEDrB,EAAAA,aAAa,CAACe,EAAE,CAAC,OAAO,EAAEP,gBAAgB,CAAC,CAAA;AAC3CR,EAAAA,aAAa,CAACe,EAAE,CAAC,QAAQ,EAAEP,gBAAgB,CAAC,CAAA;AAC9C;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const configSchema: z.ZodObject<{
|
|
3
|
+
routeFilePrefix: z.ZodOptional<z.ZodString>;
|
|
4
|
+
routeFileIgnorePrefix: z.ZodOptional<z.ZodString>;
|
|
5
|
+
routesDirectory: z.ZodString;
|
|
6
|
+
generatedRouteTree: z.ZodString;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
routesDirectory: string;
|
|
9
|
+
generatedRouteTree: string;
|
|
10
|
+
routeFilePrefix?: string | undefined;
|
|
11
|
+
routeFileIgnorePrefix?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
routesDirectory: string;
|
|
14
|
+
generatedRouteTree: string;
|
|
15
|
+
routeFilePrefix?: string | undefined;
|
|
16
|
+
routeFileIgnorePrefix?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export type Config = z.infer<typeof configSchema>;
|
|
19
|
+
export declare function getConfig(): Promise<Config>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Config } from './config';
|
|
2
|
+
export declare const rootPathId = "__root";
|
|
3
|
+
export declare const fileRouteRegex: RegExp;
|
|
4
|
+
export type RouteNode = {
|
|
5
|
+
filePath: string;
|
|
6
|
+
fullPath: string;
|
|
7
|
+
variableName: string;
|
|
8
|
+
routePath?: string;
|
|
9
|
+
cleanedPath?: string;
|
|
10
|
+
path?: string;
|
|
11
|
+
isNonPath?: boolean;
|
|
12
|
+
isNonLayout?: boolean;
|
|
13
|
+
isRoot?: boolean;
|
|
14
|
+
children?: RouteNode[];
|
|
15
|
+
parent?: RouteNode;
|
|
16
|
+
};
|
|
17
|
+
export declare function generator(config: Config): Promise<void>;
|
|
18
|
+
export declare function removeExt(d: string): string;
|
|
19
|
+
export declare function multiSortBy<T>(arr: T[], accessors?: ((item: T) => any)[]): T[];
|
|
20
|
+
export declare function hasParentRoute(routes: RouteNode[], routeToCheck: string | undefined): RouteNode | null;
|
package/build/types/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function watch(): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/router-cli",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "1.0.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "tanstack/router",
|
|
7
7
|
"homepage": "https://tanstack.com/router",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"@babel/preset-env": "^7.20.2",
|
|
47
47
|
"@babel/template": "^7.18.10",
|
|
48
48
|
"@babel/types": "^7.20.2",
|
|
49
|
+
"@tanstack/react-router": "0.0.1-beta.150",
|
|
49
50
|
"@types/fs-extra": "^9.0.13",
|
|
50
51
|
"@types/klaw": "^3.0.3",
|
|
51
52
|
"@types/through2": "^2.0.38",
|
|
@@ -55,7 +56,12 @@
|
|
|
55
56
|
"fs-extra": "^10.1.0",
|
|
56
57
|
"klaw": "^4.0.1",
|
|
57
58
|
"nodemon": "^2.0.20",
|
|
59
|
+
"prettier": "^3.0.2",
|
|
58
60
|
"through2": "^4.0.2",
|
|
59
|
-
"yargs": "^17.6.2"
|
|
61
|
+
"yargs": "^17.6.2",
|
|
62
|
+
"zod": "^3.19.1"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"build": "rollup --config rollup.config.js"
|
|
60
66
|
}
|
|
61
67
|
}
|
package/src/config.ts
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import path from 'path'
|
|
2
2
|
import fs from 'fs-extra'
|
|
3
|
+
import { z } from 'zod'
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
routesDirectory: string
|
|
8
|
-
|
|
9
|
-
}
|
|
5
|
+
const configSchema = z.object({
|
|
6
|
+
routeFilePrefix: z.string().optional(),
|
|
7
|
+
routeFileIgnorePrefix: z.string().optional(),
|
|
8
|
+
routesDirectory: z.string(),
|
|
9
|
+
generatedRouteTree: z.string(),
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
export type Config = z.infer<typeof configSchema>
|
|
10
13
|
|
|
11
14
|
const configFilePathJson = path.resolve(process.cwd(), 'tsr.config.json')
|
|
12
15
|
|
|
13
|
-
export async function getConfig() {
|
|
14
|
-
|
|
16
|
+
export async function getConfig(): Promise<Config> {
|
|
17
|
+
const config = (await fs.readJson(configFilePathJson)) as unknown as Config
|
|
18
|
+
|
|
19
|
+
return { routeFileIgnorePrefix: '-', ...configSchema.parse(config) }
|
|
15
20
|
}
|