diff --git a/src/Svelte/assets/dist/render_controller.d.ts b/src/Svelte/assets/dist/render_controller.d.ts index ae4130baf1a..e96286e70dc 100644 --- a/src/Svelte/assets/dist/render_controller.d.ts +++ b/src/Svelte/assets/dist/render_controller.d.ts @@ -14,8 +14,9 @@ export default class extends Controller; + disconnect(): Promise; + _destroyIfExists(): Promise; private dispatchEvent; + private mountSvelteComponent; } diff --git a/src/Svelte/assets/dist/render_controller.js b/src/Svelte/assets/dist/render_controller.js index 4eba984e0f4..463a2af91d6 100644 --- a/src/Svelte/assets/dist/render_controller.js +++ b/src/Svelte/assets/dist/render_controller.js @@ -1,14 +1,14 @@ import { Controller } from '@hotwired/stimulus'; class default_1 extends Controller { - connect() { + async connect() { this.element.innerHTML = ''; this.props = this.propsValue ?? undefined; this.intro = this.introValue ?? undefined; this.dispatchEvent('connect'); const Component = window.resolveSvelteComponent(this.componentValue); - this._destroyIfExists(); - this.app = new Component({ + await this._destroyIfExists(); + this.app = await this.mountSvelteComponent(Component, { target: this.element, props: this.props, intro: this.intro, @@ -18,13 +18,19 @@ class default_1 extends Controller { component: Component, }); } - disconnect() { - this._destroyIfExists(); + async disconnect() { + await this._destroyIfExists(); this.dispatchEvent('unmount'); } - _destroyIfExists() { + async _destroyIfExists() { if (this.element.root !== undefined) { - this.element.root.$destroy(); + const { unmount } = await import('svelte'); + if (unmount) { + unmount(this.element.root); + } + else { + this.element.root.$destroy(); + } delete this.element.root; } } @@ -37,6 +43,13 @@ class default_1 extends Controller { }; this.dispatch(name, { detail, prefix: 'svelte' }); } + async mountSvelteComponent(Component, options) { + const { mount } = await import('svelte'); + if (mount) { + return mount(Component, options); + } + return new Component(options); + } } default_1.values = { component: String, diff --git a/src/Svelte/assets/package.json b/src/Svelte/assets/package.json index 95eabf51129..58b1ce73449 100644 --- a/src/Svelte/assets/package.json +++ b/src/Svelte/assets/package.json @@ -20,12 +20,12 @@ }, "peerDependencies": { "@hotwired/stimulus": "^3.0.0", - "svelte": "^3.0 || ^4.0" + "svelte": "^3.0 || ^4.0 || ^5.0" }, "devDependencies": { "@hotwired/stimulus": "^3.0.0", - "@sveltejs/vite-plugin-svelte": "^2.4.6", + "@sveltejs/vite-plugin-svelte": "^3.1.2", "@types/webpack-env": "^1.16", - "svelte": "^3.0 || ^4.0" + "svelte": "^3.0 || ^4.0 || ^5.0" } } diff --git a/src/Svelte/assets/src/render_controller.ts b/src/Svelte/assets/src/render_controller.ts index 70852eb982f..44f7edbb775 100644 --- a/src/Svelte/assets/src/render_controller.ts +++ b/src/Svelte/assets/src/render_controller.ts @@ -1,5 +1,5 @@ import { Controller } from '@hotwired/stimulus'; -import type { SvelteComponent } from 'svelte'; +import type { SvelteComponent, ComponentConstructorOptions, ComponentType } from 'svelte'; export default class extends Controller { private app: SvelteComponent; @@ -17,7 +17,7 @@ export default class extends Controller { intro: Boolean, }; - connect() { + async connect() { this.element.innerHTML = ''; this.props = this.propsValue ?? undefined; @@ -27,10 +27,9 @@ export default class extends Controller { const Component = window.resolveSvelteComponent(this.componentValue); - this._destroyIfExists(); + await this._destroyIfExists(); - // @see https://svelte.dev/docs#run-time-client-side-component-api-creating-a-component - this.app = new Component({ + this.app = await this.mountSvelteComponent(Component, { target: this.element, props: this.props, intro: this.intro, @@ -43,14 +42,21 @@ export default class extends Controller { }); } - disconnect() { - this._destroyIfExists(); + async disconnect() { + await this._destroyIfExists(); this.dispatchEvent('unmount'); } - _destroyIfExists() { + async _destroyIfExists() { if (this.element.root !== undefined) { - this.element.root.$destroy(); + // @ts-ignore + const { unmount } = await import('svelte'); + if (unmount) { + // `unmount` is only available in Svelte >= 5 + unmount(this.element.root); + } else { + this.element.root.$destroy(); + } delete this.element.root; } } @@ -64,4 +70,19 @@ export default class extends Controller { }; this.dispatch(name, { detail, prefix: 'svelte' }); } + + // @see https://svelte.dev/docs#run-time-client-side-component-api-creating-a-component + private async mountSvelteComponent( + Component: ComponentType, + options: ComponentConstructorOptions + ): Promise { + // @ts-ignore + const { mount } = await import('svelte'); + if (mount) { + // `mount` is only available in Svelte >= 5 + return mount(Component, options); + } + + return new Component(options); + } } diff --git a/src/Svelte/assets/test/fixtures/MyComponent.svelte b/src/Svelte/assets/test/fixtures/MyComponent.svelte index c5f9d4eb515..616d52de483 100644 --- a/src/Svelte/assets/test/fixtures/MyComponent.svelte +++ b/src/Svelte/assets/test/fixtures/MyComponent.svelte @@ -1,8 +1,8 @@ - - -
-
Hello {name}
+ + +
+
Hello {name}
\ No newline at end of file diff --git a/src/Svelte/assets/test/fixtures/MyComponentSvelte5.svelte b/src/Svelte/assets/test/fixtures/MyComponentSvelte5.svelte new file mode 100644 index 00000000000..257a6907bad --- /dev/null +++ b/src/Svelte/assets/test/fixtures/MyComponentSvelte5.svelte @@ -0,0 +1,7 @@ + + +
+
Hello {name}
+
\ No newline at end of file diff --git a/src/Svelte/assets/test/register_controller.test.ts b/src/Svelte/assets/test/register_controller.test.ts index 35eb6e333a7..3731b2dd47f 100644 --- a/src/Svelte/assets/test/register_controller.test.ts +++ b/src/Svelte/assets/test/register_controller.test.ts @@ -9,11 +9,13 @@ import { registerSvelteControllerComponents } from '../src/register_controller'; import MyComponent from './fixtures/MyComponent.svelte'; +import MyComponentSvelte5 from './fixtures/MyComponentSvelte5.svelte'; import RequireContext = __WebpackModuleApi.RequireContext; const createFakeFixturesContext = (): RequireContext => { const files: any = { './MyComponent.svelte': { default: MyComponent }, + './MyComponentSvelte5.svelte': { default: MyComponentSvelte5 }, }; const context = (id: string): any => files[id]; @@ -32,5 +34,7 @@ describe('registerSvelteControllerComponents', () => { expect(resolveComponent).not.toBeUndefined(); expect(resolveComponent('MyComponent')).toBe(MyComponent); expect(resolveComponent('MyComponent')).not.toBeUndefined(); + expect(resolveComponent('MyComponentSvelte5')).toBe(MyComponentSvelte5); + expect(resolveComponent('MyComponentSvelte5')).not.toBeUndefined(); }); }); diff --git a/src/Svelte/assets/test/render_controller.test.ts b/src/Svelte/assets/test/render_controller.test.ts index b2d3fbe5130..bbc2f9912f8 100644 --- a/src/Svelte/assets/test/render_controller.test.ts +++ b/src/Svelte/assets/test/render_controller.test.ts @@ -12,6 +12,7 @@ import { getByTestId, waitFor } from '@testing-library/dom'; import { clearDOM, mountDOM } from '@symfony/stimulus-testing'; import SvelteController from '../src/render_controller'; import MyComponent from './fixtures/MyComponent.svelte'; +import { VERSION as SVELTE_VERSION } from 'svelte/compiler'; // Controller used to check the actual controller was properly booted class CheckController extends Controller { @@ -83,7 +84,24 @@ describe('SvelteController', () => { await waitFor(() => expect(component.innerHTML).toContain('
Hello without props
')); }); - it('connect with props and intro', async () => { + it('unmount correctly', async () => { + const container = mountDOM(` +
+ `); + + const component = getByTestId(container, 'component'); + + application = startStimulus(); + + await waitFor(() => expect(component.innerHTML).toContain('
Hello without props
')); + component.remove(); + await waitFor(() => expect(component).not.toBeInTheDocument()); + }); + + // Disabled for Svelte 5 : https://github.com/sveltejs/svelte/issues/11280 + it.skipIf(SVELTE_VERSION >= '5')('connect with props and intro', async () => { const container = mountDOM(`
+ * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { Application } from '@hotwired/stimulus'; +import { getByTestId, waitFor } from '@testing-library/dom'; +import { clearDOM, mountDOM } from '@symfony/stimulus-testing'; +import SvelteController from '../src/render_controller'; +import MyComponentSvelte5 from './fixtures/MyComponentSvelte5.svelte'; +import { VERSION as SVELTE_VERSION } from 'svelte/compiler'; + +const startStimulus = () => { + const application = Application.start(); + application.register('svelte', SvelteController); + + return application; +}; + +(window as any).resolveSvelteComponent = () => { + return MyComponentSvelte5; +}; + +describe.skipIf(SVELTE_VERSION < '5')('Svelte5Controller', () => { + let application: Application; + + afterEach(() => { + clearDOM(); + application.stop(); + }); + + it('connect with props', async () => { + const container = mountDOM(` +
+ `); + + const component = getByTestId(container, 'component'); + + application = startStimulus(); + + await waitFor(() => expect(component.innerHTML).toContain('
Hello Svelte 5 !
')); + }); + + it('connect without props', async () => { + const container = mountDOM(` +
+ `); + + const component = getByTestId(container, 'component'); + + application = startStimulus(); + + await waitFor(() => expect(component.innerHTML).toContain('
Hello without props
')); + }); +}); diff --git a/src/Svelte/assets/vitest.config.mjs b/src/Svelte/assets/vitest.config.mjs index 2400e2a19a9..a3f48240d78 100644 --- a/src/Svelte/assets/vitest.config.mjs +++ b/src/Svelte/assets/vitest.config.mjs @@ -3,9 +3,12 @@ import { defineConfig, mergeConfig } from 'vitest/config'; import { svelte } from '@sveltejs/vite-plugin-svelte'; import configShared from '../../../vitest.config.mjs' -export default mergeConfig( - configShared, - defineConfig({ - plugins: [svelte()], - }) -); +export default defineConfig(configEnv => mergeConfig( + configShared, + defineConfig({ + plugins: [svelte()], + resolve: { + conditions: configEnv.mode === 'test' ? ['browser'] : [], + }, + }) +)) diff --git a/src/Svelte/doc/index.rst b/src/Svelte/doc/index.rst index 3dc0a92f405..4b9aad11e1a 100644 --- a/src/Svelte/doc/index.rst +++ b/src/Svelte/doc/index.rst @@ -8,7 +8,7 @@ Svelte is a JavaScript framework for building user interfaces. Symfony UX Svelte provides tools to render Svelte components from Twig, handling rendering and data transfers. -Symfony UX Svelte supports Svelte 3 and Svelte 4. +Symfony UX Svelte supports Svelte 3, 4 and 5. Installation ------------ @@ -51,7 +51,7 @@ Next, install a package to help Svelte: That's it! Any files inside ``assets/svelte/controllers/`` can now be rendered as Svelte components. -If you are using Svelte 4, you will have to add ``browser``, ``import`` and ``svelte`` +If you are using Svelte 4 or 5, you will have to add ``browser``, ``import`` and ``svelte`` to the ``conditionNames`` array. This is necessary as per `the Svelte 4 migration guide`_ for bundlers such as webpack, to ensure that lifecycle callbacks are internally invoked. diff --git a/yarn.lock b/yarn.lock index a40a02fcb94..b2fce49b4c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,7 +22,7 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.1": +"@ampproject/remapping@npm:^2.3.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" dependencies: @@ -2246,7 +2246,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -2701,34 +2701,34 @@ __metadata: languageName: node linkType: hard -"@sveltejs/vite-plugin-svelte-inspector@npm:^1.0.4": - version: 1.0.4 - resolution: "@sveltejs/vite-plugin-svelte-inspector@npm:1.0.4" +"@sveltejs/vite-plugin-svelte-inspector@npm:^2.1.0": + version: 2.1.0 + resolution: "@sveltejs/vite-plugin-svelte-inspector@npm:2.1.0" dependencies: debug: "npm:^4.3.4" peerDependencies: - "@sveltejs/vite-plugin-svelte": ^2.2.0 - svelte: ^3.54.0 || ^4.0.0 - vite: ^4.0.0 - checksum: 10c0/f21cb6bde0d8cce505c558dcb786d00e514c270848d9ff21dca12bc8335588e1bd05215fe3cd7478c8a6779bae7a75629b68d484fcdf309d759f25ee58ea771e + "@sveltejs/vite-plugin-svelte": ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + checksum: 10c0/da2d161691958bcb83d72634bd7d259fa07553af3cf71c2b9959feeccd6a9c58b08495cc5a936f6f0f5deb21aec4ad8b54ef8d9530510d2826548b4d19275b08 languageName: node linkType: hard -"@sveltejs/vite-plugin-svelte@npm:^2.4.6": - version: 2.4.6 - resolution: "@sveltejs/vite-plugin-svelte@npm:2.4.6" +"@sveltejs/vite-plugin-svelte@npm:^3.1.2": + version: 3.1.2 + resolution: "@sveltejs/vite-plugin-svelte@npm:3.1.2" dependencies: - "@sveltejs/vite-plugin-svelte-inspector": "npm:^1.0.4" + "@sveltejs/vite-plugin-svelte-inspector": "npm:^2.1.0" debug: "npm:^4.3.4" deepmerge: "npm:^4.3.1" kleur: "npm:^4.1.5" - magic-string: "npm:^0.30.3" - svelte-hmr: "npm:^0.15.3" - vitefu: "npm:^0.2.4" + magic-string: "npm:^0.30.10" + svelte-hmr: "npm:^0.16.0" + vitefu: "npm:^0.2.5" peerDependencies: - svelte: ^3.54.0 || ^4.0.0 - vite: ^4.0.0 - checksum: 10c0/de7d844bf5fc12aa4caf352f5825d58f6747eef68301a492128ea6756c3c193f1d1e1f75975abd4fdfb50f5a4ff45016a94f40c29e1b0121095c63f6bc10e219 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + checksum: 10c0/b15a82fc41ddd7983d7e130bedfc1c292c8a183677b78c5edd683d2f2df6cd2b1316e19958ab8c888031ca5941058f4475a16950ff1428ac7989c0b679987b36 languageName: node linkType: hard @@ -2982,12 +2982,12 @@ __metadata: resolution: "@symfony/ux-svelte@workspace:src/Svelte/assets" dependencies: "@hotwired/stimulus": "npm:^3.0.0" - "@sveltejs/vite-plugin-svelte": "npm:^2.4.6" + "@sveltejs/vite-plugin-svelte": "npm:^3.1.2" "@types/webpack-env": "npm:^1.16" - svelte: "npm:^3.0 || ^4.0" + svelte: "npm:^3.0 || ^4.0 || ^5.0" peerDependencies: "@hotwired/stimulus": ^3.0.0 - svelte: ^3.0 || ^4.0 + svelte: ^3.0 || ^4.0 || ^5.0 languageName: unknown linkType: soft @@ -3241,14 +3241,14 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.5, @types/estree@npm:^1.0.1": +"@types/estree@npm:1.0.5": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d languageName: node linkType: hard -"@types/estree@npm:1.0.6": +"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.1, @types/estree@npm:^1.0.5": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a @@ -3752,6 +3752,15 @@ __metadata: languageName: node linkType: hard +"acorn-typescript@npm:^1.4.13": + version: 1.4.13 + resolution: "acorn-typescript@npm:1.4.13" + peerDependencies: + acorn: ">=8.9.0" + checksum: 10c0/f2f17cf03379d63beeb007f0feea02cebbd9af261f6b5619ea7345b177bd7a5f99752927cbf652baa3fc97962ae4561592093ab0a1c3e00ca4f354ba23c557ae + languageName: node + linkType: hard + "acorn-walk@npm:^7.1.1": version: 7.2.0 resolution: "acorn-walk@npm:7.2.0" @@ -3768,12 +3777,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.10.0, acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" +"acorn@npm:^8.12.1": + version: 8.13.0 + resolution: "acorn@npm:8.13.0" bin: acorn: bin/acorn - checksum: 10c0/deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 + checksum: 10c0/f35dd53d68177c90699f4c37d0bb205b8abe036d955d0eb011ddb7f14a81e6fd0f18893731c457c1b5bd96754683f4c3d80d9a5585ddecaa53cdf84e0b3d68f7 languageName: node linkType: hard @@ -3898,7 +3907,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:5.3.0, aria-query@npm:^5.3.0": +"aria-query@npm:5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -3926,6 +3935,13 @@ __metadata: languageName: node linkType: hard +"aria-query@npm:^5.3.1": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e + languageName: node + linkType: hard + "arr-diff@npm:^4.0.0": version: 4.0.0 resolution: "arr-diff@npm:4.0.0" @@ -3991,12 +4007,10 @@ __metadata: languageName: node linkType: hard -"axobject-query@npm:^4.0.0": - version: 4.0.0 - resolution: "axobject-query@npm:4.0.0" - dependencies: - dequal: "npm:^2.0.3" - checksum: 10c0/4d756b5c2ff099f1c7f99e55a5de9b2066cb2a13a3170185ff34bfec2d7bcab81eb820a4e7340d35c251341b61ebee6e705b7ce64db78224df1df5a4d68448fe +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 languageName: node linkType: hard @@ -4522,19 +4536,6 @@ __metadata: languageName: node linkType: hard -"code-red@npm:^1.0.3": - version: 1.0.4 - resolution: "code-red@npm:1.0.4" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.4.15" - "@types/estree": "npm:^1.0.1" - acorn: "npm:^8.10.0" - estree-walker: "npm:^3.0.3" - periscopic: "npm:^3.1.0" - checksum: 10c0/1309f062369ae520c422d7f45b93190faea2cbc7e3fe3375918f36bb394030d0936d940601426564c30abc71b8aa8e6d1505cccd67a8620183fb01c84bcb7304 - languageName: node - linkType: hard - "collect-v8-coverage@npm:^1.0.0": version: 1.0.1 resolution: "collect-v8-coverage@npm:1.0.1" @@ -4705,16 +4706,6 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^2.3.1": - version: 2.3.1 - resolution: "css-tree@npm:2.3.1" - dependencies: - mdn-data: "npm:2.0.30" - source-map-js: "npm:^1.0.1" - checksum: 10c0/6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 - languageName: node - linkType: hard - "css.escape@npm:^1.5.1": version: 1.5.1 resolution: "css.escape@npm:1.5.1" @@ -5207,6 +5198,13 @@ __metadata: languageName: node linkType: hard +"esm-env@npm:^1.0.0": + version: 1.0.0 + resolution: "esm-env@npm:1.0.0" + checksum: 10c0/6ea0001410224ebc18de4a83ce97dbdca6abc83ea4bbe91625aa3aead70793bb98dfa089f38e2cc5c13b7b025668d0649d5e25f2f9e8cca0f4aa3ad3406870d0 + languageName: node + linkType: hard + "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -5217,6 +5215,16 @@ __metadata: languageName: node linkType: hard +"esrap@npm:^1.2.2": + version: 1.2.2 + resolution: "esrap@npm:1.2.2" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + "@types/estree": "npm:^1.0.1" + checksum: 10c0/a3a0b665c034f604a162b910346309c64c42635c5d2e8704a27afcdf4e6d4c529e05475d1875d6b3e0d550f8470986116414097230ab3a7c565b85091ca5e177 + languageName: node + linkType: hard + "estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -5231,7 +5239,7 @@ __metadata: languageName: node linkType: hard -"estree-walker@npm:^3.0.0, estree-walker@npm:^3.0.3": +"estree-walker@npm:^3.0.3": version: 3.0.3 resolution: "estree-walker@npm:3.0.3" dependencies: @@ -6283,7 +6291,7 @@ __metadata: languageName: node linkType: hard -"is-reference@npm:^3.0.0, is-reference@npm:^3.0.1": +"is-reference@npm:^3.0.2": version: 3.0.2 resolution: "is-reference@npm:3.0.2" dependencies: @@ -7304,6 +7312,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.10": + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/469f457d18af37dfcca8617086ea8a65bcd8b60ba8a1182cb024ce43e470ace3c9d1cb6bee58d3b311768fb16bc27bd50bdeebcaa63dadd0fd46cac4d2e11d5f + languageName: node + linkType: hard + "magic-string@npm:^0.30.11": version: 0.30.11 resolution: "magic-string@npm:0.30.11" @@ -7322,15 +7339,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.4": - version: 0.30.9 - resolution: "magic-string@npm:0.30.9" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.4.15" - checksum: 10c0/edbeea35b4f90b58815d8b13899fa412b5bc1e81cae14fe6d24d5c383c5f04331fce2c5a75bfb7926203ab6fc8c71290cdab56703a5b82432d8a1e144d6042e1 - languageName: node - linkType: hard - "make-dir@npm:^3.0.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -7385,13 +7393,6 @@ __metadata: languageName: node linkType: hard -"mdn-data@npm:2.0.30": - version: 2.0.30 - resolution: "mdn-data@npm:2.0.30" - checksum: 10c0/a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -8135,17 +8136,6 @@ __metadata: languageName: node linkType: hard -"periscopic@npm:^3.1.0": - version: 3.1.0 - resolution: "periscopic@npm:3.1.0" - dependencies: - "@types/estree": "npm:^1.0.0" - estree-walker: "npm:^3.0.0" - is-reference: "npm:^3.0.0" - checksum: 10c0/fb5ce7cd810c49254cdf1cd3892811e6dd1a1dfbdf5f10a0a33fb7141baac36443c4cad4f0e2b30abd4eac613f6ab845c2bc1b7ce66ae9694c7321e6ada5bd96 - languageName: node - linkType: hard - "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" @@ -9060,13 +9050,6 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.0.1": - version: 1.2.0 - resolution: "source-map-js@npm:1.2.0" - checksum: 10c0/7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4 - languageName: node - linkType: hard - "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" @@ -9376,34 +9359,33 @@ __metadata: languageName: node linkType: hard -"svelte-hmr@npm:^0.15.3": - version: 0.15.3 - resolution: "svelte-hmr@npm:0.15.3" +"svelte-hmr@npm:^0.16.0": + version: 0.16.0 + resolution: "svelte-hmr@npm:0.16.0" peerDependencies: svelte: ^3.19.0 || ^4.0.0 - checksum: 10c0/80b6df78e4bc1dd8d1beb4cfc5c341a7839a444b41320cb1ff56c19741346ecc07ee7cc989d7083b02c40bad80d989d52b0defac4126cd0013eaac378f626d63 + checksum: 10c0/242c0775361b5e8e0c19550ce0f8d27f738c31f45684b8a8beb88e2cce931078ffab0a6793002b4879c2637fa698d559020e78cab40756be11341602284ed01e languageName: node linkType: hard -"svelte@npm:^3.0 || ^4.0": - version: 4.2.14 - resolution: "svelte@npm:4.2.14" +"svelte@npm:^3.0 || ^4.0 || ^5.0": + version: 5.0.2 + resolution: "svelte@npm:5.0.2" dependencies: - "@ampproject/remapping": "npm:^2.2.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.15" - "@jridgewell/trace-mapping": "npm:^0.3.18" - "@types/estree": "npm:^1.0.1" - acorn: "npm:^8.9.0" - aria-query: "npm:^5.3.0" - axobject-query: "npm:^4.0.0" - code-red: "npm:^1.0.3" - css-tree: "npm:^2.3.1" - estree-walker: "npm:^3.0.3" - is-reference: "npm:^3.0.1" + "@ampproject/remapping": "npm:^2.3.0" + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@types/estree": "npm:^1.0.5" + acorn: "npm:^8.12.1" + acorn-typescript: "npm:^1.4.13" + aria-query: "npm:^5.3.1" + axobject-query: "npm:^4.1.0" + esm-env: "npm:^1.0.0" + esrap: "npm:^1.2.2" + is-reference: "npm:^3.0.2" locate-character: "npm:^3.0.0" - magic-string: "npm:^0.30.4" - periscopic: "npm:^3.1.0" - checksum: 10c0/04a17028d1bf5e9250dcc49f841b9e77813cd71c8aef5decd84fbcb9bb849bf9de347da0b3d34908825b7f88649ea6c4dd05c8a0d401d24298128167d8d4f5ad + magic-string: "npm:^0.30.11" + zimmerframe: "npm:^1.1.2" + checksum: 10c0/480d87695c9baafa084521da4e9fd65418baee9211efa975fd39ae5492406015d7c91d89c2ec1fc742a7eff9d4cced561dc668f9407a771e442ed0fc3fd7e8c8 languageName: node linkType: hard @@ -9923,7 +9905,7 @@ __metadata: languageName: node linkType: hard -"vitefu@npm:^0.2.4": +"vitefu@npm:^0.2.5": version: 0.2.5 resolution: "vitefu@npm:0.2.5" peerDependencies: @@ -10383,3 +10365,10 @@ __metadata: checksum: 10c0/a0e36eb88fea2c7981eab22d1ba45e15d8d268626e6c4143305e2c1628fa17ebfaa40cd306161a8ce04c0a60ee0262058eab12567493d5eb1409780853454c6f languageName: node linkType: hard + +"zimmerframe@npm:^1.1.2": + version: 1.1.2 + resolution: "zimmerframe@npm:1.1.2" + checksum: 10c0/8f693609c31cbb4449db223acd61661bc93b73e615f9db6fb8c86d4ceea84ca54cbbeebcf53cf74c22a1f923b92abd18e97988a5e175c76b6ab17238e5593a9d + languageName: node + linkType: hard