diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bf1996f93733..6f301a6ee5e3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -334,6 +334,24 @@ Server-side rendering (SSR) can be complicated. The Astro package (`packages/ast - `server/`: Code that executes **inside Vite’s SSR.** Though this is a Node environment inside, this will be executed independently of `core/` and may have to be structured differently. - `vite-plugin-*/`: Any Vite plugins that Astro needs to run. For the most part, these also execute within Vite similar to `src/runtime/server/`, but it’s also helpful to think about them as independent modules. _Note: at the moment these are internal while they’re in development_ +### Public vs. internal API + +`packages/astro/package.json` declares two export maps: + +- `"exports"` — the monorepo view. Includes public entries plus `./_internal/*` subpaths for use by other workspace packages. +- `"publishConfig.exports"` — the npm view. [pnpm replaces `"exports"` with this at publish time](https://pnpm.io/package_json#publishconfig), so `_internal/*` entries never ship. + +Other workspace packages should import internals via the subpath, not a deep relative path: + +```ts +// Do this +import { loadFixture } from 'astro/_internal/test/test-utils'; +// Not tihs +import { loadFixture } from '../../../astro/test/test-utils.js'; +``` + +To add a new internal entry, add the `./_internal/*` key to `"exports"` only — not to `"publishConfig.exports"`. + ### Thinking about SSR There are 3 contexts in which code executes: diff --git a/packages/astro/package.json b/packages/astro/package.json index f264f2f69645..0d38915096b6 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -81,7 +81,11 @@ "./zod": "./dist/zod.js", "./errors": "./dist/core/errors/userError.js", "./middleware": "./dist/core/middleware/index.js", - "./virtual-modules/*": "./dist/virtual-modules/*" + "./virtual-modules/*": "./dist/virtual-modules/*", + "./_internal/assets": "./dist/assets/internal.js", + "./_internal/logger": "./dist/core/logger/core.js", + "./_internal/test/test-adapter": "./test/test-adapter.js", + "./_internal/test/test-utils": "./test/test-utils.js" }, "bin": { "astro": "./bin/astro.mjs" @@ -217,6 +221,63 @@ "pnpm": ">=7.1.0" }, "publishConfig": { + "exports": { + ".": "./dist/index.js", + "./env": "./env.d.ts", + "./env/runtime": "./dist/env/runtime.js", + "./env/setup": "./dist/env/setup.js", + "./types": "./types.d.ts", + "./client": "./client.d.ts", + "./astro-jsx": "./astro-jsx.d.ts", + "./tsconfigs/*.json": "./tsconfigs/*", + "./tsconfigs/*": "./tsconfigs/*.json", + "./jsx/rehype.js": "./dist/jsx/rehype.js", + "./jsx-runtime": { + "types": "./jsx-runtime.d.ts", + "default": "./dist/jsx-runtime/index.js" + }, + "./jsx-dev-runtime": { + "types": "./jsx-runtime.d.ts", + "default": "./dist/jsx-runtime/index.js" + }, + "./compiler-runtime": "./dist/runtime/compiler/index.js", + "./runtime/*": "./dist/runtime/*", + "./config": "./dist/config/entrypoint.js", + "./container": "./dist/container/index.js", + "./app": "./dist/core/app/entrypoints/index.js", + "./app/node": "./dist/core/app/entrypoints/node.js", + "./app/entrypoint": "./dist/core/app/entrypoints/virtual/index.js", + "./app/entrypoint/dev": "./dist/core/app/entrypoints/virtual/dev.js", + "./app/entrypoint/prod": "./dist/core/app/entrypoints/virtual/prod.js", + "./app/manifest": "./dist/core/app/entrypoints/manifest.js", + "./entrypoints/prerender": "./dist/entrypoints/prerender.js", + "./entrypoints/legacy": "./dist/entrypoints/legacy.js", + "./client/*": "./dist/runtime/client/*", + "./components": "./components/index.ts", + "./components/*": "./components/*", + "./toolbar": "./dist/toolbar/index.js", + "./actions/runtime/entrypoints/*": "./dist/actions/runtime/entrypoints/*", + "./assets": "./dist/assets/index.js", + "./assets/runtime": "./dist/assets/runtime.js", + "./assets/utils": "./dist/assets/utils/index.js", + "./assets/utils/node": "./dist/assets/utils/node.js", + "./assets/utils/inferRemoteSize.js": "./dist/assets/utils/remoteProbe.js", + "./assets/endpoint/*": "./dist/assets/endpoint/*.js", + "./assets/services/sharp": "./dist/assets/services/sharp.js", + "./assets/services/noop": "./dist/assets/services/noop.js", + "./cache/memory": "./dist/core/cache/memory-provider.js", + "./assets/fonts/runtime.js": "./dist/assets/fonts/runtime.js", + "./loaders": "./dist/content/loaders/index.js", + "./content/config": "./dist/content/config.js", + "./content/runtime": "./dist/content/runtime.js", + "./content/runtime-assets": "./dist/content/runtime-assets.js", + "./debug": "./components/Debug.astro", + "./package.json": "./package.json", + "./zod": "./dist/zod.js", + "./errors": "./dist/core/errors/userError.js", + "./middleware": "./dist/core/middleware/index.js", + "./virtual-modules/*": "./dist/virtual-modules/*" + }, "provenance": true }, "funding": { diff --git a/packages/astro/test/exports.test.ts b/packages/astro/test/exports.test.ts new file mode 100644 index 000000000000..5b5cb79c400e --- /dev/null +++ b/packages/astro/test/exports.test.ts @@ -0,0 +1,13 @@ +import assert from 'node:assert/strict'; +import { it } from 'node:test'; + +it('"exports" and "publishConfig.exports" should be the same except for internal API', async () => { + const { default: pkgJson } = await import('../package.json', { with: { type: 'json' } }); + const exports: Record = pkgJson.exports; + const publishConfigExports: Record = pkgJson.publishConfig.exports; + const internal = Object.keys(exports).filter((key) => key.startsWith('./_internal/')); + for (const key of internal) { + delete exports[key]; + } + assert.deepEqual(exports, publishConfigExports); +}); diff --git a/packages/db/test/basics.test.ts b/packages/db/test/basics.test.ts index 2e9d349d6bbe..88810f2e8f1f 100644 --- a/packages/db/test/basics.test.ts +++ b/packages/db/test/basics.test.ts @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import { load as cheerioLoad } from 'cheerio'; -import testAdapter from '../../astro/test/test-adapter.js'; +import testAdapter from 'astro/_internal/test/test-adapter'; import { clearEnvironment, type DevServer, diff --git a/packages/db/test/db-in-src.test.ts b/packages/db/test/db-in-src.test.ts index f9c5fc44ac1d..50ad8bc1270c 100644 --- a/packages/db/test/db-in-src.test.ts +++ b/packages/db/test/db-in-src.test.ts @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import { load as cheerioLoad } from 'cheerio'; -import testAdapter from '../../astro/test/test-adapter.js'; +import testAdapter from 'astro/_internal/test/test-adapter'; import { type DevServer, type Fixture, loadFixture } from './test-utils.ts'; describe('astro:db', () => { diff --git a/packages/db/test/libsql-remote.test.ts b/packages/db/test/libsql-remote.test.ts index 5d11b7325f72..17bf08a9a890 100644 --- a/packages/db/test/libsql-remote.test.ts +++ b/packages/db/test/libsql-remote.test.ts @@ -3,7 +3,7 @@ import { rm } from 'node:fs/promises'; import { relative } from 'node:path'; import { after, before, describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; -import testAdapter from '../../astro/test/test-adapter.js'; +import testAdapter from 'astro/_internal/test/test-adapter'; import { clearEnvironment, type Fixture, initializeRemoteDb, loadFixture } from './test-utils.ts'; describe('astro:db local database', () => { diff --git a/packages/db/test/local-prod.test.ts b/packages/db/test/local-prod.test.ts index 8e610991c930..e4d989e4e514 100644 --- a/packages/db/test/local-prod.test.ts +++ b/packages/db/test/local-prod.test.ts @@ -2,7 +2,7 @@ import assert from 'node:assert/strict'; import { relative } from 'node:path'; import { after, before, describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; -import testAdapter from '../../astro/test/test-adapter.js'; +import testAdapter from 'astro/_internal/test/test-adapter'; import { type Fixture, loadFixture } from './test-utils.ts'; describe('astro:db local database', () => { diff --git a/packages/db/test/ssr-no-apptoken.test.ts b/packages/db/test/ssr-no-apptoken.test.ts index c7a66b987ab0..5e140f3193ec 100644 --- a/packages/db/test/ssr-no-apptoken.test.ts +++ b/packages/db/test/ssr-no-apptoken.test.ts @@ -1,6 +1,6 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import testAdapter from '../../astro/test/test-adapter.js'; +import testAdapter from 'astro/_internal/test/test-adapter'; import { type Fixture, loadFixture, type RemoteDbServer, setupRemoteDb } from './test-utils.ts'; describe('missing app token', () => { diff --git a/packages/db/test/test-utils.ts b/packages/db/test/test-utils.ts index e6c36cb9ae81..0c799077a48a 100644 --- a/packages/db/test/test-utils.ts +++ b/packages/db/test/test-utils.ts @@ -10,7 +10,7 @@ export { loadFixture, type DevServer, type Fixture, -} from '../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; const isWindows = process.platform === 'win32'; diff --git a/packages/integrations/alpinejs/test/test-utils.ts b/packages/integrations/alpinejs/test/test-utils.ts index 16c57ff68553..7fe403665fdc 100644 --- a/packages/integrations/alpinejs/test/test-utils.ts +++ b/packages/integrations/alpinejs/test/test-utils.ts @@ -7,7 +7,7 @@ import { type Fixture, type AstroInlineConfig, type DevServer, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; // Get all test files in directory, assign unique port for each of them so they don't conflict const testFiles = await fs.readdir(new URL('.', import.meta.url)); diff --git a/packages/integrations/cloudflare/test/ssr-deps.test.ts b/packages/integrations/cloudflare/test/ssr-deps.test.ts index 1087b7b3fe16..de6c9a22dd73 100644 --- a/packages/integrations/cloudflare/test/ssr-deps.test.ts +++ b/packages/integrations/cloudflare/test/ssr-deps.test.ts @@ -3,7 +3,7 @@ import { rmSync } from 'node:fs'; import { Writable } from 'node:stream'; import { after, before, describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; -import { AstroLogger } from '../../../astro/dist/core/logger/core.js'; +import { AstroLogger } from 'astro/_internal/logger'; import { type DevServer, type Fixture, loadFixture } from './test-utils.ts'; describe('SSR dependencies', () => { diff --git a/packages/integrations/cloudflare/test/test-utils.ts b/packages/integrations/cloudflare/test/test-utils.ts index 8cd5dafda333..b701e3e05985 100644 --- a/packages/integrations/cloudflare/test/test-utils.ts +++ b/packages/integrations/cloudflare/test/test-utils.ts @@ -1,10 +1,10 @@ -import type { DevServer } from '../../../astro/src/core/dev/dev.js'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import { + loadFixture as baseLoadFixture, type AstroInlineConfig, + type DevServer, type Fixture, - loadFixture as baseLoadFixture, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; export type { AstroInlineConfig, DevServer, Fixture, PreviewServer }; diff --git a/packages/integrations/cloudflare/test/top-level-return.test.ts b/packages/integrations/cloudflare/test/top-level-return.test.ts index d5a9132d3690..7ef78bad0441 100644 --- a/packages/integrations/cloudflare/test/top-level-return.test.ts +++ b/packages/integrations/cloudflare/test/top-level-return.test.ts @@ -4,7 +4,7 @@ import { Writable } from 'node:stream'; import { type Fixture, loadFixture } from './test-utils.ts'; import assert from 'node:assert/strict'; import { fileURLToPath } from 'node:url'; -import { AstroLogger } from '../../../astro/dist/core/logger/core.js'; +import { AstroLogger } from 'astro/_internal/logger'; describe('Top-level Return', () => { let fixture: Fixture; diff --git a/packages/integrations/cloudflare/test/with-base.test.ts b/packages/integrations/cloudflare/test/with-base.test.ts index 738c2cd3bcd7..eb0cd4398a1c 100644 --- a/packages/integrations/cloudflare/test/with-base.test.ts +++ b/packages/integrations/cloudflare/test/with-base.test.ts @@ -3,7 +3,7 @@ import { rmSync } from 'node:fs'; import { Writable } from 'node:stream'; import { after, before, describe, it } from 'node:test'; import { type Fixture, loadFixture } from './test-utils.ts'; -import { AstroLogger } from '../../../astro/dist/core/logger/core.js'; +import { AstroLogger } from 'astro/_internal/logger'; import { fileURLToPath } from 'node:url'; describe('base', () => { diff --git a/packages/integrations/cloudflare/test/with-react.test.ts b/packages/integrations/cloudflare/test/with-react.test.ts index 4a91a6c796bb..ca91a96dd3e4 100644 --- a/packages/integrations/cloudflare/test/with-react.test.ts +++ b/packages/integrations/cloudflare/test/with-react.test.ts @@ -4,7 +4,7 @@ import { Writable } from 'node:stream'; import { after, before, describe, it } from 'node:test'; import * as cheerio from 'cheerio'; import { type Fixture, loadFixture, type PreviewServer } from './test-utils.ts'; -import { AstroLogger } from '../../../astro/dist/core/logger/core.js'; +import { AstroLogger } from 'astro/_internal/logger'; import { fileURLToPath } from 'node:url'; describe('React', () => { diff --git a/packages/integrations/markdoc/test/test-utils.ts b/packages/integrations/markdoc/test/test-utils.ts index c5bab863cbd0..1d9c361c78de 100644 --- a/packages/integrations/markdoc/test/test-utils.ts +++ b/packages/integrations/markdoc/test/test-utils.ts @@ -3,4 +3,4 @@ export { loadFixture, type DevServer, type Fixture, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; diff --git a/packages/integrations/mdx/test/test-utils.ts b/packages/integrations/mdx/test/test-utils.ts index f0b6232c5535..c00b4854f2dd 100644 --- a/packages/integrations/mdx/test/test-utils.ts +++ b/packages/integrations/mdx/test/test-utils.ts @@ -2,17 +2,14 @@ import type * as estree from 'estree'; import type * as hast from 'hast'; import type * as mdast from 'mdast'; import type * as unified from 'unified'; -import { - AstroIntegrationLogger, - type AstroLogMessage, -} from '../../../astro/dist/core/logger/core.js'; +import { AstroIntegrationLogger, type AstroLogMessage } from 'astro/_internal/logger'; export { loadFixture, type AstroInlineConfig, type DevServer, type Fixture, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; export type RemarkPlugin = unified.Plugin< PluginParameters, diff --git a/packages/integrations/netlify/src/image-service.ts b/packages/integrations/netlify/src/image-service.ts index f8e93a05abdc..f74c144c081b 100644 --- a/packages/integrations/netlify/src/image-service.ts +++ b/packages/integrations/netlify/src/image-service.ts @@ -1,6 +1,6 @@ import type { ExternalImageService } from 'astro'; import { baseService } from 'astro/assets'; -import { verifyOptions } from '../../../astro/dist/assets/internal.js'; +import { verifyOptions } from 'astro/_internal/assets'; import { isESMImportedImage } from 'astro/assets/utils'; import { AstroError } from 'astro/errors'; diff --git a/packages/integrations/netlify/test/test-utils.ts b/packages/integrations/netlify/test/test-utils.ts index 3f1f0bbdb101..46be9b19aa06 100644 --- a/packages/integrations/netlify/test/test-utils.ts +++ b/packages/integrations/netlify/test/test-utils.ts @@ -3,11 +3,8 @@ import { type AstroInlineConfig, type Fixture, loadFixture as baseLoadFixture, -} from '../../../astro/test/test-utils.js'; -import { - AstroIntegrationLogger, - type AstroLogMessage, -} from '../../../astro/dist/core/logger/core.js'; +} from 'astro/_internal/test/test-utils'; +import { AstroIntegrationLogger, type AstroLogMessage } from 'astro/_internal/logger'; export type { AstroInlineConfig, DevServer, Fixture }; diff --git a/packages/integrations/node/test/api-route.test.ts b/packages/integrations/node/test/api-route.test.ts index 26e26d0fe8bc..36ff88bfa94d 100644 --- a/packages/integrations/node/test/api-route.test.ts +++ b/packages/integrations/node/test/api-route.test.ts @@ -1,7 +1,7 @@ import * as assert from 'node:assert/strict'; import crypto from 'node:crypto'; import { after, before, describe, it } from 'node:test'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import nodejs from '../dist/index.js'; import { createRequestAndResponse, type Fixture, loadFixture } from './test-utils.ts'; diff --git a/packages/integrations/node/test/assets.test.ts b/packages/integrations/node/test/assets.test.ts index e7682ef7b65e..3907f7807b02 100644 --- a/packages/integrations/node/test/assets.test.ts +++ b/packages/integrations/node/test/assets.test.ts @@ -1,7 +1,7 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import * as cheerio from 'cheerio'; import nodejs from '../dist/index.js'; import { type Fixture, loadFixture } from './test-utils.ts'; diff --git a/packages/integrations/node/test/bad-urls.test.ts b/packages/integrations/node/test/bad-urls.test.ts index fc45bef3fa4a..ea47790125a9 100644 --- a/packages/integrations/node/test/bad-urls.test.ts +++ b/packages/integrations/node/test/bad-urls.test.ts @@ -1,6 +1,6 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import nodejs from '../dist/index.js'; import { type Fixture, loadFixture } from './test-utils.ts'; diff --git a/packages/integrations/node/test/image.test.ts b/packages/integrations/node/test/image.test.ts index f6d4389423f5..21bdcc150a74 100644 --- a/packages/integrations/node/test/image.test.ts +++ b/packages/integrations/node/test/image.test.ts @@ -2,7 +2,7 @@ import * as assert from 'node:assert/strict'; import { cp, rm } from 'node:fs/promises'; import { after, before, describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import { inferRemoteSize } from 'astro/assets/utils/inferRemoteSize.js'; import * as cheerio from 'cheerio'; import nodejs from '../dist/index.js'; diff --git a/packages/integrations/node/test/prerendered-error-page-fetch.test.ts b/packages/integrations/node/test/prerendered-error-page-fetch.test.ts index 9fb6c6110f89..30b5080f7374 100644 --- a/packages/integrations/node/test/prerendered-error-page-fetch.test.ts +++ b/packages/integrations/node/test/prerendered-error-page-fetch.test.ts @@ -1,6 +1,6 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import node from '../dist/index.js'; import { type Fixture, loadFixture } from './test-utils.ts'; diff --git a/packages/integrations/node/test/preview-headers.test.ts b/packages/integrations/node/test/preview-headers.test.ts index 449d9657b4c3..ebf9f8b588b8 100644 --- a/packages/integrations/node/test/preview-headers.test.ts +++ b/packages/integrations/node/test/preview-headers.test.ts @@ -1,6 +1,6 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import nodejs from '../dist/index.js'; import { type Fixture, loadFixture } from './test-utils.ts'; diff --git a/packages/integrations/node/test/sessions.test.ts b/packages/integrations/node/test/sessions.test.ts index 9cee8bae9403..f6645c8b5b9b 100644 --- a/packages/integrations/node/test/sessions.test.ts +++ b/packages/integrations/node/test/sessions.test.ts @@ -1,6 +1,6 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import * as devalue from 'devalue'; import nodejs from '../dist/index.js'; import { type Fixture, loadFixture, type DevServer } from './test-utils.ts'; diff --git a/packages/integrations/node/test/test-utils.ts b/packages/integrations/node/test/test-utils.ts index 3fea903844cd..be4b745900d1 100644 --- a/packages/integrations/node/test/test-utils.ts +++ b/packages/integrations/node/test/test-utils.ts @@ -7,7 +7,7 @@ import { type AdapterServer, type DevServer, loadFixture as baseLoadFixture, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; import type * as express from 'express'; process.env.ASTRO_NODE_AUTOSTART = 'disabled'; diff --git a/packages/integrations/node/test/well-known-locations.test.ts b/packages/integrations/node/test/well-known-locations.test.ts index a8afdd1519b4..e49aa71c25ab 100644 --- a/packages/integrations/node/test/well-known-locations.test.ts +++ b/packages/integrations/node/test/well-known-locations.test.ts @@ -1,6 +1,6 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import type { PreviewServer } from '../../../astro/src/types/public/preview.js'; +import type { PreviewServer } from 'astro'; import nodejs from '../dist/index.js'; import { createRequestAndResponse, type Fixture, loadFixture } from './test-utils.ts'; diff --git a/packages/integrations/react/test/test-utils.ts b/packages/integrations/react/test/test-utils.ts index 61971c3682aa..56ba3876eb10 100644 --- a/packages/integrations/react/test/test-utils.ts +++ b/packages/integrations/react/test/test-utils.ts @@ -3,4 +3,4 @@ export { loadFixture, type DevServer, type Fixture, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; diff --git a/packages/integrations/sitemap/test/test-utils.ts b/packages/integrations/sitemap/test/test-utils.ts index 818da9b3ac6e..53effd69151b 100644 --- a/packages/integrations/sitemap/test/test-utils.ts +++ b/packages/integrations/sitemap/test/test-utils.ts @@ -3,7 +3,7 @@ import { type AstroInlineConfig, type Fixture, loadFixture as baseLoadFixture, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; export type { AstroInlineConfig, Fixture }; diff --git a/packages/integrations/svelte/test/test-utils.ts b/packages/integrations/svelte/test/test-utils.ts index bd1b97b95d32..a34a5d275dc3 100644 --- a/packages/integrations/svelte/test/test-utils.ts +++ b/packages/integrations/svelte/test/test-utils.ts @@ -3,4 +3,4 @@ export { loadFixture, type DevServer, type Fixture, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; diff --git a/packages/integrations/vercel/test/test-utils.ts b/packages/integrations/vercel/test/test-utils.ts index 06cad424e9aa..fe887e2d0199 100644 --- a/packages/integrations/vercel/test/test-utils.ts +++ b/packages/integrations/vercel/test/test-utils.ts @@ -3,7 +3,7 @@ import { type Fixture, type DevServer, type AstroInlineConfig, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; export type { Fixture, DevServer, AstroInlineConfig }; diff --git a/packages/integrations/vue/test/test-utils.ts b/packages/integrations/vue/test/test-utils.ts index b1dfb1c36148..de7d963dbcf9 100644 --- a/packages/integrations/vue/test/test-utils.ts +++ b/packages/integrations/vue/test/test-utils.ts @@ -4,7 +4,7 @@ import { type Fixture, type DevServer, type AstroInlineConfig, -} from '../../../astro/test/test-utils.js'; +} from 'astro/_internal/test/test-utils'; export { cli }; export type { Fixture, DevServer }; diff --git a/packages/language-tools/language-server/test/setup.ts b/packages/language-tools/language-server/test/setup.ts index 87def362bab0..b746a8d44035 100644 --- a/packages/language-tools/language-server/test/setup.ts +++ b/packages/language-tools/language-server/test/setup.ts @@ -1,6 +1,6 @@ import path from 'node:path'; import { fileURLToPath } from 'node:url'; -import { cli } from '../../../astro/test/test-utils.js'; +import { cli } from 'astro/_internal/test/test-utils'; // Copied from utils.ts so we don't have to import TS code for Node 20 const __filename = fileURLToPath(import.meta.url);