Make sure to actually use yarn to install the main-packages, otherwise the packages.json#resolutions property will not be used and @babel/helpers would not get overruled

Overruled @babel/helpers to fix how initializers play with decorated properties. Thus circumventing the imperformant and lengthy code being generated by babel in the non-legacy option.
This commit is contained in:
2019-11-05 21:11:01 +01:00
parent 5ca9bec93a
commit 72f38c1137
47 changed files with 5004 additions and 80 deletions

View File

@@ -0,0 +1 @@
REPLACE_ME;

View File

@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}

View File

@@ -0,0 +1,5 @@
function _$_basic_main() { return _$_basic_dependency(); }
function _$_basic_dependency() {}
_$_basic_main;

View File

@@ -0,0 +1,25 @@
const defineHelper = require("../../../helpers/define-helper").default;
const dependency = defineHelper(__dirname, "dependency", `
export default function fn() {}
`);
const main = defineHelper(__dirname, "main", `
import dep from "${dependency}";
export default function helper() {
return dep();
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "REPLACE_ME") return;
const helper = this.addHelper(main);
path.replaceWith(helper);
},
},
};
};

View File

@@ -0,0 +1 @@
REPLACE_ME;

View File

@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}

View File

@@ -0,0 +1,7 @@
function _$_deep_main() { return _$_deep_dependency(); }
function _$_deep_dependency() { return _$_deep_dependencyDeep; }
function _$_deep_dependencyDeep() {}
_$_deep_main;

View File

@@ -0,0 +1,30 @@
const defineHelper = require("../../../helpers/define-helper").default;
const dependencyDeep = defineHelper(__dirname, "dependencyDeep", `
export default function fn() {}
`)
const dependency = defineHelper(__dirname, "dependency", `
import f from "${dependencyDeep}";
export default function fn() { return f; }
`);
const main = defineHelper(__dirname, "main", `
import dep from "${dependency}";
export default function helper() {
return dep();
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "REPLACE_ME") return;
const helper = this.addHelper(main);
path.replaceWith(helper);
},
},
};
};

View File

@@ -0,0 +1 @@
REPLACE_ME;

View File

@@ -0,0 +1,4 @@
{
"plugins": ["./plugin"],
"throws": " "
}

View File

@@ -0,0 +1,21 @@
const defineHelper = require("../../../helpers/define-helper").default;
const main = defineHelper(__dirname, "main", `
import dep from "(!!!)%-..a,4892 missing";
export default function helper() {
return dep();
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "REPLACE_ME") return;
const helper = this.addHelper(main);
path.replaceWith(helper);
},
},
};
};

View File

@@ -0,0 +1 @@
REPLACE_ME;

View File

@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}

View File

@@ -0,0 +1,7 @@
function _$_multiple_main() { return _$_multiple_dependency() + _$_multiple_dependency2(); }
function _$_multiple_dependency2() { 1; }
function _$_multiple_dependency() { 0; }
_$_multiple_main;

View File

@@ -0,0 +1,30 @@
const defineHelper = require("../../../helpers/define-helper").default;
const dependency1 = defineHelper(__dirname, "dependency1", `
export default function fn() { 0; }
`);
const dependency2 = defineHelper(__dirname, "dependency2", `
export default function fn() { 1; }
`);
const main = defineHelper(__dirname, "main", `
import dep1 from "${dependency1}";
import dep2 from "${dependency2}";
export default function helper() {
return dep1() + dep2();
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "REPLACE_ME") return;
const helper = this.addHelper(main);
path.replaceWith(helper);
},
},
};
};

View File

@@ -0,0 +1 @@
REPLACE_ME;

View File

@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}

View File

@@ -0,0 +1,9 @@
let _foo = "main";
function _$_renameBindingEqual_main() { return _$_renameBindingEqual_dependency() + _foo; }
let foo = "dependency";
function _$_renameBindingEqual_dependency() { return foo; }
_$_renameBindingEqual_main;

View File

