@tanstack/router-cli 0.0.1-beta.45 → 0.0.1-beta.47
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.
|
@@ -91,7 +91,7 @@ async function ensureBoilerplate(node, code) {
|
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
93
|
if (!foundImport) {
|
|
94
|
-
programPath.node.body.unshift(babel__namespace.template.statement(`import { routeConfig } from '${relativeImportPath}'`)());
|
|
94
|
+
programPath.node.body.unshift(babel__namespace.template.statement(`import { routeConfig } from '${relativeImportPath.replace(/\\/gi, '/')}'`)());
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
}
|
|
@@ -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'\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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"}
|
|
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.replace(/\\\\/gi, '/')}'`,\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","replace","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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"}
|
package/build/esm/index.js
CHANGED
|
@@ -72,7 +72,7 @@ async function ensureBoilerplate(node, code) {
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
if (!foundImport) {
|
|
75
|
-
programPath.node.body.unshift(babel.template.statement(`import { routeConfig } from '${relativeImportPath}'`)());
|
|
75
|
+
programPath.node.body.unshift(babel.template.statement(`import { routeConfig } from '${relativeImportPath.replace(/\\/gi, '/')}'`)());
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/config.ts","../../src/transformCode.ts","../../src/generator.ts","../../src/generate.ts","../../src/watch.ts","../../src/index.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs-extra'\n\nexport type Config = {\n rootDirectory: string\n sourceDirectory: string\n routesDirectory: string\n routeGenDirectory: string\n}\n\nconst configFilePathJson = path.resolve(process.cwd(), 'tsr.config.json')\n\nexport async function getConfig() {\n return fs.readJson(configFilePathJson)\n}\n","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","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 { routeConfig 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 { routeConfig 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 routeConfig = rootRoute.addChildren([\\n ${routeConfigChildrenText}\\n])\\nexport type __GeneratedRouteConfig = typeof routeConfig`\n const routeConfigClient = `export const routeConfigClient = 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 './routeConfig'`,\n routeConfigClientImports.join('\\n'),\n routeConfigClient,\n ].join('\\n\\n')\n\n if (nodesChanged) {\n queueWriteFile(\n path.resolve(config.routeGenDirectory, 'routeConfig.ts'),\n routeConfigFileContent,\n )\n queueWriteFile(\n path.resolve(config.routeGenDirectory, 'routeConfig.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, 'routeConfig.ts') ||\n d === path.resolve(config.routeGenDirectory, 'routeConfig.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","import { generator } from './generator'\nimport { Config } from './config'\n\nexport async function generate(config: Config) {\n try {\n await generator(config)\n process.exit(0)\n } catch (err) {\n console.error(err)\n process.exit(1)\n }\n}\n","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","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":["configFilePathJson","path","resolve","process","cwd","getConfig","fs","readJson","isolatedProperties","getBasePlugins","syntaxTS","isTSX","ensureBoilerplate","node","code","relativeImportPath","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","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","latestTask","nodeCache","generator","config","console","log","first","taskId","checkLatest","Date","now","routeConfigImports","routeConfigClientImports","nodesChanged","fileQueue","queueWriteFile","content","reparent","dir","dirList","readdir","err","error","dirListCombo","multiSortBy","Promise","all","fullPath","stat","lstat","ext","extname","replace","pathFromRoutes","routesDirectory","genPath","routeGenDirectory","fileToVariable","isDirectory","isIndex","reparented","i","dd","childRoutesDir","children","child","buildRouteConfig","nodes","depth","n","new","version","readFile","hashSum","crypto","createHash","update","hash","digest","changed","writeFile","transforms","exports","transformed","filter","importedFiles","importFilename","routeConfigCode","clientRouteConfigCode","route","childConfigs","spaces","Boolean","join","routeConfigChildrenText","split","routeConfig","routeConfigClient","routeConfigFileContent","routeConfigClientFileContent","mkdir","recursive","ensureDir","dirname","exists","pathExists","current","allFiles","getAllFiles","removedNodes","newNodes","updatedNodes","unusedFiles","reject","excludeDirFilter","through2","obj","item","enc","next","stats","items","klaw","pipe","on","capitalize","lastIndexOf","Array","from","arr","accessors","sort","a","ai","bi","accessor","ao","bo","s","charAt","toUpperCase","slice","generate","exit","watch","configWatcher","chokidar","watcher","FSWatcher","generatorWatcher","close","handle","main","yargs","scriptName","usage","command","argv","help"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/config.ts","../../src/transformCode.ts","../../src/generator.ts","../../src/generate.ts","../../src/watch.ts","../../src/index.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs-extra'\n\nexport type Config = {\n rootDirectory: string\n sourceDirectory: string\n routesDirectory: string\n routeGenDirectory: string\n}\n\nconst configFilePathJson = path.resolve(process.cwd(), 'tsr.config.json')\n\nexport async function getConfig() {\n return fs.readJson(configFilePathJson)\n}\n","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.replace(/\\\\/gi, '/')}'`,\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","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 { routeConfig 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 { routeConfig 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 routeConfig = rootRoute.addChildren([\\n ${routeConfigChildrenText}\\n])\\nexport type __GeneratedRouteConfig = typeof routeConfig`\n const routeConfigClient = `export const routeConfigClient = 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 './routeConfig'`,\n routeConfigClientImports.join('\\n'),\n routeConfigClient,\n ].join('\\n\\n')\n\n if (nodesChanged) {\n queueWriteFile(\n path.resolve(config.routeGenDirectory, 'routeConfig.ts'),\n routeConfigFileContent,\n )\n queueWriteFile(\n path.resolve(config.routeGenDirectory, 'routeConfig.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, 'routeConfig.ts') ||\n d === path.resolve(config.routeGenDirectory, 'routeConfig.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","import { generator } from './generator'\nimport { Config } from './config'\n\nexport async function generate(config: Config) {\n try {\n await generator(config)\n process.exit(0)\n } catch (err) {\n console.error(err)\n process.exit(1)\n }\n}\n","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","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":["configFilePathJson","path","resolve","process","cwd","getConfig","fs","readJson","isolatedProperties","getBasePlugins","syntaxTS","isTSX","ensureBoilerplate","node","code","relativeImportPath","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","replace","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","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","latestTask","nodeCache","generator","config","console","log","first","taskId","checkLatest","Date","now","routeConfigImports","routeConfigClientImports","nodesChanged","fileQueue","queueWriteFile","content","reparent","dir","dirList","readdir","err","error","dirListCombo","multiSortBy","Promise","all","fullPath","stat","lstat","ext","extname","pathFromRoutes","routesDirectory","genPath","routeGenDirectory","fileToVariable","isDirectory","isIndex","reparented","i","dd","childRoutesDir","children","child","buildRouteConfig","nodes","depth","n","new","version","readFile","hashSum","crypto","createHash","update","hash","digest","changed","writeFile","transforms","exports","transformed","filter","importedFiles","importFilename","routeConfigCode","clientRouteConfigCode","route","childConfigs","spaces","Boolean","join","routeConfigChildrenText","split","routeConfig","routeConfigClient","routeConfigFileContent","routeConfigClientFileContent","mkdir","recursive","ensureDir","dirname","exists","pathExists","current","allFiles","getAllFiles","removedNodes","newNodes","updatedNodes","unusedFiles","reject","excludeDirFilter","through2","obj","item","enc","next","stats","items","klaw","pipe","on","capitalize","lastIndexOf","Array","from","arr","accessors","sort","a","ai","bi","accessor","ao","bo","s","charAt","toUpperCase","slice","generate","exit","watch","configWatcher","chokidar","watcher","FSWatcher","generatorWatcher","close","handle","main","yargs","scriptName","usage","command","argv","help"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/transformCode.ts
CHANGED
|
@@ -99,7 +99,7 @@ export async function ensureBoilerplate(node: RouteNode, code: string) {
|
|
|
99
99
|
if (!foundImport) {
|
|
100
100
|
programPath.node.body.unshift(
|
|
101
101
|
babel.template.statement(
|
|
102
|
-
`import { routeConfig } from '${relativeImportPath}'`,
|
|
102
|
+
`import { routeConfig } from '${relativeImportPath.replace(/\\/gi, '/')}'`,
|
|
103
103
|
)(),
|
|
104
104
|
)
|
|
105
105
|
}
|