Skip to content

Commit 956729c

Browse files
authored
Merge pull request #69 from bantic/fix-named-helper-exports
Fix an issue with helpers where we re-export the default as a named export
2 parents 9dc3100 + 56a0ce1 commit 956729c

3 files changed

Lines changed: 31 additions & 8 deletions

File tree

lib/transforms/import-declarations.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,31 @@ var path_utils = require('../utils/path');
33
function transformer(file, api) {
44
var j = api.jscodeshift;
55

6-
return j(file.source)
7-
.find(j.ImportDeclaration)
6+
var root = j(file.source);
7+
8+
var foundHelper;
9+
10+
root.find(j.ImportDeclaration, {
11+
source: { value: '@ember/component/helper' },
12+
}).filter(path => {
13+
return path.value.specifiers[0].local.name === 'helper';
14+
})
15+
.forEach(function(path) {
16+
foundHelper = true;
17+
var specifier = j.importSpecifier(j.identifier('helper'), j.identifier('buildHelper'));
18+
19+
path.value.specifiers[0] = specifier;
20+
});
21+
22+
if (foundHelper) {
23+
root.find(j.CallExpression, {
24+
callee: { name: 'helper' }
25+
}).forEach(path => {
26+
path.value.callee.name = 'buildHelper';
27+
});
28+
}
29+
30+
root.find(j.ImportDeclaration)
831
.find(j.Literal)
932
.forEach(function(path) {
1033
var importPath = path.value.value + '.js';
@@ -55,9 +78,9 @@ function transformer(file, api) {
5578
// remove extension
5679
newImportPath = newImportPath.slice(0, -targetFileInfo.ext.length);
5780
j(path).replaceWith(j.literal(newImportPath));
58-
})
59-
.toSource();
81+
});
6082

83+
return root.toSource();
6184
}
6285

6386
module.exports = transformer;

test/fixtures/classic-named-exports/input.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ module.exports = {
44
'app.js': 'export default App',
55
'router.js': 'export default Router',
66
helpers: {
7-
'titleize.js': 'export default helper(function() { });',
8-
'capitalize.js': 'export default helper(function() { });'
7+
'titleize.js': 'import { helper } from \'@ember/component/helper\';\nexport default helper(function() { });',
8+
'capitalize.js': 'import { helper } from \'@ember/component/helper\';\nexport default helper(function() { });'
99
}
1010
},
1111

test/fixtures/classic-named-exports/output.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ module.exports = {
44
'router.js': 'export default Router',
55
ui: {
66
components: {
7-
'titleize.js': 'export const helper = helper(function() { });',
7+
'titleize.js': 'import { helper as buildHelper } from \'@ember/component/helper\';\nexport const helper = buildHelper(function() { });',
88
'capitalize': {
9-
'helper.js': 'export default helper(function() { });',
9+
'helper.js': 'import { helper as buildHelper } from \'@ember/component/helper\';\nexport default buildHelper(function() { });',
1010
'helper-integration-test.js': '"capitalize helper test"'
1111
}
1212
}

0 commit comments

Comments
 (0)