Skip to content

Commit 4c177d9

Browse files
committed
Fix macros wrong initialization
1 parent 0dba21e commit 4c177d9

File tree

3 files changed

+74
-40
lines changed

3 files changed

+74
-40
lines changed

packages/app/config/webpack.common.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,32 @@ module.exports = {
119119
],
120120
loader: 'babel-loader',
121121
query: {
122+
overrides: [
123+
!__DEV__ && {
124+
include: path.join(__dirname, '../../sandbox'),
125+
presets: [
126+
[
127+
'@babel/preset-env',
128+
{
129+
targets: {
130+
ie: 11,
131+
},
132+
modules: 'umd',
133+
useBuiltIns: false,
134+
},
135+
],
136+
],
137+
},
138+
].filter(Boolean),
122139
presets: [
123140
'@babel/preset-flow',
124141
[
125142
'@babel/preset-env',
126143
{
127144
targets: {
128-
ie: 11,
129-
esmodules: true,
145+
browsers: 'last 2 versions',
130146
},
131-
modules: 'umd',
147+
modules: false,
132148
useBuiltIns: false,
133149
},
134150
],

packages/app/src/sandbox/eval/transpilers/babel/index.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,16 @@ class BabelTranspiler extends WorkerTranspiler {
7373
const loaderOptions = loaderContext.options || {};
7474

7575
const dependencies =
76-
configs.package &&
77-
configs.package.parsed &&
78-
configs.package.parsed.dependencies || {};
76+
(configs.package &&
77+
configs.package.parsed &&
78+
configs.package.parsed.dependencies) ||
79+
{};
7980

8081
const devDependencies =
81-
configs.package &&
82-
configs.package.parsed &&
83-
configs.package.parsed.devDependencies || {};
82+
(configs.package &&
83+
configs.package.parsed &&
84+
configs.package.parsed.devDependencies) ||
85+
{};
8486

8587
const isV7 =
8688
loaderContext.options.isV7 || isBabel7(dependencies, devDependencies);

packages/app/src/sandbox/eval/transpilers/babel/worker/babel-worker.js

Lines changed: 47 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,46 @@ async function installPreset(Babel, BFSRequire, preset, currentPath, isV7) {
157157
);
158158
}
159159

160+
function compile(code, customConfig, path) {
161+
let result;
162+
try {
163+
result = Babel.transform(code, customConfig);
164+
} catch (e) {
165+
e.message = e.message.replace('unknown', path);
166+
167+
// Match the line+col
168+
const lineColRegex = /\((\d+):(\d+)\)/;
169+
170+
const match = e.message.match(lineColRegex);
171+
if (match && match[1] && match[2]) {
172+
const lineNumber = +match[1];
173+
const colNumber = +match[2];
174+
175+
const niceMessage =
176+
e.message + '\n\n' + codeFrame(code, lineNumber, colNumber);
177+
178+
e.message = niceMessage;
179+
}
180+
181+
throw e;
182+
}
183+
184+
const dependencies = getDependencies(detective.metadata(result));
185+
186+
dependencies.forEach(dependency => {
187+
self.postMessage({
188+
type: 'add-dependency',
189+
path: dependency.path,
190+
isGlob: dependency.type === 'glob',
191+
});
192+
});
193+
194+
self.postMessage({
195+
type: 'result',
196+
transpiledCode: result.code,
197+
});
198+
}
199+
160200
self.importScripts(
161201
process.env.NODE_ENV === 'development'
162202
? `${process.env.CODESANDBOX_HOST || ''}/static/js/babel.7.00-1.min.js`
@@ -430,44 +470,20 @@ self.addEventListener('message', async event => {
430470
plugins,
431471
};
432472

433-
let result;
434473
try {
435-
result = Babel.transform(code, customConfig);
474+
compile(code, customConfig, path);
436475
} catch (e) {
437-
// Match the line+col
438-
const lineColRegex = /\((\d+):(\d+)\)/;
439-
440-
const match = e.message.match(lineColRegex);
441-
if (match && match[1] && match[2]) {
442-
const lineNumber = +match[1];
443-
const colNumber = +match[2];
444-
445-
const niceMessage =
446-
e.message + '\n\n' + codeFrame(code, lineNumber, colNumber);
476+
if (e.code === 'EIO') {
477+
// BrowserFS was needed but wasn't initialized
478+
await waitForFs();
447479

448-
e.message = niceMessage;
480+
compile(code, customConfig, path);
481+
} else {
482+
throw e;
449483
}
450-
451-
throw e;
452484
}
453-
454-
const dependencies = getDependencies(detective.metadata(result));
455-
456-
dependencies.forEach(dependency => {
457-
self.postMessage({
458-
type: 'add-dependency',
459-
path: dependency.path,
460-
isGlob: dependency.type === 'glob',
461-
});
462-
});
463-
464-
self.postMessage({
465-
type: 'result',
466-
transpiledCode: result.code,
467-
});
468485
} catch (e) {
469486
console.error(e);
470-
e.message = e.message.replace('unknown', path);
471487
self.postMessage({
472488
type: 'error',
473489
error: buildWorkerError(e),

0 commit comments

Comments
 (0)