Skip to content

Commit 756da46

Browse files
committed
Merge branch 'master' into fix/sucrase-aliased-imports
# By Tiger Oakes (2) and others # Via GitHub * master: feat(wasm): Switch to TypeScript & named exports (rollup#363) feat(node-resolve): Add default export (rollup#361) fix (sucrase): resolve directory imports (rollup#390) docs(typescript): update readme examples (rollup#391) # Conflicts: # packages/sucrase/test/snapshots/test.js.md # packages/sucrase/test/snapshots/test.js.snap # packages/sucrase/test/test.js # pnpm-lock.yaml
2 parents ecccb3c + b899a82 commit 756da46

File tree

21 files changed

+163
-46
lines changed

21 files changed

+163
-46
lines changed

packages/node-resolve/src/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const defaults = {
2929
};
3030
export const DEFAULTS = deepFreeze(deepMerge({}, defaults));
3131

32-
export const nodeResolve = (opts = {}) => {
32+
export function nodeResolve(opts = {}) {
3333
const options = Object.assign({}, defaults, opts);
3434
const { customResolveOptions, extensions, jail } = options;
3535
const warnings = [];
@@ -258,4 +258,6 @@ export const nodeResolve = (opts = {}) => {
258258
return idToPackageInfo.get(id);
259259
}
260260
};
261-
};
261+
}
262+
263+
export default nodeResolve;

packages/node-resolve/types/index.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const DEFAULTS: {
88
resolveOnly: [];
99
};
1010

11-
export interface Options {
11+
export interface RollupNodeResolveOptions {
1212
/**
1313
* If `true`, instructs the plugin to use the `"browser"` property in `package.json`
1414
* files to specify alternative files to load for bundling. This is useful when
@@ -88,4 +88,5 @@ export interface Options {
8888
/**
8989
* Locate modules using the Node resolution algorithm, for using third party modules in node_modules
9090
*/
91-
export const nodeResolve: (options?: Options) => Plugin;
91+
export function nodeResolve(options?: RollupNodeResolveOptions): Plugin;
92+
export default nodeResolve;

packages/sucrase/src/index.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,13 @@ module.exports = function sucrase(opts = {}) {
1414
resolveId(importee, importer) {
1515
if (importer && /^[./]/.test(importee)) {
1616
const resolved = path.resolve(importer ? path.dirname(importer) : process.cwd(), importee);
17+
// resolve in the same order that TypeScript resolves modules
18+
const resolvedFilename = [`${resolved}.ts`, `${resolved}/index.ts`].find((filename) =>
19+
fs.existsSync(filename)
20+
);
1721

18-
if (!fs.existsSync(resolved) && fs.existsSync(`${resolved}.ts`)) {
19-
return `${resolved}.ts`;
22+
if (resolvedFilename) {
23+
return resolvedFilename;
2024
}
2125
}
2226
},
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default (a: number, b: number): number => a * b;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default (c: number, d: number): number => c * d;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default 'Should not be imported';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import dirImport from './example-a';
2+
import fileImport from './example-b';
3+
4+
t.snapshot(dirImport.toString());
5+
t.snapshot(fileImport.toString());

packages/sucrase/test/snapshots/test.js.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,30 @@ Generated by [AVA](https://ava.li).
1010
1111
'() => React.createElement(\'div\', { id: "foo", __self: undefined, __source: {fileName: _jsxFileName, lineNumber: 1}}, "hello world" )'
1212

13-
## converts flow
13+
## converts jsx with custom jsxPragma
1414

1515
> Snapshot 1
1616
17-
'(a, b) => a * b'
17+
'() => FakeReactCreateElement(\'div\', { id: "foo", __self: undefined, __source: {fileName: _jsxFileName, lineNumber: 1}}, "hello world" )'
1818

1919
## converts typescript
2020

2121
> Snapshot 1
2222
2323
'(a, b) => a * b'
2424

25-
## converts jsx with custom jsxPragma
25+
## converts typescript with aliases
2626

2727
> Snapshot 1
2828
29-
'() => FakeReactCreateElement(\'div\', { id: "foo", __self: undefined, __source: {fileName: _jsxFileName, lineNumber: 1}}, "hello world" )'
29+
'(a, b) => a * b'
3030

31-
## converts typescript with aliases
31+
## resolves typescript directory imports
3232

3333
> Snapshot 1
3434
3535
'(a, b) => a * b'
36+
37+
> Snapshot 2
38+
39+
'(c, d) => c * d'
16 Bytes
Binary file not shown.

packages/sucrase/test/test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,5 +72,20 @@ test('converts typescript with aliases', async (t) => {
7272
]
7373
});
7474
t.plan(1);
75+
76+
return testBundle(t, bundle);
77+
});
78+
79+
test('resolves typescript directory imports', async (t) => {
80+
const bundle = await rollup({
81+
input: 'fixtures/typescript-resolve-directory/main.js',
82+
plugins: [
83+
sucrase({
84+
transforms: ['typescript']
85+
})
86+
]
87+
});
88+
t.plan(2);
89+
7590
return testBundle(t, bundle);
7691
});

0 commit comments

Comments
 (0)