Skip to content

Commit d158a48

Browse files
Don't mutate @babel/register options (#14107)
1 parent ed3036d commit d158a48

2 files changed

Lines changed: 57 additions & 2 deletions

File tree

packages/babel-register/src/node.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
const hook = require("./hook");
66
const { LocalClient } = require("./worker-client");
77

8-
const register = hook.register.bind(null, new LocalClient());
8+
const client = new LocalClient();
9+
function register(opts = {}) {
10+
return hook.register(client, { ...opts });
11+
}
912

1013
module.exports = Object.assign(register, {
1114
revert: hook.revert,

packages/babel-register/test/index.js

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,33 @@ describe("@babel/register", function () {
118118
});
119119
}
120120

121-
buildTests(require.resolve(".."));
121+
const { setupRegister } = buildTests(require.resolve(".."));
122+
123+
it("does not mutate options", () => {
124+
const proxyHandler = {
125+
defineProperty: jest.fn(Reflect.defineProperty),
126+
deleteProperty: jest.fn(Reflect.deleteProperty),
127+
set: jest.fn(Reflect.set),
128+
};
129+
130+
setupRegister(
131+
new Proxy(
132+
{
133+
babelrc: true,
134+
sourceMaps: false,
135+
cwd: path.dirname(testFileMjs),
136+
extensions: [".js"],
137+
},
138+
proxyHandler,
139+
),
140+
);
141+
142+
currentHook(testFileContent, testFile);
143+
144+
expect(proxyHandler.defineProperty).not.toHaveBeenCalled();
145+
expect(proxyHandler.deleteProperty).not.toHaveBeenCalled();
146+
expect(proxyHandler.set).not.toHaveBeenCalled();
147+
});
122148
});
123149
}
124150

@@ -344,6 +370,32 @@ describe("@babel/register", function () {
344370
expect(convertSourceMap).toMatch("/* transformed */");
345371
});
346372

373+
test("does not mutate options", () => {
374+
const proxyHandler = {
375+
defineProperty: jest.fn(Reflect.defineProperty),
376+
deleteProperty: jest.fn(Reflect.deleteProperty),
377+
set: jest.fn(Reflect.set),
378+
};
379+
380+
setupRegister(
381+
new Proxy(
382+
{
383+
babelrc: true,
384+
sourceMaps: false,
385+
cwd: path.dirname(testFileMjs),
386+
extensions: [".js"],
387+
},
388+
proxyHandler,
389+
),
390+
);
391+
392+
currentHook(testFileContent, testFile);
393+
394+
expect(proxyHandler.defineProperty).not.toHaveBeenCalled();
395+
expect(proxyHandler.deleteProperty).not.toHaveBeenCalled();
396+
expect(proxyHandler.set).not.toHaveBeenCalled();
397+
});
398+
347399
return { setupRegister, revertRegister };
348400
}
349401
});

0 commit comments

Comments
 (0)