From 106ceee11261449e1efb6ca861fd5af3b09a926f Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Fri, 30 Aug 2024 15:08:35 -0400 Subject: [PATCH] Implement ember's component-template-resolving deprecation When using embroider with staticComponents enabled, users will never see Ember's [component-template-resolving](https://deprecations.emberjs.com/id/component-template-resolving/) deprecation, since Embroider takes care of implementing the whole feature at build time before Ember can see it at runtime. This implements the same deprecation logic in Embroider apps so everybody can stay consistent. --- packages/core/package.json | 2 + packages/core/src/module-resolver.ts | 17 ++ packages/core/src/virtual-content.ts | 16 ++ pnpm-lock.yaml | 310 +++++++++++++-------------- 4 files changed, 189 insertions(+), 156 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 63989b0c8..299b93112 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -42,6 +42,7 @@ "lodash": "^4.17.21", "resolve": "^1.20.0", "resolve-package-path": "^4.0.1", + "semver": "^7.3.5", "typescript-memoize": "^1.0.1", "walk-sync": "^3.0.0" }, @@ -59,6 +60,7 @@ "@types/lodash": "^4.14.170", "@types/node": "^15.12.2", "@types/resolve": "^1.20.0", + "@types/semver": "^7.3.5", "@types/tmp": "^0.1.0", "fixturify": "^2.1.1", "tmp": "^0.1.0", diff --git a/packages/core/src/module-resolver.ts b/packages/core/src/module-resolver.ts index 386feafd3..0ee58822b 100644 --- a/packages/core/src/module-resolver.ts +++ b/packages/core/src/module-resolver.ts @@ -24,6 +24,7 @@ import { Memoize } from 'typescript-memoize'; import { describeExports } from './describe-exports'; import { readFileSync } from 'fs'; import type UserOptions from './options'; +import { satisfies } from 'semver'; const debug = makeDebug('embroider:resolver'); function logTransition(reason: string, before: R, after: R = before): R { @@ -513,6 +514,11 @@ export class Resolver { } if (hbsModule) { + if (!this.emberVersionSupportsSeparateTemplates) { + throw new Error( + `Components with separately resolved templates were removed at Ember 6.0. Migrate to either co-located js/ts + hbs files or to gjs/gts. https://deprecations.emberjs.com/id/component-template-resolving/. Bad template was: ${hbsModule}.` + ); + } return logTransition( `resolveComponent found legacy HBS`, request, @@ -723,6 +729,17 @@ export class Resolver { return owningEngine; } + get emberVersion(): string { + return this.packageCache.get(this.options.engines[0].root).dependencies.find(d => d.name === 'ember-source')! + .version; + } + + @Memoize() get emberVersionSupportsSeparateTemplates(): boolean { + return satisfies(this.emberVersion, '< 6.0.0-alpha.0', { + includePrerelease: true, + }); + } + private handleRewrittenPackages(request: R): R { if (request.isVirtual) { return request; diff --git a/packages/core/src/virtual-content.ts b/packages/core/src/virtual-content.ts index 63afd4a4b..14cf9c044 100644 --- a/packages/core/src/virtual-content.ts +++ b/packages/core/src/virtual-content.ts @@ -67,6 +67,22 @@ function renderESExternalShim({ moduleName, exports }: { moduleName: string; exp const pairedComponentShim = compile(` import { setComponentTemplate } from "@ember/component"; import template from "{{{js-string-escape relativeHBSModule}}}"; +import { deprecate } from "@ember/debug"; + + +deprecate("Components with separately resolved templates are deprecated. Migrate to either co-located js/ts + hbs files or to gjs/gts. Tried to lookup '{{debugName}}'.", + false, { + id: 'component-template-resolving', + url: 'https://deprecations.emberjs.com/id/component-template-resolving', + until: '6.0.0', + for: 'ember-source', + since: { + available: '5.10.0', + enabled: '5.10.0', + }, + } +); + {{#if relativeJSModule}} import component from "{{{js-string-escape relativeJSModule}}}"; export default setComponentTemplate(template, component); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 465b972a4..c99a3fa44 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -421,6 +421,9 @@ importers: resolve-package-path: specifier: ^4.0.1 version: 4.0.3 + semver: + specifier: ^7.3.5 + version: 7.6.2 typescript-memoize: specifier: ^1.0.1 version: 1.1.1 @@ -467,6 +470,9 @@ importers: '@types/resolve': specifier: ^1.20.0 version: 1.20.6 + '@types/semver': + specifier: ^7.3.5 + version: 7.5.8 '@types/tmp': specifier: ^0.1.0 version: 0.1.0 @@ -1392,7 +1398,7 @@ importers: version: 3.1.1 '@ember/test-helpers': specifier: ^2.9.1 - version: 2.9.4(@babel/core@7.24.7)(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0)(ember-source@4.6.0) + version: 2.9.4(@babel/core@7.24.7)(ember-source@5.11.0) '@embroider/compat': specifier: workspace:* version: link:../../packages/compat @@ -1430,8 +1436,8 @@ importers: specifier: ^5.0.0 version: 5.0.0 ember-cli-babel: - specifier: ^7.26.11 - version: 7.26.11 + specifier: ^8.2.0 + version: 8.2.0(@babel/core@7.24.7) ember-cli-dependency-checker: specifier: ^3.3.1 version: 3.3.2(ember-cli@4.6.0) @@ -1447,9 +1453,6 @@ importers: ember-cli-terser: specifier: ^4.0.2 version: 4.0.2 - ember-data: - specifier: ~4.4.0 - version: 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) ember-fetch: specifier: ^8.1.1 version: 8.1.2 @@ -1461,13 +1464,13 @@ importers: version: 7.0.0 ember-qunit: specifier: ^6.1.1 - version: 6.2.0(@ember/test-helpers@2.9.4)(@glint/template@1.4.0)(ember-source@4.6.0)(qunit@2.21.0)(webpack@5.92.1) + version: 6.2.0(@ember/test-helpers@2.9.4)(ember-source@5.11.0)(qunit@2.21.0)(webpack@5.92.1) ember-resolver: specifier: ^10.1.0 - version: 10.1.1(@ember/string@3.1.1)(ember-source@4.6.0) + version: 10.1.1(@ember/string@3.1.1)(ember-source@5.11.0) ember-source: - specifier: ~4.6.0 - version: 4.6.0(@babel/core@7.24.7)(@glint/template@1.4.0)(webpack@5.92.1) + specifier: ^5.10.0 + version: 5.11.0(@glimmer/component@1.1.2)(webpack@5.92.1) ember-template-lint: specifier: ^4.10.1 version: 4.18.2 @@ -3994,25 +3997,6 @@ packages: - webpack dev: true - /@ember-data/adapter@4.4.3(@babel/core@7.24.7)(webpack@5.92.1): - resolution: {integrity: sha512-rwcwzffVHosmKgWEOSwvUy8EFazDV08lZvw8uFDK9CrrhUBWGLG8Ugrc1nu3HEAHA9UWNFbaAPKj/R4PvV2igw==} - engines: {node: 12.* || >= 14.*} - dependencies: - '@ember-data/private-build-infra': 4.4.3(@babel/core@7.24.7) - '@ember-data/store': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember/edition-utils': 1.2.0 - '@ember/string': 3.1.1 - ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) - ember-cli-babel: 7.26.11 - ember-cli-test-info: 1.0.0 - ember-cli-typescript: 5.3.0 - transitivePeerDependencies: - - '@babel/core' - - '@glint/template' - - supports-color - - webpack - dev: true - /@ember-data/adapter@4.8.8(@ember-data/store@4.8.8)(@ember/string@3.1.1)(ember-inflector@4.0.2): resolution: {integrity: sha512-vcIdQvOiCYWdQzhTX+bK7IU1URzth2cHL5SX4I6y8MI5hF/4JoFmUXR5X+DqSeeaJs9OvhGRIVIGlENIHhqECQ==} engines: {node: ^14.8.0 || 16.* || >= 18.*} @@ -4161,24 +4145,6 @@ packages: - webpack dev: true - /@ember-data/debug@4.4.3(@babel/core@7.24.7)(webpack@5.92.1): - resolution: {integrity: sha512-ZCE+yD53pPUp4705y3YxrV4Q4+upLt0LY9o9tMWrdV5C7L74aiVyUJ5FqD6fmBsWYEa2TG8nde27gNIW3KlSJw==} - engines: {node: 12.* || >= 14.*} - dependencies: - '@ember-data/private-build-infra': 4.4.3(@babel/core@7.24.7) - '@ember/edition-utils': 1.2.0 - '@ember/string': 3.1.1 - ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) - ember-cli-babel: 7.26.11 - ember-cli-test-info: 1.0.0 - ember-cli-typescript: 5.3.0 - transitivePeerDependencies: - - '@babel/core' - - '@glint/template' - - supports-color - - webpack - dev: true - /@ember-data/debug@4.8.8(@ember/string@3.1.1): resolution: {integrity: sha512-khzgq6y/hTTx5k7fkN8/wcugMS2wnb62gc6zTXvl52nNtpg3S91RzWhOBH0bOUYl51TpNF63xE0MNlGhfh5u4w==} engines: {node: ^14.8.0 || 16.* || >= 18.*} @@ -4513,30 +4479,6 @@ packages: - webpack dev: true - /@ember-data/model@4.4.3(@babel/core@7.24.7)(webpack@5.92.1): - resolution: {integrity: sha512-gHrSGJQUewZ0hqAnDzAehz7DXqBHHT9MKGl/f7/mYMP+QNVQXbPemurc9NAO7nunUJZhDvHYRkMuy0hrdtiT+g==} - engines: {node: 12.* || >= 14.*} - dependencies: - '@ember-data/canary-features': 4.4.3 - '@ember-data/private-build-infra': 4.4.3(@babel/core@7.24.7) - '@ember-data/store': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember/edition-utils': 1.2.0 - '@ember/string': 3.1.1 - ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) - ember-cached-decorator-polyfill: 0.1.4(@babel/core@7.24.7) - ember-cli-babel: 7.26.11 - ember-cli-string-utils: 1.1.0 - ember-cli-test-info: 1.0.0 - ember-cli-typescript: 5.3.0 - ember-compatibility-helpers: 1.2.7(@babel/core@7.24.7) - inflection: 1.13.4 - transitivePeerDependencies: - - '@babel/core' - - '@glint/template' - - supports-color - - webpack - dev: true - /@ember-data/model@4.8.8(@babel/core@7.24.7)(@ember-data/record-data@4.8.8)(@ember-data/store@4.8.8)(@ember-data/tracking@4.8.8)(@ember/string@3.1.1)(ember-inflector@4.0.2)(ember-source@3.28.12): resolution: {integrity: sha512-utHTq6ct7sLnWJms7xk5B0U4PnJs4Iy0lqQvt3hBTmi6/tGVUZ0savGY7DMsu6JV3LtaR+68D+5b4OtZTEqJhA==} engines: {node: ^14.8.0 || 16.* || >= 18.*} @@ -4900,25 +4842,6 @@ packages: - webpack dev: true - /@ember-data/record-data@4.4.3(@babel/core@7.24.7)(webpack@5.92.1): - resolution: {integrity: sha512-hHGSD23qHR+Zd59/P2AqmcFBOAgb22Imcm7aJbXUfQVSpXx2AlcdcrWL8bA6hMaO9yX/KQRTmBazmS0vqTxFug==} - engines: {node: 12.* || >= 14.*} - dependencies: - '@ember-data/canary-features': 4.4.3 - '@ember-data/private-build-infra': 4.4.3(@babel/core@7.24.7) - '@ember-data/store': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember/edition-utils': 1.2.0 - ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) - ember-cli-babel: 7.26.11 - ember-cli-test-info: 1.0.0 - ember-cli-typescript: 5.3.0 - transitivePeerDependencies: - - '@babel/core' - - '@glint/template' - - supports-color - - webpack - dev: true - /@ember-data/record-data@4.8.8(@ember-data/store@4.8.8): resolution: {integrity: sha512-G2eADrAy/R4d7HbPeQTqsIdWZByCfgT6bgE0R7d33YCmLsCnD8o7rNp6ZFpqwG61JqzMNUXauTfpjxvZOXx5sw==} engines: {node: ^14.8.0 || 16.* || >= 18.*} @@ -5042,23 +4965,6 @@ packages: - webpack dev: true - /@ember-data/serializer@4.4.3(@babel/core@7.24.7)(webpack@5.92.1): - resolution: {integrity: sha512-rHL3yraqUBHLjw1y5s0sGCD+xjwJaEWsx/wcVxG5FBIBcMtUQTyp/QLoiqqVfI0/1MOnvpYDjy1Fyioy0gGAZA==} - engines: {node: 12.* || >= 14.*} - dependencies: - '@ember-data/private-build-infra': 4.4.3(@babel/core@7.24.7) - '@ember-data/store': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) - ember-cli-babel: 7.26.11 - ember-cli-test-info: 1.0.0 - ember-cli-typescript: 5.3.0 - transitivePeerDependencies: - - '@babel/core' - - '@glint/template' - - supports-color - - webpack - dev: true - /@ember-data/serializer@4.8.8(@ember-data/store@4.8.8)(@ember/string@3.1.1)(ember-inflector@4.0.2): resolution: {integrity: sha512-h2F6hkVaIBSYdzkI6c3Cr8/H+hc0bivTM/6YDb7AoTNuTVDnFG+HM2Ea8LYh53mDeWaVMJzHCFVr1yxucEPZ9g==} engines: {node: ^14.8.0 || 16.* || >= 18.*} @@ -5195,26 +5101,6 @@ packages: - webpack dev: true - /@ember-data/store@4.4.3(@babel/core@7.24.7)(webpack@5.92.1): - resolution: {integrity: sha512-1kvCV/qO7ULD4fJNfr1NTwQwcPAU/fwxIWj46p2JnpRKg1jwzBNz9E6hQNdQ0kLD2pOUiaHB8J/2J6mCqVljKA==} - engines: {node: 12.* || >= 14.*} - dependencies: - '@ember-data/canary-features': 4.4.3 - '@ember-data/private-build-infra': 4.4.3(@babel/core@7.24.7) - '@ember/string': 3.1.1 - '@glimmer/tracking': 1.1.2 - ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) - ember-cached-decorator-polyfill: 0.1.4(@babel/core@7.24.7) - ember-cli-babel: 7.26.11 - ember-cli-path-utils: 1.0.0 - ember-cli-typescript: 5.3.0 - transitivePeerDependencies: - - '@babel/core' - - '@glint/template' - - supports-color - - webpack - dev: true - /@ember-data/store@4.8.8(@babel/core@7.24.7)(@ember-data/model@4.8.8)(@ember-data/record-data@4.8.8)(@ember-data/tracking@4.8.8)(@ember/string@3.1.1)(ember-source@3.28.12): resolution: {integrity: sha512-grm2RrPwF6U1Rlt/hoHmzNYyfsN5wF6g+mt0bHd2afsq6yjiSTZvEwW6HBYep1+JztgjQ5b/+oMGkZATMe1n/Q==} engines: {node: ^14.8.0 || 16.* || >= 18.*} @@ -5502,6 +5388,28 @@ packages: - supports-color dev: true + /@ember/test-helpers@2.9.4(@babel/core@7.24.7)(ember-source@5.11.0): + resolution: {integrity: sha512-z+Qs1NYWyIVDmrY6WdmOS5mdG1lJ5CFfzh6dRhLfs9lq45deDaDrVNcaCYhnNeJZTvUBK2XR2SvPcZm0RloXdA==} + engines: {node: 10.* || 12.* || 14.* || 15.* || >= 16.*} + peerDependencies: + ember-source: '>=3.8.0' + dependencies: + '@ember/test-waiters': 3.1.0 + '@embroider/macros': 1.16.5(@glint/template@1.4.0) + '@embroider/util': 1.13.1(ember-source@5.11.0) + broccoli-debug: 0.6.5 + broccoli-funnel: 3.0.8 + ember-cli-babel: 7.26.11 + ember-cli-htmlbars: 6.3.0 + ember-destroyable-polyfill: 2.0.3(@babel/core@7.24.7) + ember-source: 5.11.0(@glimmer/component@1.1.2)(webpack@5.92.1) + transitivePeerDependencies: + - '@babel/core' + - '@glint/environment-ember-loose' + - '@glint/template' + - supports-color + dev: true + /@ember/test-helpers@2.9.4(ember-source@3.26.2): resolution: {integrity: sha512-z+Qs1NYWyIVDmrY6WdmOS5mdG1lJ5CFfzh6dRhLfs9lq45deDaDrVNcaCYhnNeJZTvUBK2XR2SvPcZm0RloXdA==} engines: {node: 10.* || 12.* || 14.* || 15.* || >= 16.*} @@ -5699,6 +5607,27 @@ packages: - supports-color dev: true + /@embroider/util@1.13.1(ember-source@5.11.0): + resolution: {integrity: sha512-MRbs2FPO4doQ31YHIYk+QKChEs7k15aTsMk8QmO4eKiuQq9OT0sr1oasObZyGB8cVVbr29WWRWmsNirxzQtHIg==} + engines: {node: 12.* || 14.* || >= 16} + peerDependencies: + '@glint/environment-ember-loose': ^1.0.0 + '@glint/template': ^1.0.0 + ember-source: '*' + peerDependenciesMeta: + '@glint/environment-ember-loose': + optional: true + '@glint/template': + optional: true + dependencies: + '@embroider/macros': 1.16.5(@glint/template@1.4.0) + broccoli-funnel: 3.0.8 + ember-cli-babel: 7.26.11 + ember-source: 5.11.0(@glimmer/component@1.1.2)(webpack@5.92.1) + transitivePeerDependencies: + - supports-color + dev: true + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -8899,9 +8828,6 @@ packages: /ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependenciesMeta: - ajv: - optional: true dependencies: ajv: 8.16.0 @@ -15022,32 +14948,6 @@ packages: - webpack dev: true - /ember-data@4.4.3(@babel/core@7.24.7)(webpack@5.92.1): - resolution: {integrity: sha512-Z67pYs41LoJ2EKQsTOb2QOmv7A4gn72nv9MORYpQnGk8z8stYGtrgZFwATg+NES4mnJsLShdLIWaZNKze7c1HA==} - engines: {node: 12.* || >= 14.*} - dependencies: - '@ember-data/adapter': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember-data/debug': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember-data/model': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember-data/private-build-infra': 4.4.3(@babel/core@7.24.7) - '@ember-data/record-data': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember-data/serializer': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember-data/store': 4.4.3(@babel/core@7.24.7)(webpack@5.92.1) - '@ember/edition-utils': 1.2.0 - '@ember/string': 3.1.1 - '@glimmer/env': 0.1.7 - broccoli-merge-trees: 4.2.0 - ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) - ember-cli-babel: 7.26.11 - ember-cli-typescript: 5.3.0 - ember-inflector: 4.0.2 - transitivePeerDependencies: - - '@babel/core' - - '@glint/template' - - supports-color - - webpack - dev: true - /ember-data@4.8.8(@babel/core@7.24.7)(ember-source@3.28.12): resolution: {integrity: sha512-Cal/BxVeLH4cVZEVf8OzGm12B5mCaupHbc96kZFGomQ7NMIIUsS1Kep1OVGlsEkOTjfwg0F0KsNG6pHoUFfvtw==} engines: {node: ^14.8.0 || 16.* || >= 18.*} @@ -15572,6 +15472,32 @@ packages: - webpack dev: true + /ember-qunit@6.2.0(@ember/test-helpers@2.9.4)(ember-source@5.11.0)(qunit@2.21.0)(webpack@5.92.1): + resolution: {integrity: sha512-mC+0bp8DwWzJLn8SW3GS8KDZIkl4yLsNYwMi5Dw6+aFllq7FM2crd/dfY4MuOIHK7GKdjtmWJTMGnjSpeSayaw==} + engines: {node: 14.* || 16.* || >= 18} + peerDependencies: + '@ember/test-helpers': ^2.9.3 + ember-source: '>=3.28' + qunit: ^2.13.0 + dependencies: + '@ember/test-helpers': 2.9.4(@babel/core@7.24.7)(ember-source@5.11.0) + broccoli-funnel: 3.0.8 + broccoli-merge-trees: 3.0.2 + common-tags: 1.8.2 + ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) + ember-cli-babel: 7.26.11 + ember-cli-test-loader: 3.1.0 + ember-source: 5.11.0(@glimmer/component@1.1.2)(webpack@5.92.1) + qunit: 2.21.0 + resolve-package-path: 4.0.3 + silent-error: 1.1.1 + validate-peer-dependencies: 2.2.0 + transitivePeerDependencies: + - '@glint/template' + - supports-color + - webpack + dev: true + /ember-qunit@7.0.0(@ember/test-helpers@3.3.0)(ember-source@3.28.12)(qunit@2.21.0): resolution: {integrity: sha512-KhrndHYEXsHnXvmsGyJLJQ6VCudXaRs5dzPZBsdttZJIhsB6PmYAvq2Q+mh3GRDT/59T/sRDrB3FD3/lATS8aA==} engines: {node: 16.* || >= 18} @@ -15716,6 +15642,23 @@ packages: - supports-color dev: true + /ember-resolver@10.1.1(@ember/string@3.1.1)(ember-source@5.11.0): + resolution: {integrity: sha512-y1zzn6C4YGJui+tJzcCKlsf1oSOSVAkRrvmg8OwqVIKnALKKb9ihx2qLCslHg8x0wJvJgMtDMXgrczvQrZW0Lw==} + engines: {node: 14.* || 16.* || >= 18} + peerDependencies: + '@ember/string': ^3.0.1 + ember-source: ^4.8.3 || >= 5.0.0 + peerDependenciesMeta: + ember-source: + optional: true + dependencies: + '@ember/string': 3.1.1 + ember-cli-babel: 7.26.11 + ember-source: 5.11.0(@glimmer/component@1.1.2)(webpack@5.92.1) + transitivePeerDependencies: + - supports-color + dev: true + /ember-resolver@11.0.1(ember-source@5.3.0): resolution: {integrity: sha512-ucBk3oM+PR+AfYoSUXeQh8cDQS1sSiEKp4Pcgbew5cFMSqPxJfqd1zyZsfQKNTuyubeGmWxBOyMVSTvX2LeCyg==} engines: {node: 14.* || 16.* || >= 18} @@ -16095,6 +16038,61 @@ packages: - webpack dev: true + /ember-source@5.11.0(@glimmer/component@1.1.2)(webpack@5.92.1): + resolution: {integrity: sha512-ufjjTyyaVKBpgTf0NrX7HQqzphcgpNQdkMss2SENkHkM9cidcdEPxulqcMNFxjHCsLBE7rGxmPFSci3x7LdIzA==} + engines: {node: '>= 18.*'} + peerDependencies: + '@glimmer/component': ^1.1.2 + dependencies: + '@babel/core': 7.24.7 + '@ember/edition-utils': 1.2.0 + '@glimmer/compiler': 0.92.0 + '@glimmer/component': 1.1.2(@babel/core@7.24.7) + '@glimmer/destroyable': 0.92.0 + '@glimmer/env': 0.1.7 + '@glimmer/global-context': 0.92.0 + '@glimmer/interfaces': 0.92.0 + '@glimmer/manager': 0.92.0 + '@glimmer/node': 0.92.0 + '@glimmer/opcode-compiler': 0.92.0 + '@glimmer/owner': 0.92.0 + '@glimmer/program': 0.92.0 + '@glimmer/reference': 0.92.0 + '@glimmer/runtime': 0.92.0 + '@glimmer/syntax': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/validator': 0.92.0 + '@glimmer/vm': 0.92.0 + '@glimmer/vm-babel-plugins': 0.92.0(@babel/core@7.24.7) + '@simple-dom/interface': 1.4.0 + backburner.js: 2.8.0 + broccoli-file-creator: 2.1.1 + broccoli-funnel: 3.0.8 + broccoli-merge-trees: 4.2.0 + chalk: 4.1.2 + ember-auto-import: 2.7.4(@glint/template@1.4.0)(webpack@5.92.1) + ember-cli-babel: 8.2.0(@babel/core@7.24.7) + ember-cli-get-component-path-option: 1.0.0 + ember-cli-is-package-missing: 1.0.0 + ember-cli-normalize-entity-name: 1.0.0 + ember-cli-path-utils: 1.0.0 + ember-cli-string-utils: 1.1.0 + ember-cli-typescript-blueprint-polyfill: 0.1.0 + ember-cli-version-checker: 5.1.2 + ember-router-generator: 2.0.0 + inflection: 2.0.1 + route-recognizer: 0.3.4 + router_js: 8.0.5(route-recognizer@0.3.4) + semver: 7.6.2 + silent-error: 1.1.1 + simple-html-tokenizer: 0.5.11 + transitivePeerDependencies: + - '@glint/template' + - rsvp + - supports-color + - webpack + dev: true + /ember-source@5.3.0(@babel/core@7.24.7)(@glimmer/component@1.1.2)(@glint/template@1.4.0)(webpack@5.92.1): resolution: {integrity: sha512-MnsPEYo2gArYzlY0uu5bBH60oNYcgcayYQEd27nJumuaceN1sMLMu1jGQmjiQzZ4b6U5edEUNQbCIZ/9TXbASw==} engines: {node: '>= 16.*'}