@tanstack/router-cli 0.0.1-beta.30 → 0.0.1-beta.39

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.
@@ -1 +1 @@
1
- {"version":3,"file":"transformCode.js","sources":["../../src/transformCode.ts"],"sourcesContent":["import * as babel from '@babel/core'\nimport * as t from '@babel/types'\n// @ts-ignore\nimport syntaxTS from '@babel/plugin-syntax-typescript'\nimport {\n IsolatedExport,\n removeExt,\n rootRouteName,\n rootRouteClientName,\n RouteNode,\n} from './generator'\nimport path from 'path'\nimport { Config } from './config'\nimport { isVariableDeclaration } from '@babel/types'\n\nexport const isolatedProperties = [\n 'loader',\n 'action',\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport type IsolatedProperty = typeof isolatedProperties[number]\n\ntype Opts = {\n isolate: IsolatedProperty\n}\n\nconst getBasePlugins = () => [\n [\n syntaxTS,\n {\n isTSX: true,\n // disallowAmbiguousJSXLike: true,\n },\n ],\n]\n\nexport async function ensureBoilerplate(node: RouteNode, code: string) {\n const relativeImportPath = path.relative(node.fullDir, node.genPathNoExt)\n\n const originalFile = await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [...getBasePlugins()],\n })\n\n const file = await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [\n ...getBasePlugins(),\n {\n visitor: {\n Program: {\n enter(programPath) {\n // Remove all properties except for our isolated one\n\n if (node.isRoot) {\n let foundImport = false\n\n programPath.traverse({\n ImportSpecifier(importPath) {\n if (\n t.isIdentifier(importPath.node.imported) &&\n importPath.node.imported.name === 'createRouteConfig'\n ) {\n foundImport = true\n }\n },\n })\n\n if (!foundImport) {\n programPath.node.body.unshift(\n babel.template.statement(\n `import { createRouteConfig } from '@tanstack/react-router'`,\n )(),\n )\n }\n } else {\n let foundImport = false\n programPath.traverse({\n ImportSpecifier(importPath) {\n if (\n t.isIdentifier(importPath.node.imported) &&\n importPath.node.imported.name === 'routeConfig'\n ) {\n foundImport = true\n if (t.isImportDeclaration(importPath.parentPath.node)) {\n if (\n importPath.parentPath.node.source.value !==\n relativeImportPath\n ) {\n importPath.parentPath.node.source.value =\n relativeImportPath\n }\n }\n }\n },\n })\n if (!foundImport) {\n programPath.node.body.unshift(\n babel.template.statement(\n `import { routeConfig } from '${relativeImportPath}'`,\n )(),\n )\n }\n }\n },\n },\n },\n },\n ],\n })\n\n const separator = node.isRoot ? 'createRouteConfig(' : 'routeConfig.generate('\n\n if (!originalFile?.code) {\n return `${file?.code}\\n\\n${separator}{\\n\\n})`\n }\n\n const originalHead = originalFile?.code?.substring(\n 0,\n originalFile?.code?.indexOf(separator),\n )\n\n const generatedHead = file?.code?.substring(0, file?.code?.indexOf(separator))\n\n if (originalHead !== generatedHead) {\n return `${generatedHead}\\n\\n${originalFile?.code?.substring(\n originalFile?.code?.indexOf(separator),\n )}`\n }\n\n return\n}\n\nexport async function isolateOptionToExport(\n node: RouteNode,\n code: string,\n opts: Opts,\n) {\n return (\n await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [...getBasePlugins(), plugin()],\n ast: true,\n })\n )?.code\n\n function plugin(): babel.PluginItem {\n return {\n visitor: {\n Program: {\n enter(programPath, state) {\n // If we're the root, handle things a bit differently\n if (node.isRoot) {\n programPath.traverse({\n Identifier(path) {\n if (\n path.node.name === 'createRouteConfig' &&\n t.isCallExpression(path.parentPath.node)\n ) {\n const options = getCreateRouteConfigOptions(path)\n\n if (options) {\n const property = options.properties.find((property) => {\n return (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key) &&\n property.key.name === opts.isolate\n )\n })\n\n if (t.isObjectProperty(property)) {\n const program = path.findParent((d) => d.isProgram())\n\n if (program?.isProgram()) {\n program.node.body.push(\n babel.template.statement(\n `export const ${opts.isolate} = $LOADER`,\n )({\n $LOADER: property.value,\n }),\n )\n }\n }\n\n path\n .findParent((d) => d.isExpressionStatement())\n ?.remove()\n }\n }\n },\n })\n }\n\n // We're not in the root, handle things normally\n if (!node.isRoot) {\n // Remove all properties except for our isolated one\n programPath.traverse({\n Identifier(path) {\n if (path.node.name === 'generate') {\n const options = getRouteConfigGenerateOptions(path)\n\n if (options) {\n const property = options.properties.find((property) => {\n return (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key) &&\n property.key.name === opts.isolate\n )\n })\n\n if (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key)\n ) {\n if (property.key.name === opts.isolate) {\n const program = path.findParent((d) => d.isProgram())\n\n if (program?.isProgram()) {\n program.node.body.push(\n babel.template.statement(\n `export const ${opts.isolate} = $LOADER`,\n )({\n $LOADER: property.value,\n }),\n )\n }\n }\n }\n\n path\n .findParent((d) => d.isExpressionStatement())\n ?.remove()\n }\n }\n },\n })\n }\n\n cleanUnusedCode(programPath, state, [opts.isolate])\n },\n },\n },\n }\n }\n}\n\nexport async function detectExports(code: string) {\n let exported: string[] = []\n\n // try {\n await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [\n ...getBasePlugins(),\n {\n visitor: {\n ExportNamedDeclaration(path) {\n if (t.isVariableDeclaration(path.node.declaration)) {\n if (\n t.isVariableDeclarator(path.node.declaration.declarations?.[0])\n ) {\n if (t.isIdentifier(path.node.declaration.declarations[0].id)) {\n exported.push(path.node.declaration.declarations[0].id.name)\n }\n }\n }\n },\n },\n },\n ],\n ast: true,\n })\n\n return exported\n}\n\nexport async function generateRouteConfig(\n node: RouteNode,\n routeCode: string,\n imports: IsolatedExport[],\n clientOnly: boolean,\n) {\n const relativeParentRoutePath = clientOnly\n ? node.parent\n ? removeExt(\n path.relative(\n node.genDir,\n path.resolve(node.parent?.genDir, node.parent?.clientFilename),\n ),\n )\n : `./${rootRouteClientName}`\n : node.parent\n ? removeExt(\n path.relative(\n node.genDir,\n path.resolve(node.parent?.genDir, node.parent?.filename),\n ),\n )\n : `./${rootRouteName}`\n\n const pathName = node.isRoot\n ? undefined\n : node.fileNameNoExt.startsWith('__')\n ? undefined\n : node.fileNameNoExt === 'index'\n ? '/'\n : node.fileNameNoExt\n\n const routeId = node.isRoot ? undefined : node.fileNameNoExt\n\n function plugin(): babel.PluginItem {\n return {\n visitor: {\n Program: {\n enter(programPath, state) {\n // Remove all of the isolated import properties from the config\n programPath.traverse({\n ImportSpecifier(path) {\n if (t.isIdentifier(path.node.imported)) {\n if (!node.isRoot) {\n if (path.node.imported.name === 'routeConfig') {\n path.parentPath.remove()\n\n const program = path.findParent((d) => d.isProgram())\n\n if (program?.isProgram()) {\n program.node.body.unshift(\n babel.template.statement(\n `import { routeConfig as parentRouteConfig } from '$IMPORT'`,\n )({\n $IMPORT: relativeParentRoutePath,\n }),\n )\n }\n }\n }\n }\n },\n Identifier(iPath) {\n let options\n\n if (node.isRoot) {\n if (iPath.node.name === 'createRouteConfig') {\n if (t.isCallExpression(iPath.parentPath.node)) {\n if (\n t.isExpressionStatement(\n iPath.parentPath.parentPath?.node,\n )\n ) {\n iPath.parentPath.parentPath?.replaceWith(\n t.variableDeclaration('const', [\n t.variableDeclarator(\n t.identifier('routeConfig'),\n iPath.parentPath.node,\n ),\n ]) as any,\n )\n }\n }\n }\n } else {\n if (iPath.node.name === 'generate') {\n if (t.isMemberExpression(iPath.parentPath.node)) {\n if (t.isIdentifier(iPath.parentPath.node.object)) {\n iPath.node.name = 'createRoute'\n iPath.parentPath.node.object.name = 'parentRouteConfig'\n\n options = getRouteConfigGenerateOptions(iPath)\n }\n }\n }\n }\n\n if (options) {\n options.properties = [\n ...(pathName\n ? [\n t.objectProperty(\n t.identifier('path'),\n t.stringLiteral(pathName),\n ),\n ]\n : routeId\n ? [\n t.objectProperty(\n t.identifier('id'),\n t.stringLiteral(routeId),\n ),\n ]\n : []),\n ...options.properties.map((property) => {\n if (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key) &&\n isolatedProperties.includes(\n property.key.name as IsolatedProperty,\n )\n ) {\n const key = property.key.name\n\n if (key === 'loader') {\n if (clientOnly) {\n return t.objectProperty(\n t.identifier('loader'),\n t.tSAsExpression(\n t.booleanLiteral(true),\n t.tsAnyKeyword(),\n ),\n )\n }\n return t.objectProperty(\n t.identifier(key),\n babel.template.expression(\n `(...args) => import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').then(d => d.${key}.apply(d.${key}, (args as any)))`,\n {\n plugins: ['typescript'],\n },\n )({}),\n )\n }\n\n if (key === 'action') {\n if (clientOnly) {\n return t.objectProperty(\n t.identifier('action'),\n t.tSAsExpression(\n t.booleanLiteral(true),\n t.tSAnyKeyword(),\n ),\n )\n }\n return t.objectProperty(\n t.identifier(key),\n babel.template.expression(\n `(...payload: Parameters<typeof import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').action>) => import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').then(d => d.${key}.apply(d.${key}, (payload as any)))`,\n {\n plugins: ['typescript'],\n },\n )({}),\n )\n }\n\n return t.objectProperty(\n t.identifier(key),\n babel.template.expression(`\n lazy(() => import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').then(d => ({ default: d.${key} }) ))`)(),\n )\n }\n\n return property\n }),\n ]\n\n const program = iPath.findParent((d) => d.isProgram())\n\n if (program?.isProgram() && options) {\n const index = program.node.body.findIndex(\n (d) =>\n d.start === iPath.parentPath.parentPath?.node.start,\n )\n\n if (node.isRoot) {\n program.node.body[index] = babel.template.statement(\n `const routeConfig = createRouteConfig(\n $OPTIONS\n )`,\n )({\n $OPTIONS: options,\n })\n } else {\n program.node.body[index] = babel.template.statement(\n `const routeConfig = parentRouteConfig.createRoute(\n $OPTIONS\n )`,\n )({\n $OPTIONS: options,\n })\n }\n }\n }\n },\n })\n\n programPath.node.body.unshift(\n babel.template.statement(\n `import { lazy } from '@tanstack/react-router'`,\n )(),\n )\n\n // Add the routeConfig exports\n programPath.node.body.push(\n babel.template.statement(\n clientOnly\n ? `export { routeConfig, routeConfig as ${node.variable}Route }`\n : `export { routeConfig }`,\n )(),\n )\n\n cleanUnusedCode(programPath, state, [\n 'routeConfig',\n `${node.variable}Route`,\n ])\n },\n },\n },\n }\n }\n\n const code = (\n await babel.transformAsync(routeCode, {\n configFile: false,\n babelrc: false,\n plugins: [...getBasePlugins(), plugin()],\n ast: true,\n })\n )?.code\n\n if (!code) {\n // console.log(code, node, imports)\n throw new Error('Error while generating a route file!')\n }\n\n return code\n}\n\nfunction getIdentifier(path: any) {\n const parentPath = path.parentPath\n if (parentPath.type === 'VariableDeclarator') {\n const pp = parentPath\n const name = pp.get('id')\n return name.node.type === 'Identifier' ? name : null\n }\n if (parentPath.type === 'AssignmentExpression') {\n const pp = parentPath\n const name = pp.get('left')\n return name.node.type === 'Identifier' ? name : null\n }\n if (path.node.type === 'ArrowFunctionExpression') {\n return null\n }\n return path.node.id && path.node.id.type === 'Identifier'\n ? path.get('id')\n : null\n}\n\nfunction isIdentifierReferenced(ident: any) {\n const b = ident.scope.getBinding(ident.node.name)\n if (b && b.referenced) {\n if (b.path.type === 'FunctionDeclaration') {\n return !b.constantViolations\n .concat(b.referencePaths)\n .every((ref: any) => ref.findParent((p: any) => p === b.path))\n }\n return true\n }\n return false\n}\nfunction markFunction(path: any, state: any) {\n const ident = getIdentifier(path)\n if (ident && ident.node && isIdentifierReferenced(ident)) {\n state.refs.add(ident)\n }\n}\nfunction markImport(path: any, state: any) {\n const local = path.get('local')\n if (isIdentifierReferenced(local)) {\n state.refs.add(local)\n }\n}\n\nfunction getRouteConfigGenerateOptions(path: any): t.ObjectExpression | void {\n const tryOptions = (node: any): t.ObjectExpression | void => {\n if (t.isIdentifier(node)) {\n const initNode = path.scope.getBinding(node.name)?.path.node\n if (t.isVariableDeclarator(initNode)) {\n return tryOptions(initNode.init)\n }\n } else if (t.isObjectExpression(node)) {\n return node\n }\n\n return\n }\n\n if (\n t.isMemberExpression(path.parentPath.node) &&\n t.isCallExpression(path.parentPath.parentPath?.node)\n ) {\n const options = path.parentPath.parentPath?.node.arguments[0]\n\n return tryOptions(options)\n }\n}\n\nfunction getCreateRouteConfigOptions(path: any): t.ObjectExpression | void {\n const tryOptions = (node: any): t.ObjectExpression | void => {\n if (t.isIdentifier(node)) {\n const initNode = path.scope.getBinding(node.name)?.path.node\n if (t.isVariableDeclarator(initNode)) {\n return tryOptions(initNode.init)\n }\n } else if (t.isObjectExpression(node)) {\n return node\n }\n\n return\n }\n\n if (t.isCallExpression(path.parentPath?.node)) {\n const options = path.parentPath?.node.arguments[0]\n\n return tryOptions(options)\n }\n}\n\n// All credit for this amazing function goes to the Next.js team\n// (and the Solid.js team for their derivative work).\n// https://github.com/vercel/next.js/blob/canary/packages/next/build/babel/plugins/next-ssg-transform.ts\n// https://github.com/solidjs/solid-start/blob/main/packages/start/server/routeData.js\n\nfunction cleanUnusedCode(\n programPath: babel.NodePath<babel.types.Program>,\n state: any,\n keepExports: string[] = [],\n) {\n state.refs = new Set()\n state.done = false\n\n function markVariable(variablePath: any, variableState: any) {\n if (variablePath.node.id.type === 'Identifier') {\n const local = variablePath.get('id')\n if (isIdentifierReferenced(local)) {\n variableState.refs.add(local)\n }\n } else if (variablePath.node.id.type === 'ObjectPattern') {\n const pattern = variablePath.get('id')\n const properties: any = pattern.get('properties')\n properties.forEach((p: any) => {\n const local = p.get(\n p.node.type === 'ObjectProperty'\n ? 'value'\n : p.node.type === 'RestElement'\n ? 'argument'\n : (function () {\n throw new Error('invariant')\n })(),\n )\n if (isIdentifierReferenced(local)) {\n variableState.refs.add(local)\n }\n })\n } else if (variablePath.node.id.type === 'ArrayPattern') {\n const pattern = variablePath.get('id')\n const elements: any = pattern.get('elements')\n elements.forEach((e: any) => {\n let local\n if (e.node && e.node.type === 'Identifier') {\n local = e\n } else if (e.node && e.node.type === 'RestElement') {\n local = e.get('argument')\n } else {\n return\n }\n if (isIdentifierReferenced(local)) {\n variableState.refs.add(local)\n }\n })\n }\n }\n\n // Mark all variables and functions if used\n programPath.traverse(\n {\n VariableDeclarator: markVariable,\n FunctionDeclaration: markFunction,\n FunctionExpression: markFunction,\n ArrowFunctionExpression: markFunction,\n ImportSpecifier: markImport,\n ImportDefaultSpecifier: markImport,\n ImportNamespaceSpecifier: markImport,\n ExportDefaultDeclaration: markImport,\n // ExportNamedDeclaration(path, state) {\n // if (t.isVariableDeclaration(path.node.declaration)) {\n // if (t.isVariableDeclarator(path.node.declaration.declarations?.[0])) {\n // if (t.isIdentifier(path.node.declaration.declarations[0].id)) {\n // if (\n // keepExports.includes(\n // path.node.declaration.declarations[0].id.name,\n // )\n // ) {\n // return\n // }\n // }\n // path.replaceWith(path.node.declaration.declarations[0])\n // return\n // }\n // }\n // path.remove()\n // },\n ImportDeclaration: (path) => {\n if (path.node.source.value.endsWith('.css')) {\n path.remove()\n }\n },\n },\n state,\n )\n\n // Sweet all of the remaining references and remove unused ones\n const refs: any = state.refs\n let count: number\n function sweepFunction(sweepPath: any) {\n const ident = getIdentifier(sweepPath)\n if (\n ident &&\n ident.node &&\n refs.has(ident) &&\n !isIdentifierReferenced(ident)\n ) {\n ++count\n if (\n t.isAssignmentExpression(sweepPath.parentPath) ||\n t.isVariableDeclarator(sweepPath.parentPath)\n ) {\n sweepPath.parentPath.remove()\n } else {\n sweepPath.remove()\n }\n }\n }\n function sweepImport(sweepPath: any) {\n const local = sweepPath.get('local')\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n sweepPath.remove()\n if (sweepPath.parent.specifiers.length === 0) {\n sweepPath.parentPath.remove()\n }\n }\n }\n do {\n programPath.scope.crawl()\n count = 0\n programPath.traverse({\n VariableDeclarator(variablePath) {\n if (variablePath.node.id.type === 'Identifier') {\n const local = variablePath.get('id')\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n\n variablePath.remove()\n }\n } else if (variablePath.node.id.type === 'ObjectPattern') {\n const pattern = variablePath.get('id')\n const beforeCount = count\n const properties: any = pattern.get('properties')\n properties.forEach((p: any) => {\n const local = p.get(\n p.node.type === 'ObjectProperty'\n ? 'value'\n : p.node.type === 'RestElement'\n ? 'argument'\n : (function () {\n throw new Error('invariant')\n })(),\n )\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n p.remove()\n }\n })\n if (\n beforeCount !== count &&\n (pattern.get('properties') as any).length < 1\n ) {\n variablePath.remove()\n }\n } else if (variablePath.node.id.type === 'ArrayPattern') {\n const pattern = variablePath.get('id')\n const beforeCount = count\n const elements: any = pattern.get('elements')\n elements.forEach((e: any) => {\n let local\n if (e.node && e.node.type === 'Identifier') {\n local = e\n } else if (e.node && e.node.type === 'RestElement') {\n local = e.get('argument')\n } else {\n return\n }\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n\n e.remove()\n }\n })\n if (\n beforeCount !== count &&\n (pattern.get('elements') as any).length < 1\n ) {\n variablePath.remove()\n }\n }\n },\n FunctionDeclaration: sweepFunction,\n FunctionExpression: sweepFunction,\n ArrowFunctionExpression: sweepFunction,\n ImportSpecifier: sweepImport,\n ImportDefaultSpecifier: sweepImport,\n ImportNamespaceSpecifier: sweepImport,\n })\n } while (count)\n\n // Do we need the * import for react?\n let hasReact = false\n\n // Mark react elements as having react\n programPath.traverse({\n JSXElement(path) {\n hasReact = true\n },\n })\n\n if (!hasReact) {\n // Mark all variables and functions if used\n programPath.traverse({\n ImportDeclaration(path) {\n if (\n t.isStringLiteral(path.node.source) &&\n path.node.source.value === 'react' &&\n t.isImportNamespaceSpecifier(path.node.specifiers[0])\n ) {\n path.remove()\n }\n },\n })\n }\n}\n"],"names":["isolatedProperties","getBasePlugins","syntaxTS","isTSX","ensureBoilerplate","node","code","relativeImportPath","path","relative","fullDir","genPathNoExt","originalFile","babel","transformAsync","configFile","babelrc","plugins","file","visitor","Program","enter","programPath","isRoot","foundImport","traverse","ImportSpecifier","importPath","t","isIdentifier","imported","name","body","unshift","template","statement","isImportDeclaration","parentPath","source","value","separator","originalHead","substring","indexOf","generatedHead","isolateOptionToExport","opts","plugin","ast","state","Identifier","isCallExpression","options","getCreateRouteConfigOptions","property","properties","find","isObjectProperty","key","isolate","program","findParent","d","isProgram","push","$LOADER","isExpressionStatement","remove","getRouteConfigGenerateOptions","cleanUnusedCode","detectExports","exported","ExportNamedDeclaration","isVariableDeclaration","declaration","isVariableDeclarator","declarations","id","generateRouteConfig","routeCode","imports","clientOnly","relativeParentRoutePath","parent","removeExt","genDir","resolve","clientFilename","rootRouteClientName","filename","rootRouteName","pathName","undefined","fileNameNoExt","startsWith","routeId","$IMPORT","iPath","replaceWith","variableDeclaration","variableDeclarator","identifier","isMemberExpression","object","objectProperty","stringLiteral","map","includes","tSAsExpression","booleanLiteral","tsAnyKeyword","expression","tSAnyKeyword","index","findIndex","start","$OPTIONS","variable","Error","getIdentifier","type","pp","get","isIdentifierReferenced","ident","b","scope","getBinding","referenced","constantViolations","concat","referencePaths","every","ref","p","markFunction","refs","add","markImport","local","tryOptions","initNode","init","isObjectExpression","arguments","keepExports","Set","done","markVariable","variablePath","variableState","pattern","forEach","elements","e","VariableDeclarator","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ImportDefaultSpecifier","ImportNamespaceSpecifier","ExportDefaultDeclaration","ImportDeclaration","endsWith","count","sweepFunction","sweepPath","has","isAssignmentExpression","sweepImport","specifiers","length","crawl","beforeCount","hasReact","JSXElement","isStringLiteral","isImportNamespaceSpecifier"],"mappings":"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"}
1
+ {"version":3,"file":"transformCode.js","sources":["../../src/transformCode.ts"],"sourcesContent":["import * as babel from '@babel/core'\nimport * as t from '@babel/types'\n// @ts-ignore\nimport syntaxTS from '@babel/plugin-syntax-typescript'\nimport {\n IsolatedExport,\n removeExt,\n rootRouteName,\n rootRouteClientName,\n RouteNode,\n} from './generator'\nimport path from 'path'\n\nexport const isolatedProperties = [\n 'loader',\n 'action',\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport type IsolatedProperty = typeof isolatedProperties[number]\n\ntype Opts = {\n isolate: IsolatedProperty\n}\n\nconst getBasePlugins = () => [\n [\n syntaxTS,\n {\n isTSX: true,\n },\n ],\n]\n\nexport async function ensureBoilerplate(node: RouteNode, code: string) {\n const relativeImportPath = path.relative(node.fullDir, node.genPathNoExt)\n\n const originalFile = await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [...getBasePlugins()],\n })\n\n const file = await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [\n ...getBasePlugins(),\n {\n visitor: {\n Program: {\n enter(programPath) {\n // Remove all properties except for our isolated one\n\n if (node.isRoot) {\n let foundImport = false\n\n programPath.traverse({\n ImportSpecifier(importPath) {\n if (\n t.isIdentifier(importPath.node.imported) &&\n importPath.node.imported.name === 'createRouteConfig'\n ) {\n foundImport = true\n }\n },\n })\n\n if (!foundImport) {\n programPath.node.body.unshift(\n babel.template.statement(\n `import { createRouteConfig } from '@tanstack/react-router'`,\n )(),\n )\n }\n } else {\n let foundImport = false\n programPath.traverse({\n ImportSpecifier(importPath) {\n if (\n t.isIdentifier(importPath.node.imported) &&\n importPath.node.imported.name === 'routeConfig'\n ) {\n foundImport = true\n if (t.isImportDeclaration(importPath.parentPath.node)) {\n if (\n importPath.parentPath.node.source.value !==\n relativeImportPath\n ) {\n importPath.parentPath.node.source.value =\n relativeImportPath\n }\n }\n }\n },\n })\n if (!foundImport) {\n programPath.node.body.unshift(\n babel.template.statement(\n `import { routeConfig } from '${relativeImportPath}'`,\n )(),\n )\n }\n }\n },\n },\n },\n },\n ],\n })\n\n const separator = node.isRoot ? 'createRouteConfig(' : 'routeConfig.generate('\n\n if (!originalFile?.code) {\n return `${file?.code}\\n\\n${separator}{\\n\\n})`\n }\n\n const originalHead = originalFile?.code?.substring(\n 0,\n originalFile?.code?.indexOf(separator),\n )\n\n const generatedHead = file?.code?.substring(0, file?.code?.indexOf(separator))\n\n if (originalHead !== generatedHead) {\n return `${generatedHead}\\n\\n${originalFile?.code?.substring(\n originalFile?.code?.indexOf(separator),\n )}`\n }\n\n return\n}\n\nexport async function isolateOptionToExport(\n node: RouteNode,\n code: string,\n opts: Opts,\n) {\n return (\n await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [...getBasePlugins(), plugin()],\n ast: true,\n })\n )?.code\n\n function plugin(): babel.PluginItem {\n return {\n visitor: {\n Program: {\n enter(programPath, state) {\n // If we're the root, handle things a bit differently\n if (node.isRoot) {\n programPath.traverse({\n Identifier(path) {\n if (\n path.node.name === 'createRouteConfig' &&\n t.isCallExpression(path.parentPath.node)\n ) {\n const options = getCreateRouteConfigOptions(path)\n\n if (options) {\n const property = options.properties.find((property) => {\n return (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key) &&\n property.key.name === opts.isolate\n )\n })\n\n if (t.isObjectProperty(property)) {\n const program = path.findParent((d) => d.isProgram())\n\n if (program?.isProgram()) {\n program.node.body.push(\n babel.template.statement(\n `export const ${opts.isolate} = $LOADER`,\n )({\n $LOADER: property.value,\n }),\n )\n }\n }\n\n path\n .findParent((d) => d.isExpressionStatement())\n ?.remove()\n }\n }\n },\n })\n }\n\n // We're not in the root, handle things normally\n if (!node.isRoot) {\n // Remove all properties except for our isolated one\n programPath.traverse({\n Identifier(path) {\n if (path.node.name === 'generate') {\n const options = getRouteConfigGenerateOptions(path)\n\n if (options) {\n const property = options.properties.find((property) => {\n return (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key) &&\n property.key.name === opts.isolate\n )\n })\n\n if (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key)\n ) {\n if (property.key.name === opts.isolate) {\n const program = path.findParent((d) => d.isProgram())\n\n if (program?.isProgram()) {\n program.node.body.push(\n babel.template.statement(\n `export const ${opts.isolate} = $LOADER`,\n )({\n $LOADER: property.value,\n }),\n )\n }\n }\n }\n\n path\n .findParent((d) => d.isExpressionStatement())\n ?.remove()\n }\n }\n },\n })\n }\n\n cleanUnusedCode(programPath, state, [opts.isolate])\n },\n },\n },\n }\n }\n}\n\nexport async function detectExports(code: string) {\n let exported: string[] = []\n\n // try {\n await babel.transformAsync(code, {\n configFile: false,\n babelrc: false,\n plugins: [\n ...getBasePlugins(),\n {\n visitor: {\n ExportNamedDeclaration(path) {\n if (t.isVariableDeclaration(path.node.declaration)) {\n if (\n t.isVariableDeclarator(path.node.declaration.declarations?.[0])\n ) {\n if (t.isIdentifier(path.node.declaration.declarations[0].id)) {\n exported.push(path.node.declaration.declarations[0].id.name)\n }\n }\n }\n },\n },\n },\n ],\n ast: true,\n })\n\n return exported\n}\n\nexport async function generateRouteConfig(\n node: RouteNode,\n routeCode: string,\n imports: IsolatedExport[],\n clientOnly: boolean,\n) {\n const relativeParentRoutePath = clientOnly\n ? node.parent\n ? removeExt(\n path.relative(\n node.genDir,\n path.resolve(node.parent?.genDir, node.parent?.clientFilename),\n ),\n )\n : `./${rootRouteClientName}`\n : node.parent\n ? removeExt(\n path.relative(\n node.genDir,\n path.resolve(node.parent?.genDir, node.parent?.filename),\n ),\n )\n : `./${rootRouteName}`\n\n const pathName = node.isRoot\n ? undefined\n : node.fileNameNoExt.startsWith('__')\n ? undefined\n : node.fileNameNoExt === 'index'\n ? '/'\n : node.fileNameNoExt\n\n const routeId = node.isRoot ? undefined : node.fileNameNoExt\n\n function plugin(): babel.PluginItem {\n return {\n visitor: {\n Program: {\n enter(programPath, state) {\n // Remove all of the isolated import properties from the config\n programPath.traverse({\n ImportSpecifier(path) {\n if (t.isIdentifier(path.node.imported)) {\n if (!node.isRoot) {\n if (path.node.imported.name === 'routeConfig') {\n path.parentPath.remove()\n\n const program = path.findParent((d) => d.isProgram())\n\n if (program?.isProgram()) {\n program.node.body.unshift(\n babel.template.statement(\n `import { routeConfig as parentRouteConfig } from '$IMPORT'`,\n )({\n $IMPORT: relativeParentRoutePath,\n }),\n )\n }\n }\n }\n }\n },\n Identifier(iPath) {\n let options\n\n if (node.isRoot) {\n if (iPath.node.name === 'createRouteConfig') {\n if (t.isCallExpression(iPath.parentPath.node)) {\n if (\n t.isExpressionStatement(\n iPath.parentPath.parentPath?.node,\n )\n ) {\n iPath.parentPath.parentPath?.replaceWith(\n t.variableDeclaration('const', [\n t.variableDeclarator(\n t.identifier('routeConfig'),\n iPath.parentPath.node,\n ),\n ]) as any,\n )\n }\n }\n }\n } else {\n if (iPath.node.name === 'generate') {\n if (t.isMemberExpression(iPath.parentPath.node)) {\n if (t.isIdentifier(iPath.parentPath.node.object)) {\n iPath.node.name = 'createRoute'\n iPath.parentPath.node.object.name = 'parentRouteConfig'\n\n options = getRouteConfigGenerateOptions(iPath)\n }\n }\n }\n }\n\n if (options) {\n options.properties = [\n ...(pathName\n ? [\n t.objectProperty(\n t.identifier('path'),\n t.stringLiteral(pathName),\n ),\n ]\n : routeId\n ? [\n t.objectProperty(\n t.identifier('id'),\n t.stringLiteral(routeId),\n ),\n ]\n : []),\n ...options.properties.map((property) => {\n if (\n t.isObjectProperty(property) &&\n t.isIdentifier(property.key) &&\n isolatedProperties.includes(\n property.key.name as IsolatedProperty,\n )\n ) {\n const key = property.key.name\n\n if (key === 'loader') {\n if (clientOnly) {\n return t.objectProperty(\n t.identifier('loader'),\n t.tSAsExpression(\n t.booleanLiteral(true),\n t.tsAnyKeyword(),\n ),\n )\n }\n return t.objectProperty(\n t.identifier(key),\n babel.template.expression(\n `(...args) => import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').then(d => d.${key}.apply(d.${key}, (args as any)))`,\n {\n plugins: ['typescript'],\n },\n )({}),\n )\n }\n\n if (key === 'action') {\n if (clientOnly) {\n return t.objectProperty(\n t.identifier('action'),\n t.tSAsExpression(\n t.booleanLiteral(true),\n t.tSAnyKeyword(),\n ),\n )\n }\n return t.objectProperty(\n t.identifier(key),\n babel.template.expression(\n `(...payload: Parameters<typeof import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').action>) => import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').then(d => d.${key}.apply(d.${key}, (payload as any)))`,\n {\n plugins: ['typescript'],\n },\n )({}),\n )\n }\n\n if (clientOnly) {\n return t.objectProperty(\n t.identifier(key),\n babel.template.expression(`\n lazy(() => import('./${path.relative(\n node.genDir,\n node.genPathNoExt,\n )}-${key}').then(d => ({ default: d.${key} }) ))`)(),\n )\n }\n\n return t.objectProperty(\n t.identifier(key),\n property.value as any,\n )\n }\n\n return property\n }),\n ]\n\n const program = iPath.findParent((d) => d.isProgram())\n\n if (program?.isProgram() && options) {\n const index = program.node.body.findIndex(\n (d) =>\n d.start === iPath.parentPath.parentPath?.node.start,\n )\n\n if (node.isRoot) {\n program.node.body[index] = babel.template.statement(\n `const routeConfig = createRouteConfig(\n $OPTIONS\n )`,\n )({\n $OPTIONS: options,\n })\n } else {\n program.node.body[index] = babel.template.statement(\n `const routeConfig = parentRouteConfig.createRoute(\n $OPTIONS\n )`,\n )({\n $OPTIONS: options,\n })\n }\n }\n }\n },\n })\n\n programPath.node.body.unshift(\n babel.template.statement(\n `import { lazy } from '@tanstack/react-router'`,\n )(),\n )\n\n // Add the routeConfig exports\n programPath.node.body.push(\n babel.template.statement(\n clientOnly\n ? `export { routeConfig, routeConfig as ${node.variable}Route }`\n : `export { routeConfig }`,\n )(),\n )\n\n cleanUnusedCode(programPath, state, [\n 'routeConfig',\n `${node.variable}Route`,\n ])\n },\n },\n },\n }\n }\n\n const code = (\n await babel.transformAsync(routeCode, {\n configFile: false,\n babelrc: false,\n plugins: [...getBasePlugins(), plugin()],\n ast: true,\n })\n )?.code\n\n if (!code) {\n throw new Error('Error while generating a route file!')\n }\n\n return code\n}\n\nfunction getIdentifier(path: any) {\n const parentPath = path.parentPath\n if (parentPath.type === 'VariableDeclarator') {\n const pp = parentPath\n const name = pp.get('id')\n return name.node.type === 'Identifier' ? name : null\n }\n if (parentPath.type === 'AssignmentExpression') {\n const pp = parentPath\n const name = pp.get('left')\n return name.node.type === 'Identifier' ? name : null\n }\n if (path.node.type === 'ArrowFunctionExpression') {\n return null\n }\n return path.node.id && path.node.id.type === 'Identifier'\n ? path.get('id')\n : null\n}\n\nfunction isIdentifierReferenced(ident: any) {\n const b = ident.scope.getBinding(ident.node.name)\n if (b && b.referenced) {\n if (b.path.type === 'FunctionDeclaration') {\n return !b.constantViolations\n .concat(b.referencePaths)\n .every((ref: any) => ref.findParent((p: any) => p === b.path))\n }\n return true\n }\n return false\n}\nfunction markFunction(path: any, state: any) {\n const ident = getIdentifier(path)\n if (ident && ident.node && isIdentifierReferenced(ident)) {\n state.refs.add(ident)\n }\n}\nfunction markImport(path: any, state: any) {\n const local = path.get('local')\n if (isIdentifierReferenced(local)) {\n state.refs.add(local)\n }\n}\n\nfunction getRouteConfigGenerateOptions(path: any): t.ObjectExpression | void {\n const tryOptions = (node: any): t.ObjectExpression | void => {\n if (t.isIdentifier(node)) {\n const initNode = path.scope.getBinding(node.name)?.path.node\n if (t.isVariableDeclarator(initNode)) {\n return tryOptions(initNode.init)\n }\n } else if (t.isObjectExpression(node)) {\n return node\n }\n\n return\n }\n\n if (\n t.isMemberExpression(path.parentPath.node) &&\n t.isCallExpression(path.parentPath.parentPath?.node)\n ) {\n const options = path.parentPath.parentPath?.node.arguments[0]\n\n return tryOptions(options)\n }\n}\n\nfunction getCreateRouteConfigOptions(path: any): t.ObjectExpression | void {\n const tryOptions = (node: any): t.ObjectExpression | void => {\n if (t.isIdentifier(node)) {\n const initNode = path.scope.getBinding(node.name)?.path.node\n if (t.isVariableDeclarator(initNode)) {\n return tryOptions(initNode.init)\n }\n } else if (t.isObjectExpression(node)) {\n return node\n }\n\n return\n }\n\n if (t.isCallExpression(path.parentPath?.node)) {\n const options = path.parentPath?.node.arguments[0]\n\n return tryOptions(options)\n }\n}\n\n// All credit for this amazing function goes to the Next.js team\n// (and the Solid.js team for their derivative work).\n// https://github.com/vercel/next.js/blob/canary/packages/next/build/babel/plugins/next-ssg-transform.ts\n// https://github.com/solidjs/solid-start/blob/main/packages/start/server/routeData.js\n\nfunction cleanUnusedCode(\n programPath: babel.NodePath<babel.types.Program>,\n state: any,\n keepExports: string[] = [],\n) {\n state.refs = new Set()\n state.done = false\n\n function markVariable(variablePath: any, variableState: any) {\n if (variablePath.node.id.type === 'Identifier') {\n const local = variablePath.get('id')\n if (isIdentifierReferenced(local)) {\n variableState.refs.add(local)\n }\n } else if (variablePath.node.id.type === 'ObjectPattern') {\n const pattern = variablePath.get('id')\n const properties: any = pattern.get('properties')\n properties.forEach((p: any) => {\n const local = p.get(\n p.node.type === 'ObjectProperty'\n ? 'value'\n : p.node.type === 'RestElement'\n ? 'argument'\n : (function () {\n throw new Error('invariant')\n })(),\n )\n if (isIdentifierReferenced(local)) {\n variableState.refs.add(local)\n }\n })\n } else if (variablePath.node.id.type === 'ArrayPattern') {\n const pattern = variablePath.get('id')\n const elements: any = pattern.get('elements')\n elements.forEach((e: any) => {\n let local\n if (e.node && e.node.type === 'Identifier') {\n local = e\n } else if (e.node && e.node.type === 'RestElement') {\n local = e.get('argument')\n } else {\n return\n }\n if (isIdentifierReferenced(local)) {\n variableState.refs.add(local)\n }\n })\n }\n }\n\n // Mark all variables and functions if used\n programPath.traverse(\n {\n VariableDeclarator: markVariable,\n FunctionDeclaration: markFunction,\n FunctionExpression: markFunction,\n ArrowFunctionExpression: markFunction,\n ImportSpecifier: markImport,\n ImportDefaultSpecifier: markImport,\n ImportNamespaceSpecifier: markImport,\n ExportDefaultDeclaration: markImport,\n // ExportNamedDeclaration(path, state) {\n // if (t.isVariableDeclaration(path.node.declaration)) {\n // if (t.isVariableDeclarator(path.node.declaration.declarations?.[0])) {\n // if (t.isIdentifier(path.node.declaration.declarations[0].id)) {\n // if (\n // keepExports.includes(\n // path.node.declaration.declarations[0].id.name,\n // )\n // ) {\n // return\n // }\n // }\n // path.replaceWith(path.node.declaration.declarations[0])\n // return\n // }\n // }\n // path.remove()\n // },\n ImportDeclaration: (path) => {\n if (path.node.source.value.endsWith('.css')) {\n path.remove()\n }\n },\n },\n state,\n )\n\n // Sweet all of the remaining references and remove unused ones\n const refs: any = state.refs\n let count: number\n function sweepFunction(sweepPath: any) {\n const ident = getIdentifier(sweepPath)\n if (\n ident &&\n ident.node &&\n refs.has(ident) &&\n !isIdentifierReferenced(ident)\n ) {\n ++count\n if (\n t.isAssignmentExpression(sweepPath.parentPath) ||\n t.isVariableDeclarator(sweepPath.parentPath)\n ) {\n sweepPath.parentPath.remove()\n } else {\n sweepPath.remove()\n }\n }\n }\n function sweepImport(sweepPath: any) {\n const local = sweepPath.get('local')\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n sweepPath.remove()\n if (sweepPath.parent.specifiers.length === 0) {\n sweepPath.parentPath.remove()\n }\n }\n }\n do {\n programPath.scope.crawl()\n count = 0\n programPath.traverse({\n VariableDeclarator(variablePath) {\n if (variablePath.node.id.type === 'Identifier') {\n const local = variablePath.get('id')\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n\n variablePath.remove()\n }\n } else if (variablePath.node.id.type === 'ObjectPattern') {\n const pattern = variablePath.get('id')\n const beforeCount = count\n const properties: any = pattern.get('properties')\n properties.forEach((p: any) => {\n const local = p.get(\n p.node.type === 'ObjectProperty'\n ? 'value'\n : p.node.type === 'RestElement'\n ? 'argument'\n : (function () {\n throw new Error('invariant')\n })(),\n )\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n p.remove()\n }\n })\n if (\n beforeCount !== count &&\n (pattern.get('properties') as any).length < 1\n ) {\n variablePath.remove()\n }\n } else if (variablePath.node.id.type === 'ArrayPattern') {\n const pattern = variablePath.get('id')\n const beforeCount = count\n const elements: any = pattern.get('elements')\n elements.forEach((e: any) => {\n let local\n if (e.node && e.node.type === 'Identifier') {\n local = e\n } else if (e.node && e.node.type === 'RestElement') {\n local = e.get('argument')\n } else {\n return\n }\n if (refs.has(local) && !isIdentifierReferenced(local)) {\n ++count\n\n e.remove()\n }\n })\n if (\n beforeCount !== count &&\n (pattern.get('elements') as any).length < 1\n ) {\n variablePath.remove()\n }\n }\n },\n FunctionDeclaration: sweepFunction,\n FunctionExpression: sweepFunction,\n ArrowFunctionExpression: sweepFunction,\n ImportSpecifier: sweepImport,\n ImportDefaultSpecifier: sweepImport,\n ImportNamespaceSpecifier: sweepImport,\n })\n } while (count)\n\n // Do we need the * import for react?\n let hasReact = false\n\n // Mark react elements as having react\n programPath.traverse({\n JSXElement(path) {\n hasReact = true\n },\n })\n\n if (!hasReact) {\n // Mark all variables and functions if used\n programPath.traverse({\n ImportDeclaration(path) {\n if (\n t.isStringLiteral(path.node.source) &&\n path.node.source.value === 'react' &&\n t.isImportNamespaceSpecifier(path.node.specifiers[0])\n ) {\n path.remove()\n }\n },\n })\n }\n}\n"],"names":["isolatedProperties","getBasePlugins","syntaxTS","isTSX","ensureBoilerplate","node","code","relativeImportPath","path","relative","fullDir","genPathNoExt","originalFile","babel","transformAsync","configFile","babelrc","plugins","file","visitor","Program","enter","programPath","isRoot","foundImport","traverse","ImportSpecifier","importPath","t","isIdentifier","imported","name","body","unshift","template","statement","isImportDeclaration","parentPath","source","value","separator","originalHead","substring","indexOf","generatedHead","isolateOptionToExport","opts","plugin","ast","state","Identifier","isCallExpression","options","getCreateRouteConfigOptions","property","properties","find","isObjectProperty","key","isolate","program","findParent","d","isProgram","push","$LOADER","isExpressionStatement","remove","getRouteConfigGenerateOptions","cleanUnusedCode","detectExports","exported","ExportNamedDeclaration","isVariableDeclaration","declaration","isVariableDeclarator","declarations","id","generateRouteConfig","routeCode","imports","clientOnly","relativeParentRoutePath","parent","removeExt","genDir","resolve","clientFilename","rootRouteClientName","filename","rootRouteName","pathName","undefined","fileNameNoExt","startsWith","routeId","$IMPORT","iPath","replaceWith","variableDeclaration","variableDeclarator","identifier","isMemberExpression","object","objectProperty","stringLiteral","map","includes","tSAsExpression","booleanLiteral","tsAnyKeyword","expression","tSAnyKeyword","index","findIndex","start","$OPTIONS","variable","Error","getIdentifier","type","pp","get","isIdentifierReferenced","ident","b","scope","getBinding","referenced","constantViolations","concat","referencePaths","every","ref","p","markFunction","refs","add","markImport","local","tryOptions","initNode","init","isObjectExpression","arguments","keepExports","Set","done","markVariable","variablePath","variableState","pattern","forEach","elements","e","VariableDeclarator","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ImportDefaultSpecifier","ImportNamespaceSpecifier","ExportDefaultDeclaration","ImportDeclaration","endsWith","count","sweepFunction","sweepPath","has","isAssignmentExpression","sweepImport","specifiers","length","crawl","beforeCount","hasReact","JSXElement","isStringLiteral","isImportNamespaceSpecifier"],"mappings":"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"}
@@ -28,7 +28,7 @@ async function watch() {
28
28
  const generatorWatcher = async () => {
29
29
  const config$1 = await config.getConfig();
30
30
  watcher.close();
31
- console.log("TSR: Watching routes (" + config$1.routesDirectory + ")...");
31
+ console.log(`TSR: Watching routes (${config$1.routesDirectory})...`);
32
32
  watcher = chokidar__default["default"].watch(config$1.routesDirectory);
33
33
  watcher.on('ready', async () => {
34
34
  try {
@@ -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.js'),\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.log(`TSR: Watching routes (${config.routesDirectory})...`)\n watcher = chokidar.watch(config.routesDirectory)\n\n watcher.on('ready', async () => {\n try {\n await generator(config)\n } catch (err) {\n console.error(err)\n console.log()\n }\n\n const handle = async () => {\n try {\n await generator(config)\n } catch (err) {\n console.error(err)\n console.log()\n }\n }\n\n watcher.on('change', handle)\n watcher.on('add', handle)\n watcher.on('addDir', handle)\n watcher.on('unlink', handle)\n watcher.on('unlinkDir', handle)\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","log","routesDirectory","on","generator","err","error","handle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKO,eAAeA,KAAK,GAAG;AAC5B,EAAA,MAAMC,aAAa,GAAGC,4BAAQ,CAACF,KAAK,CAClCG,wBAAI,CAACC,OAAO,CAACC,OAAO,CAACC,GAAG,EAAE,EAAE,eAAe,CAAC,CAC7C,CAAA;AAED,EAAA,IAAIC,OAAO,GAAG,IAAIL,4BAAQ,CAACM,SAAS,EAAE,CAAA;EAEtC,MAAMC,gBAAgB,GAAG,YAAY;AACnC,IAAA,MAAMC,QAAM,GAAG,MAAMC,gBAAS,EAAE,CAAA;IAEhCJ,OAAO,CAACK,KAAK,EAAE,CAAA;AAEfC,IAAAA,OAAO,CAACC,GAAG,CAAA,wBAAA,GAA0BJ,QAAM,CAACK,eAAe,GAAO,MAAA,CAAA,CAAA;IAClER,OAAO,GAAGL,4BAAQ,CAACF,KAAK,CAACU,QAAM,CAACK,eAAe,CAAC,CAAA;AAEhDR,IAAAA,OAAO,CAACS,EAAE,CAAC,OAAO,EAAE,YAAY;MAC9B,IAAI;QACF,MAAMC,mBAAS,CAACP,QAAM,CAAC,CAAA;OACxB,CAAC,OAAOQ,GAAG,EAAE;AACZL,QAAAA,OAAO,CAACM,KAAK,CAACD,GAAG,CAAC,CAAA;QAClBL,OAAO,CAACC,GAAG,EAAE,CAAA;AACf,OAAA;MAEA,MAAMM,MAAM,GAAG,YAAY;QACzB,IAAI;UACF,MAAMH,mBAAS,CAACP,QAAM,CAAC,CAAA;SACxB,CAAC,OAAOQ,GAAG,EAAE;AACZL,UAAAA,OAAO,CAACM,KAAK,CAACD,GAAG,CAAC,CAAA;UAClBL,OAAO,CAACC,GAAG,EAAE,CAAA;AACf,SAAA;OACD,CAAA;AAEDP,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEI,MAAM,CAAC,CAAA;AAC5Bb,MAAAA,OAAO,CAACS,EAAE,CAAC,KAAK,EAAEI,MAAM,CAAC,CAAA;AACzBb,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEI,MAAM,CAAC,CAAA;AAC5Bb,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEI,MAAM,CAAC,CAAA;AAC5Bb,MAAAA,OAAO,CAACS,EAAE,CAAC,WAAW,EAAEI,MAAM,CAAC,CAAA;AACjC,KAAC,CAAC,CAAA;GACH,CAAA;AAEDnB,EAAAA,aAAa,CAACe,EAAE,CAAC,OAAO,EAAEP,gBAAgB,CAAC,CAAA;AAC3CR,EAAAA,aAAa,CAACe,EAAE,CAAC,QAAQ,EAAEP,gBAAgB,CAAC,CAAA;AAC9C;;;;"}
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.js'),\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.log(`TSR: Watching routes (${config.routesDirectory})...`)\n watcher = chokidar.watch(config.routesDirectory)\n\n watcher.on('ready', async () => {\n try {\n await generator(config)\n } catch (err) {\n console.error(err)\n console.log()\n }\n\n const handle = async () => {\n try {\n await generator(config)\n } catch (err) {\n console.error(err)\n console.log()\n }\n }\n\n watcher.on('change', handle)\n watcher.on('add', handle)\n watcher.on('addDir', handle)\n watcher.on('unlink', handle)\n watcher.on('unlinkDir', handle)\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","log","routesDirectory","on","generator","err","error","handle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKO,eAAeA,KAAK,GAAG;AAC5B,EAAA,MAAMC,aAAa,GAAGC,4BAAQ,CAACF,KAAK,CAClCG,wBAAI,CAACC,OAAO,CAACC,OAAO,CAACC,GAAG,EAAE,EAAE,eAAe,CAAC,CAC7C,CAAA;AAED,EAAA,IAAIC,OAAO,GAAG,IAAIL,4BAAQ,CAACM,SAAS,EAAE,CAAA;EAEtC,MAAMC,gBAAgB,GAAG,YAAY;AACnC,IAAA,MAAMC,QAAM,GAAG,MAAMC,gBAAS,EAAE,CAAA;IAEhCJ,OAAO,CAACK,KAAK,EAAE,CAAA;IAEfC,OAAO,CAACC,GAAG,CAAE,CAAA,sBAAA,EAAwBJ,QAAM,CAACK,eAAgB,MAAK,CAAC,CAAA;IAClER,OAAO,GAAGL,4BAAQ,CAACF,KAAK,CAACU,QAAM,CAACK,eAAe,CAAC,CAAA;AAEhDR,IAAAA,OAAO,CAACS,EAAE,CAAC,OAAO,EAAE,YAAY;MAC9B,IAAI;QACF,MAAMC,mBAAS,CAACP,QAAM,CAAC,CAAA;OACxB,CAAC,OAAOQ,GAAG,EAAE;AACZL,QAAAA,OAAO,CAACM,KAAK,CAACD,GAAG,CAAC,CAAA;QAClBL,OAAO,CAACC,GAAG,EAAE,CAAA;AACf,OAAA;MAEA,MAAMM,MAAM,GAAG,YAAY;QACzB,IAAI;UACF,MAAMH,mBAAS,CAACP,QAAM,CAAC,CAAA;SACxB,CAAC,OAAOQ,GAAG,EAAE;AACZL,UAAAA,OAAO,CAACM,KAAK,CAACD,GAAG,CAAC,CAAA;UAClBL,OAAO,CAACC,GAAG,EAAE,CAAA;AACf,SAAA;OACD,CAAA;AAEDP,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEI,MAAM,CAAC,CAAA;AAC5Bb,MAAAA,OAAO,CAACS,EAAE,CAAC,KAAK,EAAEI,MAAM,CAAC,CAAA;AACzBb,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEI,MAAM,CAAC,CAAA;AAC5Bb,MAAAA,OAAO,CAACS,EAAE,CAAC,QAAQ,EAAEI,MAAM,CAAC,CAAA;AAC5Bb,MAAAA,OAAO,CAACS,EAAE,CAAC,WAAW,EAAEI,MAAM,CAAC,CAAA;AACjC,KAAC,CAAC,CAAA;GACH,CAAA;AAEDnB,EAAAA,aAAa,CAACe,EAAE,CAAC,OAAO,EAAEP,gBAAgB,CAAC,CAAA;AAC3CR,EAAAA,aAAa,CAACe,EAAE,CAAC,QAAQ,EAAEP,gBAAgB,CAAC,CAAA;AAC9C;;;;"}
@@ -24,27 +24,10 @@ async function getConfig() {
24
24
  return fs.readJson(configFilePathJson);
25
25
  }
26
26
 
27
- function _extends() {
28
- _extends = Object.assign ? Object.assign.bind() : function (target) {
29
- for (var i = 1; i < arguments.length; i++) {
30
- var source = arguments[i];
31
- for (var key in source) {
32
- if (Object.prototype.hasOwnProperty.call(source, key)) {
33
- target[key] = source[key];
34
- }
35
- }
36
- }
37
- return target;
38
- };
39
- return _extends.apply(this, arguments);
40
- }
41
-
42
27
  const isolatedProperties = ['loader', 'action', 'component', 'errorComponent', 'pendingComponent'];
43
28
  const getBasePlugins = () => [[syntaxTS, {
44
29
  isTSX: true
45
- // disallowAmbiguousJSXLike: true,
46
30
  }]];
47
-
48
31
  async function ensureBoilerplate(node, code) {
49
32
  var _originalFile$code, _originalFile$code2, _file$code, _file$code2;
50
33
  const relativeImportPath = path.relative(node.fullDir, node.genPathNoExt);
@@ -72,7 +55,7 @@ async function ensureBoilerplate(node, code) {
72
55
  }
73
56
  });
74
57
  if (!foundImport) {
75
- programPath.node.body.unshift(babel.template.statement("import { createRouteConfig } from '@tanstack/react-router'")());
58
+ programPath.node.body.unshift(babel.template.statement(`import { createRouteConfig } from '@tanstack/react-router'`)());
76
59
  }
77
60
  } else {
78
61
  let foundImport = false;
@@ -89,7 +72,7 @@ async function ensureBoilerplate(node, code) {
89
72
  }
90
73
  });
91
74
  if (!foundImport) {
92
- programPath.node.body.unshift(babel.template.statement("import { routeConfig } from '" + relativeImportPath + "'")());
75
+ programPath.node.body.unshift(babel.template.statement(`import { routeConfig } from '${relativeImportPath}'`)());
93
76
  }
94
77
  }
95
78
  }
