diff --git a/lib/transforms/import-declarations.js b/lib/transforms/import-declarations.js index 21ce4bc..7c7e7e1 100644 --- a/lib/transforms/import-declarations.js +++ b/lib/transforms/import-declarations.js @@ -3,8 +3,31 @@ var path_utils = require('../utils/path'); function transformer(file, api) { var j = api.jscodeshift; - return j(file.source) - .find(j.ImportDeclaration) + var root = j(file.source); + + var foundHelper; + + root.find(j.ImportDeclaration, { + source: { value: '@ember/component/helper' }, + }).filter(path => { + return path.value.specifiers[0].local.name === 'helper'; + }) + .forEach(function(path) { + foundHelper = true; + var specifier = j.importSpecifier(j.identifier('helper'), j.identifier('buildHelper')); + + path.value.specifiers[0] = specifier; + }); + + if (foundHelper) { + root.find(j.CallExpression, { + callee: { name: 'helper' } + }).forEach(path => { + path.value.callee.name = 'buildHelper'; + }); + } + + root.find(j.ImportDeclaration) .find(j.Literal) .forEach(function(path) { var importPath = path.value.value + '.js'; @@ -55,9 +78,9 @@ function transformer(file, api) { // remove extension newImportPath = newImportPath.slice(0, -targetFileInfo.ext.length); j(path).replaceWith(j.literal(newImportPath)); - }) - .toSource(); + }); + return root.toSource(); } module.exports = transformer; diff --git a/test/fixtures/classic-named-exports/input.js b/test/fixtures/classic-named-exports/input.js index ff8bc73..4f65b75 100644 --- a/test/fixtures/classic-named-exports/input.js +++ b/test/fixtures/classic-named-exports/input.js @@ -4,8 +4,8 @@ module.exports = { 'app.js': 'export default App', 'router.js': 'export default Router', helpers: { - 'titleize.js': 'export default helper(function() { });', - 'capitalize.js': 'export default helper(function() { });' + 'titleize.js': 'import { helper } from \'@ember/component/helper\';\nexport default helper(function() { });', + 'capitalize.js': 'import { helper } from \'@ember/component/helper\';\nexport default helper(function() { });' } }, diff --git a/test/fixtures/classic-named-exports/output.js b/test/fixtures/classic-named-exports/output.js index 76c65e9..5c70b9c 100644 --- a/test/fixtures/classic-named-exports/output.js +++ b/test/fixtures/classic-named-exports/output.js @@ -4,9 +4,9 @@ module.exports = { 'router.js': 'export default Router', ui: { components: { - 'titleize.js': 'export const helper = helper(function() { });', + 'titleize.js': 'import { helper as buildHelper } from \'@ember/component/helper\';\nexport const helper = buildHelper(function() { });', 'capitalize': { - 'helper.js': 'export default helper(function() { });', + 'helper.js': 'import { helper as buildHelper } from \'@ember/component/helper\';\nexport default buildHelper(function() { });', 'helper-integration-test.js': '"capitalize helper test"' } }