Skip to content

Commit

Permalink
mangle fns
Browse files Browse the repository at this point in the history
  • Loading branch information
liuxingbaoyu committed Dec 7, 2023
1 parent 7156240 commit 09e2171
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 37 deletions.
20 changes: 18 additions & 2 deletions packages/babel-helpers/scripts/generate-helpers.js
Expand Up @@ -51,6 +51,9 @@ export default Object.freeze({
}
const { minVersion } = minVersionMatch.groups;

const mangleFns = code.includes("@mangleFns");
const noMangleFns = [];

code = transformSync(code, {
configFile: false,
babelrc: false,
Expand All @@ -76,14 +79,27 @@ export default Object.freeze({
.replace(/\.ts$/, "")
.replace(/^\.\//, "");
},
FunctionDeclaration(path) {
if (
mangleFns &&
path.node.leadingComments?.find(c =>
c.value.includes("@no-mangle")
)
) {
const name = path.node.id.name;
if (name) noMangleFns.push(name);
}
},
},
},
],
}).code;

code = (
await minify(code, {
mangle: { keep_fnames: true },
mangle: {
toplevel: true,
keep_fnames: mangleFns ? new RegExp(noMangleFns.join("|")) : true,
},
// The _typeof helper has a custom directive that we must keep
compress: { directives: false },
})
Expand Down
48 changes: 24 additions & 24 deletions packages/babel-helpers/src/helpers-generated.ts

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -1,5 +1,5 @@
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
function _toPropertyKey(r) { var o = _toPrimitive(r, "string"); return "symbol" == typeof o ? o : String(o); }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
class _TypeError {
constructor() {
Expand Down
@@ -1,5 +1,5 @@
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
function _toPropertyKey(r) { var o = _toPrimitive(r, "string"); return "symbol" == typeof o ? o : String(o); }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
class _TypeError {
constructor() {
Expand Down
Expand Up @@ -22,7 +22,7 @@ describe("plugin ordering", () => {
).toMatchInlineSnapshot(`
"var _class;
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, \\"string\\"); return \\"symbol\\" == typeof i ? i : String(i); }
function _toPropertyKey(r) { var o = _toPrimitive(r, \\"string\\"); return \\"symbol\\" == typeof o ? o : String(o); }
function _toPrimitive(t, r) { if (\\"object\\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \\"default\\"); if (\\"object\\" != typeof i) return i; throw new TypeError(\\"@@toPrimitive must return a primitive value.\\"); } return (\\"string\\" === r ? String : Number)(t); }
class Foo {}
_class = Foo;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 09e2171

Please sign in to comment.