@@ -99,13 +82,13 @@ async function ensureBoilerplate(node, code) {
99
82
  });
100
83
  const separator = node.isRoot ? 'createRouteConfig(' : 'routeConfig.generate(';
101
84
  if (!(originalFile != null && originalFile.code)) {
102
- return (file == null ? void 0 : file.code) + "\n\n" + separator + "{\n\n})";
85
+ return `${file == null ? void 0 : file.code}\n\n${separator}{\n\n})`;
103
86
  }
104
87
  const originalHead = originalFile == null ? void 0 : (_originalFile$code = originalFile.code) == null ? void 0 : _originalFile$code.substring(0, originalFile == null ? void 0 : (_originalFile$code2 = originalFile.code) == null ? void 0 : _originalFile$code2.indexOf(separator));
105
88
  const generatedHead = file == null ? void 0 : (_file$code = file.code) == null ? void 0 : _file$code.substring(0, file == null ? void 0 : (_file$code2 = file.code) == null ? void 0 : _file$code2.indexOf(separator));
106
89
  if (originalHead !== generatedHead) {
107
90
  var _originalFile$code3, _originalFile$code4;
108
- return generatedHead + "\n\n" + (originalFile == null ? void 0 : (_originalFile$code3 = originalFile.code) == null ? void 0 : _originalFile$code3.substring(originalFile == null ? void 0 : (_originalFile$code4 = originalFile.code) == null ? void 0 : _originalFile$code4.indexOf(separator)));
91
+ return `${generatedHead}\n\n${originalFile == null ? void 0 : (_originalFile$code3 = originalFile.code) == null ? void 0 : _originalFile$code3.substring(originalFile == null ? void 0 : (_originalFile$code4 = originalFile.code) == null ? void 0 : _originalFile$code4.indexOf(separator))}`;
109
92
  }
