Skip to content

Commit 6c5f468

Browse files
authored
fix: inject oxc runtime helpers correctly when multiple helpers are required (#311)
1 parent 3f07670 commit 6c5f468

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

packages/vite/src/node/__tests__/plugins/oxc.spec.ts

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ describe('renderChunk', () => {
178178
)
179179
expect(result).toMatchInlineSnapshot(`
180180
"(function() {
181-
"use strict";var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}};babelHelpers_asyncToGenerator=t;})();
181+
"use strict";var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}}babelHelpers_asyncToGenerator=t;})();
182182
183183
//#region src/index.js
184184
babelHelpers_asyncToGenerator(function* () {
@@ -208,7 +208,7 @@ describe('renderChunk', () => {
208208
'iife',
209209
)
210210
expect(result).toMatchInlineSnapshot(`
211-
"(function() {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}};babelHelpers_asyncToGenerator=t;})();
211+
"(function() {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}}babelHelpers_asyncToGenerator=t;})();
212212
213213
//#region src/index.js
214214
babelHelpers_asyncToGenerator(function* () {
@@ -241,7 +241,7 @@ return exports;
241241
'iife',
242242
)
243243
expect(result).toMatchInlineSnapshot(`
244-
"var lib = function(exports) {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}};babelHelpers_asyncToGenerator=t;})();
244+
"var lib = function(exports) {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}}babelHelpers_asyncToGenerator=t;})();
245245
246246
//#region entry.js
247247
babelHelpers_asyncToGenerator(function* () {
@@ -279,7 +279,7 @@ return exports;
279279
expect(result).toMatchInlineSnapshot(`
280280
"(function(factory) {
281281
typeof define === "function" && define.amd ? define([], factory) : factory();
282-
})(function() {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}};babelHelpers_asyncToGenerator=t;})();
282+
})(function() {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}}babelHelpers_asyncToGenerator=t;})();
283283
284284
//#region entry.js
285285
babelHelpers_asyncToGenerator(function* () {
@@ -316,7 +316,7 @@ exports.foo = foo;
316316
expect(result).toMatchInlineSnapshot(`
317317
"(function(global, factory) {
318318
typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.lib = {}));
319-
})(this, function(exports) {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}};babelHelpers_asyncToGenerator=t;})();
319+
})(this, function(exports) {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}}babelHelpers_asyncToGenerator=t;})();
320320
321321
//#region entry.js
322322
babelHelpers_asyncToGenerator(function* () {
@@ -355,7 +355,7 @@ return index_default;
355355
expect(result).toMatchInlineSnapshot(`
356356
"(function(global, factory) {
357357
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define([], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.lib = factory());
358-
})(this, function() {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}};babelHelpers_asyncToGenerator=t;})();
358+
})(this, function() {var babelHelpers_asyncToGenerator;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}}babelHelpers_asyncToGenerator=t;})();
359359
360360
//#region entry.js
361361
babelHelpers_asyncToGenerator(function* () {
@@ -369,4 +369,36 @@ return index_default;
369369
"
370370
`)
371371
})
372+
373+
test('should inject multiple helpers', async () => {
374+
const renderChunk = await createBuildOxcPluginRenderChunk('es2015')
375+
const result = await renderChunk(
376+
`(function() {
377+
378+
"use strict";
379+
380+
//#region src/index.js
381+
(async () => {
382+
await new Promise((resolve) => setTimeout(resolve, 1e3));
383+
console.log("foo", { ..."foo" });
384+
})();
385+
386+
//#endregion
387+
})();`,
388+
'iife',
389+
)
390+
expect(result).toMatchInlineSnapshot(`
391+
"(function() {
392+
"use strict";var babelHelpers_asyncToGenerator, babelHelpers_objectSpread2;!(() => {function e(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,c,\`next\`,t)}function c(t){e(o,i,a,s,c,\`throw\`,t)}s(void 0)})}}function n(e){"@babel/helpers - typeof";return n=typeof Symbol==\`function\`&&typeof Symbol.iterator==\`symbol\`?function(e){return typeof e}:function(e){return e&&typeof Symbol==\`function\`&&e.constructor===Symbol&&e!==Symbol.prototype?\`symbol\`:typeof e},n(e)}function r(e,t){if(n(e)!=\`object\`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||\`default\`);if(n(i)!=\`object\`)return i;throw TypeError(\`@@toPrimitive must return a primitive value.\`)}return(t===\`string\`?String:Number)(e)}function i(e){var t=r(e,\`string\`);return n(t)==\`symbol\`?t:t+\`\`}function a(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?o(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}babelHelpers_asyncToGenerator=t,babelHelpers_objectSpread2=s;})();
393+
394+
//#region src/index.js
395+
babelHelpers_asyncToGenerator(function* () {
396+
yield new Promise((resolve) => setTimeout(resolve, 1e3));
397+
console.log("foo", babelHelpers_objectSpread2({}, "foo"));
398+
})();
399+
//#endregion
400+
})();
401+
"
402+
`)
403+
})
372404
})

packages/vite/src/node/plugins/oxc.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ async function generateRuntimeHelpers(
584584
const exportNames = [...outputCode.matchAll(cjsExportRE)].map((m) => m[1])
585585
return (
586586
`var ${exportNames.map((n) => `babelHelpers_${n}`).join(', ')};` +
587-
`!(() => {${output.output[0].code.replace(cjsExportRE, ';babelHelpers_$1=')}})();`
587+
`!(() => {${outputCode.replace(cjsExportRE, 'babelHelpers_$1=')}})();`
588588
)
589589
}
590590

0 commit comments

Comments
 (0)