UNPKG

@tanstack/router-plugin

Version:

Modern and scalable routing for React applications

1 lines 3.95 kB
{"version":3,"file":"router-composed-plugin.cjs","names":[],"sources":["../../../src/core/router-composed-plugin.ts"],"sourcesContent":["import { getConfig } from '@tanstack/router-generator'\nimport { unpluginRouterGeneratorFactory } from './router-generator-plugin'\nimport { unpluginRouterCodeSplitterFactory } from './router-code-splitter-plugin'\nimport { unpluginRouterHmrFactory } from './router-hmr-plugin'\nimport type { Config } from './config'\nimport type {\n RspackCompiler,\n UnpluginFactory,\n UnpluginOptions,\n WebpackCompiler,\n} from 'unplugin'\n\nconst INLINE_CSS_DEFAULT_DEFINES = {\n 'process.env.TSS_INLINE_CSS_ENABLED': JSON.stringify('false'),\n 'import.meta.env.TSS_INLINE_CSS_ENABLED': JSON.stringify('false'),\n}\n\ntype EsbuildOptionsWithDefine = Parameters<\n NonNullable<NonNullable<UnpluginOptions['esbuild']>['config']>\n>[0]\n\nfunction applyWebpackInlineCssDefaultDefinePlugin(compiler: WebpackCompiler) {\n new compiler.webpack.DefinePlugin(INLINE_CSS_DEFAULT_DEFINES).apply(compiler)\n}\n\nfunction applyRspackInlineCssDefaultDefinePlugin(compiler: RspackCompiler) {\n new compiler.webpack.DefinePlugin(INLINE_CSS_DEFAULT_DEFINES).apply(compiler)\n}\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config | (() => Config)> | undefined\n> = (options = {}, meta) => {\n const ROOT: string = process.cwd()\n const userConfig = getConfig(\n (typeof options === 'function' ? options() : options) as Partial<Config>,\n ROOT,\n )\n\n const getPlugin = (\n pluginFactory: UnpluginFactory<Partial<Config | (() => Config)>>,\n ) => {\n const plugin = pluginFactory(options, meta)\n if (!Array.isArray(plugin)) {\n return [plugin]\n }\n return plugin\n }\n\n const routerGenerator = getPlugin(unpluginRouterGeneratorFactory)\n const routerCodeSplitter = getPlugin(unpluginRouterCodeSplitterFactory)\n\n const result = [\n {\n name: 'tanstack:router-inline-css-defaults',\n vite: {\n config() {\n return {\n define: {\n ...INLINE_CSS_DEFAULT_DEFINES,\n },\n }\n },\n },\n webpack(compiler: WebpackCompiler) {\n applyWebpackInlineCssDefaultDefinePlugin(compiler)\n },\n rspack(compiler: RspackCompiler) {\n applyRspackInlineCssDefaultDefinePlugin(compiler)\n },\n esbuild: {\n config(options: EsbuildOptionsWithDefine) {\n options.define = {\n ...INLINE_CSS_DEFAULT_DEFINES,\n ...options.define,\n }\n },\n },\n },\n ...routerGenerator,\n ]\n if (userConfig.autoCodeSplitting) {\n result.push(...routerCodeSplitter)\n }\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n if (!isProduction && !userConfig.autoCodeSplitting) {\n const routerHmr = getPlugin(unpluginRouterHmrFactory)\n result.push(...routerHmr)\n }\n return result\n}\n"],"mappings":";;;;;;AAYA,IAAM,6BAA6B;CACjC,sCAAsC,KAAK,UAAU,QAAQ;CAC7D,0CAA0C,KAAK,UAAU,QAAQ;CAClE;AAMD,SAAS,yCAAyC,UAA2B;AAC3E,KAAI,SAAS,QAAQ,aAAa,2BAA2B,CAAC,MAAM,SAAS;;AAG/E,SAAS,wCAAwC,UAA0B;AACzE,KAAI,SAAS,QAAQ,aAAa,2BAA2B,CAAC,MAAM,SAAS;;AAG/E,IAAa,iCAER,UAAU,EAAE,EAAE,SAAS;CAC1B,MAAM,OAAe,QAAQ,KAAK;CAClC,MAAM,cAAA,GAAA,2BAAA,WACH,OAAO,YAAY,aAAa,SAAS,GAAG,SAC7C,KACD;CAED,MAAM,aACJ,kBACG;EACH,MAAM,SAAS,cAAc,SAAS,KAAK;AAC3C,MAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,QAAO,CAAC,OAAO;AAEjB,SAAO;;CAGT,MAAM,kBAAkB,UAAU,gCAAA,+BAA+B;CACjE,MAAM,qBAAqB,UAAU,oCAAA,kCAAkC;CAEvE,MAAM,SAAS,CACb;EACE,MAAM;EACN,MAAM,EACJ,SAAS;AACP,UAAO,EACL,QAAQ,EACN,GAAG,4BACJ,EACF;KAEJ;EACD,QAAQ,UAA2B;AACjC,4CAAyC,SAAS;;EAEpD,OAAO,UAA0B;AAC/B,2CAAwC,SAAS;;EAEnD,SAAS,EACP,OAAO,SAAmC;AACxC,WAAQ,SAAS;IACf,GAAG;IACH,GAAG,QAAQ;IACZ;KAEJ;EACF,EACD,GAAG,gBACJ;AACD,KAAI,WAAW,kBACb,QAAO,KAAK,GAAG,mBAAmB;AAKpC,KAAI,EAAA,QAAA,IAAA,aAF0C,iBAEzB,CAAC,WAAW,mBAAmB;EAClD,MAAM,YAAY,UAAU,0BAAA,yBAAyB;AACrD,SAAO,KAAK,GAAG,UAAU;;AAE3B,QAAO"}