From cc5695ca6253bc55537704f92150da270b5eb359 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 17 Mar 2025 11:02:43 +0000 Subject: [PATCH 1/4] fix another ember object cycle in ember 4.8 --- packages/compat/src/compat-adapters/ember-source.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/compat/src/compat-adapters/ember-source.ts b/packages/compat/src/compat-adapters/ember-source.ts index 6cf4ad56f..62cf0f157 100644 --- a/packages/compat/src/compat-adapters/ember-source.ts +++ b/packages/compat/src/compat-adapters/ember-source.ts @@ -464,6 +464,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') + ) + ); + } }, }, }; From 5b80f687e504b119dae664237fd6b3d29d2b9708 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 17 Mar 2025 11:04:38 +0000 Subject: [PATCH 2/4] only update files if they exist in the input tree --- packages/compat/src/compat-adapters/ember-source.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/compat/src/compat-adapters/ember-source.ts b/packages/compat/src/compat-adapters/ember-source.ts index 62cf0f157..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]; From 4a9b117c7d19f688aa6bada478d20536e112fa2d Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 17 Mar 2025 11:05:31 +0000 Subject: [PATCH 3/4] unskip ember 4.4 and 4.8 --- tests/scenarios/scenarios.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/scenarios/scenarios.ts b/tests/scenarios/scenarios.ts index 8c73b7acf..9a5bcb267 100644 --- a/tests/scenarios/scenarios.ts +++ b/tests/scenarios/scenarios.ts @@ -18,7 +18,7 @@ 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' }); + project.linkDevDependency('ember-data', { baseDir: __dirname, resolveName: 'ember-data-5.3' }); } async function lts_4_12(project: Project) { @@ -112,7 +112,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') ); } From ae4dbe5f0c2cba0425f4a0aee1ba7d2d938a8802 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 17 Mar 2025 11:14:33 +0000 Subject: [PATCH 4/4] update ember-cli in older 4.x --- tests/scenarios/scenarios.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/scenarios/scenarios.ts b/tests/scenarios/scenarios.ts index 9a5bcb267..9bffee77f 100644 --- a/tests/scenarios/scenarios.ts +++ b/tests/scenarios/scenarios.ts @@ -17,7 +17,8 @@ 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' }); + // 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' }); }