diff --git a/demo/app/app-ssr.ts b/demo/app/app-ssr.ts index e54e869..001ebd7 100644 --- a/demo/app/app-ssr.ts +++ b/demo/app/app-ssr.ts @@ -1,8 +1,8 @@ import PageTitleService from 'ember-page-title/services/page-title'; import Application from 'ember-strict-application-resolver'; - import config from './config.ts'; import Router from './router.ts'; +export { settled } from '@ember/test-helpers'; class App extends Application { modules = { diff --git a/demo/app/components/monaco-editor.gts b/demo/app/components/monaco-editor.gts index d5c1052..a3b6fce 100644 --- a/demo/app/components/monaco-editor.gts +++ b/demo/app/components/monaco-editor.gts @@ -36,6 +36,10 @@ export default class MonacoEditor extends Component { private destroyed = false; private setupEditor = modifier((element: HTMLDivElement) => { + if (import.meta.env.SSR) { + return; + } + this.destroyed = false; const setup = async () => { diff --git a/demo/app/entry.ts b/demo/app/entry.ts index 6969548..fb30b71 100644 --- a/demo/app/entry.ts +++ b/demo/app/entry.ts @@ -1,19 +1,5 @@ -import { shouldRehydrate } from 'vite-ember-ssr/client'; - import Application from './app.ts'; import config from './config.ts'; +import { bootRehydrated } from 'vite-ember-ssr/client'; -if (shouldRehydrate()) { - const app = Application.create({ ...config.APP, autoboot: false }); - - const buildUrl = (window.location.pathname + window.location.search).replace( - config.rootURL, - '/', - ); - - void app.visit(buildUrl, { - _renderMode: 'rehydrate', - }); -} else { - Application.create(config.APP); -} +bootRehydrated(Application, config); diff --git a/demo/package.json b/demo/package.json index a35c151..359d2fe 100644 --- a/demo/package.json +++ b/demo/package.json @@ -34,6 +34,7 @@ }, "dependencies": { "@eksml/xml": "workspace:*", + "@ember/test-helpers": "^5.4.3", "@embroider/macros": "1.20.2", "@embroider/router": "3.0.6", "@formkit/auto-animate": "^0.9.0", @@ -73,7 +74,7 @@ "eslint": "9.39.4", "typescript": "6.0.2", "vite": "7.3.1", - "vite-ember-ssr": "0.1.0-alpha.10" + "vite-ember-ssr": "0.4.1" }, "engines": { "node": ">= 24" diff --git a/demo/vite.config.mjs b/demo/vite.config.mjs index 00b4f97..94d2298 100644 --- a/demo/vite.config.mjs +++ b/demo/vite.config.mjs @@ -30,7 +30,6 @@ export default defineConfig({ 'visualise', 'benchmark', ], - rehydrate: true, }), removeCrossOrigin(), ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45a4ad7..3823fb9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: '@eksml/xml': specifier: workspace:* version: link:../eksml + '@ember/test-helpers': + specifier: ^5.4.3 + version: 5.4.3(@babel/core@7.29.0)(@glint/template@1.7.7) '@embroider/macros': specifier: 1.20.2 version: 1.20.2(@babel/core@7.29.0)(@glint/template@1.7.7) @@ -136,8 +139,8 @@ importers: specifier: 7.3.1 version: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1) vite-ember-ssr: - specifier: 0.1.0-alpha.10 - version: 0.1.0-alpha.10(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: 0.4.1 + version: 0.4.1(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)) eksml: dependencies: @@ -802,6 +805,9 @@ packages: '@ember/edition-utils@1.2.0': resolution: {integrity: sha512-VmVq/8saCaPdesQmftPqbFtxJWrzxNGSQ+e8x8LLe3Hjm36pJ04Q8LeORGZkAeOhldoUX9seLGmSaHeXkIqoog==} + '@ember/test-helpers@5.4.3': + resolution: {integrity: sha512-WeNABJsXBidEXP87AH5gaI/KAyb0zEUYJxWa31A/Us5lqg85E3tPlHjBwCrlReOrJbSgvvArMnrdCwt7TRpjPQ==} + '@ember/test-waiters@4.1.1': resolution: {integrity: sha512-HbK70JYCDJcGI0CrwcbjeL2QHAn0HLwa3oGep7mr6l/yO95U7JYA8VN+/9VTsWJTmKueLtWayUqEmGS3a3mVOg==} @@ -2429,6 +2435,9 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} + dom-element-descriptors@0.5.1: + resolution: {integrity: sha512-DLayMRQ+yJaziF4JJX1FMjwjdr7wdTr1y9XvZ+NfHELfOMcYDnCHneAYXAS4FT1gLILh4V0juMZohhH1N5FsoQ==} + dom-serializer@3.0.0: resolution: {integrity: sha512-x+9D6nkC8tdXOQUS32egtZpZFLP90+HBZmWjuT920srbJvD/zPgFB9t4k3pEhlw5BQrXStQtRc1Y1zuriXk+Nw==} engines: {node: '>=20.19.0'} @@ -4874,11 +4883,11 @@ packages: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} - vite-ember-ssr@0.1.0-alpha.10: - resolution: {integrity: sha512-VvwKSJ5hvUAqto+P+hd4Qw6DWpAJwC9+q/IkxLLw5NqAtf2AWHkNvp/66WEN2kLjSgLa0XwQR03wJzFTsNVqHg==} + vite-ember-ssr@0.4.1: + resolution: {integrity: sha512-thMm18koHJ32vpJadPBNnTBq9sVZEES6mkFieRvag69RzhVJQdsLJFuL3DStm+ExJq9VNk2PYBsZwxX5OJClWw==} engines: {node: '>=22'} peerDependencies: - vite: ^6.0.0 || ^7.0.0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} @@ -5960,6 +5969,18 @@ snapshots: '@ember/edition-utils@1.2.0': {} + '@ember/test-helpers@5.4.3(@babel/core@7.29.0)(@glint/template@1.7.7)': + dependencies: + '@ember/test-waiters': 4.1.1(@babel/core@7.29.0)(@glint/template@1.7.7) + '@embroider/addon-shim': 1.10.2 + '@simple-dom/interface': 1.4.0 + decorator-transforms: 2.3.1(@babel/core@7.29.0) + dom-element-descriptors: 0.5.1 + transitivePeerDependencies: + - '@babel/core' + - '@glint/template' + - supports-color + '@ember/test-waiters@4.1.1(@babel/core@7.29.0)(@glint/template@1.7.7)': dependencies: '@embroider/addon-shim': 1.10.2 @@ -7695,6 +7716,8 @@ snapshots: dependencies: esutils: 2.0.3 + dom-element-descriptors@0.5.1: {} + dom-serializer@3.0.0: dependencies: domelementtype: 3.0.0 @@ -10494,7 +10517,7 @@ snapshots: validate-npm-package-name@6.0.2: {} - vite-ember-ssr@0.1.0-alpha.10(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)): + vite-ember-ssr@0.4.1(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)): dependencies: happy-dom: 20.8.9 tinypool: 2.1.0