gh-43: Full support for ESM modules. #56
Open
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.
Fixes #43 in
v1.3
Problem:
In typescript when using more strict
moduleResolution
such asnodenext
ornode16
, typescript can't find type declarations of the esm module which has.mjs
extension. This is because TypeScript ignores.js
when there is an identically named.d.ts
file beside it. Same happens with.mjs
and.d.mts
but if no such pair found, typescript thinks there are no type declarations.More info in my comment here.
Solution:
Assuming that weaviate team doesn't want to change package module type from
commonjs
tomodule
, keepingcommonjs
as default option, the smallest change is to generated.mts
declaration file. Since we don't have actual.mts
files, it's not easy to emit one using standard bundlers and builders, see. The best workaround I see is to clone original type definitions after build. This will make this PR small and if one day weaviate team decides to implement a build pipeline it will be straightforward to implement this step using other tools.