{"version":3,"file":"remove-server-code.js","names":[],"sources":["esm/babel-plugins/remove-server-code.js"],"sourcesContent":["import BabelGenerate from \"@babel/generator\";\nimport { parse } from \"@babel/parser\";\nimport BabelTraverse from \"@babel/traverse\";\nimport * as t from \"@babel/types\";\nimport {\n  deadCodeElimination,\n  findReferencedIdentifiers\n} from \"babel-dead-code-elimination\";\nconst generate = BabelGenerate[\"default\"] || BabelGenerate;\nconst traverse = BabelTraverse[\"default\"] || BabelTraverse;\nfunction removeServerCodePlugin(_, options) {\n  const { routerRoot = \"app\" } = options;\n  return {\n    name: \"one-remove-server-code\",\n    visitor: {\n      Program: {\n        exit(path, state) {\n          const filename = state.filename;\n          if (!filename) return;\n          const routerRootPattern = new RegExp(`[/\\\\\\\\]${routerRoot}[/\\\\\\\\]`);\n          if (!routerRootPattern.test(filename)) return;\n          if (filename.includes(\"node_modules\")) return;\n          const code = path.toString();\n          if (!/generateStaticParams|loader/.test(code)) return;\n          try {\n            const freshAst = parse(code, {\n              sourceType: \"module\",\n              plugins: [\"typescript\", \"jsx\"]\n            });\n            const referenced = findReferencedIdentifiers(freshAst);\n            const removed = { loader: false, generateStaticParams: false };\n            traverse(freshAst, {\n              ExportNamedDeclaration(expPath) {\n                const declaration = expPath.node.declaration;\n                if (!declaration) return;\n                if (declaration.type === \"FunctionDeclaration\" && declaration.id) {\n                  const name = declaration.id.name;\n                  if (name === \"loader\" || name === \"generateStaticParams\") {\n                    expPath.remove();\n                    removed[name] = true;\n                  }\n                } else if (declaration.type === \"VariableDeclaration\") {\n                  const decl = expPath.get(\n                    \"declaration\"\n                  );\n                  const declarators = decl.get(\"declarations\");\n                  for (let i = declarators.length - 1; i >= 0; i--) {\n                    const declarator = declarators[i];\n                    const id = declarator.node.id;\n                    if (id.type === \"Identifier\" && (id.name === \"loader\" || id.name === \"generateStaticParams\")) {\n                      declarator.remove();\n                      removed[id.name] = true;\n                    }\n                  }\n                  if (decl.node && decl.node.declarations.length === 0) {\n                    expPath.remove();\n                  }\n                }\n              }\n            });\n            const removedFunctions = Object.keys(removed).filter(\n              (key) => removed[key]\n            );\n            if (removedFunctions.length === 0) return;\n            deadCodeElimination(freshAst, referenced);\n            if (removed.loader) {\n              freshAst.program.body.push(\n                t.exportNamedDeclaration(\n                  t.functionDeclaration(\n                    t.identifier(\"loader\"),\n                    [],\n                    t.blockStatement([\n                      t.returnStatement(t.stringLiteral(\"__vxrn__loader__\"))\n                    ])\n                  )\n                )\n              );\n            }\n            if (removed.generateStaticParams) {\n              freshAst.program.body.push(\n                t.exportNamedDeclaration(\n                  t.functionDeclaration(\n                    t.identifier(\"generateStaticParams\"),\n                    [],\n                    t.blockStatement([])\n                  )\n                )\n              );\n            }\n            const out = generate(freshAst, { retainLines: true });\n            const finalAst = parse(out.code, {\n              sourceType: \"module\",\n              plugins: [\"typescript\", \"jsx\"]\n            });\n            path.node.body = finalAst.program.body;\n            path.node.directives = finalAst.program.directives;\n            if (process.env.DEBUG) {\n              console.info(\n                ` \\u{1F9F9} [one/metro] ${filename} removed ${removedFunctions.length} server-only exports`\n              );\n            }\n          } catch (error) {\n            console.warn(\n              `[one/metro] Tree shaking failed for ${filename}:`,\n              error instanceof Error ? error.message : String(error)\n            );\n          }\n        }\n      }\n    }\n  };\n}\nvar remove_server_code_default = removeServerCodePlugin;\nexport {\n  remove_server_code_default as default\n};\n//# sourceMappingURL=remove-server-code.js.map\n"],"mappings":";;;;;;;AAQA,MAAM,WAAW,cAAc,cAAc;AAC7C,MAAM,WAAW,cAAc,cAAc;AAC7C,SAAS,uBAAuB,GAAG,SAAS;CAC1C,MAAM,EAAE,aAAa,UAAU;CAC/B,OAAO;EACL,MAAM;EACN,SAAS,EACP,SAAS,EACP,KAAK,MAAM,OAAO;GAChB,MAAM,WAAW,MAAM;GACvB,IAAI,CAAC,UAAU;GACf,MAAM,oBAAoB,IAAI,OAAO,UAAU,WAAW,QAAQ;GAClE,IAAI,CAAC,kBAAkB,KAAK,QAAQ,GAAG;GACvC,IAAI,SAAS,SAAS,cAAc,GAAG;GACvC,MAAM,OAAO,KAAK,SAAS;GAC3B,IAAI,CAAC,8BAA8B,KAAK,IAAI,GAAG;GAC/C,IAAI;IACF,MAAM,WAAW,MAAM,MAAM;KAC3B,YAAY;KACZ,SAAS,CAAC,cAAc,KAAK;IAC/B,CAAC;IACD,MAAM,aAAa,0BAA0B,QAAQ;IACrD,MAAM,UAAU;KAAE,QAAQ;KAAO,sBAAsB;IAAM;IAC7D,SAAS,UAAU,EACjB,uBAAuB,SAAS;KAC9B,MAAM,cAAc,QAAQ,KAAK;KACjC,IAAI,CAAC,aAAa;KAClB,IAAI,YAAY,SAAS,yBAAyB,YAAY,IAAI;MAChE,MAAM,OAAO,YAAY,GAAG;MAC5B,IAAI,SAAS,YAAY,SAAS,wBAAwB;OACxD,QAAQ,OAAO;OACf,QAAQ,QAAQ;MAClB;KACF,OAAO,IAAI,YAAY,SAAS,uBAAuB;MACrD,MAAM,OAAO,QAAQ,IACnB,aACF;MACA,MAAM,cAAc,KAAK,IAAI,cAAc;MAC3C,KAAK,IAAI,IAAI,YAAY,SAAS,GAAG,KAAK,GAAG,KAAK;OAChD,MAAM,aAAa,YAAY;OAC/B,MAAM,KAAK,WAAW,KAAK;OAC3B,IAAI,GAAG,SAAS,iBAAiB,GAAG,SAAS,YAAY,GAAG,SAAS,yBAAyB;QAC5F,WAAW,OAAO;QAClB,QAAQ,GAAG,QAAQ;OACrB;MACF;MACA,IAAI,KAAK,QAAQ,KAAK,KAAK,aAAa,WAAW,GAAG;OACpD,QAAQ,OAAO;MACjB;KACF;IACF,EACF,CAAC;IACD,MAAM,mBAAmB,OAAO,KAAK,OAAO,CAAC,CAAC,QAC3C,QAAQ,QAAQ,IACnB;IACA,IAAI,iBAAiB,WAAW,GAAG;IACnC,oBAAoB,UAAU,UAAU;IACxC,IAAI,QAAQ,QAAQ;KAClB,SAAS,QAAQ,KAAK,KACpB,EAAE,uBACA,EAAE,oBACA,EAAE,WAAW,QAAQ,GACrB,CAAC,GACD,EAAE,eAAe,CACf,EAAE,gBAAgB,EAAE,cAAc,kBAAkB,CAAC,CACvD,CAAC,CACH,CACF,CACF;IACF;IACA,IAAI,QAAQ,sBAAsB;KAChC,SAAS,QAAQ,KAAK,KACpB,EAAE,uBACA,EAAE,oBACA,EAAE,WAAW,sBAAsB,GACnC,CAAC,GACD,EAAE,eAAe,CAAC,CAAC,CACrB,CACF,CACF;IACF;IACA,MAAM,MAAM,SAAS,UAAU,EAAE,aAAa,KAAK,CAAC;IACpD,MAAM,WAAW,MAAM,IAAI,MAAM;KAC/B,YAAY;KACZ,SAAS,CAAC,cAAc,KAAK;IAC/B,CAAC;IACD,KAAK,KAAK,OAAO,SAAS,QAAQ;IAClC,KAAK,KAAK,aAAa,SAAS,QAAQ;IACxC,IAAI,QAAQ,IAAI,OAAO;KACrB,QAAQ,KACN,0BAA0B,SAAS,WAAW,iBAAiB,OAAO,qBACxE;IACF;GACF,SAAS,OAAO;IACd,QAAQ,KACN,uCAAuC,SAAS,IAChD,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CACvD;GACF;EACF,EACF,EACF;CACF;AACF;AACA,IAAI,6BAA6B"}