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

Cannot access ambient const enums when 'isolatedModules' is enabled. #539

Closed
stevemckenzie opened this issue Jan 18, 2024 · 5 comments · Fixed by #594
Closed

Cannot access ambient const enums when 'isolatedModules' is enabled. #539

stevemckenzie opened this issue Jan 18, 2024 · 5 comments · Fixed by #594

Comments

@stevemckenzie
Copy link

You currently cannot use RuleType in any conditions if you have isolatedModules enabled.

@quantizor
Copy link
Owner

Hmm, what's the fix? I don't use isolatedModules in the tsconfig.json for this library

@roger-schaer
Copy link
Contributor

Hi there,

I'm also encountering this issue, both in my source code when e.g. checking the RuleType of a given node:

Cannot access ambient const enums when 'isolatedModules' is enabled. ts(2748)

But more importantly when running tests with Jest, tests of code involving RuleType fail with the following error:

TypeError: Cannot read properties of undefined (reading 'htmlBlock') Jest

FYI, I'm using rsbuild & SWC.

From what I could gather, the official recommendation from TypeScript is to completely avoid the use of const enums, including publishing ambient const enums: https://blog.beraliv.dev/2022-09-10-with-or-without-enums#ambient-const-enum-pitfalls.

Perhaps it would be worth considering converting RuleType to a simple object instead of an enum?

Thanks for this library, it's really great that it's so small!

@quantizor
Copy link
Owner

Perhaps it would be worth considering converting RuleType to a simple object instead of an enum?

Yeah, I think that's the way to go. Would you be interested in submitting a PR? Have a bunch of life stuff going on atm so not sure when I will be able to work on this.

@roger-schaer
Copy link
Contributor

Hello @quantizor, sure I can take a look, also quite busy but I think it could be worth it! I'll try to tackle it in the coming weeks and keep you updated on my progress.

@roger-schaer
Copy link
Contributor

Hi there @quantizor, sorry for the long wait, but I finally had some time to look into refactoring the const enum for the RuleType into an object. I created a PR here : #594

It would be great if you could have a look, the changes are fairly minor and should not impact the usage of the library at all.

Let me know what you think, I hope this approach makes sense and can make the library easier to integrate with different bundling setups.

quantizor added a commit that referenced this issue Aug 18, 2024
* refactor: replace RuleType enum with a const & export it in index.cjs.tsx

* chore: add changeset

* chore: fix build

---------

Co-authored-by: Evan Jacobs <[email protected]>
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

Successfully merging a pull request may close this issue.

3 participants