diff --git a/.changeset/loud-mugs-smile.md b/.changeset/loud-mugs-smile.md new file mode 100644 index 0000000000..e8fca01a49 --- /dev/null +++ b/.changeset/loud-mugs-smile.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: expose 'svelte/internal' to prevent Vite erroring on startup diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 1f39bd6fb4..c723c0c00b 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -44,6 +44,9 @@ "./elements": { "types": "./elements.d.ts" }, + "./internal": { + "default": "./src/internal/index.js" + }, "./internal/client": { "default": "./src/internal/client/index.js" }, diff --git a/packages/svelte/scripts/check-treeshakeability.js b/packages/svelte/scripts/check-treeshakeability.js index be744874c7..6297dd535e 100644 --- a/packages/svelte/scripts/check-treeshakeability.js +++ b/packages/svelte/scripts/check-treeshakeability.js @@ -51,6 +51,7 @@ console.group('checking treeshakeability'); for (const key in pkg.exports) { // special cases if (key === './compiler') continue; + if (key === './internal') continue; if (key === './internal/disclose-version') continue; for (const type of ['browser', 'default']) { diff --git a/packages/svelte/src/internal/index.js b/packages/svelte/src/internal/index.js new file mode 100644 index 0000000000..e28b88756c --- /dev/null +++ b/packages/svelte/src/internal/index.js @@ -0,0 +1,5 @@ +// TODO we may, on a best-effort basis, reimplement some of the legacy private APIs here so that certain libraries continue to work. Those APIs will be marked as deprecated (and should noisily warn the user) and will be removed in a future version of Svelte. + +throw new Error( + `Your application, or one of its dependencies, imported from 'svelte/internal', which was a private module used by Svelte 4 components that no longer exists in Svelte 5. It is not intended to be public API. If you're a library author and you used 'svelte/internal' deliberately, please raise an issue on https://github.com/sveltejs/svelte/issues detailing your use case.` +);