Skip to content

Commit 710be50

Browse files
bluwynatemoo-re
andauthored
Refactor virtual modules exports (#9150)
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
1 parent addb57c commit 710be50

15 files changed

Lines changed: 40 additions & 32 deletions

File tree

.changeset/sour-games-burn.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
"astro": patch
3+
---
4+
5+
Refactors virtual modules exports. This should not break your project unless you import Astro's internal modules, including:
6+
7+
- `astro/middleware/namespace`
8+
- `astro/transitions`
9+
- `astro/transitions/router`
10+
- `astro/prefetch`
11+
- `astro/i18n`

packages/astro/client.d.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ declare module '*.avif' {
106106
}
107107

108108
declare module 'astro:transitions' {
109-
type TransitionModule = typeof import('./dist/transitions/index.js');
109+
type TransitionModule = typeof import('./dist/virtual-modules/transitions.js');
110110
export const slide: TransitionModule['slide'];
111111
export const fade: TransitionModule['fade'];
112112

@@ -115,24 +115,24 @@ declare module 'astro:transitions' {
115115
}
116116

117117
declare module 'astro:transitions/client' {
118-
type TransitionRouterModule = typeof import('./dist/transitions/router.js');
118+
type TransitionRouterModule = typeof import('./dist/virtual-modules/transitions-router.js');
119119
export const supportsViewTransitions: TransitionRouterModule['supportsViewTransitions'];
120120
export const transitionEnabledOnThisPage: TransitionRouterModule['transitionEnabledOnThisPage'];
121121
export const navigate: TransitionRouterModule['navigate'];
122-
export type Options = import('./dist/transitions/router.js').Options;
122+
export type Options = import('./dist/virtual-modules/transitions-router.js').Options;
123123
}
124124

125125
declare module 'astro:prefetch' {
126-
export { prefetch, PrefetchOptions } from 'astro/prefetch';
126+
export { prefetch, PrefetchOptions } from 'astro/virtual-modules/prefetch.js';
127127
}
128128

129129
declare module 'astro:i18n' {
130-
export type GetLocaleOptions = import('./dist/i18n/index.js').GetLocaleOptions;
130+
export type GetLocaleOptions = import('./dist/virtual-modules/i18n.js').GetLocaleOptions;
131131

132132
/**
133133
* @param {string} locale A locale
134134
* @param {string} [path=""] An optional path to add after the `locale`.
135-
* @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path
135+
* @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path
136136
* @return {string}
137137
*
138138
* Returns a _relative_ path with passed locale.
@@ -161,7 +161,7 @@ declare module 'astro:i18n' {
161161
*
162162
* @param {string} locale A locale
163163
* @param {string} [path=""] An optional path to add after the `locale`.
164-
* @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path
164+
* @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path
165165
* @return {string}
166166
*
167167
* Returns an absolute path with the passed locale. The behaviour is subject to change based on `site` configuration.
@@ -191,15 +191,15 @@ declare module 'astro:i18n' {
191191

192192
/**
193193
* @param {string} [path=""] An optional path to add after the `locale`.
194-
* @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path
194+
* @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path
195195
* @return {string[]}
196196
*
197197
* Works like `getRelativeLocaleUrl` but it emits the relative URLs for ALL locales:
198198
*/
199199
export const getRelativeLocaleUrlList: (path?: string, options?: GetLocaleOptions) => string[];
200200
/**
201201
* @param {string} [path=""] An optional path to add after the `locale`.
202-
* @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path
202+
* @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path
203203
* @return {string[]}
204204
*
205205
* Works like `getAbsoluteLocaleUrl` but it emits the absolute URLs for ALL locales:
@@ -208,7 +208,7 @@ declare module 'astro:i18n' {
208208
}
209209

210210
declare module 'astro:middleware' {
211-
export * from 'astro/middleware/namespace';
211+
export * from 'astro/virtual-modules/middleware.js';
212212
}
213213

214214
declare module 'astro:components' {

packages/astro/components/ViewTransitions.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ const { fallback = 'animate', handleForms } = Astro.props;
2929
<script>
3030
import type { Options } from 'astro:transitions/client';
3131
import { supportsViewTransitions, navigate } from 'astro:transitions/client';
32-
// NOTE: import from `astro/prefetch` as `astro:prefetch` requires the `prefetch` config to be enabled
33-
import { init } from 'astro/prefetch';
32+
// NOTE: import from `astro/virtual-modules/prefetch.js` as `astro:prefetch` requires the `prefetch` config to be enabled
33+
import { init } from 'astro/virtual-modules/prefetch.js';
3434

3535
export type Fallback = 'none' | 'animate' | 'swap';
3636

packages/astro/package.json

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@
2222
"./dist/core/app/*"
2323
],
2424
"middleware": [
25-
"./dist/core/middleware/index.d.ts"
26-
],
27-
"middleware/namespace": [
28-
"./dist/core/middleware/namespace.d.ts"
25+
"./dist/virtual-modules/middleware.d.ts"
2926
]
3027
}
3128
},
@@ -73,14 +70,7 @@
7370
"types": "./dist/core/middleware/index.d.ts",
7471
"default": "./dist/core/middleware/index.js"
7572
},
76-
"./middleware/namespace": {
77-
"types": "./dist/core/middleware/namespace.d.ts",
78-
"default": "./dist/core/middleware/namespace.js"
79-
},
80-
"./transitions": "./dist/transitions/index.js",
81-
"./transitions/router": "./dist/transitions/router.js",
82-
"./prefetch": "./dist/prefetch/index.js",
83-
"./i18n": "./dist/i18n/index.js"
73+
"./virtual-modules/*": "./dist/virtual-modules/*"
8474
},
8575
"imports": {
8676
"#astro/*": "./dist/*.js"

packages/astro/src/core/create-vite.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ export async function createVite(
192192
},
193193
{
194194
find: 'astro:middleware',
195-
replacement: 'astro/middleware/namespace',
195+
replacement: 'astro/virtual-modules/middleware.js',
196196
},
197197
{
198198
find: 'astro:components',

packages/astro/src/core/middleware/namespace.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/astro/src/i18n/vite-plugin-i18n.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default function astroInternationalization({
2828
getLocaleAbsoluteUrl as _getLocaleAbsoluteUrl,
2929
getLocaleAbsoluteUrlList as _getLocaleAbsoluteUrlList,
3030
31-
} from "astro/i18n";
31+
} from "astro/virtual-modules/i18n.js";
3232
3333
const base = ${JSON.stringify(settings.config.base)};
3434
const trailingSlash = ${JSON.stringify(settings.config.trailingSlash)};

packages/astro/src/prefetch/vite-plugin-prefetch.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { AstroSettings } from '../@types/astro.js';
44
const virtualModuleId = 'astro:prefetch';
55
const resolvedVirtualModuleId = '\0' + virtualModuleId;
66
const prefetchInternalModuleFsSubpath = 'astro/dist/prefetch/index.js';
7-
const prefetchCode = `import { init } from 'astro/prefetch';init()`;
7+
const prefetchCode = `import { init } from 'astro/virtual-modules/prefetch.js';init()`;
88

99
export default function astroPrefetch({ settings }: { settings: AstroSettings }): vite.Plugin {
1010
const prefetchOption = settings.config.prefetch;
@@ -19,7 +19,7 @@ export default function astroPrefetch({ settings }: { settings: AstroSettings })
1919
// Inject prefetch script to all pages
2020
settings.scripts.push({
2121
stage: 'page',
22-
content: `import { init } from 'astro/prefetch';init()`,
22+
content: `import { init } from 'astro/virtual-modules/prefetch.js';init()`,
2323
});
2424
}
2525

@@ -40,7 +40,7 @@ export default function astroPrefetch({ settings }: { settings: AstroSettings })
4040
load(id) {
4141
if (id === resolvedVirtualModuleId) {
4242
if (!prefetch) throwPrefetchNotEnabledError();
43-
return `export { prefetch } from "astro/prefetch";`;
43+
return `export { prefetch } from "astro/virtual-modules/prefetch.js";`;
4444
}
4545
},
4646
transform(code, id) {

packages/astro/src/transitions/vite-plugin-transitions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ export default function astroTransitions({ settings }: { settings: AstroSettings
2121
load(id) {
2222
if (id === resolvedVirtualModuleId) {
2323
return `
24-
export * from "astro/transitions";
24+
export * from "astro/virtual-modules/transitions.js";
2525
export { default as ViewTransitions } from "astro/components/ViewTransitions.astro";
2626
`;
2727
}
2828
if (id === resolvedVirtualClientModuleId) {
2929
return `
30-
export * from "astro/transitions/router";
30+
export * from "astro/virtual-modules/transitions-router.js";
3131
`;
3232
}
3333
},
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# virtual-modules
2+
3+
This directory contains the entry points for Astro virtual modules. For example, `astro:foobar` would re-export or use `astro/virtual-modules/foobar.js` which maps to the internal file `astro/dist/virtual-modules/foobar.js`.

0 commit comments

Comments
 (0)