asyncapi / generator

Use your AsyncAPI definition to generate literally anything. Markdown documentation, Node.js code, HTML documentation, anything!
https://asyncapi.com/docs/tools/generator
Apache License 2.0
759 stars 218 forks source link

`ts-node` is registered if `generator` is imported in a .js file #1030

Closed bakasmarius closed 2 months ago

bakasmarius commented 1 year ago

Describe the bug

ts-node is registered if @asyncapi/generator is simply imported in a file, even though the constructor or any other of generator's methods is not called at all. This means that after building a TypeScript project, when it is transpiled to JavaScript, ts-node is still registered, even though TypeScript is not needed anymore. This also means that ts-node is registered in a JavaScript project that does not use TypeScript at all. We noticed it because after adding nestjs-asyncapi (which uses @asyncapi/generator) to one of our bigger projects, the startup time of npm start increased by ~30 seconds.

How to Reproduce

Create a new file test.js which only imports @asyncapi/generator and does nothing else with it:

const { REGISTER_INSTANCE } = require('ts-node');
console.log(process[REGISTER_INSTANCE] == null); // prints "true"
const generator = require('@asyncapi/generator');
console.log(process[REGISTER_INSTANCE] == null); // prints "false"

run node test.js and look at the output

Expected behavior

ts-node is registered only when it's actually needed.

github-actions[bot] commented 1 year ago

Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our contributors guide and the instructions about a basic recommended setup useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.

derberg commented 1 year ago

This is the reason -> https://github.com/asyncapi/generator/blob/master/lib/generator.js#L59 -> https://github.com/asyncapi/generator/blob/master/lib/utils.js#L163

This is why it was added: https://github.com/asyncapi/generator/pull/519

Any suggestions?

Looks like it would be enough to call this register function only if there are .ts files in:

🤔

derberg commented 11 months ago

@magicmatatjahu wdyt?

github-actions[bot] commented 7 months ago

This issue has been automatically marked as stale because it has not had recent activity :sleeping:

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience :heart:

AnimeshKumar923 commented 7 months ago

still valid? @derberg

derberg commented 7 months ago

@AnimeshKumar923 yes, go ahead with PR if you want 🙏🏼

github-actions[bot] commented 2 months ago

This issue has been automatically marked as stale because it has not had recent activity :sleeping:

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience :heart: