guybedford / es-module-lexer

Low-overhead lexer dedicated to ES module parsing for fast analysis
MIT License
912 stars 47 forks source link

Convert WASM bridge to TypeScript #130

Closed aomarks closed 1 year ago

aomarks commented 1 year ago

As discussed in https://github.com/guybedford/es-module-lexer/issues/127, this PR converts the WASM JavaScript bridge to TypeScript.

I suggest looking at each commit individually for the best diffs. There's an intermediate commit that shows the differences between the original and newly generated .js and d.ts files. The next commit deletes them, since I don't think we want those artifacts checked in?

There shouldn't be any user-affecting changes in this PR. dist/lexer.js ends up being byte-for-byte identical, and types/lexer.d.ts should be semantically identical (verified manually), though with slightly different formatting.

For the build, I am using swc + chomp to generate the .js file as requested in https://github.com/guybedford/es-module-lexer/issues/127#issuecomment-1204629293. It worked great! However, since swc doesn't generate .d.ts files, I also included a chomp tsc step with the --emitDeclarationOnly flag. Hopefully this is OK? The two steps can at least run in parallel.

Thanks!

aomarks commented 1 year ago

Thanks for posting, this all looks great to me, happy to merge and release, just see the two comments in the review.

Thanks! Comments addressed.