DanielXMoore / Civet

A TypeScript superset that favors more types and less typing
https://civet.dev
MIT License
1.55k stars 33 forks source link

Fix source-map-support import with new NodeJS register #1265

Closed edemaine closed 5 months ago

edemaine commented 5 months ago

Our rewrite in ESM support to NodeJS's new module register function (#1128) messed up @cspotcode/source-map-support. It seems that the registered module (esm.civet) runs in a separate Worker or other context, so it doesn't enable sourcemap support in the main thread. We had a second call to source-map-support for CJS, but it was broken because it didn't specify retrieveFile.

A result of this is we can't (easily) use a cache to share the compiled source code between the build for loading and the build for sourcemapping. I think this is fine, as we only need to recompile when dealing with an exception, which is presumably exceptional. But I kept a cache in the sourcemapping side, in case the user uses exceptions for a lot of logic or something.

Also fixed a bug in CJS require.extensions mode (which still seems important for node -r @danielx/civet/register) that didn't use sync mode.

Also removed some claims that this ESM/CJS functionality needs ts-node. This hasn't been true for a while: we compile in js: true mode.