feat: Extend user-defined server-only modules functionality to $lib/server
#6623
+505
−130
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.
Extend the "throw an error if you import this on the client" functionality to
$lib/server
so that you don't necessarily have to name every module you want to be server-onlysomething.server.ts
.I also refactored the recursive graph traversal to try to encapsulate concerns a bit more. I was getting frustrated with having to make the same change to the same logic in different places, so I factored the "illegal-checking" away from the "traverse the vite/rollup graph" part. It's technically more lines of code, but most of the addition is in the form of JSDoc comments. I added a bunch of them to make the return types of the functions explicit -- we previously had a few very-subtle bugs where functions were returning
undefined
instead offalse
or something like that. Nothing causing any issues yet, but better to be explicit when recursion is involved.Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm test
and lint the project withpnpm lint
andpnpm check
Changesets
pnpm changeset
and following the prompts. All changesets should bepatch
until SvelteKit 1.0