Skip to content

Commit 216ad12

Browse files
committed
feat: Add support for .sucrase.(js|jsx|ts|tsx) extensions
1 parent e9376a1 commit 216ad12

File tree

10 files changed

+152
-0
lines changed

10 files changed

+152
-0
lines changed

Diff for: index.js

+44
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ function endsInEsbuildTs(filename) {
3535
function endsInEsbuildTsx(filename) {
3636
return filename.endsWith('.esbuild.tsx');
3737
}
38+
function endsInSucraseJs(filename) {
39+
return filename.endsWith('.sucrase.js');
40+
}
41+
function endsInSucraseJsx(filename) {
42+
return filename.endsWith('.sucrase.jsx');
43+
}
44+
function endsInSucraseTs(filename) {
45+
return filename.endsWith('.sucrase.ts');
46+
}
47+
function endsInSucraseTsx(filename) {
48+
return filename.endsWith('.sucrase.tsx');
49+
}
3850

3951
var mjsStub = path.join(__dirname, 'mjs-stub');
4052

@@ -152,6 +164,38 @@ var extensions = {
152164
'.litcoffee': 'coffeescript/register',
153165
'.mjs': mjsStub,
154166
'.node': null,
167+
'.sucrase.js': {
168+
module: 'sucrase/dist/register',
169+
register: function (hook) {
170+
hook.registerJS({
171+
matcher: endsInSucraseJs
172+
});
173+
}
174+
},
175+
'.sucrase.jsx': {
176+
module: 'sucrase/dist/register',
177+
register: function (hook) {
178+
hook.registerJSX({
179+
matcher: endsInSucraseJsx
180+
});
181+
}
182+
},
183+
'.sucrase.ts': {
184+
module: 'sucrase/dist/register',
185+
register: function (hook) {
186+
hook.registerTS({
187+
matcher: endsInSucraseTs
188+
});
189+
}
190+
},
191+
'.sucrase.tsx': {
192+
module: 'sucrase/dist/register',
193+
register: function (hook) {
194+
hook.registerTSX({
195+
matcher: endsInSucraseTsx
196+
});
197+
}
198+
},
155199
'.toml': {
156200
module: 'toml-require',
157201
register: function (hook) {

Diff for: test/fixtures/sucrase.js/0/package.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"dependencies": {
3+
"sucrase": "^3.12.1"
4+
}
5+
}

Diff for: test/fixtures/sucrase.js/0/test.sucrase.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Foo {
2+
#x = 1;
3+
#y = 2;
4+
}
5+
6+
export default {
7+
data: {
8+
trueKey: true,
9+
falseKey: false,
10+
subKey: {
11+
subProp: 1,
12+
},
13+
},
14+
};

Diff for: test/fixtures/sucrase.jsx/0/package.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"dependencies": {
3+
"sucrase": "^3.12.1"
4+
}
5+
}

Diff for: test/fixtures/sucrase.jsx/0/test.sucrase.jsx

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const React = {
2+
createElement(Component) {
3+
return Component();
4+
},
5+
};
6+
7+
class Foo {
8+
#x = 1;
9+
#y = 2;
10+
}
11+
12+
function Bar() {
13+
const foo = new Foo();
14+
15+
return foo;
16+
}
17+
18+
const a = <Bar />;
19+
20+
export default {
21+
data: {
22+
trueKey: true,
23+
falseKey: false,
24+
subKey: {
25+
subProp: 1,
26+
},
27+
},
28+
};

Diff for: test/fixtures/sucrase.ts/0/package.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"dependencies": {
3+
"sucrase": "^3.12.1"
4+
}
5+
}

Diff for: test/fixtures/sucrase.ts/0/test.sucrase.ts

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Foo {
2+
#x: number = 1;
3+
#y: number = 2;
4+
}
5+
6+
export default {
7+
data: {
8+
trueKey: true as boolean,
9+
falseKey: false as boolean,
10+
subKey: {
11+
subProp: 1,
12+
},
13+
},
14+
} as const;

Diff for: test/fixtures/sucrase.tsx/0/package.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"dependencies": {
3+
"sucrase": "^3.12.1"
4+
}
5+
}

Diff for: test/fixtures/sucrase.tsx/0/test.sucrase.tsx

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const React = {
2+
createElement(Component) {
3+
return Component();
4+
},
5+
};
6+
7+
class Foo {
8+
#x: number = 1;
9+
#y: number = 2;
10+
}
11+
12+
function Bar() {
13+
const foo = new Foo();
14+
15+
return foo;
16+
}
17+
18+
const a = <Bar />;
19+
20+
export default {
21+
data: {
22+
trueKey: true as boolean,
23+
falseKey: false as boolean,
24+
subKey: {
25+
subProp: 1,
26+
},
27+
},
28+
} as const;

Diff for: test/index.js

+4
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ describe('interpret.extensions', function () {
158158
case '.esbuild.jsx':
159159
case '.esbuild.ts':
160160
case '.esbuild.tsx':
161+
case '.sucrase.js':
162+
case '.sucrase.jsx':
163+
case '.sucrase.ts':
164+
case '.sucrase.tsx':
161165
expected = {
162166
default: {
163167
data: {

0 commit comments

Comments
 (0)