@tanstack/router-plugin 1.132.0-alpha.9 → 1.132.2

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.
Files changed (57) hide show
  1. package/dist/cjs/core/code-splitter/compilers.cjs +31 -17
  2. package/dist/cjs/core/code-splitter/compilers.cjs.map +1 -1
  3. package/dist/cjs/core/config.cjs +1 -4
  4. package/dist/cjs/core/config.cjs.map +1 -1
  5. package/dist/cjs/core/config.d.cts +11 -8
  6. package/dist/cjs/core/route-autoimport-plugin.cjs +17 -6
  7. package/dist/cjs/core/route-autoimport-plugin.cjs.map +1 -1
  8. package/dist/cjs/core/route-autoimport-plugin.d.cts +1 -1
  9. package/dist/cjs/core/router-code-splitter-plugin.cjs +14 -7
  10. package/dist/cjs/core/router-code-splitter-plugin.cjs.map +1 -1
  11. package/dist/cjs/core/router-code-splitter-plugin.d.cts +1 -1
  12. package/dist/cjs/core/router-generator-plugin.cjs +14 -19
  13. package/dist/cjs/core/router-generator-plugin.cjs.map +1 -1
  14. package/dist/cjs/core/router-generator-plugin.d.cts +1 -1
  15. package/dist/cjs/esbuild.cjs.map +1 -1
  16. package/dist/cjs/esbuild.d.cts +16 -12
  17. package/dist/cjs/index.d.cts +1 -1
  18. package/dist/cjs/rspack.cjs.map +1 -1
  19. package/dist/cjs/rspack.d.cts +16 -12
  20. package/dist/cjs/vite.cjs.map +1 -1
  21. package/dist/cjs/vite.d.cts +21 -16
  22. package/dist/cjs/webpack.cjs.map +1 -1
  23. package/dist/cjs/webpack.d.cts +16 -12
  24. package/dist/esm/core/code-splitter/compilers.js +31 -17
  25. package/dist/esm/core/code-splitter/compilers.js.map +1 -1
  26. package/dist/esm/core/config.d.ts +11 -8
  27. package/dist/esm/core/config.js +1 -4
  28. package/dist/esm/core/config.js.map +1 -1
  29. package/dist/esm/core/route-autoimport-plugin.d.ts +1 -1
  30. package/dist/esm/core/route-autoimport-plugin.js +15 -4
  31. package/dist/esm/core/route-autoimport-plugin.js.map +1 -1
  32. package/dist/esm/core/router-code-splitter-plugin.d.ts +1 -1
  33. package/dist/esm/core/router-code-splitter-plugin.js +12 -5
  34. package/dist/esm/core/router-code-splitter-plugin.js.map +1 -1
  35. package/dist/esm/core/router-generator-plugin.d.ts +1 -1
  36. package/dist/esm/core/router-generator-plugin.js +14 -19
  37. package/dist/esm/core/router-generator-plugin.js.map +1 -1
  38. package/dist/esm/esbuild.d.ts +16 -12
  39. package/dist/esm/esbuild.js.map +1 -1
  40. package/dist/esm/index.d.ts +1 -1
  41. package/dist/esm/rspack.d.ts +16 -12
  42. package/dist/esm/rspack.js.map +1 -1
  43. package/dist/esm/vite.d.ts +21 -16
  44. package/dist/esm/vite.js.map +1 -1
  45. package/dist/esm/webpack.d.ts +16 -12
  46. package/dist/esm/webpack.js.map +1 -1
  47. package/package.json +6 -6
  48. package/src/core/code-splitter/compilers.ts +45 -23
  49. package/src/core/config.ts +11 -5
  50. package/src/core/route-autoimport-plugin.ts +16 -5
  51. package/src/core/router-code-splitter-plugin.ts +14 -6
  52. package/src/core/router-generator-plugin.ts +14 -19
  53. package/src/esbuild.ts +2 -2
  54. package/src/index.ts +7 -1
  55. package/src/rspack.ts +2 -2
  56. package/src/vite.ts +3 -2
  57. package/src/webpack.ts +2 -2
@@ -5,7 +5,14 @@ import { getConfig } from "./config.js";
5
5
  import { debug } from "./utils.js";
