diff --git a/.changeset/brave-cats-tan.md b/.changeset/brave-cats-tan.md
new file mode 100644
index 000000000000..5ca5c1527151
--- /dev/null
+++ b/.changeset/brave-cats-tan.md
@@ -0,0 +1,5 @@
+---
+"@sveltejs/kit": patch
+---
+
+fix: remove internal `__sveltekit/` module declarations from types
diff --git a/packages/kit/scripts/generate-dts.js b/packages/kit/scripts/generate-dts.js
index 8eeffb5b2f82..b6d7bd23d5b2 100644
--- a/packages/kit/scripts/generate-dts.js
+++ b/packages/kit/scripts/generate-dts.js
@@ -1,6 +1,7 @@
import { createBundle } from 'dts-buddy';
+import { readFileSync } from 'fs';
-createBundle({
+await createBundle({
output: 'types/index.d.ts',
modules: {
'@sveltejs/kit': 'src/exports/public.d.ts',
@@ -16,3 +17,12 @@ createBundle({
},
include: ['src']
});
+
+// dts-buddy doesn't inline imports of module declaration in ambient-private.d.ts but also doesn't include them, resulting in broken types - guard against that
+const types = readFileSync('./types/index.d.ts', 'utf-8');
+if (types.includes('__sveltekit/')) {
+ throw new Error(
+ 'Found __sveltekit/ in types/index.d.ts - make sure to hide internal modules by not just reexporting them. Contents:\n\n' +
+ types
+ );
+}
diff --git a/packages/kit/src/runtime/app/environment.js b/packages/kit/src/runtime/app/environment.js
index 8393ee6dbda6..9705116dc51e 100644
--- a/packages/kit/src/runtime/app/environment.js
+++ b/packages/kit/src/runtime/app/environment.js
@@ -1,5 +1,15 @@
import { BROWSER, DEV } from 'esm-env';
-export { building, version } from '__sveltekit/environment';
+import { building as _building, version as _version } from '__sveltekit/environment';
+
+/**
+ * SvelteKit analyses your app during the `build` step by running it. During this process, `building` is `true`. This also applies during prerendering.
+ */
+export const building = _building;
+
+/**
+ * The value of `config.kit.version.name`.
+ */
+export const version = _version;
/**
* `true` if the app is running in the browser.
diff --git a/packages/kit/src/runtime/app/paths.js b/packages/kit/src/runtime/app/paths.js
index 32df2e1b3eda..35abd73f6768 100644
--- a/packages/kit/src/runtime/app/paths.js
+++ b/packages/kit/src/runtime/app/paths.js
@@ -1,7 +1,22 @@
-export { base, assets } from '__sveltekit/paths';
-import { base } from '__sveltekit/paths';
+import { base as _base, assets as _assets } from '__sveltekit/paths';
import { resolve_route } from '../../utils/routing.js';
+/**
+ * An absolute path that matches [`config.kit.paths.assets`](https://kit.svelte.dev/docs/configuration#paths).
+ *
+ * > If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL.
+ * @type {'' | `https://${string}` | `http://${string}` | '/_svelte_kit_assets'}
+ */
+export const assets = _assets;
+
+/**
+ * A string that matches [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths).
+ *
+ * Example usage: `Link`
+ * @type {'' | `/${string}`}
+ */
+export const base = _base;
+
/**
* Populate a route ID with params to resolve a pathname.
* @example
diff --git a/packages/kit/src/types/ambient-private.d.ts b/packages/kit/src/types/ambient-private.d.ts
index 843cc94d342b..8c56f2901359 100644
--- a/packages/kit/src/types/ambient-private.d.ts
+++ b/packages/kit/src/types/ambient-private.d.ts
@@ -1,11 +1,37 @@
-declare global {
- const __SVELTEKIT_ADAPTER_NAME__: string;
- const __SVELTEKIT_APP_VERSION_FILE__: string;
- const __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: number;
- const __SVELTEKIT_DEV__: boolean;
- const __SVELTEKIT_EMBEDDED__: boolean;
- var Bun: object;
- var Deno: object;
+/** Internal version of $app/environment */
+declare module '__sveltekit/environment' {
+ /**
+ * SvelteKit analyses your app during the `build` step by running it. During this process, `building` is `true`. This also applies during prerendering.
+ */
+ export const building: boolean;
+ /**
+ * True during prerendering, false otherwise.
+ */
+ export const prerendering: boolean;
+ /**
+ * The value of `config.kit.version.name`.
+ */
+ export const version: string;
+ export function set_building(): void;
+ export function set_prerendering(): void;
}
-export {};
+/** Internal version of $app/paths */
+declare module '__sveltekit/paths' {
+ /**
+ * A string that matches [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths).
+ *
+ * Example usage: `Link`
+ */
+ export let base: '' | `/${string}`;
+ /**
+ * An absolute path that matches [`config.kit.paths.assets`](https://kit.svelte.dev/docs/configuration#paths).
+ *
+ * > If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL.
+ */
+ export let assets: '' | `https://${string}` | `http://${string}` | '/_svelte_kit_assets';
+ export let relative: boolean;
+ export function reset(): void;
+ export function override(paths: { base: string; assets: string }): void;
+ export function set_assets(path: string): void;
+}
diff --git a/packages/kit/src/types/ambient.d.ts b/packages/kit/src/types/ambient.d.ts
index 2c8b7427f763..00730946b980 100644
--- a/packages/kit/src/types/ambient.d.ts
+++ b/packages/kit/src/types/ambient.d.ts
@@ -79,41 +79,3 @@ declare module '$service-worker' {
*/
export const version: string;
}
-
-/** Internal version of $app/environment */
-declare module '__sveltekit/environment' {
- /**
- * SvelteKit analyses your app during the `build` step by running it. During this process, `building` is `true`. This also applies during prerendering.
- */
- export const building: boolean;
- /**
- * True during prerendering, false otherwise.
- */
- export const prerendering: boolean;
- /**
- * The value of `config.kit.version.name`.
- */
- export const version: string;
- export function set_building(): void;
- export function set_prerendering(): void;
-}
-
-/** Internal version of $app/paths */
-declare module '__sveltekit/paths' {
- /**
- * A string that matches [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths).
- *
- * Example usage: `Link`
- */
- export let base: '' | `/${string}`;
- /**
- * An absolute path that matches [`config.kit.paths.assets`](https://kit.svelte.dev/docs/configuration#paths).
- *
- * > If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL.
- */
- export let assets: '' | `https://${string}` | `http://${string}` | '/_svelte_kit_assets';
- export let relative: boolean;
- export function reset(): void;
- export function override(paths: { base: string; assets: string }): void;
- export function set_assets(path: string): void;
-}
diff --git a/packages/kit/src/types/global-private.d.ts b/packages/kit/src/types/global-private.d.ts
new file mode 100644
index 000000000000..843cc94d342b
--- /dev/null
+++ b/packages/kit/src/types/global-private.d.ts
@@ -0,0 +1,11 @@
+declare global {
+ const __SVELTEKIT_ADAPTER_NAME__: string;
+ const __SVELTEKIT_APP_VERSION_FILE__: string;
+ const __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: number;
+ const __SVELTEKIT_DEV__: boolean;
+ const __SVELTEKIT_EMBEDDED__: boolean;
+ var Bun: object;
+ var Deno: object;
+}
+
+export {};
diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts
index a983b4433561..0dd1b2f1ca9a 100644
--- a/packages/kit/types/index.d.ts
+++ b/packages/kit/types/index.d.ts
@@ -1892,7 +1892,14 @@ declare module '@sveltejs/kit/vite' {
}
declare module '$app/environment' {
- export { building, version } from '__sveltekit/environment';
+ /**
+ * SvelteKit analyses your app during the `build` step by running it. During this process, `building` is `true`. This also applies during prerendering.
+ */
+ export const building: boolean;
+ /**
+ * The value of `config.kit.version.name`.
+ */
+ export const version: string;
/**
* `true` if the app is running in the browser.
*/
@@ -2067,7 +2074,6 @@ declare module '$app/navigation' {
}
declare module '$app/paths' {
- export { base, assets } from '__sveltekit/paths';
/**
* Populate a route ID with params to resolve a pathname.
* @example
@@ -2082,6 +2088,18 @@ declare module '$app/paths' {
* ```
* */
export function resolveRoute(id: string, params: Record): string;
+ /**
+ * An absolute path that matches [`config.kit.paths.assets`](https://kit.svelte.dev/docs/configuration#paths).
+ *
+ * > If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL.
+ * */
+ export const assets: '' | `https://${string}` | `http://${string}` | '/_svelte_kit_assets';
+ /**
+ * A string that matches [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths).
+ *
+ * Example usage: `Link`
+ * */
+ export const base: '' | `/${string}`;
}
declare module '$app/stores' {
@@ -2198,42 +2216,4 @@ declare module '$service-worker' {
export const version: string;
}
-/** Internal version of $app/environment */
-declare module '__sveltekit/environment' {
- /**
- * SvelteKit analyses your app during the `build` step by running it. During this process, `building` is `true`. This also applies during prerendering.
- */
- export const building: boolean;
- /**
- * True during prerendering, false otherwise.
- */
- export const prerendering: boolean;
- /**
- * The value of `config.kit.version.name`.
- */
- export const version: string;
- export function set_building(): void;
- export function set_prerendering(): void;
-}
-
-/** Internal version of $app/paths */
-declare module '__sveltekit/paths' {
- /**
- * A string that matches [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths).
- *
- * Example usage: `Link`
- */
- export let base: '' | `/${string}`;
- /**
- * An absolute path that matches [`config.kit.paths.assets`](https://kit.svelte.dev/docs/configuration#paths).
- *
- * > If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL.
- */
- export let assets: '' | `https://${string}` | `http://${string}` | '/_svelte_kit_assets';
- export let relative: boolean;
- export function reset(): void;
- export function override(paths: { base: string; assets: string }): void;
- export function set_assets(path: string): void;
-}
-
//# sourceMappingURL=index.d.ts.map
\ No newline at end of file