mirror of
https://github.com/withastro/astro.git
synced 2025-01-06 22:10:10 -05:00
Remove remaining deprecated APIs (#9263)
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
This commit is contained in:
parent
ac41820821
commit
3cbd8ea753
15 changed files with 28 additions and 126 deletions
10
.changeset/green-parrots-brake.md
Normal file
10
.changeset/green-parrots-brake.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
'astro': major
|
||||||
|
---
|
||||||
|
|
||||||
|
Removes additional deprecated APIs:
|
||||||
|
|
||||||
|
- The Astro preview server now returns a 404 status instead of a 301 redirect when requesting assets from the public directory without a base.
|
||||||
|
- Removes special handling when referencing the `astro/client-image` type. You should use the `astro/client` type instead.
|
||||||
|
- Removes deprecated built-in `rss` support in `getStaticPaths`. You should use `@astrojs/rss` instead.
|
||||||
|
- Removes deprecated `Astro.request.params` support. You should use `Astro.params` instead.
|
5
.changeset/little-beers-sit.md
Normal file
5
.changeset/little-beers-sit.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'@astrojs/markdoc': minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Removes internal `propagators` handling for Astro 3
|
5
.changeset/slimy-jeans-peel.md
Normal file
5
.changeset/slimy-jeans-peel.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'@astrojs/vercel': major
|
||||||
|
---
|
||||||
|
|
||||||
|
Removes the deprecated `@astrojs/vercel/edge` export. You should use `@astrojs/vercel/serverless` instead with the `edgeMiddleware` option.
|
|
@ -1793,13 +1793,9 @@ export type GetHydrateCallback = () => Promise<() => void | Promise<void>>;
|
||||||
* getStaticPaths() options
|
* getStaticPaths() options
|
||||||
*
|
*
|
||||||
* [Astro Reference](https://docs.astro.build/en/reference/api-reference/#getstaticpaths)
|
* [Astro Reference](https://docs.astro.build/en/reference/api-reference/#getstaticpaths)
|
||||||
*/ export interface GetStaticPathsOptions {
|
|
||||||
paginate: PaginateFunction;
|
|
||||||
/**
|
|
||||||
* The RSS helper has been removed from getStaticPaths! Try the new @astrojs/rss package instead.
|
|
||||||
* @see https://docs.astro.build/en/guides/rss/
|
|
||||||
*/
|
*/
|
||||||
rss(): never;
|
export interface GetStaticPathsOptions {
|
||||||
|
paginate: PaginateFunction;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type GetStaticPathsItem = {
|
export type GetStaticPathsItem = {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { astroConfigBuildPlugin } from '../../../content/vite-plugin-content-assets.js';
|
import { astroConfigBuildPlugin } from '../../../content/vite-plugin-content-assets.js';
|
||||||
import { astroHeadBuildPlugin } from '../../../vite-plugin-head/index.js';
|
import { astroHeadBuildPlugin } from '../../../vite-plugin-head/index.js';
|
||||||
import type { AstroBuildPluginContainer } from '../plugin.js';
|
import type { AstroBuildPluginContainer } from '../plugin.js';
|
||||||
import { pluginAliasResolve } from './plugin-alias-resolve.js';
|
|
||||||
import { pluginAnalyzer } from './plugin-analyzer.js';
|
import { pluginAnalyzer } from './plugin-analyzer.js';
|
||||||
import { pluginChunks } from './plugin-chunks.js';
|
import { pluginChunks } from './plugin-chunks.js';
|
||||||
import { pluginComponentEntry } from './plugin-component-entry.js';
|
import { pluginComponentEntry } from './plugin-component-entry.js';
|
||||||
|
@ -18,7 +17,6 @@ import { pluginSSR, pluginSSRSplit } from './plugin-ssr.js';
|
||||||
|
|
||||||
export function registerAllPlugins({ internals, options, register }: AstroBuildPluginContainer) {
|
export function registerAllPlugins({ internals, options, register }: AstroBuildPluginContainer) {
|
||||||
register(pluginComponentEntry(internals));
|
register(pluginComponentEntry(internals));
|
||||||
register(pluginAliasResolve(internals));
|
|
||||||
register(pluginAnalyzer(options, internals));
|
register(pluginAnalyzer(options, internals));
|
||||||
register(pluginInternals(internals));
|
register(pluginInternals(internals));
|
||||||
register(pluginManifest(options, internals));
|
register(pluginManifest(options, internals));
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
import type { Alias, Plugin as VitePlugin } from 'vite';
|
|
||||||
import type { BuildInternals } from '../internal.js';
|
|
||||||
import type { AstroBuildPlugin } from '../plugin.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* `@rollup/plugin-alias` doesn't resolve aliases in Rollup input by default. This plugin fixes it
|
|
||||||
* with a partial fork of it's resolve function. https://github.com/rollup/plugins/blob/master/packages/alias/src/index.ts
|
|
||||||
* When https://github.com/rollup/plugins/pull/1402 is merged, we can remove this plugin.
|
|
||||||
*/
|
|
||||||
export function vitePluginAliasResolve(internals: BuildInternals): VitePlugin {
|
|
||||||
let aliases: Alias[];
|
|
||||||
|
|
||||||
return {
|
|
||||||
name: '@astro/plugin-alias-resolve',
|
|
||||||
enforce: 'pre',
|
|
||||||
configResolved(config) {
|
|
||||||
aliases = config.resolve.alias;
|
|
||||||
},
|
|
||||||
async resolveId(id, importer, opts) {
|
|
||||||
if (
|
|
||||||
!importer &&
|
|
||||||
(internals.discoveredHydratedComponents.has(id) ||
|
|
||||||
internals.discoveredClientOnlyComponents.has(id))
|
|
||||||
) {
|
|
||||||
const matchedEntry = aliases.find((entry) => matches(entry.find, id));
|
|
||||||
if (!matchedEntry) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const updatedId = id.replace(matchedEntry.find, matchedEntry.replacement);
|
|
||||||
|
|
||||||
return this.resolve(updatedId, importer, Object.assign({ skipSelf: true }, opts)).then(
|
|
||||||
(resolved) => resolved || { id: updatedId }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function matches(pattern: string | RegExp, importee: string) {
|
|
||||||
if (pattern instanceof RegExp) {
|
|
||||||
return pattern.test(importee);
|
|
||||||
}
|
|
||||||
if (importee.length < pattern.length) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (importee === pattern) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return importee.startsWith(pattern + '/');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function pluginAliasResolve(internals: BuildInternals): AstroBuildPlugin {
|
|
||||||
return {
|
|
||||||
targets: ['client'],
|
|
||||||
hooks: {
|
|
||||||
'build:before': () => {
|
|
||||||
return {
|
|
||||||
vitePlugin: vitePluginAliasResolve(internals),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -292,6 +292,7 @@ export const InvalidGetStaticPathsReturn = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @docs
|
* @docs
|
||||||
|
* @deprecated Deprecated since Astro 4.0. The RSS helper no longer exists with an error fallback.
|
||||||
* @see
|
* @see
|
||||||
* - [RSS Guide](https://docs.astro.build/en/guides/rss/)
|
* - [RSS Guide](https://docs.astro.build/en/guides/rss/)
|
||||||
* @description
|
* @description
|
||||||
|
|
|
@ -59,9 +59,6 @@ export async function callGetStaticPaths({
|
||||||
// Q: Why the cast?
|
// Q: Why the cast?
|
||||||
// A: So users downstream can have nicer typings, we have to make some sacrifice in our internal typings, which necessitate a cast here
|
// A: So users downstream can have nicer typings, we have to make some sacrifice in our internal typings, which necessitate a cast here
|
||||||
paginate: generatePaginateFunction(route) as PaginateFunction,
|
paginate: generatePaginateFunction(route) as PaginateFunction,
|
||||||
rss() {
|
|
||||||
throw new AstroError(AstroErrorData.GetStaticPathsRemovedRSSHelper);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
validateGetStaticPathsResult(staticPaths, logger, route);
|
validateGetStaticPathsResult(staticPaths, logger, route);
|
||||||
|
|
|
@ -39,15 +39,6 @@ export function createRequest({
|
||||||
body,
|
body,
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(request, {
|
|
||||||
params: {
|
|
||||||
get() {
|
|
||||||
logger.warn('deprecated', `Astro.request.params has been moved to Astro.params`);
|
|
||||||
return undefined;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!ssr) {
|
if (!ssr) {
|
||||||
// Warn when accessing headers in SSG mode
|
// Warn when accessing headers in SSG mode
|
||||||
const _headers = request.headers;
|
const _headers = request.headers;
|
||||||
|
|
|
@ -43,21 +43,18 @@ export function baseMiddleware(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check to see if it's in public and if so 404
|
// Check to see if it's in public and if so 404
|
||||||
// TODO: Remove redirect, turn this warning into an error in Astro 4.0
|
|
||||||
const publicPath = new URL('.' + req.url, config.publicDir);
|
const publicPath = new URL('.' + req.url, config.publicDir);
|
||||||
fs.stat(publicPath, (_err, stats) => {
|
fs.stat(publicPath, (_err, stats) => {
|
||||||
if (stats) {
|
if (stats) {
|
||||||
const expectedLocation = new URL('.' + url, devRootURL).pathname;
|
const expectedLocation = new URL('.' + url, devRootURL).pathname;
|
||||||
logger.warn(
|
logger.error(
|
||||||
'router',
|
'router',
|
||||||
`Request URLs for ${bold(
|
`Request URLs for ${bold(
|
||||||
'public/'
|
'public/'
|
||||||
)} assets must also include your base. "${expectedLocation}" expected, but received "${url}".`
|
)} assets must also include your base. "${expectedLocation}" expected, but received "${url}".`
|
||||||
);
|
);
|
||||||
res.writeHead(301, {
|
const html = subpathNotUsedTemplate(devRoot, pathname);
|
||||||
Location: expectedLocation,
|
return writeHtmlResponse(res, 404, html);
|
||||||
});
|
|
||||||
res.end();
|
|
||||||
} else {
|
} else {
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,16 +50,6 @@ export async function setUpEnvTs({
|
||||||
if (fs.existsSync(envTsPath)) {
|
if (fs.existsSync(envTsPath)) {
|
||||||
let typesEnvContents = await fs.promises.readFile(envTsPath, 'utf-8');
|
let typesEnvContents = await fs.promises.readFile(envTsPath, 'utf-8');
|
||||||
|
|
||||||
// TODO: Remove this in 4.0, this code is only to help users migrate away from assets being experimental for a long time
|
|
||||||
if (typesEnvContents.includes('types="astro/client-image"')) {
|
|
||||||
typesEnvContents = typesEnvContents.replace(
|
|
||||||
'types="astro/client-image"',
|
|
||||||
'types="astro/client"'
|
|
||||||
);
|
|
||||||
await fs.promises.writeFile(envTsPath, typesEnvContents, 'utf-8');
|
|
||||||
logger.info('types', `Removed ${bold(envTsPathRelativetoRoot)} type declarations`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!fs.existsSync(dotAstroDir))
|
if (!fs.existsSync(dotAstroDir))
|
||||||
// Add `.astro` types reference if none exists
|
// Add `.astro` types reference if none exists
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -253,8 +253,7 @@ describe('dev container', () => {
|
||||||
container.handle(r.req, r.res);
|
container.handle(r.req, r.res);
|
||||||
await r.done;
|
await r.done;
|
||||||
|
|
||||||
expect(r.res.statusCode).to.equal(301);
|
expect(r.res.statusCode).to.equal(404);
|
||||||
expect(r.res.getHeader('location')).to.equal('/sub/test.txt');
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -89,10 +89,7 @@ export const ComponentNode = createComponent({
|
||||||
);
|
);
|
||||||
|
|
||||||
// Let the runtime know that this component is being used.
|
// Let the runtime know that this component is being used.
|
||||||
// `result.propagators` has been moved to `result._metadata.propagators`
|
result._metadata.propagators.add({
|
||||||
// TODO: remove this fallback in the next markdoc integration major
|
|
||||||
const propagators = result._metadata.propagators || result.propagators;
|
|
||||||
propagators.add({
|
|
||||||
init() {
|
init() {
|
||||||
return headAndContent;
|
return headAndContent;
|
||||||
},
|
},
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
"bugs": "https://github.com/withastro/astro/issues",
|
"bugs": "https://github.com/withastro/astro/issues",
|
||||||
"homepage": "https://docs.astro.build/en/guides/integrations-guide/vercel/",
|
"homepage": "https://docs.astro.build/en/guides/integrations-guide/vercel/",
|
||||||
"exports": {
|
"exports": {
|
||||||
"./edge": "./dist/edge/throw.js",
|
|
||||||
"./edge/entrypoint": "./dist/edge/throw.js",
|
|
||||||
"./serverless": "./dist/serverless/adapter.js",
|
"./serverless": "./dist/serverless/adapter.js",
|
||||||
"./serverless/entrypoint": "./dist/serverless/entrypoint.js",
|
"./serverless/entrypoint": "./dist/serverless/entrypoint.js",
|
||||||
"./static": "./dist/static/adapter.js",
|
"./static": "./dist/static/adapter.js",
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
const msg = `
|
|
||||||
The Astro Vercel Edge adapter has been removed. We recommend switching to @astrojs/vercel/serverless and enabling Edge middleware.
|
|
||||||
|
|
||||||
import { defineConfig } from 'astro/config';
|
|
||||||
import vercel from '@astrojs/vercel/serverless';
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
output: 'server',
|
|
||||||
adapter: vercel({
|
|
||||||
edgeMiddleware: true,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
`.trim();
|
|
||||||
|
|
||||||
throw new Error(msg);
|
|
||||||
|
|
||||||
// Make sure bundlers treat this as ESM.
|
|
||||||
export default {};
|
|
Loading…
Reference in a new issue