Visitar URL original
Pass assumptions set in presets to plugins (#13321) · babel/babel@f85c643 · GitHub
Skip to content

Commit f85c643

Browse files
Pass assumptions set in presets to plugins (#13321)
1 parent 0d0950f commit f85c643

4 files changed

Lines changed: 68 additions & 4 deletions

File tree

‎packages/babel-core/package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
},
6767
"devDependencies": {
6868
"@babel/helper-transform-fixture-test-runner": "workspace:*",
69+
"@babel/plugin-transform-modules-commonjs": "workspace:*",
6970
"@types/convert-source-map": "^1.5.1",
7071
"@types/debug": "^4.1.0",
7172
"@types/resolve": "^1.3.2",

‎packages/babel-core/src/config/full.ts‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,9 @@ export default gensync<(inputOpts: unknown) => ResolvedConfig | null>(
6868
throw new Error("Assertion failure - plugins and presets exist");
6969
}
7070

71-
const pluginContext: Context.FullPlugin = {
71+
const presetContext: Context.FullPreset = {
7272
...context,
7373
targets: options.targets,
74-
assumptions: options.assumptions ?? {},
7574
};
7675

7776
const toDescriptor = (item: PluginItem) => {
@@ -110,15 +109,15 @@ export default gensync<(inputOpts: unknown) => ResolvedConfig | null>(
110109
presets.push({
111110
preset: yield* loadPresetDescriptor(
112111
descriptor,
113-
pluginContext,
112+
presetContext,
114113
),
115114
pass: [],
116115
});
117116
} else {
118117
presets.unshift({
119118
preset: yield* loadPresetDescriptor(
120119
descriptor,
121-
pluginContext,
120+
presetContext,
122121
),
123122
pass: pluginDescriptorsPass,
124123
});
@@ -168,6 +167,11 @@ export default gensync<(inputOpts: unknown) => ResolvedConfig | null>(
168167
const opts: any = optionDefaults;
169168
mergeOptions(opts, options);
170169

170+
const pluginContext: Context.FullPlugin = {
171+
...presetContext,
172+
assumptions: opts.assumptions ?? {},
173+
};
174+
171175
yield* enhanceError(context, function* loadPluginDescriptors() {
172176
pluginDescriptorsByPass[0].unshift(...initialPluginsDescriptors);
173177

‎packages/babel-core/test/assumptions.js‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import path from "path";
22
import { fileURLToPath } from "url";
33
import { loadOptions as loadOptionsOrig, transformSync } from "../lib";
4+
import pluginCommonJS from "@babel/plugin-transform-modules-commonjs";
45

56
const cwd = path.dirname(fileURLToPath(import.meta.url));
67

@@ -101,6 +102,63 @@ describe("assumptions", () => {
101102
expect(assumptionFn).toBeUndefined();
102103
});
103104

105+
// https://github.com/babel/babel/issues/13316
106+
describe("assumptions set in presets are visible from plugins - #13316", () => {
107+
function presetEnumerableModuleMeta() {
108+
return { assumptions: { enumerableModuleMeta: true } };
109+
}
110+
111+
function pluginExtractEnumerableModuleMeta(api, options) {
112+
options.enumerableModuleMeta = api.assumption("enumerableModuleMeta");
113+
return { visitor: {} };
114+
}
115+
116+
it("plugin defined outside preset", () => {
117+
const ref = {};
118+
119+
loadOptions({
120+
configFile: false,
121+
presets: [presetEnumerableModuleMeta],
122+
plugins: [[pluginExtractEnumerableModuleMeta, ref]],
123+
});
124+
125+
expect(ref.enumerableModuleMeta).toBe(true);
126+
});
127+
128+
it("plugin defined inside preset", () => {
129+
const ref = {};
130+
131+
loadOptions({
132+
configFile: false,
133+
presets: [
134+
() => ({
135+
assumptions: { enumerableModuleMeta: true },
136+
plugins: [[pluginExtractEnumerableModuleMeta, ref]],
137+
}),
138+
],
139+
});
140+
141+
expect(ref.enumerableModuleMeta).toBe(true);
142+
});
143+
144+
it("integration", () => {
145+
const { code } = transformSync(`export const foo = 1;`, {
146+
configFile: false,
147+
presets: [presetEnumerableModuleMeta],
148+
plugins: [pluginCommonJS],
149+
});
150+
151+
expect(code).toMatchInlineSnapshot(`
152+
"\\"use strict\\";
153+
154+
exports.__esModule = true;
155+
exports.foo = void 0;
156+
const foo = 1;
157+
exports.foo = foo;"
158+
`);
159+
});
160+
});
161+
104162
describe("plugin cache", () => {
105163
const makePlugin = () =>
106164
jest.fn(api => {

‎yarn.lock‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ __metadata:
214214
"@babel/helper-transform-fixture-test-runner": "workspace:*"
215215
"@babel/helpers": "workspace:^7.14.0"
216216
"@babel/parser": "workspace:^7.14.2"
217+
"@babel/plugin-transform-modules-commonjs": "workspace:*"
217218
"@babel/template": "workspace:^7.12.13"
218219
"@babel/traverse": "workspace:^7.14.2"
219220
"@babel/types": "workspace:^7.14.2"

0 commit comments

Comments
 (0)