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

sourceURL in non-eval sources #125

Open
nicolo-ribaudo opened this issue Sep 5, 2024 · 5 comments
Open

sourceURL in non-eval sources #125

nicolo-ribaudo opened this issue Sep 5, 2024 · 5 comments

Comments

@nicolo-ribaudo
Copy link
Member

@legendecas can give more info, but it looks like Node.js is using //#sourceURL to map "virtual" files (created by transpiling TS on-the-fly) to their original filenames, without using a full source map. This is possible because in their implementation all the JS tokens are still in the original position, so mapping locations is not actually needed.

Does our spec support this use case, or does it only support the comment in eval()? In https://tc39.es/source-map/#linking-evald-code-to-named-generated-code says that it's for eval()'ed code, while in https://tc39.es/source-map/#linking-generated-code it also mentions it for "normal scripts".

@jkup
Copy link
Collaborator

jkup commented Sep 18, 2024

It does look to conflict a bit. I think we can loosen or remove the first link and have it not mention eval. I think it should just say we allow sourceUrl and it takes priority over source maps.

@legendecas
Copy link
Member

yeah, I think it is would be great to indicate that //#sourceURL can solely present in "normal scripts", without a //#sourceMappingURL.

@jridgewell
Copy link
Member

jridgewell commented Sep 20, 2024

I think it should just say we allow sourceUrl and it takes priority over source maps.

Turbopack uses both when eval()ing HMR'd updates:

  • sourceUrl to provide a file name
  • sourceMappingUrl to provide the updated source content of the file.

@jkup
Copy link
Collaborator

jkup commented Sep 25, 2024

@legendecas @jridgewell thank you for the context! What is safe to say in the spec? I'd like to remove the with eval’d code and change evalSourceUrl to sourceUrl but maybe we don't say anything further for now? So we allow both browsers and bundlers to keep doing what they are currently doing?

@jridgewell
Copy link
Member

Yah, removing references to "eval" seems good to me. See also https://bloomberg.github.io/ts-blank-space/ which is using sourceURL in a real (non-evaled) output file to correct the name of the file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants