Repository navigation
fix: atomically publish generated route types - #17695
Draft
svelte-triage-bot[bot] wants to merge 1 commit into
Draft
svelte-triage-bot[bot] wants to merge 1 commit into
svelte-triage-bot[bot] wants to merge 1 commit into
Conversation
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/44d2f2e9d698ad57ab7289fd0bf3a88bc6d640cbOpen in Note This PR is from a fork. A maintainer must approve approve each commit before it can be built and installed. |
🦋 Changeset detectedLatest commit: 44d2f2e The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #17694
Route declarations and their generated proxies are written directly to their live paths. A reader can open them after truncation but before the new text is written, turning otherwise valid
$typesimports into error types.Publish completed text through UUID-named temporary files under
outDir, then rename it over the destination. Staging outsidetypesmatters: another sync can classify a sibling temporary as a stale route output and delete it before publication. Proxy publication now lives inupdate_types, alongside declaration publication, using the proxy objects already returned byprocess_node. The same writer covers the module's metadata output. Failed publication propagates the error and removes the temporary rather than falling back to another truncating write.This preserves the unconditional-write behavior introduced in #5063, including regeneration timestamps and recreation after cleanup. Switching to
write_if_changedwould neither provide atomic publication on current main nor preserve those semantics. The final merged #17310 retained disk-content comparison but not atomic publication; #17682 addresses that shared writer separately. Keeping this change local also avoids changing adapter/prerender writer behavior.#17096 previously staged metadata outside the cleanup tree, but was reverted by #17281 because preserving metadata exposed a cache-invalidation regression. This reuses the safe staging location without restoring metadata preservation or changing invalidation. Stale-file and empty-directory cleanup from #17472 remain intact. The separate root-output deletion issue (#17465) is not addressed here: publication is atomic per file, not a transaction over cleanup and all route outputs.
The scope includes full sync and incremental updates, page and layout declarations, both server and universal proxies, and the adjacent metadata write.