6
6
  const unpluginRouteAutoImportFactory = (options = {}) => {
7
7
  let ROOT = process.cwd();
8
- let userConfig = options;
8
+ let userConfig;
9
+ function initUserConfig() {
10
+ if (typeof options === "function") {
11
+ userConfig = options();
12
+ } else {
13
+ userConfig = getConfig(options, ROOT);
14
+ }
15
+ }
9
16
  return {
10
17
  name: "tanstack-router:autoimport",
11
18
  enforce: "pre",
@@ -69,16 +76,20 @@ const unpluginRouteAutoImportFactory = (options = {}) => {
69
76
  vite: {
70
77
  configResolved(config) {
71
78
  ROOT = config.root;
72
- userConfig = getConfig(options, ROOT);
79
+ initUserConfig();
80
+ },
81
+ // this check may only happen after config is resolved, so we use applyToEnvironment (apply is too early)
82
+ applyToEnvironment() {
83
+ return userConfig.verboseFileRoutes === false;
73
84
  }
74
85
  },
75
86
  rspack() {
76
87
  ROOT = process.cwd();
77
- userConfig = getConfig(options, ROOT);
88
+ initUserConfig();
78
89
  },
79
90
  webpack() {
80
91
  ROOT = process.cwd();
81
- userConfig = getConfig(options, ROOT);
92
+ initUserConfig();
82
93
  }
83
94
  };
84
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"route-autoimport-plugin.js","sources":["../../../src/core/route-autoimport-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport babel from '@babel/core'\nimport * as template from '@babel/template'\nimport { getConfig } from './config'\nimport { debug } from './utils'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\n/**\n * This plugin adds imports for createFileRoute and createLazyFileRoute to the file route.\n */\nexport const unpluginRouteAutoImportFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n return {\n name: 'tanstack-router:autoimport',\n enforce: 'pre',\n\n transform: {\n filter: {\n // this is necessary for webpack / rspack to avoid matching .html files\n id: /\\.(m|c)?(j|t)sx?$/,\n code: /createFileRoute\\(|createLazyFileRoute\\(/,\n },\n handler(code, id) {\n if (!globalThis.TSR_ROUTES_BY_ID_MAP?.has(id)) {\n return null\n }\n let routeType: 'createFileRoute' | 'createLazyFileRoute'\n if (code.includes('createFileRoute(')) {\n routeType = 'createFileRoute'\n } else if (code.includes('createLazyFileRoute(')) {\n routeType = 'createLazyFileRoute'\n } else {\n return null\n }\n\n const routerImportPath = `@tanstack/${userConfig.target}-router`\n\n const ast = parseAst({ code })\n\n let isCreateRouteFunctionImported = false as boolean\n\n babel.traverse(ast, {\n Program: {\n enter(programPath) {\n programPath.traverse({\n ImportDeclaration(path) {\n const importedSpecifiers = path.node.specifiers.map(\n (specifier) => specifier.local.name,\n )\n if (\n importedSpecifiers.includes(routeType) &&\n path.node.source.value === routerImportPath\n ) {\n isCreateRouteFunctionImported = true\n }\n },\n })\n },\n },\n })\n\n if (!isCreateRouteFunctionImported) {\n if (debug) console.info('Adding autoimports to route ', id)\n\n const autoImportStatement = template.statement(\n `import { ${routeType} } from '${routerImportPath}'`,\n )()\n ast.program.body.unshift(autoImportStatement)\n\n const result = generateFromAst(ast, {\n sourceMaps: true,\n filename: id,\n sourceFileName: id,\n })\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n return result\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n }\n}\n"],"names":[],"mappings":";;;;;AAWO,MAAM,iCAET,CAAC,UAAU,OAAO;AACpB,MAAI,OAAe,QAAQ,IAAA;AAC3B,MAAI,aAAa;AAEjB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,WAAW;AAAA,MACT,QAAQ;AAAA;AAAA,QAEN,IAAI;AAAA,QACJ,MAAM;AAAA,MAAA;AAAA,MAER,QAAQ,MAAM,IAAI;AAChB,YAAI,CAAC,WAAW,sBAAsB,IAAI,EAAE,GAAG;AAC7C,iBAAO;AAAA,QACT;AACA,YAAI;AACJ,YAAI,KAAK,SAAS,kBAAkB,GAAG;AACrC,sBAAY;AAAA,QACd,WAAW,KAAK,SAAS,sBAAsB,GAAG;AAChD,sBAAY;AAAA,QACd,OAAO;AACL,iBAAO;AAAA,QACT;AAEA,cAAM,mBAAmB,aAAa,WAAW,MAAM;AAEvD,cAAM,MAAM,SAAS,EAAE,MAAM;AAE7B,YAAI,gCAAgC;AAEpC,cAAM,SAAS,KAAK;AAAA,UAClB,SAAS;AAAA,YACP,MAAM,aAAa;AACjB,0BAAY,SAAS;AAAA,gBACnB,kBAAkB,MAAM;AACtB,wBAAM,qBAAqB,KAAK,KAAK,WAAW;AAAA,oBAC9C,CAAC,cAAc,UAAU,MAAM;AAAA,kBAAA;AAEjC,sBACE,mBAAmB,SAAS,SAAS,KACrC,KAAK,KAAK,OAAO,UAAU,kBAC3B;AACA,oDAAgC;AAAA,kBAClC;AAAA,gBACF;AAAA,cAAA,CACD;AAAA,YACH;AAAA,UAAA;AAAA,QACF,CACD;AAED,YAAI,CAAC,+BAA+B;AAClC,cAAI,MAAO,SAAQ,KAAK,gCAAgC,EAAE;AAE1D,gBAAM,sBAAsB,SAAS;AAAA,YACnC,YAAY,SAAS,YAAY,gBAAgB;AAAA,UAAA,EACnD;AACA,cAAI,QAAQ,KAAK,QAAQ,mBAAmB;AAE5C,gBAAM,SAAS,gBAAgB,KAAK;AAAA,YAClC,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,gBAAgB;AAAA,UAAA,CACjB;AACD,cAAI,OAAO;AACT,oBAAQ,MAAM,OAAO,IAAI;AACzB,oBAAQ,IAAI,aAAa,OAAO,OAAO,MAAM;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,IAGF,MAAM;AAAA,MACJ,eAAe,QAAQ;AACrB,eAAO,OAAO;AACd,qBAAa,UAAU,SAAS,IAAI;AAAA,MACtC;AAAA,IAAA;AAAA,IAGF,SAAS;AACP,aAAO,QAAQ,IAAA;AACf,mBAAa,UAAU,SAAS,IAAI;AAAA,IACtC;AAAA,IAEA,UAAU;AACR,aAAO,QAAQ,IAAA;AACf,mBAAa,UAAU,SAAS,IAAI;AAAA,IACtC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"route-autoimport-plugin.js","sources":["../../../src/core/route-autoimport-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport babel from '@babel/core'\nimport * as template from '@babel/template'\nimport { getConfig } from './config'\nimport { debug } from './utils'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\n/**\n * This plugin adds imports for createFileRoute and createLazyFileRoute to the file route.\n */\nexport const unpluginRouteAutoImportFactory: UnpluginFactory<\n Partial<Config | (() => Config)> | undefined\n> = (options = {}) => {\n let ROOT: string = process.cwd()\n let userConfig: Config\n\n function initUserConfig() {\n if (typeof options === 'function') {\n userConfig = options()\n } else {\n userConfig = getConfig(options, ROOT)\n }\n }\n return {\n name: 'tanstack-router:autoimport',\n enforce: 'pre',\n\n transform: {\n filter: {\n // this is necessary for webpack / rspack to avoid matching .html files\n id: /\\.(m|c)?(j|t)sx?$/,\n code: /createFileRoute\\(|createLazyFileRoute\\(/,\n },\n handler(code, id) {\n if (!globalThis.TSR_ROUTES_BY_ID_MAP?.has(id)) {\n return null\n }\n let routeType: 'createFileRoute' | 'createLazyFileRoute'\n if (code.includes('createFileRoute(')) {\n routeType = 'createFileRoute'\n } else if (code.includes('createLazyFileRoute(')) {\n routeType = 'createLazyFileRoute'\n } else {\n return null\n }\n\n const routerImportPath = `@tanstack/${userConfig.target}-router`\n\n const ast = parseAst({ code })\n\n let isCreateRouteFunctionImported = false as boolean\n\n babel.traverse(ast, {\n Program: {\n enter(programPath) {\n programPath.traverse({\n ImportDeclaration(path) {\n const importedSpecifiers = path.node.specifiers.map(\n (specifier) => specifier.local.name,\n )\n if (\n importedSpecifiers.includes(routeType) &&\n path.node.source.value === routerImportPath\n ) {\n isCreateRouteFunctionImported = true\n }\n },\n })\n },\n },\n })\n\n if (!isCreateRouteFunctionImported) {\n if (debug) console.info('Adding autoimports to route ', id)\n\n const autoImportStatement = template.statement(\n `import { ${routeType} } from '${routerImportPath}'`,\n )()\n ast.program.body.unshift(autoImportStatement)\n\n const result = generateFromAst(ast, {\n sourceMaps: true,\n filename: id,\n sourceFileName: id,\n })\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n return result\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n initUserConfig()\n },\n // this check may only happen after config is resolved, so we use applyToEnvironment (apply is too early)\n applyToEnvironment() {\n return userConfig.verboseFileRoutes === false\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n initUserConfig()\n },\n\n webpack() {\n ROOT = process.cwd()\n initUserConfig()\n },\n }\n}\n"],"names":[],"mappings":";;;;;AAWO,MAAM,iCAET,CAAC,UAAU,OAAO;AACpB,MAAI,OAAe,QAAQ,IAAA;AAC3B,MAAI;AAEJ,WAAS,iBAAiB;AACxB,QAAI,OAAO,YAAY,YAAY;AACjC,mBAAa,QAAA;AAAA,IACf,OAAO;AACL,mBAAa,UAAU,SAAS,IAAI;AAAA,IACtC;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,WAAW;AAAA,MACT,QAAQ;AAAA;AAAA,QAEN,IAAI;AAAA,QACJ,MAAM;AAAA,MAAA;AAAA,MAER,QAAQ,MAAM,IAAI;AAChB,YAAI,CAAC,WAAW,sBAAsB,IAAI,EAAE,GAAG;AAC7C,iBAAO;AAAA,QACT;AACA,YAAI;AACJ,YAAI,KAAK,SAAS,kBAAkB,GAAG;AACrC,sBAAY;AAAA,QACd,WAAW,KAAK,SAAS,sBAAsB,GAAG;AAChD,sBAAY;AAAA,QACd,OAAO;AACL,iBAAO;AAAA,QACT;AAEA,cAAM,mBAAmB,aAAa,WAAW,MAAM;AAEvD,cAAM,MAAM,SAAS,EAAE,MAAM;AAE7B,YAAI,gCAAgC;AAEpC,cAAM,SAAS,KAAK;AAAA,UAClB,SAAS;AAAA,YACP,MAAM,aAAa;AACjB,0BAAY,SAAS;AAAA,gBACnB,kBAAkB,MAAM;AACtB,wBAAM,qBAAqB,KAAK,KAAK,WAAW;AAAA,oBAC9C,CAAC,cAAc,UAAU,MAAM;AAAA,kBAAA;AAEjC,sBACE,mBAAmB,SAAS,SAAS,KACrC,KAAK,KAAK,OAAO,UAAU,kBAC3B;AACA,oDAAgC;AAAA,kBAClC;AAAA,gBACF;AAAA,cAAA,CACD;AAAA,YACH;AAAA,UAAA;AAAA,QACF,CACD;AAED,YAAI,CAAC,+BAA+B;AAClC,cAAI,MAAO,SAAQ,KAAK,gCAAgC,EAAE;AAE1D,gBAAM,sBAAsB,SAAS;AAAA,YACnC,YAAY,SAAS,YAAY,gBAAgB;AAAA,UAAA,EACnD;AACA,cAAI,QAAQ,KAAK,QAAQ,mBAAmB;AAE5C,gBAAM,SAAS,gBAAgB,KAAK;AAAA,YAClC,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,gBAAgB;AAAA,UAAA,CACjB;AACD,cAAI,OAAO;AACT,oBAAQ,MAAM,OAAO,IAAI;AACzB,oBAAQ,IAAI,aAAa,OAAO,OAAO,MAAM;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,IAGF,MAAM;AAAA,MACJ,eAAe,QAAQ;AACrB,eAAO,OAAO;AACd,uBAAA;AAAA,MACF;AAAA;AAAA,MAEA,qBAAqB;AACnB,eAAO,WAAW,sBAAsB;AAAA,MAC1C;AAAA,IAAA;AAAA,IAGF,SAAS;AACP,aAAO,QAAQ,IAAA;AACf,qBAAA;AAAA,IACF;AAAA,IAEA,UAAU;AACR,aAAO,QAAQ,IAAA;AACf,qBAAA;AAAA,IACF;AAAA,EAAA;AAEJ;"}
@@ -1,3 +1,3 @@
1
1
  import { Config } from './config.js';
2
2
  import { UnpluginFactory } from 'unplugin';
3
- export declare const unpluginRouterCodeSplitterFactory: UnpluginFactory<Partial<Config> | undefined>;
3
+ export declare const unpluginRouterCodeSplitterFactory: UnpluginFactory<Partial<Config | (() => Config)> | undefined>;
@@ -27,7 +27,14 @@ plugins: [
27
27
  const PLUGIN_NAME = "unplugin:router-code-splitter";
28
28
  const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
29
29
  let ROOT = process.cwd();
30
- let userConfig = options;
30
+ let userConfig;
31
+ function initUserConfig() {
32
+ if (typeof options === "function") {
33
+ userConfig = options();
34
+ } else {
35
+ userConfig = getConfig(options, ROOT);
36
+ }
37
+ }
31
38
  const isProduction = process.env.NODE_ENV === "production";
32
39
  const getGlobalCodeSplitGroupings = () => {
33
40
  return userConfig.codeSplittingOptions?.defaultBehavior || defaultCodeSplitGroupings;
@@ -72,7 +79,7 @@ ${message}`
72
79
  filename: id,
73
80
  id,
74
81
  deleteNodes: new Set(userConfig.codeSplittingOptions?.deleteNodes),
75
- addHmr: (options.codeSplittingOptions?.addHmr ?? true) && !isProduction
82
+ addHmr: (userConfig.codeSplittingOptions?.addHmr ?? true) && !isProduction
76
83
  });
77
84
  if (debug) {
78
85
  logDiff(code, compiledReferenceRoute.code);
@@ -144,7 +151,7 @@ ${message}`
144
151
  vite: {
145
152
  configResolved(config) {
146
153
  ROOT = config.root;
147
- userConfig = getConfig(options, ROOT);
154
+ initUserConfig();
148
155
  },
149
156
  applyToEnvironment(environment) {
150
157
  if (userConfig.plugin?.vite?.environmentName) {
@@ -155,11 +162,11 @@ ${message}`
155
162
  },
156
163
  rspack() {
157
164
  ROOT = process.cwd();
158
- userConfig = getConfig(options, ROOT);
165
+ initUserConfig();
159
166
  },
160
167
  webpack(compiler) {
161
168
  ROOT = process.cwd();
162
- userConfig = getConfig(options, ROOT);
169
+ initUserConfig();
163
170
  if (compiler.options.mode === "production") {
164
171
  compiler.hooks.done.tap(PLUGIN_NAME, () => {
165
172
  console.info("✅ " + PLUGIN_NAME + ": code-splitting done!");
@@ -1 +1 @@
1
- {"version":3,"file":"router-code-splitter-plugin.js","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\nimport type { GetRoutesByFileMapResultValue } from '@tanstack/router-generator'\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\ntype BannedBeforeExternalPlugin = {\n identifier: string\n pkg: string\n usage: string\n frameworks: Array<UnpluginContextMeta['framework']>\n}\n\nconst bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [\n {\n identifier: '@react-refresh',\n pkg: '@vitejs/plugin-react',\n usage: 'viteReact()',\n frameworks: ['vite'],\n },\n]\n\nclass FoundPluginInBeforeCode extends Error {\n constructor(\n externalPlugin: BannedBeforeExternalPlugin,\n pluginFramework: string,\n ) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n tanstackRouter(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n generatorNodeInfo: GetRoutesByFileMapResultValue,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: generatorNodeInfo.routePath,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n deleteNodes: new Set(userConfig.codeSplittingOptions?.deleteNodes),\n addHmr: (options.codeSplittingOptions?.addHmr ?? true) && !isProduction,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n const includedCode = [\n 'createFileRoute(',\n 'createRootRoute(',\n 'createRootRouteWithContext(',\n ]\n return [\n {\n name: 'tanstack-router:code-splitter:compile-reference-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: {\n exclude: tsrSplit,\n // this is necessary for webpack / rspack to avoid matching .html files\n include: /\\.(m|c)?(j|t)sx?$/,\n },\n code: {\n include: includedCode,\n },\n },\n handler(code, id) {\n const generatorFileInfo = globalThis.TSR_ROUTES_BY_ID_MAP?.get(id)\n if (\n generatorFileInfo &&\n includedCode.some((included) => code.includes(included))\n ) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingReferenceFile(code, id, generatorFileInfo)\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n applyToEnvironment(environment) {\n if (userConfig.plugin?.vite?.environmentName) {\n return userConfig.plugin.vite.environmentName === environment.name\n }\n return true\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n },\n {\n name: 'tanstack-router:code-splitter:compile-virtual-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: /tsr-split/,\n },\n handler(code, id) {\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n return handleCompilingVirtualFile(code, id)\n },\n },\n },\n ]\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router-code-splitter-plugin.js","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\nimport type { GetRoutesByFileMapResultValue } from '@tanstack/router-generator'\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\ntype BannedBeforeExternalPlugin = {\n identifier: string\n pkg: string\n usage: string\n frameworks: Array<UnpluginContextMeta['framework']>\n}\n\nconst bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [\n {\n identifier: '@react-refresh',\n pkg: '@vitejs/plugin-react',\n usage: 'viteReact()',\n frameworks: ['vite'],\n },\n]\n\nclass FoundPluginInBeforeCode extends Error {\n constructor(\n externalPlugin: BannedBeforeExternalPlugin,\n pluginFramework: string,\n ) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n tanstackRouter(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config | (() => Config)> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig: Config\n\n function initUserConfig() {\n if (typeof options === 'function') {\n userConfig = options()\n } else {\n userConfig = getConfig(options, ROOT)\n }\n }\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n generatorNodeInfo: GetRoutesByFileMapResultValue,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: generatorNodeInfo.routePath,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n deleteNodes: new Set(userConfig.codeSplittingOptions?.deleteNodes),\n addHmr:\n (userConfig.codeSplittingOptions?.addHmr ?? true) && !isProduction,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n const includedCode = [\n 'createFileRoute(',\n 'createRootRoute(',\n 'createRootRouteWithContext(',\n ]\n return [\n {\n name: 'tanstack-router:code-splitter:compile-reference-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: {\n exclude: tsrSplit,\n // this is necessary for webpack / rspack to avoid matching .html files\n include: /\\.(m|c)?(j|t)sx?$/,\n },\n code: {\n include: includedCode,\n },\n },\n handler(code, id) {\n const generatorFileInfo = globalThis.TSR_ROUTES_BY_ID_MAP?.get(id)\n if (\n generatorFileInfo &&\n includedCode.some((included) => code.includes(included))\n ) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingReferenceFile(code, id, generatorFileInfo)\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n initUserConfig()\n },\n applyToEnvironment(environment) {\n if (userConfig.plugin?.vite?.environmentName) {\n return userConfig.plugin.vite.environmentName === environment.name\n }\n return true\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n initUserConfig()\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n initUserConfig()\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n },\n {\n name: 'tanstack-router:code-splitter:compile-virtual-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: /tsr-split/,\n },\n handler(code, id) {\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n return handleCompilingVirtualFile(code, id)\n },\n },\n },\n ]\n}\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { UnpluginFactory } from 'unplugin';
2
2
  import { Config } from './config.js';
3
- export declare const unpluginRouterGeneratorFactory: UnpluginFactory<Partial<Config> | undefined>;
3
+ export declare const unpluginRouterGeneratorFactory: UnpluginFactory<Partial<Config | (() => Config)> | undefined>;
@@ -3,15 +3,22 @@ import { Generator, resolveConfigPath } from "@tanstack/router-generator";
3
3
  import { getConfig } from "./config.js";
4
4
  const PLUGIN_NAME = "unplugin:router-generator";
5
5
  const unpluginRouterGeneratorFactory = (options = {}) => {
6
- const ROOT = process.cwd();
7
- let userConfig = options;
6
+ let ROOT = process.cwd();
7
+ let userConfig;
8
8
  let generator;
9
9
  const routeGenerationDisabled = () => userConfig.enableRouteGeneration === false;
10
10
  const getRoutesDirectoryPath = () => {
11
11
  return isAbsolute(userConfig.routesDirectory) ? userConfig.routesDirectory : join(ROOT, userConfig.routesDirectory);
12
12
  };
13
- const initConfigAndGenerator = () => {
14
- userConfig = getConfig(options, ROOT);
13
+ const initConfigAndGenerator = (opts) => {
14
+ if (opts?.root) {
15
+ ROOT = opts.root;
16
+ }
17
+ if (typeof options === "function") {
18
+ userConfig = options();
19
+ } else {
20
+ userConfig = getConfig(options, ROOT);
21
+ }
15
22
  generator = new Generator({
16
23
  config: userConfig,
17
24
  root: ROOT
@@ -46,23 +53,11 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
46
53
  event
47
54
  });
48
55
  },
49
- async buildStart() {
50
- await generate();
51
- },
52
56
  vite: {
53
- configResolved() {
54
- initConfigAndGenerator();
55
- },
56
- applyToEnvironment(environment) {
57
- if (userConfig.plugin?.vite?.environmentName) {
58
- return userConfig.plugin.vite.environmentName === environment.name;
59
- }
60
- return true;
61
- },
62
- async buildStart() {
57
+ async configResolved(config) {
58
+ initConfigAndGenerator({ root: config.root });
63
59
  await generate();
64
- },
65
- sharedDuringBuild: true
60
+ }
66
61
  },
67
62
  rspack(compiler) {
68
63
  initConfigAndGenerator();
@@ -1 +1 @@
1
- {"version":3,"file":"router-generator-plugin.js","sources":["../../../src/core/router-generator-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize } from 'node:path'\nimport { Generator, resolveConfigPath } from '@tanstack/router-generator'\nimport { getConfig } from './config'\n\nimport type { GeneratorEvent } from '@tanstack/router-generator'\nimport type { FSWatcher } from 'chokidar'\nimport type { UnpluginFactory } from 'unplugin'\nimport type { Config } from './config'\n\nconst PLUGIN_NAME = 'unplugin:router-generator'\n\nexport const unpluginRouterGeneratorFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n const ROOT: string = process.cwd()\n let userConfig = options as Config\n let generator: Generator\n\n const routeGenerationDisabled = () =>\n userConfig.enableRouteGeneration === false\n const getRoutesDirectoryPath = () => {\n return isAbsolute(userConfig.routesDirectory)\n ? userConfig.routesDirectory\n : join(ROOT, userConfig.routesDirectory)\n }\n\n const initConfigAndGenerator = () => {\n userConfig = getConfig(options, ROOT)\n generator = new Generator({\n config: userConfig,\n root: ROOT,\n })\n }\n\n const generate = async (opts?: {\n file: string\n event: 'create' | 'update' | 'delete'\n }) => {\n if (routeGenerationDisabled()) {\n return\n }\n let generatorEvent: GeneratorEvent | undefined = undefined\n if (opts) {\n const filePath = normalize(opts.file)\n if (filePath === resolveConfigPath({ configDirectory: ROOT })) {\n initConfigAndGenerator()\n return\n }\n generatorEvent = { path: filePath, type: opts.event }\n }\n\n try {\n await generator.run(generatorEvent)\n globalThis.TSR_ROUTES_BY_ID_MAP = generator.getRoutesByFileMap()\n } catch (e) {\n console.error(e)\n }\n }\n\n return {\n name: 'tanstack:router-generator',\n enforce: 'pre',\n async watchChange(id, { event }) {\n await generate({\n file: id,\n event,\n })\n },\n async buildStart() {\n await generate()\n },\n vite: {\n configResolved() {\n initConfigAndGenerator()\n },\n applyToEnvironment(environment) {\n if (userConfig.plugin?.vite?.environmentName) {\n return userConfig.plugin.vite.environmentName === environment.name\n }\n return true\n },\n async buildStart() {\n await generate()\n },\n sharedDuringBuild: true,\n },\n rspack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // rspack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', (file) => generate({ file, event: 'create' }))\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n },\n webpack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // webpack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', (file) => generate({ file, event: 'create' }))\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': route-tree generation done')\n })\n },\n esbuild: {\n config() {\n initConfigAndGenerator()\n },\n },\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router-generator-plugin.js","sources":["../../../src/core/router-generator-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize } from 'node:path'\nimport { Generator, resolveConfigPath } from '@tanstack/router-generator'\nimport { getConfig } from './config'\n\nimport type { GeneratorEvent } from '@tanstack/router-generator'\nimport type { FSWatcher } from 'chokidar'\nimport type { UnpluginFactory } from 'unplugin'\nimport type { Config } from './config'\n\nconst PLUGIN_NAME = 'unplugin:router-generator'\n\nexport const unpluginRouterGeneratorFactory: UnpluginFactory<\n Partial<Config | (() => Config)> | undefined\n> = (options = {}) => {\n let ROOT: string = process.cwd()\n let userConfig: Config\n let generator: Generator\n\n const routeGenerationDisabled = () =>\n userConfig.enableRouteGeneration === false\n const getRoutesDirectoryPath = () => {\n return isAbsolute(userConfig.routesDirectory)\n ? userConfig.routesDirectory\n : join(ROOT, userConfig.routesDirectory)\n }\n\n const initConfigAndGenerator = (opts?: { root?: string }) => {\n if (opts?.root) {\n ROOT = opts.root\n }\n if (typeof options === 'function') {\n userConfig = options()\n } else {\n userConfig = getConfig(options, ROOT)\n }\n generator = new Generator({\n config: userConfig,\n root: ROOT,\n })\n }\n\n const generate = async (opts?: {\n file: string\n event: 'create' | 'update' | 'delete'\n }) => {\n if (routeGenerationDisabled()) {\n return\n }\n let generatorEvent: GeneratorEvent | undefined = undefined\n if (opts) {\n const filePath = normalize(opts.file)\n if (filePath === resolveConfigPath({ configDirectory: ROOT })) {\n initConfigAndGenerator()\n return\n }\n generatorEvent = { path: filePath, type: opts.event }\n }\n\n try {\n await generator.run(generatorEvent)\n globalThis.TSR_ROUTES_BY_ID_MAP = generator.getRoutesByFileMap()\n } catch (e) {\n console.error(e)\n }\n }\n\n return {\n name: 'tanstack:router-generator',\n enforce: 'pre',\n async watchChange(id, { event }) {\n await generate({\n file: id,\n event,\n })\n },\n vite: {\n async configResolved(config) {\n initConfigAndGenerator({ root: config.root })\n await generate()\n },\n },\n rspack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // rspack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', (file) => generate({ file, event: 'create' }))\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n },\n webpack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // webpack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', (file) => generate({ file, event: 'create' }))\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': route-tree generation done')\n })\n },\n esbuild: {\n config() {\n initConfigAndGenerator()\n },\n },\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { configSchema, Config } from './core/config.js';
1
+ import { configSchema, CodeSplittingOptions, Config } from './core/config.js';
2
2
  /**
3
3
  * @example
4
4
  * ```ts
@@ -22,10 +22,10 @@ declare const TanStackRouterGeneratorEsbuild: (options?: Partial<{
22
22
  disableTypes: boolean;
23
23
  addExtensions: boolean;
24
24
  enableRouteTreeFormatting: boolean;
25
- routeTreeFileFooter: string[];
26
25
  tmpDir: string;
26
+ importRoutesUsingAbsolutePaths: boolean;
27
27
  enableRouteGeneration?: boolean | undefined;
28
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
28
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
29
29
  plugin?: {
30
30
  vite?: {
31
31
  environmentName?: string | undefined;
@@ -36,6 +36,7 @@ declare const TanStackRouterGeneratorEsbuild: (options?: Partial<{
36
36
  routeFileIgnorePattern?: string | undefined;
37
37
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
38
38
  verboseFileRoutes?: boolean | undefined;
39
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
39
40
  autoCodeSplitting?: boolean | undefined;
40
41
  customScaffolding?: {
41
42
  routeTemplate?: string | undefined;
@@ -45,7 +46,7 @@ declare const TanStackRouterGeneratorEsbuild: (options?: Partial<{
45
46
  enableCodeSplitting?: boolean | undefined;
46
47
  } | undefined;
47
48
  plugins?: import('@tanstack/router-generator').GeneratorPlugin[] | undefined;
48
- }> | undefined) => import('unplugin').EsbuildPlugin;
49
+ } | (() => Config)> | undefined) => import('unplugin').EsbuildPlugin;
49
50
  /**
50
51
  * @example
51
52
  * ```ts
@@ -69,10 +70,10 @@ declare const TanStackRouterCodeSplitterEsbuild: (options?: Partial<{
69
70
  disableTypes: boolean;
70
71
  addExtensions: boolean;
71
72
  enableRouteTreeFormatting: boolean;
72
- routeTreeFileFooter: string[];
73
73
  tmpDir: string;
74
+ importRoutesUsingAbsolutePaths: boolean;
74
75
  enableRouteGeneration?: boolean | undefined;
75
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
76
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
76
77
  plugin?: {
77
78
  vite?: {
78
79
  environmentName?: string | undefined;
@@ -83,6 +84,7 @@ declare const TanStackRouterCodeSplitterEsbuild: (options?: Partial<{
83
84
  routeFileIgnorePattern?: string | undefined;
84
85
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
85
86
  verboseFileRoutes?: boolean | undefined;
87
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
86
88
  autoCodeSplitting?: boolean | undefined;
87
89
  customScaffolding?: {
88
90
  routeTemplate?: string | undefined;
@@ -92,7 +94,7 @@ declare const TanStackRouterCodeSplitterEsbuild: (options?: Partial<{
92
94
  enableCodeSplitting?: boolean | undefined;
93
95
  } | undefined;
94
96
  plugins?: import('@tanstack/router-generator').GeneratorPlugin[] | undefined;
95
- }> | undefined) => import('unplugin').EsbuildPlugin;
97
+ } | (() => Config)> | undefined) => import('unplugin').EsbuildPlugin;
96
98
  /**
97
99
  * @example
98
100
  * ```ts
@@ -116,10 +118,10 @@ declare const TanStackRouterEsbuild: (options?: Partial<{
116
118
  disableTypes: boolean;
117
119
  addExtensions: boolean;
118
120
  enableRouteTreeFormatting: boolean;
119
- routeTreeFileFooter: string[];
120
121
  tmpDir: string;
122
+ importRoutesUsingAbsolutePaths: boolean;
121
123
  enableRouteGeneration?: boolean | undefined;
122
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
124
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
123
125
  plugin?: {
124
126
  vite?: {
125
127
  environmentName?: string | undefined;
@@ -130,6 +132,7 @@ declare const TanStackRouterEsbuild: (options?: Partial<{
130
132
  routeFileIgnorePattern?: string | undefined;
131
133
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
132
134
  verboseFileRoutes?: boolean | undefined;
135
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
133
136
  autoCodeSplitting?: boolean | undefined;
134
137
  customScaffolding?: {
135
138
  routeTemplate?: string | undefined;
@@ -154,10 +157,10 @@ declare const tanstackRouter: (options?: Partial<{
154
157
  disableTypes: boolean;
155
158
  addExtensions: boolean;
156
159
  enableRouteTreeFormatting: boolean;
157
- routeTreeFileFooter: string[];
158
160
  tmpDir: string;
161
+ importRoutesUsingAbsolutePaths: boolean;
159
162
  enableRouteGeneration?: boolean | undefined;
160
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
163
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
161
164
  plugin?: {
162
165
  vite?: {
163
166
  environmentName?: string | undefined;
@@ -168,6 +171,7 @@ declare const tanstackRouter: (options?: Partial<{
168
171
  routeFileIgnorePattern?: string | undefined;
169
172
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
170
173
  verboseFileRoutes?: boolean | undefined;
174
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
171
175
  autoCodeSplitting?: boolean | undefined;
172
176
  customScaffolding?: {
173
177
  routeTemplate?: string | undefined;
@@ -180,4 +184,4 @@ declare const tanstackRouter: (options?: Partial<{
180
184
  }> | undefined) => import('unplugin').EsbuildPlugin;
181
185
  export default TanStackRouterEsbuild;
182
186
  export { configSchema, TanStackRouterGeneratorEsbuild, TanStackRouterCodeSplitterEsbuild, TanStackRouterEsbuild, tanstackRouter, };
183
- export type { Config };
187
+ export type { Config, CodeSplittingOptions };
@@ -1 +1 @@
1
- {"version":3,"file":"esbuild.js","sources":["../../src/esbuild.ts"],"sourcesContent":["import { createEsbuildPlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'\nimport { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\n\nimport type { Config } from './core/config'\n\n/**\n * @example\n * ```ts\n * export default {\n * plugins: [TanStackRouterGeneratorEsbuild()],\n * // ...\n * }\n * ```\n */\nconst TanStackRouterGeneratorEsbuild = createEsbuildPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * plugins: [TanStackRouterCodeSplitterEsbuild()],\n * // ...\n * }\n * ```\n */\nconst TanStackRouterCodeSplitterEsbuild = createEsbuildPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * plugins: [tanstackRouter()],\n * // ...\n * }\n * ```\n */\nconst TanStackRouterEsbuild = createEsbuildPlugin(unpluginRouterComposedFactory)\nconst tanstackRouter = TanStackRouterEsbuild\nexport default TanStackRouterEsbuild\n\nexport {\n configSchema,\n TanStackRouterGeneratorEsbuild,\n TanStackRouterCodeSplitterEsbuild,\n TanStackRouterEsbuild,\n tanstackRouter,\n}\n\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAkBA,MAAM,iCAAiC;AAAA,EACrC;AACF;AAWA,MAAM,oCAAoC;AAAA,EACxC;AACF;AAWA,MAAM,wBAAwB,oBAAoB,6BAA6B;AAC/E,MAAM,iBAAiB;"}
1
+ {"version":3,"file":"esbuild.js","sources":["../../src/esbuild.ts"],"sourcesContent":["import { createEsbuildPlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'\nimport { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\n\nimport type { CodeSplittingOptions, Config } from './core/config'\n\n/**\n * @example\n * ```ts\n * export default {\n * plugins: [TanStackRouterGeneratorEsbuild()],\n * // ...\n * }\n * ```\n */\nconst TanStackRouterGeneratorEsbuild = createEsbuildPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * plugins: [TanStackRouterCodeSplitterEsbuild()],\n * // ...\n * }\n * ```\n */\nconst TanStackRouterCodeSplitterEsbuild = createEsbuildPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * plugins: [tanstackRouter()],\n * // ...\n * }\n * ```\n */\nconst TanStackRouterEsbuild = createEsbuildPlugin(unpluginRouterComposedFactory)\nconst tanstackRouter = TanStackRouterEsbuild\nexport default TanStackRouterEsbuild\n\nexport {\n configSchema,\n TanStackRouterGeneratorEsbuild,\n TanStackRouterCodeSplitterEsbuild,\n TanStackRouterEsbuild,\n tanstackRouter,\n}\n\nexport type { Config, CodeSplittingOptions }\n"],"names":[],"mappings":";;;;;AAkBA,MAAM,iCAAiC;AAAA,EACrC;AACF;AAWA,MAAM,oCAAoC;AAAA,EACxC;AACF;AAWA,MAAM,wBAAwB,oBAAoB,6BAA6B;AAC/E,MAAM,iBAAiB;"}
@@ -1,5 +1,5 @@
1
1
  export { configSchema, getConfig } from './core/config.js';
2
2
  export { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin.js';
3
3
  export { unpluginRouterGeneratorFactory } from './core/router-generator-plugin.js';
4
- export type { Config, ConfigInput, ConfigOutput } from './core/config.js';
4
+ export type { Config, ConfigInput, ConfigOutput, CodeSplittingOptions, DeletableNodes, } from './core/config.js';
5
5
  export { tsrSplit, splitRouteIdentNodes, defaultCodeSplitGroupings, } from './core/constants.js';
@@ -1,4 +1,4 @@
1
- import { configSchema, Config } from './core/config.js';
1
+ import { configSchema, CodeSplittingOptions, Config } from './core/config.js';
2
2
  /**
3
3
  * @example
4
4
  * ```ts
@@ -26,10 +26,10 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
26
26
  disableTypes: boolean;
27
27
  addExtensions: boolean;
28
28
  enableRouteTreeFormatting: boolean;
29
- routeTreeFileFooter: string[];
30
29
  tmpDir: string;
30
+ importRoutesUsingAbsolutePaths: boolean;
31
31
  enableRouteGeneration?: boolean | undefined;
32
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
32
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
33
33
  plugin?: {
34
34
  vite?: {
35
35
  environmentName?: string | undefined;
@@ -40,6 +40,7 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
40
40
  routeFileIgnorePattern?: string | undefined;
41
41
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
42
42
  verboseFileRoutes?: boolean | undefined;
43
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
43
44
  autoCodeSplitting?: boolean | undefined;
44
45
  customScaffolding?: {
45
46
  routeTemplate?: string | undefined;
@@ -49,7 +50,7 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
49
50
  enableCodeSplitting?: boolean | undefined;
50
51
  } | undefined;
51
52
  plugins?: import('@tanstack/router-generator').GeneratorPlugin[] | undefined;
52
- }> | undefined) => import('unplugin').RspackPluginInstance;
53
+ } | (() => Config)> | undefined) => import('unplugin').RspackPluginInstance;
53
54
  /**
54
55
  * @example
55
56
  * ```ts
@@ -77,10 +78,10 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
77
78
  disableTypes: boolean;
78
79
  addExtensions: boolean;
79
80
  enableRouteTreeFormatting: boolean;
80
- routeTreeFileFooter: string[];
81
81
  tmpDir: string;
82
+ importRoutesUsingAbsolutePaths: boolean;
82
83
  enableRouteGeneration?: boolean | undefined;
83
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
84
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
84
85
  plugin?: {
85
86
  vite?: {
86
87
  environmentName?: string | undefined;
@@ -91,6 +92,7 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
91
92
  routeFileIgnorePattern?: string | undefined;
92
93
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
93
94
  verboseFileRoutes?: boolean | undefined;
95
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
94
96
  autoCodeSplitting?: boolean | undefined;
95
97
  customScaffolding?: {
96
98
  routeTemplate?: string | undefined;
@@ -100,7 +102,7 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
100
102
  enableCodeSplitting?: boolean | undefined;
101
103
  } | undefined;
102
104
  plugins?: import('@tanstack/router-generator').GeneratorPlugin[] | undefined;
103
- }> | undefined) => import('unplugin').RspackPluginInstance;
105
+ } | (() => Config)> | undefined) => import('unplugin').RspackPluginInstance;
104
106
  /**
105
107
  * @example
106
108
  * ```ts
@@ -128,10 +130,10 @@ declare const TanStackRouterRspack: (options?: Partial<{
128
130
  disableTypes: boolean;
129
131
  addExtensions: boolean;
130
132
  enableRouteTreeFormatting: boolean;
131
- routeTreeFileFooter: string[];
132
133
  tmpDir: string;
134
+ importRoutesUsingAbsolutePaths: boolean;
133
135
  enableRouteGeneration?: boolean | undefined;
134
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
136
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
135
137
  plugin?: {
136
138
  vite?: {
137
139
  environmentName?: string | undefined;
@@ -142,6 +144,7 @@ declare const TanStackRouterRspack: (options?: Partial<{
142
144
  routeFileIgnorePattern?: string | undefined;
143
145
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
144
146
  verboseFileRoutes?: boolean | undefined;
147
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
145
148
  autoCodeSplitting?: boolean | undefined;
146
149
  customScaffolding?: {
147
150
  routeTemplate?: string | undefined;
@@ -166,10 +169,10 @@ declare const tanstackRouter: (options?: Partial<{
166
169
  disableTypes: boolean;
167
170
  addExtensions: boolean;
168
171
  enableRouteTreeFormatting: boolean;
169
- routeTreeFileFooter: string[];
170
172
  tmpDir: string;
173
+ importRoutesUsingAbsolutePaths: boolean;
171
174
  enableRouteGeneration?: boolean | undefined;
172
- codeSplittingOptions?: import('./core/config.js').CodeSplittingOptions | undefined;
175
+ codeSplittingOptions?: CodeSplittingOptions | undefined;
173
176
  plugin?: {
174
177
  vite?: {
175
178
  environmentName?: string | undefined;
@@ -180,6 +183,7 @@ declare const tanstackRouter: (options?: Partial<{
180
183
  routeFileIgnorePattern?: string | undefined;
181
184
  pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
182
185
  verboseFileRoutes?: boolean | undefined;
186
+ routeTreeFileFooter?: string[] | ((...args: unknown[]) => string[]) | undefined;
183
187
  autoCodeSplitting?: boolean | undefined;
184
188
  customScaffolding?: {
185
189
  routeTemplate?: string | undefined;
@@ -192,4 +196,4 @@ declare const tanstackRouter: (options?: Partial<{
192
196
  }> | undefined) => import('unplugin').RspackPluginInstance;
193
197
  export default TanStackRouterRspack;
194
198
  export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack, TanStackRouterCodeSplitterRspack, tanstackRouter, };
195
- export type { Config };
199
+ export type { Config, CodeSplittingOptions };
@@ -1 +1 @@
1
- {"version":3,"file":"rspack.js","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'\nimport { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\nimport type { Config } from './core/config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterCodeSplitterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [tanstackRouter()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterComposedFactory,\n)\nconst tanstackRouter = TanStackRouterRspack\nexport default TanStackRouterRspack\nexport {\n configSchema,\n TanStackRouterRspack,\n TanStackRouterGeneratorRspack,\n TanStackRouterCodeSplitterRspack,\n tanstackRouter,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,gCAAgD;AAAA,EACpD;AACF;AAeA,MAAM,mCAAmD;AAAA,EACvD;AACF;AAeA,MAAM,uBAAuC;AAAA,EAC3C;AACF;AACA,MAAM,iBAAiB;"}
1
+ {"version":3,"file":"rspack.js","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'\nimport { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\nimport type { CodeSplittingOptions, Config } from './core/config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterCodeSplitterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [tanstackRouter()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterComposedFactory,\n)\nconst tanstackRouter = TanStackRouterRspack\nexport default TanStackRouterRspack\nexport {\n configSchema,\n TanStackRouterRspack,\n TanStackRouterGeneratorRspack,\n TanStackRouterCodeSplitterRspack,\n tanstackRouter,\n}\nexport type { Config, CodeSplittingOptions }\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,gCAAgD;AAAA,EACpD;AACF;AAeA,MAAM,mCAAmD;AAAA,EACvD;AACF;AAeA,MAAM,uBAAuC;AAAA,EAC3C;AACF;AACA,MAAM,iBAAiB;"}