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:
1
packages/babel-helpers/test/fixtures/dependencies/basic/input.js
vendored
Normal file
1
packages/babel-helpers/test/fixtures/dependencies/basic/input.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
REPLACE_ME;
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/basic/options.json
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/basic/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["./plugin"]
|
||||
}
|
||||
5
packages/babel-helpers/test/fixtures/dependencies/basic/output.js
vendored
Normal file
5
packages/babel-helpers/test/fixtures/dependencies/basic/output.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
function _$_basic_main() { return _$_basic_dependency(); }
|
||||
|
||||
function _$_basic_dependency() {}
|
||||
|
||||
_$_basic_main;
|
||||
25
packages/babel-helpers/test/fixtures/dependencies/basic/plugin.js
vendored
Normal file
25
packages/babel-helpers/test/fixtures/dependencies/basic/plugin.js
vendored
Normal 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);
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
1
packages/babel-helpers/test/fixtures/dependencies/deep/input.js
vendored
Normal file
1
packages/babel-helpers/test/fixtures/dependencies/deep/input.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
REPLACE_ME;
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/deep/options.json
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/deep/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["./plugin"]
|
||||
}
|
||||
7
packages/babel-helpers/test/fixtures/dependencies/deep/output.js
vendored
Normal file
7
packages/babel-helpers/test/fixtures/dependencies/deep/output.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
function _$_deep_main() { return _$_deep_dependency(); }
|
||||
|
||||
function _$_deep_dependency() { return _$_deep_dependencyDeep; }
|
||||
|
||||
function _$_deep_dependencyDeep() {}
|
||||
|
||||
_$_deep_main;
|
||||
30
packages/babel-helpers/test/fixtures/dependencies/deep/plugin.js
vendored
Normal file
30
packages/babel-helpers/test/fixtures/dependencies/deep/plugin.js
vendored
Normal 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);
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
1
packages/babel-helpers/test/fixtures/dependencies/missing/input.js
vendored
Normal file
1
packages/babel-helpers/test/fixtures/dependencies/missing/input.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
REPLACE_ME;
|
||||
4
packages/babel-helpers/test/fixtures/dependencies/missing/options.json
vendored
Normal file
4
packages/babel-helpers/test/fixtures/dependencies/missing/options.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"plugins": ["./plugin"],
|
||||
"throws": " "
|
||||
}
|
||||
21
packages/babel-helpers/test/fixtures/dependencies/missing/plugin.js
vendored
Normal file
21
packages/babel-helpers/test/fixtures/dependencies/missing/plugin.js
vendored
Normal 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);
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
1
packages/babel-helpers/test/fixtures/dependencies/multiple/input.js
vendored
Normal file
1
packages/babel-helpers/test/fixtures/dependencies/multiple/input.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
REPLACE_ME;
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/multiple/options.json
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/multiple/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["./plugin"]
|
||||
}
|
||||
7
packages/babel-helpers/test/fixtures/dependencies/multiple/output.js
vendored
Normal file
7
packages/babel-helpers/test/fixtures/dependencies/multiple/output.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
function _$_multiple_main() { return _$_multiple_dependency() + _$_multiple_dependency2(); }
|
||||
|
||||
function _$_multiple_dependency2() { 1; }
|
||||
|
||||
function _$_multiple_dependency() { 0; }
|
||||
|
||||
_$_multiple_main;
|
||||
30
packages/babel-helpers/test/fixtures/dependencies/multiple/plugin.js
vendored
Normal file
30
packages/babel-helpers/test/fixtures/dependencies/multiple/plugin.js
vendored
Normal 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);
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
1
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/input.js
vendored
Normal file
1
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/input.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
REPLACE_ME;
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/options.json
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["./plugin"]
|
||||
}
|
||||
9
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/output.js
vendored
Normal file
9
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/output.js
vendored
Normal 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;
|
||||
28
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/plugin.js
vendored
Normal file
28
packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/plugin.js
vendored
Normal 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);
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/input.js
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/input.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
REPLACE_ME;
|
||||
|
||||
let Promise = "I will be a good guy!";
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/options.json
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["./plugin"]
|
||||
}
|
||||
6
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/output.js
vendored
Normal file
6
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/output.js
vendored
Normal 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!";
|
||||
27
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/plugin.js
vendored
Normal file
27
packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/plugin.js
vendored
Normal 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);
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
2
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/input.js
vendored
Normal file
2
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/input.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
REPLACE_ME_1;
|
||||
REPLACE_ME_2;
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/options.json
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["./plugin"]
|
||||
}
|
||||
6
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/output.js
vendored
Normal file
6
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/output.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
function _$_reuseDependency_main() { return _$_reuseDependency_dependency(); }
|
||||
|
||||
function _$_reuseDependency_dependency() { 0; }
|
||||
|
||||
_$_reuseDependency_main;
|
||||
_$_reuseDependency_dependency;
|
||||
29
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/plugin.js
vendored
Normal file
29
packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/plugin.js
vendored
Normal 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);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
1
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/input.js
vendored
Normal file
1
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/input.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
REPLACE_ME;
|
||||
3
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/options.json
vendored
Normal file
3
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["./plugin"]
|
||||
}
|
||||
5
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/output.js
vendored
Normal file
5
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/output.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
function _$_variableSameNameDependency_main() { let x = _$_variableSameNameDependency_dependency; return function (dep) { return x() + dep; }; }
|
||||
|
||||
function _$_variableSameNameDependency_dependency() {}
|
||||
|
||||
_$_variableSameNameDependency_main;
|
||||
28
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/plugin.js
vendored
Normal file
28
packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/plugin.js
vendored
Normal 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);
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
26
packages/babel-helpers/test/helpers/define-helper.js
Normal file
26
packages/babel-helpers/test/helpers/define-helper.js
Normal 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;
|
||||
}
|
||||
3
packages/babel-helpers/test/index.js
Normal file
3
packages/babel-helpers/test/index.js
Normal file
@@ -0,0 +1,3 @@
|
||||
import runner from "@babel/helper-plugin-test-runner";
|
||||
|
||||
runner(__dirname);
|
||||
Reference in New Issue
Block a user