From 4e7a357d9a2d4748968f90b12c74e5f1009aeb89 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Sun, 5 Oct 2025 11:29:04 -0400 Subject: [PATCH 01/12] begin docs-app --- files/docs-app/app.gts | 0 files/docs-app/styles.css | 0 files/index.html | 24 ++++++++++++++++++++++++ files/package.json | 1 + 4 files changed, 25 insertions(+) create mode 100644 files/docs-app/app.gts create mode 100644 files/docs-app/styles.css create mode 100644 files/index.html diff --git a/files/docs-app/app.gts b/files/docs-app/app.gts new file mode 100644 index 0000000..e69de29 diff --git a/files/docs-app/styles.css b/files/docs-app/styles.css new file mode 100644 index 0000000..e69de29 diff --git a/files/index.html b/files/index.html new file mode 100644 index 0000000..1d8becf --- /dev/null +++ b/files/index.html @@ -0,0 +1,24 @@ + + + + + + + Docs App + + + + + + + + + + + + + diff --git a/files/package.json b/files/package.json index a4bdcba..b58938d 100644 --- a/files/package.json +++ b/files/package.json @@ -84,6 +84,7 @@ "main": "addon-main.cjs" }, "imports": { + "#docs-app/*": "./docs-app/*", "#src/*": "./src/*" }, "exports": { From cd69db4d3027764156b817243b93231779c38860 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Sun, 5 Oct 2025 11:57:16 -0400 Subject: [PATCH 02/12] Add some boilerplate --- files/docs-app/app.gts | 21 +++++++++++++++++++++ files/docs-app/templates/application.gts | 5 +++++ files/tests/test-helper.__ext__ | 10 ++++++---- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 files/docs-app/templates/application.gts diff --git a/files/docs-app/app.gts b/files/docs-app/app.gts index e69de29..f8239e1 100644 --- a/files/docs-app/app.gts +++ b/files/docs-app/app.gts @@ -0,0 +1,21 @@ +import EmberApp from 'ember-strict-application-resolver'; +import EmberRouter from '@ember/routing/router'; +import PageTitleService from 'ember-page-title/services/page-title'; + +class Router extends EmberRouter { + location = 'history'; + rootURL = '/'; +} + +export const docsAppRegistry = { + './router': Router, + './services/page-title': PageTitleService, + // add any custom services here + // import.meta.glob('./services/*', { eager: true }), +} + +export class App extends EmberApp { + modules = docsAppRegistry; +} + +Router.map(function() { }); diff --git a/files/docs-app/templates/application.gts b/files/docs-app/templates/application.gts new file mode 100644 index 0000000..f8a4b51 --- /dev/null +++ b/files/docs-app/templates/application.gts @@ -0,0 +1,5 @@ +const greeting = 'hello'; + + diff --git a/files/tests/test-helper.__ext__ b/files/tests/test-helper.__ext__ index 7ff84dd..ac5a512 100644 --- a/files/tests/test-helper.__ext__ +++ b/files/tests/test-helper.__ext__ @@ -1,19 +1,21 @@ -import EmberApp from 'ember-strict-application-resolver'; import EmberRouter from '@ember/routing/router'; import * as QUnit from 'qunit'; import { setApplication } from '@ember/test-helpers'; import { setup } from 'qunit-dom'; import { start as qunitStart, setupEmberOnerrorValidation } from 'ember-qunit'; +import { App, docsAppRegistry } from '#dosc-app/app'; + class Router extends EmberRouter { location = 'none'; rootURL = '/'; } -class TestApp extends EmberApp { +class TestApp extends App { modules = { - './router': { default: Router }, - // add any custom services here + ...docsAppRegistry, + './router': Router, + // add any overrides here // import.meta.glob('./services/*', { eager: true }), }; } From 14519cfdd439da40b2b9760a77ffd1390a0d0e6f Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:35:09 -0400 Subject: [PATCH 03/12] Re-organize a bit --- files/demo-app/app.gts | 32 +++++++++++++++++++ files/{docs-app => demo-app}/styles.css | 0 .../templates/application.gts | 0 files/docs-app/app.gts | 21 ------------ files/tests/test-helper.__ext__ | 10 +++--- 5 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 files/demo-app/app.gts rename files/{docs-app => demo-app}/styles.css (100%) rename files/{docs-app => demo-app}/templates/application.gts (100%) delete mode 100644 files/docs-app/app.gts diff --git a/files/demo-app/app.gts b/files/demo-app/app.gts new file mode 100644 index 0000000..3f110a2 --- /dev/null +++ b/files/demo-app/app.gts @@ -0,0 +1,32 @@ +import EmberApp from 'ember-strict-application-resolver'; +import EmberRouter from '@ember/routing/router'; +import PageTitleService from 'ember-page-title/services/page-title'; + +class Router extends EmberRouter { + location = 'history'; + rootURL = '/'; +} + +export class App extends EmberApp { + /** + * Any services or anything from the addon that needs to be in the app-tree registry + * will need to be manually specified here. + * + * Techniques to avoid needing this: + * - private services + * - require the consuming app import and configure themselves + * (which is what we're emulating here) + */ + modules = { + './router': Router, + './services/page-title': PageTitleService, + /** + * NOTE: this glob will import everything matching the glob, + * and includes non-services in the services directory. + */ + ...import.meta.glob('./services/**/*', { eager: true }), + ...import.meta.glob('./templates/**/*', { eager: true }), + }; +} + +Router.map(function() { }); diff --git a/files/docs-app/styles.css b/files/demo-app/styles.css similarity index 100% rename from files/docs-app/styles.css rename to files/demo-app/styles.css diff --git a/files/docs-app/templates/application.gts b/files/demo-app/templates/application.gts similarity index 100% rename from files/docs-app/templates/application.gts rename to files/demo-app/templates/application.gts diff --git a/files/docs-app/app.gts b/files/docs-app/app.gts deleted file mode 100644 index f8239e1..0000000 --- a/files/docs-app/app.gts +++ /dev/null @@ -1,21 +0,0 @@ -import EmberApp from 'ember-strict-application-resolver'; -import EmberRouter from '@ember/routing/router'; -import PageTitleService from 'ember-page-title/services/page-title'; - -class Router extends EmberRouter { - location = 'history'; - rootURL = '/'; -} - -export const docsAppRegistry = { - './router': Router, - './services/page-title': PageTitleService, - // add any custom services here - // import.meta.glob('./services/*', { eager: true }), -} - -export class App extends EmberApp { - modules = docsAppRegistry; -} - -Router.map(function() { }); diff --git a/files/tests/test-helper.__ext__ b/files/tests/test-helper.__ext__ index ac5a512..7ff84dd 100644 --- a/files/tests/test-helper.__ext__ +++ b/files/tests/test-helper.__ext__ @@ -1,21 +1,19 @@ +import EmberApp from 'ember-strict-application-resolver'; import EmberRouter from '@ember/routing/router'; import * as QUnit from 'qunit'; import { setApplication } from '@ember/test-helpers'; import { setup } from 'qunit-dom'; import { start as qunitStart, setupEmberOnerrorValidation } from 'ember-qunit'; -import { App, docsAppRegistry } from '#dosc-app/app'; - class Router extends EmberRouter { location = 'none'; rootURL = '/'; } -class TestApp extends App { +class TestApp extends EmberApp { modules = { - ...docsAppRegistry, - './router': Router, - // add any overrides here + './router': { default: Router }, + // add any custom services here // import.meta.glob('./services/*', { eager: true }), }; } From 7c960022d558f33aab703a145fc631cac6c9eee9 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:35:49 -0400 Subject: [PATCH 04/12] Rename --- files/index.html | 2 +- files/package.json | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/files/index.html b/files/index.html index 1d8becf..8e0e8b4 100644 --- a/files/index.html +++ b/files/index.html @@ -15,7 +15,7 @@ diff --git a/files/package.json b/files/package.json index b58938d..a4bdcba 100644 --- a/files/package.json +++ b/files/package.json @@ -84,7 +84,6 @@ "main": "addon-main.cjs" }, "imports": { - "#docs-app/*": "./docs-app/*", "#src/*": "./src/*" }, "exports": { From 5d8140c703b7013c49b053a9fee044d6b8f1e0ae Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:38:55 -0400 Subject: [PATCH 05/12] More comments --- files/demo-app/app.gts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/files/demo-app/app.gts b/files/demo-app/app.gts index 3f110a2..59d02e5 100644 --- a/files/demo-app/app.gts +++ b/files/demo-app/app.gts @@ -25,6 +25,12 @@ export class App extends EmberApp { * and includes non-services in the services directory. */ ...import.meta.glob('./services/**/*', { eager: true }), + /** + * These imports are not magic, but we do require that all entries in the + * modules object match a ./[type]/[name] pattern. + * + * See: https://rfcs.emberjs.com/id/1132-default-strict-resolver + */ ...import.meta.glob('./templates/**/*', { eager: true }), }; } From e8ca935a4bd311682e98c5de3d46d250643086ed Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:10:16 -0400 Subject: [PATCH 06/12] Formatting --- .prettierrc.cjs | 1 + files/demo-app/templates/application.gts | 2 +- package.json | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.prettierrc.cjs b/.prettierrc.cjs index a50563c..b23cc88 100644 --- a/.prettierrc.cjs +++ b/.prettierrc.cjs @@ -2,6 +2,7 @@ module.exports = { printWidth: 100, + plugins: ['prettier-plugin-ember-template-tag'], overrides: [ { files: '*.{js,ts,mjs,mts,cjs,cts}', diff --git a/files/demo-app/templates/application.gts b/files/demo-app/templates/application.gts index f8a4b51..5fdabe2 100644 --- a/files/demo-app/templates/application.gts +++ b/files/demo-app/templates/application.gts @@ -1,5 +1,5 @@ const greeting = 'hello'; diff --git a/package.json b/package.json index b7cb254..f4067cb 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ }, "devDependencies": { "prettier": "^3.5.3", + "prettier-plugin-ember-template-tag": "2.1.0", "release-plan": "^0.16.0" }, "dependencies": { From 736410c551afce0e193cbfcfd3acaa5b298f266b Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:11:42 -0400 Subject: [PATCH 07/12] Lockfile --- pnpm-lock.yaml | 213 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4912304..68060fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,9 @@ importers: prettier: specifier: ^3.5.3 version: 3.5.3 + prettier-plugin-ember-template-tag: + specifier: 2.1.0 + version: 2.1.0(prettier@3.5.3) release-plan: specifier: ^0.16.0 version: 0.16.0 @@ -68,18 +71,34 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.8': resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + '@babel/core@7.26.10': resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} engines: {node: '>=6.9.0'} + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.27.0': resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} @@ -88,12 +107,20 @@ packages: resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.27.0': resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.25.9': resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} @@ -102,12 +129,22 @@ packages: resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.26.0': resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.25.9': resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} @@ -130,23 +167,44 @@ packages: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.27.0': resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.27.0': resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-decorators@7.25.9': resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} engines: {node: '>=6.9.0'} @@ -173,14 +231,26 @@ packages: resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.27.0': resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.27.0': resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -366,10 +436,16 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -384,6 +460,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@manypkg/find-root@2.2.3': resolution: {integrity: sha512-jtEZKczWTueJYHjGpxU3KJQ08Gsrf4r6Q2GjmPp/RGk5leeYAA1eyDADSAF+KVCsQ6EwZd/FMcOFCoMhtqdCtQ==} engines: {node: '>=14.18.0'} @@ -1419,6 +1498,9 @@ packages: content-tag@3.1.2: resolution: {integrity: sha512-Z+MGhZfnFFKzYC+pUTWXnoDYhfiXP9ojZe3JbwsYufmDuoeq2EvuDyeFAJ/RnKokUwz5s9bQhDOrbvSYRShcrQ==} + content-tag@4.0.0: + resolution: {integrity: sha512-qqJiY9nueYAI396MOmfOk+w/0KL6ERKxANQcSKcR0CrNTc38yT//b73l+WHr9brZx57bFHNaW7a/6Yll0bn95w==} + content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} @@ -3169,6 +3251,12 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + prettier-plugin-ember-template-tag@2.1.0: + resolution: {integrity: sha512-Ium+m2zHSZKzRFt1Shn+sv8j1BzfFWP3E0tZeKTKP1U7v/tMyLuQNBRyRCJ7REdKc9bWkIJG/hCSf0CKqCVU1w==} + engines: {node: 18.* || >= 20} + peerDependencies: + prettier: '>= 3.0.0' + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -4213,8 +4301,16 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.26.8': {} + '@babel/compat-data@7.28.4': {} + '@babel/core@7.26.10': dependencies: '@ampproject/remapping': 2.3.0 @@ -4235,6 +4331,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.27.0': dependencies: '@babel/parser': 7.27.0 @@ -4243,6 +4359,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.25.9': dependencies: '@babel/types': 7.27.0 @@ -4255,6 +4379,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -4268,6 +4400,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-globals@7.28.0': {} + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: '@babel/traverse': 7.27.0 @@ -4282,6 +4416,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -4291,6 +4432,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.25.9': dependencies: '@babel/types': 7.27.0 @@ -4315,19 +4465,34 @@ snapshots: '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-validator-option@7.27.1': {} + '@babel/helpers@7.27.0': dependencies: '@babel/template': 7.27.0 '@babel/types': 7.27.0 + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + '@babel/parser@7.27.0': dependencies: '@babel/types': 7.27.0 + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -4359,6 +4524,12 @@ snapshots: '@babel/parser': 7.27.0 '@babel/types': 7.27.0 + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@babel/traverse@7.27.0': dependencies: '@babel/code-frame': 7.26.2 @@ -4371,11 +4542,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.27.0': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@bcoe/v8-coverage@0.2.3': {} '@cnakazawa/watch@1.0.4': @@ -4479,12 +4667,22 @@ snapshots: '@istanbuljs/schema@0.1.3': {} + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -4496,6 +4694,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@manypkg/find-root@2.2.3': dependencies: '@manypkg/tools': 1.1.2 @@ -5592,6 +5795,8 @@ snapshots: content-tag@3.1.2: {} + content-tag@4.0.0: {} + content-type@1.0.5: {} continuable-cache@0.3.1: {} @@ -7582,6 +7787,14 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prettier-plugin-ember-template-tag@2.1.0(prettier@3.5.3): + dependencies: + '@babel/core': 7.28.4 + content-tag: 4.0.0 + prettier: 3.5.3 + transitivePeerDependencies: + - supports-color + prettier@2.8.8: {} prettier@3.5.3: {} From f86438623c9bb2856150b980cc13a39642669d34 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:20:37 -0400 Subject: [PATCH 08/12] Fix some TS --- files/demo-app/app.gts | 26 +++++++++++++------------- files/tsconfig.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/files/demo-app/app.gts b/files/demo-app/app.gts index 59d02e5..d7f1916 100644 --- a/files/demo-app/app.gts +++ b/files/demo-app/app.gts @@ -9,21 +9,21 @@ class Router extends EmberRouter { export class App extends EmberApp { /** - * Any services or anything from the addon that needs to be in the app-tree registry - * will need to be manually specified here. - * - * Techniques to avoid needing this: - * - private services - * - require the consuming app import and configure themselves - * (which is what we're emulating here) - */ + * Any services or anything from the addon that needs to be in the app-tree registry + * will need to be manually specified here. + * + * Techniques to avoid needing this: + * - private services + * - require the consuming app import and configure themselves + * (which is what we're emulating here) + */ modules = { './router': Router, './services/page-title': PageTitleService, - /** - * NOTE: this glob will import everything matching the glob, - * and includes non-services in the services directory. - */ + /** + * NOTE: this glob will import everything matching the glob, + * and includes non-services in the services directory. + */ ...import.meta.glob('./services/**/*', { eager: true }), /** * These imports are not magic, but we do require that all entries in the @@ -35,4 +35,4 @@ export class App extends EmberApp { }; } -Router.map(function() { }); +Router.map(function () {}); diff --git a/files/tsconfig.json b/files/tsconfig.json index ef0c5ab..1fabf7c 100644 --- a/files/tsconfig.json +++ b/files/tsconfig.json @@ -5,7 +5,7 @@ */ { "extends": "@ember/app-tsconfig", - "include": ["src/**/*", "tests/**/*", "unpublished-development-types/**/*"], + "include": ["src/**/*", "tests/**/*", "unpublished-development-types/**/*", "demo-app/**/*"], "compilerOptions": { "rootDir": ".", "types": [ From 9839ac35160f6ae5b0a7788bfb6817428896488a Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:22:57 -0400 Subject: [PATCH 09/12] Add ember-page-title to package.json --- files/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/files/package.json b/files/package.json index a4bdcba..4d48919 100644 --- a/files/package.json +++ b/files/package.json @@ -59,6 +59,7 @@ "ember-source": "^6.7.0", "ember-strict-application-resolver": "^0.1.0", "ember-template-lint": "^7.9.0", + "ember-page-title": "^8.2.0", "eslint": "^9.17.0", "eslint-config-prettier": "^10.1.5", "eslint-plugin-ember": "^12.3.3", From 21641acebc48eed8557a31fe2bdc984399bda574 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:25:07 -0400 Subject: [PATCH 10/12] Add note to the CSS --- files/demo-app/styles.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/files/demo-app/styles.css b/files/demo-app/styles.css index e69de29..fe5e87f 100644 --- a/files/demo-app/styles.css +++ b/files/demo-app/styles.css @@ -0,0 +1,6 @@ +/** +* See: https://vite.dev/guide/features.html#css +* for features beyond normal CSS that are available to you. +* +* This CSS is meant for the demo-app only, and will not be included in the published assets for this library. +*/ From aedcc1fbce83cedb0e7fa4e090a5905f0584c00e Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:00:37 -0400 Subject: [PATCH 11/12] Evade prettier --- files/demo-app/templates/application.gts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/files/demo-app/templates/application.gts b/files/demo-app/templates/application.gts index 5fdabe2..7677302 100644 --- a/files/demo-app/templates/application.gts +++ b/files/demo-app/templates/application.gts @@ -1,5 +1,7 @@ const greeting = 'hello'; From c8bb5f746d1fa2ea8f6573f0bd569ed96f24f3f0 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:13:49 -0400 Subject: [PATCH 12/12] Prettier: tsconfig --- files/tsconfig.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/files/tsconfig.json b/files/tsconfig.json index 1fabf7c..4162dc6 100644 --- a/files/tsconfig.json +++ b/files/tsconfig.json @@ -5,7 +5,12 @@ */ { "extends": "@ember/app-tsconfig", - "include": ["src/**/*", "tests/**/*", "unpublished-development-types/**/*", "demo-app/**/*"], + "include": [ + "src/**/*", + "tests/**/*", + "unpublished-development-types/**/*", + "demo-app/**/*" + ], "compilerOptions": { "rootDir": ".", "types": [