From cb0bb185cba27775813422d21f224eac4d7bdfe0 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Wed, 17 Jul 2024 10:53:21 +0100 Subject: [PATCH 1/3] add failing test for helpers from app-tree-merging in templates --- pnpm-lock.yaml | 30 +++++++++++++++++++++++++- tests/scenarios/package.json | 4 +++- tests/scenarios/vite-internals-test.ts | 9 +++++++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 367a8de25..0b8970049 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1820,6 +1820,9 @@ importers: ember-modifier: specifier: ^4.0.0 version: 4.1.0(ember-source@3.28.12) + ember-page-title: + specifier: ^8.2.3 + version: 8.2.3(ember-source@3.28.12) ember-qunit-7: specifier: npm:ember-qunit@^7.0.0 version: /ember-qunit@7.0.0(@ember/test-helpers@2.9.4)(ember-source@3.28.12)(qunit@2.21.0)(webpack@5.92.0) @@ -1856,6 +1859,9 @@ importers: ember-truth-helpers: specifier: ^3.0.0 version: 3.1.1 + ember-welcome-page: + specifier: ^7.0.2 + version: 7.0.2 execa: specifier: ^5.1.1 version: 5.1.1 @@ -2796,7 +2802,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.7(supports-color@8.1.1) + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 /@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.24.7): @@ -15464,6 +15470,19 @@ packages: - supports-color dev: true + /ember-page-title@8.2.3(ember-source@3.28.12): + resolution: {integrity: sha512-9XH4EVPCpSCyXRsLPzdDydU4HgQnaVeJJTrRF0WVh5bZERI9DgxuHv1NPmZU28todHRH91KcBc5nx8kIVJmqUw==} + engines: {node: 16.* || >= 18} + peerDependencies: + ember-source: '>= 3.28.0' + dependencies: + '@embroider/addon-shim': 1.8.9 + '@simple-dom/document': 1.4.0 + ember-source: 3.28.12(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true + /ember-page-title@8.2.3(ember-source@5.3.0): resolution: {integrity: sha512-9XH4EVPCpSCyXRsLPzdDydU4HgQnaVeJJTrRF0WVh5bZERI9DgxuHv1NPmZU28todHRH91KcBc5nx8kIVJmqUw==} engines: {node: 16.* || >= 18} @@ -16527,6 +16546,15 @@ packages: - supports-color dev: true + /ember-welcome-page@7.0.2: + resolution: {integrity: sha512-TyaKxFIRXhODW5BTbqD/by0Gu8Z9B9AA1ki3Bzzm6fOj2b30Qlprtt+XUG52kS0zVNmxYj/WWoT0TsKiU61VOw==} + engines: {node: 14.* || 16.* || >= 18} + dependencies: + '@embroider/addon-shim': 1.8.9 + transitivePeerDependencies: + - supports-color + dev: true + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} diff --git a/tests/scenarios/package.json b/tests/scenarios/package.json index aa7e19f96..bc494d645 100644 --- a/tests/scenarios/package.json +++ b/tests/scenarios/package.json @@ -83,6 +83,7 @@ "ember-engines": "^0.8.23", "ember-inline-svg": "^0.2.1", "ember-modifier": "^4.0.0", + "ember-page-title": "^8.2.3", "ember-qunit-7": "npm:ember-qunit@^7.0.0", "ember-source": "~3.28.11", "ember-source-4.12": "npm:ember-source@~4.12.0", @@ -93,8 +94,9 @@ "ember-source-beta": "npm:ember-source@beta", "ember-source-canary": "https://s3.amazonaws.com/builds.emberjs.com/canary/shas/370cf34f9e86df17b880f11fef35a5a0f24ff38a.tgz", "ember-source-latest": "npm:ember-source@latest", - "ember-truth-helpers": "^3.0.0", "ember-test-helpers-2": "npm:@ember/test-helpers@^2.0.0", + "ember-truth-helpers": "^3.0.0", + "ember-welcome-page": "^7.0.2", "execa": "^5.1.1", "node-fetch": "2.7.0", "popper.js": "^1.16.1", diff --git a/tests/scenarios/vite-internals-test.ts b/tests/scenarios/vite-internals-test.ts index 01d57e5e9..fdcf96c8c 100644 --- a/tests/scenarios/vite-internals-test.ts +++ b/tests/scenarios/vite-internals-test.ts @@ -10,13 +10,20 @@ const { module: Qmodule, test } = QUnit; appScenarios .only('canary') .map('vite-internals', app => { + app.linkDevDependency('ember-page-title', { baseDir: __dirname }); + app.linkDevDependency('ember-welcome-page', { baseDir: __dirname }); app.mergeFiles({ app: { components: { 'fancy-button.hbs': `

I'm fancy

`, }, templates: { - 'application.hbs': '', + 'application.hbs': `{{page-title "MyApp"}} + + + {{outlet}} + + `, }, }, }); From 9710aca6cfbb2c902dad9039ac11934141942328 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Tue, 16 Jul 2024 15:42:25 +0100 Subject: [PATCH 2/3] fix module-resolver finding an external helper in esbuild --- packages/core/src/module-resolver.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/src/module-resolver.ts b/packages/core/src/module-resolver.ts index 0a64dc3a1..d2d7c513c 100644 --- a/packages/core/src/module-resolver.ts +++ b/packages/core/src/module-resolver.ts @@ -702,7 +702,10 @@ export class Resolver { }) ); - if (helperMatch.type === 'found') { + // for the case of 'ignored' that means that esbuild found this helper in an external + // package so it should be considered found in this case and we should not look for a + // component with this name + if (helperMatch.type === 'found' || helperMatch.type === 'ignored') { return logTransition('resolve to ambiguous case matched a helper', request, request.resolveTo(helperMatch)); } From dc9a396f5288fd80ad340e5ac03baeb2f95daf8e Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Wed, 17 Jul 2024 11:04:41 +0100 Subject: [PATCH 3/3] fix module resolver finding an external component in esbuild --- packages/core/src/module-resolver.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/core/src/module-resolver.ts b/packages/core/src/module-resolver.ts index d2d7c513c..b9767de58 100644 --- a/packages/core/src/module-resolver.ts +++ b/packages/core/src/module-resolver.ts @@ -665,6 +665,10 @@ export class Resolver { }) ); + if (resolution.type === 'ignored') { + return logTransition(`resolving to ignored component`, request, request.resolveTo(resolution)); + } + // .hbs is a resolvable extension for us, so we need to exclude it here. // It matches as a priority lower than .js, so finding an .hbs means // there's definitely not a .js.