Skip to content

Commit 483d3c6

Browse files
committed
Revert "feat: Use csb-sucrase for compiling node modules (#7064)"
This reverts commit fa44478.
1 parent bc55aa1 commit 483d3c6

File tree

4 files changed

+48
-43
lines changed

4 files changed

+48
-43
lines changed

packages/app/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@
117117
"console": "^0.7.2",
118118
"console-feed": "^3.1.9",
119119
"cropperjs": "^1.5.11",
120-
"csb-sucrase": "^3.28.3",
121120
"css-modules-loader-core": "^1.1.0",
122121
"date-fns": "^2.4.1",
123122
"date-fns-tz": "^1.0.7",

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

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
/* eslint-enable import/default */
22
import { isBabel7 } from '@codesandbox/common/lib/utils/is-babel-7';
33
import { isUrl } from '@codesandbox/common/lib/utils/is-url';
4-
import { transform as transformSucrase } from 'csb-sucrase';
54

65
/* eslint-disable import/default */
76
// @ts-ignore
87
import BabelWorker from 'worker-loader?publicPath=/&name=babel-transpiler.[hash:8].worker.js!./worker/index';
98

109
import delay from '@codesandbox/common/lib/utils/delay';
10+
import { endMeasure, measure } from '@codesandbox/common/lib/utils/metrics';
1111
import { LoaderContext, Manager } from 'sandpack-core';
1212
import WorkerTranspiler from '../worker-transpiler/transpiler';
1313
import getBabelConfig from './babel-parser';
14+
import { getSyntaxInfoFromAst } from './ast/syntax-info';
15+
import { convertEsModule } from './ast/convert-esmodule';
16+
import { ESTreeAST, generateCode, parseModule } from './ast/utils';
17+
import { collectDependenciesFromAST } from './ast/collect-dependencies';
18+
import { rewriteImportMeta } from './ast/rewrite-meta';
1419

1520
const MAX_WORKER_ITERS = 100;
1621

@@ -106,20 +111,45 @@ class BabelTranspiler extends WorkerTranspiler {
106111
// node_modules to commonjs and collecting deps
107112
if (loaderContext.options.simpleRequire || isNodeModule) {
108113
try {
109-
const result = transformSucrase(code, {
110-
transforms: ['dep-collector', 'imports', 'flow', 'jsx'],
111-
});
112-
113-
await addCollectedDependencies(
114-
loaderContext,
115-
Array.from(result.dependencies).map(d => ({
116-
path: d,
117-
}))
118-
);
114+
const ast: ESTreeAST = parseModule(code);
115+
const syntaxInfo = getSyntaxInfoFromAst(ast);
116+
if (!syntaxInfo.jsx) {
117+
// If the code is ESM we transform it to commonjs and return it
118+
if (syntaxInfo.esm) {
119+
measure(`esconvert-${path}`);
120+
convertEsModule(ast);
121+
// We collect requires instead of doing this in convertESModule as some modules also use require
122+
// Which is actually invalid but we probably don't wanna break anyone's code if it works in other bundlers...
123+
const deps = collectDependenciesFromAST(ast);
124+
await addCollectedDependencies(
125+
loaderContext,
126+
deps.map(d => ({
127+
path: d,
128+
}))
129+
);
130+
rewriteImportMeta(ast, {
131+
url: loaderContext.url,
132+
});
133+
endMeasure(`esconvert-${path}`, { silent: true });
134+
return {
135+
transpiledCode: generateCode(ast),
136+
};
137+
}
119138

120-
return {
121-
transpiledCode: result.code,
122-
};
139+
// If the code is commonjs and does not contain any more jsx, we generate and return the code.
140+
measure(`dep-collection-${path}`);
141+
const deps = collectDependenciesFromAST(ast);
142+
await addCollectedDependencies(
143+
loaderContext,
144+
deps.map(d => ({
145+
path: d,
146+
}))
147+
);
148+
endMeasure(`dep-collection-${path}`, { silent: true });
149+
return {
150+
transpiledCode: code,
151+
};
152+
}
123153
} catch (err) {
124154
// do not log this in production, it confuses our users
125155
if (process.env.NODE_ENV === 'development') {

packages/sandpack-core/src/transpiled-module/transpiled-module.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,17 +1051,10 @@ export class TranspiledModule {
10511051
const usedGlobals = globals || {};
10521052
usedGlobals.__dirname = pathUtils.dirname(this.module.path);
10531053
usedGlobals.__filename = this.module.path;
1054-
const self = this;
1055-
// eslint-disable-next-line no-inner-declarations
1056-
function $csbImport(path: string) {
1057-
return manager
1058-
.evaluate(path, self)
1054+
usedGlobals.$csbImport = (path: string) =>
1055+
manager
1056+
.evaluate(path, this)
10591057
.then(result => interopRequireWildcard(result));
1060-
}
1061-
$csbImport.meta = {
1062-
url: this.module.url ? this.module.url : `file://${this.module.path}`,
1063-
};
1064-
usedGlobals.$csbImport = $csbImport;
10651058

10661059
const code =
10671060
this.source.compiledCode +

yarn.lock

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11357,18 +11357,6 @@ crypto-random-string@^1.0.0:
1135711357
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
1135811358
integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
1135911359

11360-
csb-sucrase@^3.28.3:
11361-
version "3.28.3"
11362-
resolved "https://registry.yarnpkg.com/csb-sucrase/-/csb-sucrase-3.28.3.tgz#62d3b46fa6b1334d5fa137b8c1ba3122530a37b5"
11363-
integrity sha512-ASHJbr48zp4TxlsOxdS9/+/ERQhDkDN8uj8rb5m+e6lm/GGvd76xdZbPM10HbejCcmRSjZIoJS0JrCllPsn7WA==
11364-
dependencies:
11365-
commander "^4.0.0"
11366-
glob "7.1.6"
11367-
lines-and-columns "^1.1.6"
11368-
mz "^2.7.0"
11369-
pirates "^4.0.1"
11370-
ts-interface-checker "^0.1.9"
11371-
1137211360
css-animation@^1.3.2:
1137311361
version "1.4.1"
1137411362
resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.4.1.tgz#5b8813125de0fbbbb0bbe1b472ae84221469b7a8"
@@ -23321,7 +23309,7 @@ [email protected], mute-stream@~0.0.4:
2332123309
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
2332223310
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
2332323311

23324-
mz@^2.5.0, mz@^2.7.0:
23312+
mz@^2.5.0:
2332523313
version "2.7.0"
2332623314
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
2332723315
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
@@ -32634,11 +32622,6 @@ ts-easing@^0.2.0:
3263432622
resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec"
3263532623
integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==
3263632624

32637-
ts-interface-checker@^0.1.9:
32638-
version "0.1.13"
32639-
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
32640-
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
32641-
3264232625
ts-invariant@^0.4.0, ts-invariant@^0.4.2, ts-invariant@^0.4.4:
3264332626
version "0.4.4"
3264432627
resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86"

0 commit comments

Comments
 (0)