Resolve circular dependency issues downstream in Winston #207
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.
Issue #1886 in Winston is caused by the circular dependency between
index.js
andlegacy.js
here, which is done in order to exposeLegacyTransportStream
as a property onTransportStream
. The way this circular dependency works also causes an issue in this module if you import the legacy submodule before importing the main module:(That said, doing something that causes the above issue would pretty unusual for people using this module directly. But Winston does it, which causes problems for downstream Winston users.)
Anyway, this resolves the issue in a non-breaking way by moving the definition of
TransportStream
to its own module and havingLegacyTransportStream
depend on that. Then theindex.js
module just imports both and addsLegacyTransportStream
as a property onTransportStream
. In an ideal world, I think these would just be two entirely separate properties on a plain old exports object, but that would be a breaking change that probably isn't worthwhile.