110
93
  return;
111
94
  }
@@ -136,7 +119,7 @@ async function isolateOptionToExport(node, code, opts) {
136
119
  if (t.isObjectProperty(property)) {
137
120
  const program = path.findParent(d => d.isProgram());
138
121
  if (program != null && program.isProgram()) {
139
- program.node.body.push(babel.template.statement("export const " + opts.isolate + " = $LOADER")({
122
+ program.node.body.push(babel.template.statement(`export const ${opts.isolate} = $LOADER`)({
140
123
  $LOADER: property.value
141
124
  }));
142
125
  }
@@ -164,7 +147,7 @@ async function isolateOptionToExport(node, code, opts) {
164
147
  if (property.key.name === opts.isolate) {
165
148
  const program = path.findParent(d => d.isProgram());
166
149
  if (program != null && program.isProgram()) {
167
- program.node.body.push(babel.template.statement("export const " + opts.isolate + " = $LOADER")({
150
+ program.node.body.push(babel.template.statement(`export const ${opts.isolate} = $LOADER`)({
168
151
  $LOADER: property.value
169
152
  }));
170
153
  }
@@ -210,7 +193,7 @@ async function detectExports(code) {
210
193
  }
211
194
  async function generateRouteConfig(node, routeCode, imports, clientOnly) {
212
195
  var _node$parent, _node$parent2, _node$parent3, _node$parent4, _await$babel$transfor2;
213
- const relativeParentRoutePath = clientOnly ? node.parent ? removeExt(path.relative(node.genDir, path.resolve((_node$parent = node.parent) == null ? void 0 : _node$parent.genDir, (_node$parent2 = node.parent) == null ? void 0 : _node$parent2.clientFilename))) : "./" + rootRouteClientName : node.parent ? removeExt(path.relative(node.genDir, path.resolve((_node$parent3 = node.parent) == null ? void 0 : _node$parent3.genDir, (_node$parent4 = node.parent) == null ? void 0 : _node$parent4.filename))) : "./" + rootRouteName;
196
+ const relativeParentRoutePath = clientOnly ? node.parent ? removeExt(path.relative(node.genDir, path.resolve((_node$parent = node.parent) == null ? void 0 : _node$parent.genDir, (_node$parent2 = node.parent) == null ? void 0 : _node$parent2.clientFilename))) : `./${rootRouteClientName}` : node.parent ? removeExt(path.relative(node.genDir, path.resolve((_node$parent3 = node.parent) == null ? void 0 : _node$parent3.genDir, (_node$parent4 = node.parent) == null ? void 0 : _node$parent4.filename))) : `./${rootRouteName}`;
214
197
  const pathName = node.isRoot ? undefined : node.fileNameNoExt.startsWith('__') ? undefined : node.fileNameNoExt === 'index' ? '/' : node.fileNameNoExt;
215
198
  const routeId = node.isRoot ? undefined : node.fileNameNoExt;
216
199
  function plugin() {
@@ -227,7 +210,7 @@ async function generateRouteConfig(node, routeCode, imports, clientOnly) {
227
210
  path.parentPath.remove();
228
211
  const program = path.findParent(d => d.isProgram());
229
212
  if (program != null && program.isProgram()) {
230
- program.node.body.unshift(babel.template.statement("import { routeConfig as parentRouteConfig } from '$IMPORT'")({
213
+ program.node.body.unshift(babel.template.statement(`import { routeConfig as parentRouteConfig } from '$IMPORT'`)({
231
214
  $IMPORT: relativeParentRoutePath
232
215
  }));
233
216
  }
@@ -266,7 +249,7 @@ async function generateRouteConfig(node, routeCode, imports, clientOnly) {
266
249
  if (clientOnly) {
267
250
  return t.objectProperty(t.identifier('loader'), t.tSAsExpression(t.booleanLiteral(true), t.tsAnyKeyword()));
268
251
  }
269
- return t.objectProperty(t.identifier(key), babel.template.expression("(...args) => import('./" + path.relative(node.genDir, node.genPathNoExt) + "-" + key + "').then(d => d." + key + ".apply(d." + key + ", (args as any)))", {
252
+ return t.objectProperty(t.identifier(key), babel.template.expression(`(...args) => import('./${path.relative(node.genDir, node.genPathNoExt)}-${key}').then(d => d.${key}.apply(d.${key}, (args as any)))`, {
270
253
  plugins: ['typescript']
271
254
  })({}));
272
255
  }
@@ -274,11 +257,15 @@ async function generateRouteConfig(node, routeCode, imports, clientOnly) {
274
257
  if (clientOnly) {
275
258
  return t.objectProperty(t.identifier('action'), t.tSAsExpression(t.booleanLiteral(true), t.tSAnyKeyword()));
276
259
  }
277
- return t.objectProperty(t.identifier(key), babel.template.expression("(...payload: Parameters<typeof import('./" + path.relative(node.genDir, node.genPathNoExt) + "-" + key + "').action>) => import('./" + path.relative(node.genDir, node.genPathNoExt) + "-" + key + "').then(d => d." + key + ".apply(d." + key + ", (payload as any)))", {
260
+ return t.objectProperty(t.identifier(key), babel.template.expression(`(...payload: Parameters<typeof import('./${path.relative(node.genDir, node.genPathNoExt)}-${key}').action>) => import('./${path.relative(node.genDir, node.genPathNoExt)}-${key}').then(d => d.${key}.apply(d.${key}, (payload as any)))`, {
278
261
  plugins: ['typescript']
279
262
  })({}));
280
263
  }
281
- return t.objectProperty(t.identifier(key), babel.template.expression("\n lazy(() => import('./" + path.relative(node.genDir, node.genPathNoExt) + "-" + key + "').then(d => ({ default: d." + key + " }) ))")());
264
+ if (clientOnly) {
265
+ return t.objectProperty(t.identifier(key), babel.template.expression(`
266
+ lazy(() => import('./${path.relative(node.genDir, node.genPathNoExt)}-${key}').then(d => ({ default: d.${key} }) ))`)());
267
+ }
268
+ return t.objectProperty(t.identifier(key), property.value);
282
269
  }
283
270
  return property;
284
271
  })];
@@ -289,11 +276,15 @@ async function generateRouteConfig(node, routeCode, imports, clientOnly) {
289
276
  return d.start === ((_iPath$parentPath$par3 = iPath.parentPath.parentPath) == null ? void 0 : _iPath$parentPath$par3.node.start);
290
277
  });
291
278
  if (node.isRoot) {
292
- program.node.body[index] = babel.template.statement("const routeConfig = createRouteConfig(\n $OPTIONS\n )")({
279
+ program.node.body[index] = babel.template.statement(`const routeConfig = createRouteConfig(
280
+ $OPTIONS
281
+ )`)({
293
282
  $OPTIONS: options
294
283
  });
295
284
  } else {
296
- program.node.body[index] = babel.template.statement("const routeConfig = parentRouteConfig.createRoute(\n $OPTIONS\n )")({
285
+ program.node.body[index] = babel.template.statement(`const routeConfig = parentRouteConfig.createRoute(
286
+ $OPTIONS
287
+ )`)({
297
288
  $OPTIONS: options
298
289
  });
299
290
  }
@@ -301,11 +292,11 @@ async function generateRouteConfig(node, routeCode, imports, clientOnly) {
301
292
  }
302
293
  }
303
294
  });
304
- programPath.node.body.unshift(babel.template.statement("import { lazy } from '@tanstack/react-router'")());
295
+ programPath.node.body.unshift(babel.template.statement(`import { lazy } from '@tanstack/react-router'`)());
305
296
 
306
297
  // Add the routeConfig exports
307
- programPath.node.body.push(babel.template.statement(clientOnly ? "export { routeConfig, routeConfig as " + node.variable + "Route }" : "export { routeConfig }")());
308
- cleanUnusedCode(programPath, state, ['routeConfig', node.variable + "Route"]);
298
+ programPath.node.body.push(babel.template.statement(clientOnly ? `export { routeConfig, routeConfig as ${node.variable}Route }` : `export { routeConfig }`)());
299
+ cleanUnusedCode(programPath, state, ['routeConfig', `${node.variable}Route`]);
309
300
  }
310
301
  }
311
302
  }
@@ -318,7 +309,6 @@ async function generateRouteConfig(node, routeCode, imports, clientOnly) {
318
309
  ast: true
319
310
  })) == null ? void 0 : _await$babel$transfor2.code;
320
311
  if (!code) {
321
- // console.log(code, node, imports)
322
312
  throw new Error('Error while generating a route file!');
323
313
  }
324
314
  return code;
@@ -604,7 +594,7 @@ async function generator(config) {
604
594
  latestTask = taskId;
605
595
  const checkLatest = () => {
606
596
  if (latestTask !== taskId) {
607
- console.log("- Skipping since file changes were made while generating.");
597
+ console.log(`- Skipping since file changes were made while generating.`);
608
598
  return false;
609
599
  }
610
600
  return true;
@@ -631,7 +621,7 @@ async function generator(config) {
631
621
  const fullPath = path.resolve(dir, filename);
632
622
  const stat = await fs.lstat(fullPath);
633
623
  const ext = path.extname(filename);
634
- const clientFilename = filename.replace(ext, ".client" + ext);
624
+ const clientFilename = filename.replace(ext, `.client${ext}`);
635
625
  const pathFromRoutes = path.relative(config.routesDirectory, fullPath);
636
626
  const genPath = path.resolve(config.routeGenDirectory, pathFromRoutes);
637
627
  const genPathNoExt = removeExt(genPath);
@@ -667,9 +657,10 @@ async function generator(config) {
667
657
  return Promise.all(reparented.map(async d => {
668
658
  if (d.childRoutesDir) {
669
659
  const children = await reparent(d.childRoutesDir);
670
- d = _extends({}, d, {
660
+ d = {
661
+ ...d,
671
662
  children
672
- });
663
+ };
673
664
  children.forEach(child => child.parent = d);
674
665
  return d;
675
666
  }
@@ -743,7 +734,7 @@ async function generator(config) {
743
734
  key,
744
735
  code
745
736
  } = _ref2;
746
- const importFilename = node.genPathNoExt + "-" + key + ".tsx";
737
+ const importFilename = `${node.genPathNoExt}-${key}.tsx`;
747
738
  queueWriteFile(importFilename, code);
748
739
  return importFilename;
749
740
  }));
@@ -756,27 +747,27 @@ async function generator(config) {
756
747
  node.hash = '';
757
748
  }
758
749
  }
759
- routeConfigImports.push("import { routeConfig as " + node.variable + "Route } from './" + removeExt(path.relative(config.routeGenDirectory, node.genPath)) + "'");
760
- routeConfigClientImports.push("import { routeConfig as " + node.variable + "Route } from './" + removeExt(path.relative(config.routeGenDirectory, path.resolve(node.genDir, node.clientFilename))) + "'");
750
+ routeConfigImports.push(`import { routeConfig as ${node.variable}Route } from './${removeExt(path.relative(config.routeGenDirectory, node.genPath).replace(/\\/gi, '/'))}'`);
751
+ routeConfigClientImports.push(`import { routeConfig as ${node.variable}Route } from './${removeExt(path.relative(config.routeGenDirectory, path.resolve(node.genDir, node.clientFilename)).replace(/\\/gi, '/'))}'`);
761
752
  if (node.isRoot) {
762
753
  return undefined;
763
754
  }
764
- const route = node.variable + "Route";
755
+ const route = `${node.variable}Route`;
765
756
  if ((_node$children = node.children) != null && _node$children.length) {
766
757
  const childConfigs = await buildRouteConfig(node.children, depth + 1);
767
- return route + ".addChildren([\n" + spaces(depth * 4) + childConfigs + "\n" + spaces(depth * 2) + "])";
758
+ return `${route}.addChildren([\n${spaces(depth * 4)}${childConfigs}\n${spaces(depth * 2)}])`;
768
759
  }
769
760
  return route;
770
761
  });
771
- return (await Promise.all(children)).filter(Boolean).join(",\n" + spaces(depth * 2));
762
+ return (await Promise.all(children)).filter(Boolean).join(`,\n${spaces(depth * 2)}`);
772
763
  }
773
764
  const routeConfigChildrenText = await buildRouteConfig(reparented);
774
765
  routeConfigImports = multiSortBy(routeConfigImports, [d => d.includes('__root') ? -1 : 1, d => d.split('/').length, d => d.endsWith("index'") ? -1 : 1, d => d]);
775
766
  routeConfigClientImports = multiSortBy(routeConfigClientImports, [d => d.includes('__root') ? -1 : 1, d => d.split('/').length, d => d.endsWith("index.client'") ? -1 : 1, d => d]);
776
- const routeConfig = "export const routeConfig = rootRoute.addChildren([\n " + routeConfigChildrenText + "\n])\nexport type __GeneratedRouteConfig = typeof routeConfig";
777
- const routeConfigClient = "export const routeConfigClient = rootRoute.addChildren([\n " + routeConfigChildrenText + "\n]) as __GeneratedRouteConfig";
767
+ const routeConfig = `export const routeConfig = rootRoute.addChildren([\n ${routeConfigChildrenText}\n])\nexport type __GeneratedRouteConfig = typeof routeConfig`;
768
+ const routeConfigClient = `export const routeConfigClient = rootRoute.addChildren([\n ${routeConfigChildrenText}\n]) as __GeneratedRouteConfig`;
778
769
  const routeConfigFileContent = [routeConfigImports.join('\n'), routeConfig].join('\n\n');
779
- const routeConfigClientFileContent = ["import type { __GeneratedRouteConfig } from './routeConfig'", routeConfigClientImports.join('\n'), routeConfigClient].join('\n\n');
770
+ const routeConfigClientFileContent = [`import type { __GeneratedRouteConfig } from './routeConfig'`, routeConfigClientImports.join('\n'), routeConfigClient].join('\n\n');
780
771
  if (nodesChanged) {
781
772
  queueWriteFile(path.resolve(config.routeGenDirectory, 'routeConfig.ts'), routeConfigFileContent);
782
773
  queueWriteFile(path.resolve(config.routeGenDirectory, 'routeConfig.client.ts'), routeConfigClientFileContent);
@@ -825,19 +816,19 @@ async function generator(config) {
825
816
  await Promise.all(unusedFiles.map(d => {
826
817
  fs.remove(d);
827
818
  }));
828
- console.log("\uD83C\uDF32 Processed " + nodeCache.length + " routes in " + (Date.now() - start) + "ms");
819
+ console.log(`🌲 Processed ${nodeCache.length} routes in ${Date.now() - start}ms`);
829
820
  if (newNodes.length || updatedNodes.length || removedNodes.length) {
830
821
  if (newNodes.length) {
831
- console.log("\uD83E\uDD73 Added " + newNodes.length + " new routes");
822
+ console.log(`🥳 Added ${newNodes.length} new routes`);
832
823
  }
833
824
  if (updatedNodes.length) {
834
- console.log("\u2705 Updated " + updatedNodes.length + " routes");
825
+ console.log(`✅ Updated ${updatedNodes.length} routes`);
835
826
  }
836
827
  if (removedNodes.length) {
837
- console.log("\uD83D\uDDD1 Removed " + removedNodes.length + " unused routes");
828
+ console.log(`🗑 Removed ${removedNodes.length} unused routes`);
838
829
  }
839
830
  } else {
840
- console.log("\uD83C\uDF89 No changes were found. Carry on!");
831
+ console.log(`🎉 No changes were found. Carry on!`);
841
832
  }
842
833
  }
843
834
  function getAllFiles(dir) {
@@ -909,7 +900,7 @@ async function watch() {
909
900
  const generatorWatcher = async () => {
910
901
  const config = await getConfig();
911
902
  watcher.close();
912
- console.log("TSR: Watching routes (" + config.routesDirectory + ")...");
903
+ console.log(`TSR: Watching routes (${config.routesDirectory})...`);
913
904
  watcher = chokidar.watch(config.routesDirectory);
914
905
  watcher.on('ready', async () => {
915
906
  try {