{"version":3,"file":"router-hmr-plugin.cjs","sources":["../../../src/core/router-hmr-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport { getConfig } from './config'\nimport { routeHmrStatement } from './route-hmr-statement'\nimport { debug } from './utils'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\n/**\n * This plugin adds HMR support for file routes.\n * It is only added to the composed plugin in dev when autoCodeSplitting is disabled, since the code splitting plugin\n * handles HMR for code-split routes itself.\n */\nexport const unpluginRouterHmrFactory: 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:hmr',\n    enforce: 'pre',\n\n    transform: {\n      filter: {\n        code: 'createFileRoute(',\n      },\n      handler(code, id) {\n        if (!globalThis.TSR_ROUTES_BY_ID_MAP?.has(id)) {\n          return null\n        }\n\n        if (debug) console.info('Adding HMR handling to route ', id)\n\n        const ast = parseAst({ code })\n        ast.program.body.push(routeHmrStatement)\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\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":["debug","parseAst","routeHmrStatement","generateFromAst","logDiff","config","getConfig"],"mappings":";;;;;;AAYO,MAAM,2BAET,CAAC,UAAU,OAAO;AAChB,MAAA,OAAe,QAAQ,IAAI;AAGxB,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,WAAW;AAAA,MACT,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,MAAM,IAAI;;AAChB,YAAI,GAAC,gBAAW,yBAAX,mBAAiC,IAAI,MAAK;AACtC,iBAAA;AAAA,QAAA;AAGT,YAAIA,MAAO,MAAA,SAAQ,KAAK,iCAAiC,EAAE;AAE3D,cAAM,MAAMC,YAAAA,SAAS,EAAE,MAAM;AACzB,YAAA,QAAQ,KAAK,KAAKC,kBAAAA,iBAAiB;AACjC,cAAA,SAASC,4BAAgB,KAAK;AAAA,UAClC,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,gBAAgB;AAAA,QAAA,CACjB;AACD,YAAIH,aAAO;AACDI,8BAAA,MAAM,OAAO,IAAI;AACzB,kBAAQ,IAAI,aAAa,OAAO,OAAO,MAAM;AAAA,QAAA;AAExC,eAAA;AAAA,MAAA;AAAA,IAEX;AAAA,IAEA,MAAM;AAAA,MACJ,eAAeC,UAAQ;AACrB,eAAOA,SAAO;AACDC,eAAA,UAAU,SAAS,IAAI;AAAA,MAAA;AAAA,IAExC;AAAA,IAEA,SAAS;AACP,aAAO,QAAQ,IAAI;AACNA,aAAA,UAAU,SAAS,IAAI;AAAA,IACtC;AAAA,IAEA,UAAU;AACR,aAAO,QAAQ,IAAI;AACNA,aAAA,UAAU,SAAS,IAAI;AAAA,IAAA;AAAA,EAExC;AACF;;"}