Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: correctly include ambient types from adapters #12088

Merged
merged 22 commits into from
Jan 17, 2025

Conversation

eltigerchino
Copy link
Member

@eltigerchino eltigerchino commented Apr 7, 2024

part of closing #11731
closes #12433

While investigating #11731 , I found that the ambient types from adapters weren't showing up when I tried installing the cloudflare, vercel, and node adapters in a fresh project and tried to access the autocomplete on event.platform. This is dependent on #12090 being merged first to get the types to show up in the IDE autocomplete.

This PR does the following:

* includes the svelte.config.js file in the generated tsconfig so that when the svelte.config.js file imports the adapter, the ambient types are included for the whole project. EDIT: separated into #12090
* references the worker types in the cloudflare adapters so that when the adapter is used, the project can access those types.

  • standardises the naming of the files containing the internal adapter types and the ambient types we want included in the user's project when they add the adapter to the svelte config.
  • includes the Vercel and Node ambient types in the package.json files array so users can get those types included automatically for their event.platform.

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: /~https://github.com/sveltejs/rfcs
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests

  • Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

  • If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

Edits

  • Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.

@eltigerchino eltigerchino added adapters - general Support for functionality general to all adapters pkg:adapter-vercel Pertaining to the Vercel adapter pkg:adapter-node pkg:adapter-cloudflare-workers pkg:adapter-cloudflare labels Apr 7, 2024
Copy link

changeset-bot bot commented Apr 7, 2024

🦋 Changeset detected

Latest commit: 6242385

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@sveltejs/adapter-vercel Patch
@sveltejs/adapter-node Patch

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

@dummdidumm
Copy link
Member

Inclusion of the Svelte config was reverted in #11908 because it's a breaking change strictly speaking. Is it ok to hold off from doing this until 3.0?

@eltigerchino
Copy link
Member Author

eltigerchino commented Apr 7, 2024

Inclusion of the Svelte config was reverted in #11908 because it's a breaking change strictly speaking. Is it ok to hold off from doing this until 3.0?

Oh whoops. I didn’t realise it was something we already tried to do before.

Yeah, I think it’s fine to wait for 3.0 for this. It has an easy workaround (just include the types or reference the adapter in a declaration file). Maybe I can split the ambient declaration changes and the svelte config inclusion into separate PRs?

@eltigerchino
Copy link
Member Author

note: it was suggested to not include the cloudflare types because they pollute the ambient types namespace.

@eltigerchino
Copy link
Member Author

eltigerchino commented Jul 23, 2024

@benmccann is this a breaking change because of the additional types in the ambient namespace?

@benmccann benmccann removed this from the 3.0 milestone Jul 23, 2024
@benmccann
Copy link
Member

Oh, I was confused because of the prior conversation on this PR (which seems to refer to a change that was dropped from this PR and moved to #12090) and because this PR was in the 3.0 milestone. I've taken it off the 3.0 milestone and removed the breaking change label

@@ -1,3 +1,5 @@
/// <reference types="@cloudflare/workers-types" />
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc: @gtm-nayan do you still think we should omit the worker types reference here to avoid polluting the ambient namespace?

Copy link
Contributor

@gtm-nayan gtm-nayan Jul 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally yes, but I should note that my usage of Cloudflare is only limited to a couple of projects so we could get more empirical.

Are the declarations limited to types or do they also add global variable and module declarations?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not entirely sure myself. @dario-piotrowicz what do you think about this? Are there any other frameworks doing this?

As an aside, I'm already getting them as ambient types because I have the drizzle orm d1 driver imported and they're doing this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm removing them from the ambient file since our docs already suggest to import them directly. https://svelte.dev/docs/kit/adapter-cloudflare#Runtime-APIs

@Rich-Harris
Copy link
Member

preview: https://svelte-dev-git-preview-kit-12088-svelte.vercel.app/

this is an automated message

Copy link
Member

@dummdidumm dummdidumm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good except one question

packages/adapter-netlify/index.d.ts Outdated Show resolved Hide resolved
@dummdidumm dummdidumm merged commit 9bea757 into main Jan 17, 2025
14 checks passed
@dummdidumm dummdidumm deleted the fix-adapter-ambient-types branch January 17, 2025 10:41
@github-actions github-actions bot mentioned this pull request Jan 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

The ambient of the adapters must be added to the generated types
5 participants