Skip to content

Commit 51fd903

Browse files
author
Ives van Hoorne
committed
Fix resetting transpilers
1 parent 2a9273c commit 51fd903

File tree

6 files changed

+28
-7
lines changed

6 files changed

+28
-7
lines changed

packages/app/src/sandbox/compile.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,9 @@ async function compile({
338338

339339
if (isNewCombination && !firstLoad) {
340340
// Just reset the whole manager if it's a new combination
341+
if (manager) {
342+
manager.dispose();
343+
}
341344
manager = null;
342345
}
343346
const t = Date.now();

packages/app/src/sandbox/eval/manager.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,14 @@ export default class Manager {
795795
this.clearCache();
796796
}
797797

798+
dispose() {
799+
if (this.preset) {
800+
this.preset.transpilers.forEach(t => {
801+
t.dispose();
802+
});
803+
}
804+
}
805+
798806
clearCache() {
799807
try {
800808
localforage.clear();

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
// @flow
2+
import BabelWorker from 'worker-loader?name=babel-transpiler.[hash].worker.js!./babel-worker.js';
3+
24
import getBabelConfig from './babel-parser';
35
import WorkerTranspiler from '../worker-transpiler';
46
import { type LoaderContext } from '../../transpiled-module';
@@ -12,16 +14,22 @@ class BabelTranspiler extends WorkerTranspiler {
1214
worker: Worker;
1315

1416
constructor() {
15-
super('babel-loader', null, 2, { hasFS: true });
17+
super('babel-loader', BabelWorker, 2, { hasFS: true });
1618
}
1719

20+
startupWorkersInitialized = false;
21+
1822
async getWorker() {
1923
while (typeof window.babelworkers === 'undefined') {
2024
await delay(50); // eslint-disable-line
2125
}
26+
27+
if (window.babelworkers.length === 0) {
28+
return super.getWorker();
29+
}
30+
2231
// We set these up in startup.js.
23-
const worker = window.babelworkers.pop();
24-
return worker;
32+
return window.babelworkers.pop();
2533
}
2634

2735
doTranspilation(code: string, loaderContext: LoaderContext): Promise<void> {
@@ -44,7 +52,7 @@ class BabelTranspiler extends WorkerTranspiler {
4452
code,
4553
config: babelConfig,
4654
path,
47-
loaderOptions: loaderContext.options,
55+
loaderOptions: loaderContext.options || {},
4856

4957
babelTranspilerOptions:
5058
loaderContext.options.configurations &&

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ export default class Transpiler {
2323
/* eslint-disable */
2424
initialize() {}
2525

26+
dispose() {}
27+
2628
cleanModule(loaderContext: LoaderContext) {}
2729

2830
doTranspilation(

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ export default class WorkerTranspiler extends Transpiler {
8484

8585
dispose() {
8686
this.workers.forEach(w => w.terminate());
87+
this.initialized = false;
88+
this.tasks.length = 0;
89+
this.workers.length = 0;
8790
this.idleWorkers.length = 0;
8891
}
8992

packages/react-sandpack/stories/InTheWild.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,6 @@ stories.addWithJSX('babel', () => (
122122
'/index.js': {
123123
code: `import React from 'react';`,
124124
},
125-
'/babel-transpiler.json': {
126-
code: `{ "babelURL": "https://ives.cool" }`,
127-
},
128125
'/.babelrc': {
129126
code: JSON.stringify(
130127
{

0 commit comments

Comments
 (0)