diff --git a/packages/compat/src/compat-adapters/ember-source.ts b/packages/compat/src/compat-adapters/ember-source.ts index 6cf4ad56f..d6588de38 100644 --- a/packages/compat/src/compat-adapters/ember-source.ts +++ b/packages/compat/src/compat-adapters/ember-source.ts @@ -404,6 +404,10 @@ function updateFileWithTransform( file: string, transformFunction: Babel.PluginItem | Babel.PluginItem[] ) { + // only update the file if it exists - this helps the codemods to work across many different versions + if (!existsSync(resolve(context.inputPaths[0], file))) { + return; + } let inSource = readFileSync(resolve(context.inputPaths[0], file), 'utf8'); let plugins = Array.isArray(transformFunction) ? transformFunction : [transformFunction]; @@ -464,6 +468,15 @@ class FixCycleImports extends Plugin { path.node.source = t.stringLiteral('@ember/array/make'); path.node.specifiers = [t.importDefaultSpecifier(t.identifier('makeArray'))]; } + + if (path.node.source.value === '@ember/-internals/runtime') { + path.replaceWith( + t.importDeclaration( + [t.importSpecifier(t.identifier('ActionHandler'), t.identifier('default'))], + t.stringLiteral('@ember/-internals/runtime/lib/mixins/action_handler') + ) + ); + } }, }, }; diff --git a/tests/scenarios/scenarios.ts b/tests/scenarios/scenarios.ts index 8c73b7acf..9bffee77f 100644 --- a/tests/scenarios/scenarios.ts +++ b/tests/scenarios/scenarios.ts @@ -17,8 +17,9 @@ async function lts_4_4(project: Project) { async function lts_4_8(project: Project) { project.linkDevDependency('ember-source', { baseDir: __dirname, resolveName: 'ember-source-4.8' }); - project.linkDevDependency('ember-cli', { baseDir: __dirname, resolveName: 'ember-cli-4.8' }); - project.linkDevDependency('ember-data', { baseDir: __dirname, resolveName: 'ember-data-4.8' }); + // ember-cli 4.12 is the earliest version that can have an async function + project.linkDevDependency('ember-cli', { baseDir: __dirname, resolveName: 'ember-cli-4.12' }); + project.linkDevDependency('ember-data', { baseDir: __dirname, resolveName: 'ember-data-5.3' }); } async function lts_4_12(project: Project) { @@ -112,7 +113,6 @@ export function fullSupportMatrix(scenarios: Scenarios) { // new vite based system is working as we like .skip('lts_3_28') .skip('lts_4_4') - .skip('lts_4_8') ); }