feat: refine container APIs for renderers #11251
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
This PR consolidates the API introduced in #11234
Closes #11181
I changed the signature the API to accept an object. The object can accept a
renderer
(new renderer) andrenderer
+name
for renderers.Why add
name
to renderers and making it mandatory? Thename
comes from theAstroRenderer
interface, which is the interface meant to tell Astro how to load the renderer itself. Once the renderer is loaded, Astro adds the name to the resolved renderer. However, with this API, the user must import the renderer itself, and they provide the name themselves. Although the name isn't arbitrary; internally, we have a few exceptions/checks around the name, e.g.@astrojs/lit
.In this PR, I updated the exported
server.js
files to export the name too, and I added a small interface to make them easily discoverable via TS.Testing
Updated an existing test
Docs
I updated an existing changeset because we haven't released the former API yet