one
Version:
One is a new React Framework that makes Vite serve both native and web.
141 lines (139 loc) • 6.1 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
value: true
}), mod);
var remove_server_code_exports = {};
__export(remove_server_code_exports, {
default: () => remove_server_code_default
});
module.exports = __toCommonJS(remove_server_code_exports);
var import_generator = __toESM(require("@babel/generator"), 1);
var import_parser = require("@babel/parser");
var import_traverse = __toESM(require("@babel/traverse"), 1);
var t = __toESM(require("@babel/types"), 1);
var import_babel_dead_code_elimination = require("babel-dead-code-elimination");
function _instanceof(left, right) {
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
return !!right[Symbol.hasInstance](left);
} else {
return left instanceof right;
}
}
var generate = import_generator.default["default"] || import_generator.default;
var traverse = import_traverse.default["default"] || import_traverse.default;
function removeServerCodePlugin(_, options) {
var {
routerRoot = "app"
} = options;
return {
name: "one-remove-server-code",
visitor: {
Program: {
exit(path, state) {
var filename = state.filename;
if (!filename) return;
var routerRootPattern = new RegExp(`[/\\\\]${routerRoot}[/\\\\]`);
if (!routerRootPattern.test(filename)) return;
if (filename.includes("node_modules")) return;
var code = path.toString();
if (!/generateStaticParams|loader/.test(code)) return;
try {
var freshAst = (0, import_parser.parse)(code, {
sourceType: "module",
plugins: ["typescript", "jsx"]
});
var referenced = (0, import_babel_dead_code_elimination.findReferencedIdentifiers)(freshAst);
var removed = {
loader: false,
generateStaticParams: false
};
traverse(freshAst, {
ExportNamedDeclaration(expPath) {
var declaration = expPath.node.declaration;
if (!declaration) return;
if (declaration.type === "FunctionDeclaration" && declaration.id) {
var name = declaration.id.name;
if (name === "loader" || name === "generateStaticParams") {
expPath.remove();
removed[name] = true;
}
} else if (declaration.type === "VariableDeclaration") {
var decl = expPath.get("declaration");
var declarators = decl.get("declarations");
for (var i = declarators.length - 1; i >= 0; i--) {
var declarator = declarators[i];
var id = declarator.node.id;
if (id.type === "Identifier" && (id.name === "loader" || id.name === "generateStaticParams")) {
declarator.remove();
removed[id.name] = true;
}
}
if (decl.node && decl.node.declarations.length === 0) {
expPath.remove();
}
}
}
});
var removedFunctions = Object.keys(removed).filter(function (key) {
return removed[key];
});
if (removedFunctions.length === 0) return;
(0, import_babel_dead_code_elimination.deadCodeElimination)(freshAst, referenced);
if (removed.loader) {
freshAst.program.body.push(t.exportNamedDeclaration(t.functionDeclaration(t.identifier("loader"), [], t.blockStatement([t.returnStatement(t.stringLiteral("__vxrn__loader__"))]))));
}
if (removed.generateStaticParams) {
freshAst.program.body.push(t.exportNamedDeclaration(t.functionDeclaration(t.identifier("generateStaticParams"), [], t.blockStatement([]))));
}
var out = generate(freshAst, {
retainLines: true
});
var finalAst = (0, import_parser.parse)(out.code, {
sourceType: "module",
plugins: ["typescript", "jsx"]
});
path.node.body = finalAst.program.body;
path.node.directives = finalAst.program.directives;
if (process.env.DEBUG) {
console.info(` \u{1F9F9} [one/metro] ${filename} removed ${removedFunctions.length} server-only exports`);
}
} catch (error) {
console.warn(`[one/metro] Tree shaking failed for ${filename}:`, _instanceof(error, Error) ? error.message : String(error));
}
}
}
}
};
}
var remove_server_code_default = removeServerCodePlugin;
//# sourceMappingURL=remove-server-code.native.js.map