From 83f755c3a3c32839a03ab4fa0f7ce17afa18765a Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Wed, 16 Aug 2023 10:48:38 -0400 Subject: [PATCH 1/3] `astro:` namespace for middleware and components --- .changeset/neat-mugs-end.md | 8 ++++++++ examples/middleware/src/middleware.ts | 2 +- packages/astro/client.d.ts | 8 ++++++++ packages/astro/src/core/create-vite.ts | 8 ++++++++ .../fixtures/astro-component-code/src/pages/basic.astro | 2 +- .../astro-component-code/src/pages/css-theme.astro | 2 +- .../astro-component-code/src/pages/custom-theme.astro | 2 +- .../astro-component-code/src/pages/imported.astro | 2 +- .../fixtures/astro-component-code/src/pages/inline.astro | 2 +- .../fixtures/astro-component-code/src/pages/no-lang.astro | 2 +- .../astro-component-code/src/pages/wrap-false.astro | 2 +- .../astro-component-code/src/pages/wrap-null.astro | 2 +- .../astro-component-code/src/pages/wrap-true.astro | 2 +- .../test/fixtures/code-component/src/pages/index.astro | 2 +- .../astro/test/fixtures/middleware-dev/src/middleware.js | 2 +- .../astro/test/fixtures/middleware-ssg/src/middleware.js | 2 +- .../astro/test/fixtures/ssr-redirect/src/middleware.ts | 2 +- .../static-build-code-component/src/pages/index.astro | 2 +- .../test/fixtures/static-build-dir/src/pages/index.astro | 2 +- pnpm-lock.yaml | 4 ++++ 20 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 .changeset/neat-mugs-end.md diff --git a/.changeset/neat-mugs-end.md b/.changeset/neat-mugs-end.md new file mode 100644 index 000000000000..dd65708a73ac --- /dev/null +++ b/.changeset/neat-mugs-end.md @@ -0,0 +1,8 @@ +--- +'astro': minor +--- + + +`astro:`namespace aliases for middleware and components + +This adds aliases of `astro:middleware` and `astro:components` for the middleware and components modules. This is to make our documentation consistent between are various modules, where some are virtual modules and others are not. Going forward new built-in modules will use this namespace. diff --git a/examples/middleware/src/middleware.ts b/examples/middleware/src/middleware.ts index 9871e9d01e0b..eb764453545c 100644 --- a/examples/middleware/src/middleware.ts +++ b/examples/middleware/src/middleware.ts @@ -1,4 +1,4 @@ -import { defineMiddleware, sequence } from 'astro/middleware'; +import { defineMiddleware, sequence } from 'astro:middleware'; import htmlMinifier from 'html-minifier'; const limit = 50; diff --git a/packages/astro/client.d.ts b/packages/astro/client.d.ts index 7f701b0c0507..90c233e3deaf 100644 --- a/packages/astro/client.d.ts +++ b/packages/astro/client.d.ts @@ -119,6 +119,14 @@ declare module 'astro:transitions' { export const ViewTransitions: ViewTransitionsModule['default']; } +declare module 'astro:middleware' { + export * from 'astro/middleware'; +} + +declare module 'astro:components' { + export * from 'astro/components'; +} + type MD = import('./dist/@types/astro').MarkdownInstance>; interface ExportedMarkdownModuleEntities { frontmatter: MD['frontmatter']; diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts index 5b2ebfa21bab..86d2622e5c60 100644 --- a/packages/astro/src/core/create-vite.ts +++ b/packages/astro/src/core/create-vite.ts @@ -170,6 +170,14 @@ export async function createVite( find: /^astro$/, replacement: fileURLToPath(new URL('../@types/astro', import.meta.url)), }, + { + find: 'astro:middleware', + replacement: 'astro/middleware', + }, + { + find: 'astro:components', + replacement: 'astro/components', + }, ], conditions: ['astro'], // Astro imports in third-party packages should use the same version as root diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro index 9fba8620a6dd..ddbd92fede7d 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro index 8a4a8debf362..74342384959f 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro index 80cafe5cced5..45e92dccf346 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro index 02e6b4b03b34..6ea6782d6862 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; import riGrammar from '../assets/ri.tmLanguage.json' import serendipity from '../assets/serendipity-morning.json' diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro index 05422c8bf66a..10c17f4e2673 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro index ebc1b0810d49..d0ae5f95f35e 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro index ca1e238c71a2..aa4a58707b5f 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro index cff0190e8b8e..f72e093dda20 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro index 82e8f65c2fb9..43ccb54521b5 100644 --- a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro +++ b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Code component diff --git a/packages/astro/test/fixtures/code-component/src/pages/index.astro b/packages/astro/test/fixtures/code-component/src/pages/index.astro index 763f32caebd0..d165a4308691 100644 --- a/packages/astro/test/fixtures/code-component/src/pages/index.astro +++ b/packages/astro/test/fixtures/code-component/src/pages/index.astro @@ -1,5 +1,5 @@ --- -import { Code } from 'astro/components'; +import { Code } from 'astro:components'; --- diff --git a/packages/astro/test/fixtures/middleware-dev/src/middleware.js b/packages/astro/test/fixtures/middleware-dev/src/middleware.js index 2f9fc08b9151..854c997c1099 100644 --- a/packages/astro/test/fixtures/middleware-dev/src/middleware.js +++ b/packages/astro/test/fixtures/middleware-dev/src/middleware.js @@ -1,4 +1,4 @@ -import { sequence, defineMiddleware } from 'astro/middleware'; +import { sequence, defineMiddleware } from 'astro:middleware'; const first = defineMiddleware(async (context, next) => { if (context.request.url.includes('/lorem')) { diff --git a/packages/astro/test/fixtures/middleware-ssg/src/middleware.js b/packages/astro/test/fixtures/middleware-ssg/src/middleware.js index f28d89f670aa..04c0bfb3a41d 100644 --- a/packages/astro/test/fixtures/middleware-ssg/src/middleware.js +++ b/packages/astro/test/fixtures/middleware-ssg/src/middleware.js @@ -1,4 +1,4 @@ -import { sequence, defineMiddleware } from 'astro/middleware'; +import { sequence, defineMiddleware } from 'astro:middleware'; const first = defineMiddleware(async (context, next) => { if (context.request.url.includes('/second')) { diff --git a/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts b/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts index a8de8d130676..57ce556781a8 100644 --- a/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts +++ b/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts @@ -1,4 +1,4 @@ -import { defineMiddleware } from 'astro/middleware'; +import { defineMiddleware } from 'astro:middleware'; export const onRequest = defineMiddleware(({ request }, next) => { if(new URL(request.url).pathname === '/middleware-redirect/') { diff --git a/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro b/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro index e2f564a3bcf6..c87ed5b088ba 100644 --- a/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro +++ b/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Testing diff --git a/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro b/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro index e2f564a3bcf6..c87ed5b088ba 100644 --- a/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro +++ b/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro @@ -1,5 +1,5 @@ --- -import {Code} from 'astro/components'; +import {Code} from 'astro:components'; --- Testing diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 625c241b35b8..711f92cbefc3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18252,21 +18252,25 @@ packages: file:packages/astro/test/fixtures/css-assets/packages/font-awesome: resolution: {directory: packages/astro/test/fixtures/css-assets/packages/font-awesome, type: directory} name: '@test/astro-font-awesome-package' + version: 0.0.1 dev: false file:packages/astro/test/fixtures/multiple-renderers/renderers/one: resolution: {directory: packages/astro/test/fixtures/multiple-renderers/renderers/one, type: directory} name: '@test/astro-renderer-one' + version: 1.0.0 dev: false file:packages/astro/test/fixtures/multiple-renderers/renderers/two: resolution: {directory: packages/astro/test/fixtures/multiple-renderers/renderers/two, type: directory} name: '@test/astro-renderer-two' + version: 1.0.0 dev: false file:packages/astro/test/fixtures/solid-component/deps/solid-jsx-component: resolution: {directory: packages/astro/test/fixtures/solid-component/deps/solid-jsx-component, type: directory} name: '@test/solid-jsx-component' + version: 0.0.0 dependencies: solid-js: 1.7.6 dev: false From c893363c837fcd35858f6c4ad2d2b4f3b06aa309 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Wed, 16 Aug 2023 11:23:08 -0400 Subject: [PATCH 2/3] Update errors to use namespace --- packages/astro/src/@types/astro.ts | 2 +- packages/astro/src/core/errors/errors-data.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index e2b3e6d63f7f..347e39fe69bd 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -1852,7 +1852,7 @@ export interface APIContext = Record { * context.locals.greeting = "Hello!"; diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index c717a2b0301a..9bac015190f5 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -658,7 +658,7 @@ export const ResponseSentError = { * * For example: * ```ts - * import {defineMiddleware} from "astro/middleware"; + * import {defineMiddleware} from "astro:middleware"; * export const onRequest = defineMiddleware((context, _) => { * // doesn't return anything or call `next` * context.locals.someData = false; @@ -678,7 +678,7 @@ export const MiddlewareNoDataOrNextCalled = { * * For example: * ```ts - * import {defineMiddleware} from "astro/middleware"; + * import {defineMiddleware} from "astro:middleware"; * export const onRequest = defineMiddleware(() => { * return "string" * }); @@ -698,7 +698,7 @@ export const MiddlewareNotAResponse = { * * For example: * ```ts - * import {defineMiddleware} from "astro/middleware"; + * import {defineMiddleware} from "astro:middleware"; * export const onRequest = defineMiddleware((context, next) => { * context.locals = 1541; * return next(); From fdbf0c4c87ff9bbf2f570af27d0913639655d21b Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Thu, 17 Aug 2023 08:24:53 -0400 Subject: [PATCH 3/3] Create a namespace module just for the astro: stuff --- packages/astro/client.d.ts | 2 +- packages/astro/package.json | 7 +++++++ packages/astro/src/core/create-vite.ts | 2 +- packages/astro/src/core/middleware/namespace.ts | 4 ++++ 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 packages/astro/src/core/middleware/namespace.ts diff --git a/packages/astro/client.d.ts b/packages/astro/client.d.ts index 90c233e3deaf..e6389d41555e 100644 --- a/packages/astro/client.d.ts +++ b/packages/astro/client.d.ts @@ -120,7 +120,7 @@ declare module 'astro:transitions' { } declare module 'astro:middleware' { - export * from 'astro/middleware'; + export * from 'astro/middleware/namespace'; } declare module 'astro:components' { diff --git a/packages/astro/package.json b/packages/astro/package.json index 7739b7ee4a25..60294fe23346 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -23,6 +23,9 @@ ], "middleware": [ "./dist/core/middleware/index.d.ts" + ], + "middleware/namespace": [ + "./dist/core/middleware/namespace.d.ts" ] } }, @@ -70,6 +73,10 @@ "types": "./dist/core/middleware/index.d.ts", "default": "./dist/core/middleware/index.js" }, + "./middleware/namespace": { + "types": "./dist/core/middleware/namespace.d.ts", + "default": "./dist/core/middleware/namespace.js" + }, "./transitions": "./dist/transitions/index.js" }, "imports": { diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts index 86d2622e5c60..f4938d2ebaf9 100644 --- a/packages/astro/src/core/create-vite.ts +++ b/packages/astro/src/core/create-vite.ts @@ -172,7 +172,7 @@ export async function createVite( }, { find: 'astro:middleware', - replacement: 'astro/middleware', + replacement: 'astro/middleware/namespace', }, { find: 'astro:components', diff --git a/packages/astro/src/core/middleware/namespace.ts b/packages/astro/src/core/middleware/namespace.ts new file mode 100644 index 000000000000..e504f866c05b --- /dev/null +++ b/packages/astro/src/core/middleware/namespace.ts @@ -0,0 +1,4 @@ +export { + defineMiddleware, + sequence, +} from './index.js';