one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 6.87 kB
Source Map (JSON)
{"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"}