chore: document core/infra architecture#14815
Conversation
|
There was a problem hiding this comment.
Here's my honest feedback:
- the coding example isn't concrete. You mixed different code, which makes it very difficult to understand how everything is mixed together. We start with the key and logger, but then there's no logger anymore, we eventually end up showing some helpers. This doesn't help understanding how the whole code fits together
- we start with business logic and infrastructure, but then I don't know where the business logic is anymore
- we don't show how the final usage would look like
- we don't show what the final testing would look like, and what we should test. We mentioned only what we shouldn't
- overall there are many assumptions, and even after reading this multiple times, I still can't understand why some interfaces are in
domain.ts, while others are indefinitions/ - overall, don't be afraid to be a bit more verbose, and since you rely more on the code example, make sure to make it consistent and good
|
Thanks for the feedback! I wasn't sure how detailed it should be, I will make it clearer 👍 |
Well, you're imparting some knowledge to the team and current/future contributors. I believe we should be detailed enough so that even first-time contributors understand how the project works |
|
To be clear what I'm proposing here will very likely evolve as we go, this should be considered a living document/guide |
|
It would be great if we could entangle the whole Node.js VS no Node.js |
|
You mean the fact that node things can leak at runtime, isn't it? |
Yeah exactly! |
ematipico
left a comment
There was a problem hiding this comment.
Way better! I managed to understand all of it, great work! I left a few questions/suggestions
Co-authored-by: Emanuele Stoppa <[email protected]>
Co-authored-by: Emanuele Stoppa <[email protected]>
Co-authored-by: Emanuele Stoppa <[email protected]>
CONTRIBUTING.md
Outdated
|
|
||
| ##### `domain/` | ||
|
|
||
| Contains reusable data types or abstractions. You can choose to create one file per abstraction to be explicit (like for `infra/`) or one `domain.ts` file. |
There was a problem hiding this comment.
@ematipico to answer your comment that got resolved, definitions.ts is types for infra only. We may change it at some point
ascorbic
left a comment
There was a problem hiding this comment.
I missed the discussion behind this, but I think it's a great idea. I am a bit confused by the use of "infra" though. It makes me think it's referring to things like servers, databases etc
Co-authored-by: Matt Kane <[email protected]>
|
Yeah that's the goal I think. From what I saw it's usually why they use "infrastructure" as a term but that's mostly for apps. Maybe that makes less sense in the context of a framework. We can still rename it later if we find a better one! No strong opinion |
|
If possible, I think agreeing on a naming convention now is better, so we don't need to come back and change stuff again |
|
As you want! Then let's tackle all these things:
|
|
|
I don't think we should start enforcing rules like this without having any experience with it and seeing value. I see the value in moving runtime (vitetime) code into a separate place, we hve experience there, we know the benefit. But enforcing this feature folder and subfolder idea seems very premature to me. Having structure has some benefits but it also has downsides, like slowing down work to conform to the conventions, making it harder for external contributors to contribute. This is the same reason I don't like rules around commit titles and such. It adds quite a bit of friction. That needs to be proven to have high value, and we don't have that proof at this time as we've never written any modules this way. I would be opposed to someone rewriting one of the features in this style so we can get a better feel for it, and see the benefits. |
|
I'm fine with continuing to experiment before documenting this stuff |
The whole fonts feature has been written this way, and it's covered by many unit tests. Something we couldn't do until now, since we rely heavily on integration tests. If that's not value... |
|
I didn't realize that fonts used this convention (the folder part in particular). Are there any others? |
|
Fonts and partly the CLI. I don't think the file structure matters much at this stage, it just worked for me. I think the principles behind (separating core logic from dependencies + unit tests) are the things that really matter. If we want we could update this PR to be about these principles and talk later about the file structure |
|
@florian-lefebvre Yeah I completely agree with that, focus on principles rather than prescribing how to achieve it. We actually do have a least a couple other examples of this same principle in the codebase, AstroCookies comes to mind that was intentionally done like that. I would also suggest making sure this is framed as advice rather than as a rule. There are places where it's very hard to write testable code and also I think it's still good to try, I don't want people to feel like their PR is going to be rejected for not doing so. |
|
I updated the PR, let me know what you think! |
Co-authored-by: Matthew Phillips <[email protected]>
* fix(ci): Reinstall deps after having published VS Code (#14996) * fix(svelte): allow client directives (#15004) * fix(assets): Fixes missing format option for svgs in the passthrough service (#14987) * fix(assets): Fixes missing format option for svgs in the passthrough service * fix: wtf is going on * chore: changeset * [ci] format * chore: auto format next (#15009) * chore(deps): update github-actions (#15019) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#15020) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Support extending the image API props type (#15014) * [ci] release (#14997) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(content-layer): Try a smarter solution to normalize bare image paths in JSON (#15028) * fix(content-layer): Try a smarter solution to normalize bare image paths in JSON * chore: changeset * [ci] format * chore: document core/infra architecture (#14815) Co-authored-by: Emanuele Stoppa <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Matthew Phillips <[email protected]> Co-authored-by: Matthew Phillips <[email protected]> * [ci] format * fix(astro): assets vite build log (#15034) * chore(sitemap): migrate to astro:routes:resolved (#15033) * fix: Remote images: Prevent internal caching from interfering with Astro's cache (#14954) Co-authored-by: Florian Lefebvre <[email protected]> * [ci] format * Update font utility dependencies to use lighter versions (#15055) * Update font utility dependencies to use lighter versions * Add changeset * skip flaky view transitions redirect test (#15060) * chore(deps): update actions-cool/issues-helper action to v3.7.5 (#15071) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * ClientRouter: Preserve hash fragment during redirects (#15088) * try resurrecting a flaky test (#15089) * fix(deps): update astro adapters (#15084) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#15072) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update astro client runtimes (#15085) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: move ts-plugin node_modules to dist (#15083) * fix: move ts-plugin node_modules to dist * add: changeset * [ci] format * Update image-size (#15105) * fix: components imports paths (#15107) * Tailwind example, README.md: update link (#15099) * fix(assets): Use Vite's isFileLoadingAllowed to check if a file can be loaded (#15052) * fix(assets): Use Vite's isFileLoadingAllowed to check if a file can be loaded * test: add * fix: windwos perhaos? * chore: changeset * [ci] format * Update prettier extension to new one (#15108) * fix(vscode): Correctly handle TypeScript blocks ending with types (#15109) * fix(vscode): Correctly handle TypeScript blocks ending with types * chore: changeset * [ci] format * fix(svelte): improve Svelte children prop type checking (#15070) * chore: Replace fast-glob with tinyglobby in language server (#15057) * chore: Replace fast-glob with tinyglobby in language server * Use `expandDirectories` option for compatibility with fast-glob * Update packages/language-tools/language-server/src/check.ts --------- Co-authored-by: Erika <[email protected]> * view transitions: fix Firefox e2e tests for playwright 1.57 (#15113) * fix(deps): update astro dependencies (#15103) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Lefebvre <[email protected]> * fix: lint vt test (#15114) * [ci] format * fix(deps): update language tools (#15104) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Lefebvre <[email protected]> * Feature/allow node 24 vercel adapter (#15116) * feat(fonts): new font resolver abstraction (#15111) * [ci] format * feat(fonts)!: upgrade unifont and support formats (#15117) Co-authored-by: Sarah Rainsberger <[email protected]> * fix(vue): add HTML attributes to generated TypeScript types (#15016) * fix(vue): add HTML attributes to generated TypeScript types Fixes #14686 * fix: add package exports and update tests for HTML attributes support * test(vue): add astro check test for HTML attributes Add test fixture and test case to verify that Vue components correctly accept HTML attributes (class, style, id, data-*) and client directives via astro check. Follows the same pattern as the Svelte integration tests. * chore: update lockfile for vue prop-types fixture * feat: deduplicate context types (#15122) Co-authored-by: Armand Philippot <[email protected]> * perf(astro): group chunks on emit (#15123) Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: matthewp <[email protected]> Co-authored-by: florian-lefebvre <[email protected]> Co-authored-by: ematipico <[email protected]> * feat(fonts): clean types (#15118) * [ci] release (#15031) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(vscode): Don't update @types/vscode automatically (#15131) * fix(vscode): Don't update @types/vscode automatically * chore: changeset * fix: adjust page warning to only show up in more relevant times (#15127) * fix: adjust page warning to only show up in more relevant times * chore: changeset * [ci] format * Update security contacts list (#15143) * fix(dev): preserve query params when base path is stripped (#15124) Co-authored-by: Florian Lefebvre <[email protected]> * fix(assets): hoist ?? inside JSON.stringify in virtual module codegen (#15140) * fix(assets): hoist nullish coalescing inside JSON.stringify Moves ?? fallbacks before serialization to eliminate dead code in generated virtual module. Fixes esbuild suspicious-nullish-coalescing warning. * chore: add changeset * Attempt to reduce falkiness in view transition e2e tests (#15142) * Attempt to reduce falkiness in view transition e2e tests * try wait for idle state * next try * Update view-transitions.test.js * [ci] format * fix(toolbar): skip image audit for framework components (#15149) * fix(toolbar): skip image audit for framework components Images inside astro-island elements (React, Vue, Svelte, etc. with client:* directives) now skip the 'Use the Image component' audit warning, since these components can't directly use Astro's Image component. Fixes #15048 * test: remove unused image * test: use smaller test image (22KB instead of 253KB) * fix: Accept setCookie from both context and headers (#15152) Co-authored-by: Florian Lefebvre <[email protected]> * [ci] release (#15132) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(ci): Move ts-plugin-bundle to node_modules after recreating node_modules (#15156) * fix(ci): Move ts-plugin-bundle to node_modules after recreating node_modules * fix: make itw ork in dev * chore: changeset * [ci] release (#15158) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix: scripts not rendering with unused Fragment slots (#13847) (#15147) * Fix hydration for framework components in MDX slots (#15150) * Fix hydration for framework components in MDX slots using Astro.slots.render() * Update packages/astro/src/runtime/server/render/slot.ts Co-authored-by: Luiz Ferraz <[email protected]> --------- Co-authored-by: Luiz Ferraz <[email protected]> * [ci] format * Fixes build * fix: apply trailing slash query params fix to new architecture Port fix from #15124 to vite-plugin-app/app.ts --------- Co-authored-by: Erika <[email protected]> Co-authored-by: Antony Faris <[email protected]> Co-authored-by: Erika <[email protected]> Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Chris Swithinbank <[email protected]> Co-authored-by: Houston (Bot) <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Emanuele Stoppa <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: Volpeon <[email protected]> Co-authored-by: Martin Trapp <[email protected]> Co-authored-by: fkatsuhiro <[email protected]> Co-authored-by: Oliver Speir <[email protected]> Co-authored-by: Andreas Deininger <[email protected]> Co-authored-by: Roman <[email protected]> Co-authored-by: fabon <[email protected]> Co-authored-by: Raanelom <[email protected]> Co-authored-by: Sarah Rainsberger <[email protected]> Co-authored-by: Rahul Dogra <[email protected]> Co-authored-by: Armand Philippot <[email protected]> Co-authored-by: James Garbutt <[email protected]> Co-authored-by: matthewp <[email protected]> Co-authored-by: florian-lefebvre <[email protected]> Co-authored-by: ematipico <[email protected]> Co-authored-by: Pegasus <[email protected]> Co-authored-by: Cameron Smith <[email protected]> Co-authored-by: Martin Trapp <[email protected]> Co-authored-by: Rafael ヤスヒデ 須藤 <[email protected]> Co-authored-by: Luiz Ferraz <[email protected]>
* fix(ci): Reinstall deps after having published VS Code (#14996) * fix(svelte): allow client directives (#15004) * fix(assets): Fixes missing format option for svgs in the passthrough service (#14987) * fix(assets): Fixes missing format option for svgs in the passthrough service * fix: wtf is going on * chore: changeset * [ci] format * chore: auto format next (#15009) * chore(deps): update github-actions (#15019) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#15020) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Support extending the image API props type (#15014) * [ci] release (#14997) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(content-layer): Try a smarter solution to normalize bare image paths in JSON (#15028) * fix(content-layer): Try a smarter solution to normalize bare image paths in JSON * chore: changeset * [ci] format * chore: document core/infra architecture (#14815) Co-authored-by: Emanuele Stoppa <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Matthew Phillips <[email protected]> Co-authored-by: Matthew Phillips <[email protected]> * [ci] format * fix(astro): assets vite build log (#15034) * chore(sitemap): migrate to astro:routes:resolved (#15033) * fix: Remote images: Prevent internal caching from interfering with Astro's cache (#14954) Co-authored-by: Florian Lefebvre <[email protected]> * [ci] format * Update font utility dependencies to use lighter versions (#15055) * Update font utility dependencies to use lighter versions * Add changeset * skip flaky view transitions redirect test (#15060) * chore(deps): update actions-cool/issues-helper action to v3.7.5 (#15071) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * ClientRouter: Preserve hash fragment during redirects (#15088) * try resurrecting a flaky test (#15089) * fix(deps): update astro adapters (#15084) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#15072) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update astro client runtimes (#15085) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: move ts-plugin node_modules to dist (#15083) * fix: move ts-plugin node_modules to dist * add: changeset * [ci] format * Update image-size (#15105) * fix: components imports paths (#15107) * Tailwind example, README.md: update link (#15099) * fix(assets): Use Vite's isFileLoadingAllowed to check if a file can be loaded (#15052) * fix(assets): Use Vite's isFileLoadingAllowed to check if a file can be loaded * test: add * fix: windwos perhaos? * chore: changeset * [ci] format * Update prettier extension to new one (#15108) * fix(vscode): Correctly handle TypeScript blocks ending with types (#15109) * fix(vscode): Correctly handle TypeScript blocks ending with types * chore: changeset * [ci] format * fix(svelte): improve Svelte children prop type checking (#15070) * chore: Replace fast-glob with tinyglobby in language server (#15057) * chore: Replace fast-glob with tinyglobby in language server * Use `expandDirectories` option for compatibility with fast-glob * Update packages/language-tools/language-server/src/check.ts --------- Co-authored-by: Erika <[email protected]> * view transitions: fix Firefox e2e tests for playwright 1.57 (#15113) * fix(deps): update astro dependencies (#15103) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Lefebvre <[email protected]> * fix: lint vt test (#15114) * [ci] format * fix(deps): update language tools (#15104) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Lefebvre <[email protected]> * Feature/allow node 24 vercel adapter (#15116) * feat(fonts): new font resolver abstraction (#15111) * [ci] format * feat(fonts)!: upgrade unifont and support formats (#15117) Co-authored-by: Sarah Rainsberger <[email protected]> * fix(vue): add HTML attributes to generated TypeScript types (#15016) * fix(vue): add HTML attributes to generated TypeScript types Fixes #14686 * fix: add package exports and update tests for HTML attributes support * test(vue): add astro check test for HTML attributes Add test fixture and test case to verify that Vue components correctly accept HTML attributes (class, style, id, data-*) and client directives via astro check. Follows the same pattern as the Svelte integration tests. * chore: update lockfile for vue prop-types fixture * feat: deduplicate context types (#15122) Co-authored-by: Armand Philippot <[email protected]> * perf(astro): group chunks on emit (#15123) Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: matthewp <[email protected]> Co-authored-by: florian-lefebvre <[email protected]> Co-authored-by: ematipico <[email protected]> * feat(fonts): clean types (#15118) * [ci] release (#15031) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(vscode): Don't update @types/vscode automatically (#15131) * fix(vscode): Don't update @types/vscode automatically * chore: changeset * fix: adjust page warning to only show up in more relevant times (#15127) * fix: adjust page warning to only show up in more relevant times * chore: changeset * [ci] format * Update security contacts list (#15143) * fix(dev): preserve query params when base path is stripped (#15124) Co-authored-by: Florian Lefebvre <[email protected]> * fix(assets): hoist ?? inside JSON.stringify in virtual module codegen (#15140) * fix(assets): hoist nullish coalescing inside JSON.stringify Moves ?? fallbacks before serialization to eliminate dead code in generated virtual module. Fixes esbuild suspicious-nullish-coalescing warning. * chore: add changeset * Attempt to reduce falkiness in view transition e2e tests (#15142) * Attempt to reduce falkiness in view transition e2e tests * try wait for idle state * next try * Update view-transitions.test.js * [ci] format * fix(toolbar): skip image audit for framework components (#15149) * fix(toolbar): skip image audit for framework components Images inside astro-island elements (React, Vue, Svelte, etc. with client:* directives) now skip the 'Use the Image component' audit warning, since these components can't directly use Astro's Image component. Fixes #15048 * test: remove unused image * test: use smaller test image (22KB instead of 253KB) * fix: Accept setCookie from both context and headers (#15152) Co-authored-by: Florian Lefebvre <[email protected]> * [ci] release (#15132) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(ci): Move ts-plugin-bundle to node_modules after recreating node_modules (#15156) * fix(ci): Move ts-plugin-bundle to node_modules after recreating node_modules * fix: make itw ork in dev * chore: changeset * [ci] release (#15158) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix: scripts not rendering with unused Fragment slots (#13847) (#15147) * Fix hydration for framework components in MDX slots (#15150) * Fix hydration for framework components in MDX slots using Astro.slots.render() * Update packages/astro/src/runtime/server/render/slot.ts Co-authored-by: Luiz Ferraz <[email protected]> --------- Co-authored-by: Luiz Ferraz <[email protected]> * [ci] format * feat: add benchmarks for build times (#15144) * feat: add benchmarks for build times * fix: put back old benchmarks * fix: remove old files * fix: reduce iteration count * fix: move setup in a different step * fix: ignore lints in benchmark projects * chore: lockfile * fix: just straight up nonsense * fix: im stuck in linting hell * [ci] format * feat(fonts)!: update font provider API (#15130) Co-authored-by: Sarah Rainsberger <[email protected]> * [ci] format * fix(deps): update astro adapters (#15173) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ovsx to ^0.10.8 (#15172) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency preact to v10.28.2 [security] (#15160) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(fonts): export googleicons provider (#15174) Co-authored-by: HiDeoo <[email protected]> * [ci] release (#15159) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix: fix image 500 error when moving dist directory in standalone Node (#15169) * fix: fix image 500 error when moving dist directory in standalone Node * clean up old output directory * [ci] format * simplify gif image detection in sharp service (#15161) * Revert fix: Allow node: prefix for Node builtins for Vercel middleware (#14863) * Revert "fix: Allow node: prefix for Node builtins for Vercel middleware (#14839)" This reverts commit 9a284cd. * fix: adjust for feedback * chore: changeset --------- Co-authored-by: Princesseuh <[email protected]> * [ci] format * fix(node): hash URL stripping (#15196) * [ci] format * fix(core): add defensive validation for mod.page in App.render (#15148) * chore(deps): update dependency undici to v6.23.0 [security] (#15209) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(css): rewrite absolute URLs with base path in dev mode (#14622) * fix(css): rewrite absolute URLs with base path in dev mode Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured. Applies URL rewriting after preprocessCSS() using Vite's cssUrlRE regex pattern. Closes #14585 * fix linting error * add changeset * fix spelling in changeset * Update packages/astro/test/units/compile/css-base-path.test.js * fix: experimental --------- Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: Emanuele Stoppa <[email protected]> Co-authored-by: Erika <[email protected]> * [ci] format * Feature(sitemap): named files chunking strategy (#14471) * feat(sitemap): add chunking strategy for sitemaps Adds the ability to split sitemap generation into chunks based on customizable logic. This allows for better management of large sitemaps and improved performance. The new `chunks` option in the sitemap configuration allows users to define functions that categorize sitemap items into different chunks. Each chunk is then written to a separate sitemap file. This change introduces a new `writeSitemapChunk` function to handle the writing of individual sitemap chunks. * feat(sitemap): add chunks option to sitemap config Adds a `chunks` option to the sitemap configuration schema. This allows users to define custom chunking strategies for generating sitemaps, providing flexibility in how the sitemap is split into multiple files. * feat(sitemap): add sitemap chunk writing functionality * fix(sitemap): fix empty callback in writeSitemap The empty callback function in the `writeSitemap` function was causing unnecessary function calls. This commit fixes this by removing the empty callback. * feat(sitemap): add test fixture for sitemap chunking This commit adds a test fixture to verify the sitemap chunking functionality. It includes a configuration file, dependencies, and several pages to simulate a real-world scenario. * test(sitemap): add test for sitemap chunking with files * feat(sitemap): add changeset for sitemap chunking Adds changeset to document the new sitemap chunking feature. This feature allows splitting sitemap generation into chunks based on customizable logic, improving management of large sitemaps and performance. * build: update dependencies and add astro * chore: remove unused astro dependency * chore: remove unused entries from lockfile * refactor(sitemap): improve import ordering and formatting * refactor(sitemap): improve import ordering The import order of `AstroConfig` has been moved to align with other imports, improving code readability and consistency. This change ensures that type imports are grouped together, making the codebase easier to maintain. * refactor(sitemap): improve import ordering * refactor(sitemap): improve import ordering * refactor(sitemap): improve import ordering * refactor(sitemap): improve chunk file test readability Simplify the chunk file test by using `path.resolve` and `includes` for better readability and maintainability. This change improves the test's clarity without altering its functionality. * test(sitemap): fix flaky chunk file tests The tests were failing intermittently because the `readXML` function was not properly resolving the file path. This commit updates the `readXML` function to use `fixture.readFile` to ensure that the file path is resolved correctly. Additionally, the `flatMapUrls` function is now async to ensure that the `readXML` function is awaited. * refactor(sitemap): improve import ordering * Update .changeset/floppy-times-grab.md Co-authored-by: Matt Kane <[email protected]> * chore(sitemap): update changeset to minor The previous changeset incorrectly marked the sitemap chunking feature as a major change. This commit corrects the changeset to reflect that it is a minor feature addition. * feat(sitemap): add chunking support for sitemap generation * fix: attempt to fix lockfile * fix: conflict * fix: lockfile --------- Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Princesseuh <[email protected]> * [ci] format * fix(docs): replace outdated Astro docs links (#15199) * fix: update outdated links to Astro Docs * some were correctly redirected, but might as well use the new links * some used the right page, but the section has been renamed or removed * some were no longer targeting the correct page * docs: add changeset * fix(lint): Move ESLint comment (#15216) * chore: move all pnpm settings to `pnpm-workspace.yaml` (#15139) * Upgrade diff package to v8 (#15219) * Upgrade diff package to v8 * Update packages/astro/package.json Co-authored-by: Chris Swithinbank <[email protected]> --------- Co-authored-by: Chris Swithinbank <[email protected]> * [ci] release (#15188) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix: update devalue to the latest (#15222) * fix(css): prevent CSS double-bundling (#14991) (#15017) * fix(css): prevent double-bundling when CSS imported from multiple locations Fixes #14991 When CSS was imported in both a page's frontmatter and a component's script tag, it was bundled twice in production builds. This happened because the CSS plugins run for both SSR and client builds, adding CSS to the same pageData.styles array. The fix adds content-based deduplication that checks existing styles before adding new ones - comparing by content for inline CSS and by src for external CSS. * chore: update pnpm-lock.yaml for new test fixture --------- Co-authored-by: Erika <[email protected]> * chore: add devalue changeset (#15225) * [ci] release (#15224) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * ci(benchmark): Run benchmarks on next as well (#15226) * fix: assets referenced via js chunks are not flagged as orphaned (#14607) * test: add failing case for url imports * fix: files added to chunks are not orphaned * docs: add comment explaining updated orphaned logic * docs: add changeset * fix: only check importedAssets * test: add case for ?url&no-inline import * Revert "Revert "fix(build): Prevent duplicate CSS for hydrated client components" (#14612)" This reverts commit 18552c7. * docs: update changeset * docs: update changeset * fix: lockfile --------- Co-authored-by: Erika <[email protected]> * [ci] format * Include styles for conditionally rendered Svelte 5 components (#15227) * fix(css): include styles for conditionally rendered Svelte 5 components When Svelte 5 components are conditionally rendered (e.g., inside {#if} blocks with an initially false condition), their styles were not being included in production builds. This happened because: 1. Svelte 5.26+ added css.hasGlobal flag to compiler output 2. vite-plugin-svelte 5.1.0+ uses this to add cssScopeTo metadata 3. Vite 6.2+ cssScopeTo allows CSS treeshaking if the export isn't "used" During SSR, conditionally rendered components aren't included in the server build (tree-shaken), but they are in the client build. Astro's CSS-to-page mapping primarily happens during the server build, so the CSS gets orphaned. The fix adds logic in the client build's generateBundle to: - Track which component exports are actually rendered (renderedComponentExports) - For CSS modules with cssScopeTo metadata where the export IS rendered, walk up the module graph to find pages and ensure the CSS is included Fixes #14252 * Track components from server pages * Revert "Update prettier extension to new one (#15108)" (#15235) This reverts commit a012a86. * fix(deps): update astro client runtimes (#15240) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update e18e/action-dependency-diff action to v1.4.3 (#15239) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update astro adapters (#15243) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update astro dependencies (#15241) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency prettier to ^3.8.0 (#15244) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#15242) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Lefebvre <[email protected]> * fix: build * fix: lint * chore: upgrade pnpm (#15246) * chore: enable lockfile maintenance (#15245) * [ci] format * refactor(fonts): do not mutate provider name (#15190) * refactor(fonts): use runtime as entrypoint (#15181) * revert: renovate config rename (#15250) * Fix greedy regex in error message markdown rendering (#15230) Fixes #15068 * bug: Support remote url for css in content collection (#15254) fixes: #15252 * fix: prevent font copying when stopping dev server with q+enter (#15178) Co-authored-by: Florian Lefebvre <[email protected]> * fix: renovate config typo (#15256) * React / MDX nested regression (#15253) * test: add e2e test for React component nested in div in MDX Adds a regression test for issue #15251 where React components with client:load nested inside HTML elements in MDX files fail to hydrate. * fix: revert renderComponentToString changes that broke nested React hydration in MDX Reverts the changes to renderComponentToString from PR #15150 that caused React components nested inside HTML elements in MDX files to fail to hydrate. The original fix for MDX slot hydration still works without these changes. Fixes #15251 * chore: add changeset * chore(deps): lock file maintenance (#15257) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix tests that needed updating * Fix test that's statically false by mistake * Add virtual modules from astro integrations to external list --------- Co-authored-by: Erika <[email protected]> Co-authored-by: Antony Faris <[email protected]> Co-authored-by: Erika <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Chris Swithinbank <[email protected]> Co-authored-by: Houston (Bot) <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Emanuele Stoppa <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Matthew Phillips <[email protected]> Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: Volpeon <[email protected]> Co-authored-by: Martin Trapp <[email protected]> Co-authored-by: fkatsuhiro <[email protected]> Co-authored-by: Oliver Speir <[email protected]> Co-authored-by: Andreas Deininger <[email protected]> Co-authored-by: Roman <[email protected]> Co-authored-by: fabon <[email protected]> Co-authored-by: Raanelom <[email protected]> Co-authored-by: Sarah Rainsberger <[email protected]> Co-authored-by: Rahul Dogra <[email protected]> Co-authored-by: Armand Philippot <[email protected]> Co-authored-by: James Garbutt <[email protected]> Co-authored-by: matthewp <[email protected]> Co-authored-by: ematipico <[email protected]> Co-authored-by: Pegasus <[email protected]> Co-authored-by: Cameron Smith <[email protected]> Co-authored-by: Martin Trapp <[email protected]> Co-authored-by: Rafael ヤスヒデ 須藤 <[email protected]> Co-authored-by: Luiz Ferraz <[email protected]> Co-authored-by: Matthew Phillips <[email protected]> Co-authored-by: HiDeoo <[email protected]> Co-authored-by: Julien Cayzac <[email protected]> Co-authored-by: Drew Powers <[email protected]> Co-authored-by: Emanuele Stoppa <[email protected]> Co-authored-by: MkDev11 <[email protected]> Co-authored-by: andy <[email protected]> Co-authored-by: Luky Setiawan <[email protected]> Co-authored-by: btea <[email protected]> Co-authored-by: cid <[email protected]> Co-authored-by: Simen Sagholen Førrisdal <[email protected]> Co-authored-by: Alex Launi <[email protected]> Co-authored-by: Kedar Vartak <[email protected]> Co-authored-by: Matthew Phillips <[email protected]>
Changes