@@ -0,0 +1,28 @@
const defineHelper = require("../../../helpers/define-helper").default;
const dependency = defineHelper(__dirname, "dependency", `
let foo = "dependency";
export default function fn() { return foo }
`);
const main = defineHelper(__dirname, "main", `
import dep from "${dependency}";
let foo = "main";
export default function helper() {
return dep() + foo;
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "REPLACE_ME") return;
const helper = this.addHelper(main);
path.replaceWith(helper);
},
},
};
};

View File

@@ -0,0 +1,3 @@
REPLACE_ME;
let Promise = "I will be a good guy!";

View File

@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}

View File

@@ -0,0 +1,6 @@
function _$_renameDeepGlobal_main() { return _$_renameDeepGlobal_dependency() || Promise; }
function _$_renameDeepGlobal_dependency() { return Promise; }
_$_renameDeepGlobal_main;
let _Promise = "I will be a good guy!";

View File

@@ -0,0 +1,27 @@
const defineHelper = require("../../../helpers/define-helper").default;
const dependency = defineHelper(__dirname, "dependency", `
export default function fn() {
return Promise;
}
`);
const main = defineHelper(__dirname, "main", `
import dep from "${dependency}";
export default function helper() {
return dep() || Promise;
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "REPLACE_ME") return;
const helper = this.addHelper(main);
path.replaceWith(helper);
},
},
};
};

View File

@@ -0,0 +1,2 @@
REPLACE_ME_1;
REPLACE_ME_2;

View File

@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}

View File

@@ -0,0 +1,6 @@
function _$_reuseDependency_main() { return _$_reuseDependency_dependency(); }
function _$_reuseDependency_dependency() { 0; }
_$_reuseDependency_main;
_$_reuseDependency_dependency;

View File

@@ -0,0 +1,29 @@
const defineHelper = require("../../../helpers/define-helper").default;
const dependency = defineHelper(__dirname, "dependency", `
export default function fn() { 0; }
`);
const main = defineHelper(__dirname, "main", `
import dep from "${dependency}";
export default function helper() {
return dep();
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name === "REPLACE_ME_1") {
const mainHelper = this.addHelper(main);
path.replaceWith(mainHelper);
} else if (path.node.name === "REPLACE_ME_2") {
const dependencyHelper = this.addHelper(dependency);
path.replaceWith(dependencyHelper);
}
},
},
};
};

View File

@@ -0,0 +1 @@
REPLACE_ME;

View File

@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}

View File

@@ -0,0 +1,5 @@
function _$_variableSameNameDependency_main() { let x = _$_variableSameNameDependency_dependency; return function (dep) { return x() + dep; }; }
function _$_variableSameNameDependency_dependency() {}
_$_variableSameNameDependency_main;

View File

@@ -0,0 +1,28 @@
const defineHelper = require("../../../helpers/define-helper").default;
const dependency = defineHelper(__dirname, "dependency", `
export default function fn() {}
`);
const main = defineHelper(__dirname, "main", `
import dep from "${dependency}";
export default function helper() {
let x = dep;
return function (dep) {
return x() + dep;
}
}
`);
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name !== "REPLACE_ME") return;
const helper = this.addHelper(main);
path.replaceWith(helper);
},
},
};
};

View File

@@ -0,0 +1,26 @@
import path from "path";
import template from "@babel/template";
import helpers from "../../lib/helpers";
function getHelperId(dir, name) {
const testName = path.basename(dir);
return `_$_${testName}_${name}`;
}
export default function defineHelper(
dir: string,
name: string,
code: string,
): string {
const id = getHelperId(dir, name);
if (id in helpers) {
throw new Error(`The ${id} helper is already defined.`);
}
Object.defineProperty(helpers, id, {
value: {
minVersion: "7.0.0-beta.0",
ast: template.program(code),
},
});
return id;
}

View File

@@ -0,0 +1,3 @@
import runner from "@babel/helper-plugin-test-runner";
runner(__dirname);