-
Notifications
You must be signed in to change notification settings - Fork 2
fix: try 2 @ linking to documentation #200
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
fix: try 2 @ linking to documentation #200
Conversation
WalkthroughThis update standardizes how ESLint rule documentation URLs are provided in the Changes
Sequence Diagram(s)sequenceDiagram
participant Developer
participant ESLint Rule
participant GitHub Docs
Developer->>ESLint Rule: Uses rule in codebase
ESLint Rule->>GitHub Docs: Provides fixed documentation URL
Developer->>GitHub Docs: Accesses rule documentation via URL
Possibly related PRs
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
packages/eslint-plugin-rxjs/src/lib/rules/just.tsOops! Something went wrong! :( ESLint: 9.31.0 ESLint couldn't find the plugin "@typescript-eslint/eslint-plugin". (The package "@typescript-eslint/eslint-plugin" was not found when loaded as a Node module from the directory "".) It's likely that the plugin isn't installed correctly. Try reinstalling by running the following:
The plugin "@typescript-eslint/eslint-plugin" was referenced from the config file in " » plugin:@nx/typescript". If you still can't figure out the problem, please see https://eslint.org/docs/latest/use/troubleshooting. packages/eslint-plugin-rxjs/src/lib/rules/ban-operators.tsOops! Something went wrong! :( ESLint: 9.31.0 ESLint couldn't find the plugin "@typescript-eslint/eslint-plugin". (The package "@typescript-eslint/eslint-plugin" was not found when loaded as a Node module from the directory "".) It's likely that the plugin isn't installed correctly. Try reinstalling by running the following:
The plugin "@typescript-eslint/eslint-plugin" was referenced from the config file in " » plugin:@nx/typescript". If you still can't figure out the problem, please see https://eslint.org/docs/latest/use/troubleshooting. packages/eslint-plugin-rxjs/src/lib/rules/no-compat.tsOops! Something went wrong! :( ESLint: 9.31.0 ESLint couldn't find the plugin "@typescript-eslint/eslint-plugin". (The package "@typescript-eslint/eslint-plugin" was not found when loaded as a Node module from the directory "".) It's likely that the plugin isn't installed correctly. Try reinstalling by running the following:
The plugin "@typescript-eslint/eslint-plugin" was referenced from the config file in " » plugin:@nx/typescript". If you still can't figure out the problem, please see https://eslint.org/docs/latest/use/troubleshooting.
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
View your CI Pipeline Execution ↗ for commit 39234f4
☁️ Nx Cloud last updated this comment at |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (19)
packages/eslint-plugin-rxjs/src/lib/rules/throw-error.ts (1)
9-11
: Same hard-coded URL duplication as noted inno-tap.ts
Please apply the shared URL factory pattern here too.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-takewhile-value.ts (1)
12-14
: Repeated constant URL – see earlier commentUsing a common helper or string template will remove this duplication.
packages/eslint-plugin-rxjs/src/lib/rules/no-sharereplay.ts (1)
11-13
: Hard-coded docs link duplicateRefactor as suggested for
no-tap.ts
to keep URLs centralised.packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-switchmap.ts (1)
23-25
: URL duplicationSame remark: introduce a shared URL builder to avoid copy-pasting the full path.
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-subject-next.ts (1)
14-16
: Same URL-construction duplication as noted inno-internal.ts
See previous comment for a templated solution.
packages/eslint-plugin-rxjs/src/lib/rules/just.ts (1)
6-8
: Same URL-construction duplication as noted inno-internal.ts
See earlier suggestion for using the supplied
ruleName
.packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-subscribe.ts (1)
7-9
: Same URL-construction duplication as noted inno-internal.ts
Reuse the
ruleName
argument instead of a hard-coded string.packages/eslint-plugin-rxjs/src/lib/rules/no-topromise.ts (1)
7-9
: Same URL-construction duplication as noted inno-internal.ts
Applying the earlier DRY fix will future-proof this file as well.
packages/eslint-plugin-rxjs/src/lib/rules/no-redundant-notify.ts (1)
15-17
: Apply shared URL helper for consistencySame duplication comment as above. Moving to a shared
url
function (or helper) keeps every rule in sync and avoids future copy-paste errors.packages/eslint-plugin-rxjs/src/lib/rules/no-subclass.ts (1)
7-9
: Use template-based URL instead of literalSee earlier note—switching to
ruleName => \
.../${ruleName}.md`` (or shared helper) increases maintainability.packages/eslint-plugin-rxjs/src/lib/rules/no-subject-unsubscribe.ts (1)
6-8
: Consolidate documentation URL constructionReplicate the shared helper pattern here to avoid hard-coding each rule’s path.
packages/eslint-plugin-rxjs/src/lib/rules/no-index.ts (1)
5-7
: Same URL-deduplication concern as noted forno-unsafe-takeuntil
Please apply the shared
createRule
helper here too for consistency.packages/eslint-plugin-rxjs/src/lib/rules/no-subscribe-handlers.ts (1)
7-9
: Same URL-deduplication concern as noted forno-unsafe-takeuntil
Apply the common
createRule
helper.packages/eslint-plugin-rxjs/src/lib/rules/no-compat.ts (1)
6-8
: Same URL-deduplication concern as noted forno-unsafe-takeuntil
Apply the common
createRule
helper.packages/eslint-plugin-rxjs/src/lib/rules/no-implicit-any-catch.ts (1)
43-45
: Same URL-deduplication concern as noted forno-unsafe-takeuntil
Apply the common
createRule
helper.packages/eslint-plugin-rxjs/src/lib/rules/no-subject-value.ts (1)
7-9
: Same DRY concern as insuffix-subjects
– see earlier comment
Using the sharedruleUrl
helper avoids the need to duplicate the full URL here.packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-replay-buffer.ts (1)
9-11
: Same DRY concern as insuffix-subjects
– see earlier commentpackages/eslint-plugin-rxjs/src/lib/rules/no-ignored-notifier.ts (1)
11-13
: Same DRY concern as insuffix-subjects
– see earlier commentpackages/eslint-plugin-rxjs/src/lib/rules/no-exposed-subjects.ts (1)
15-17
: Same DRY concern as insuffix-subjects
– see earlier comment
🧹 Nitpick comments (11)
packages/eslint-plugin-rxjs/src/lib/rules/no-tap.ts (1)
5-7
: Prefer a single URL factory instead of hard-coding every rule’s link
RuleCreator
provides the rule name as its first argument. Returning a constant string here duplicates the rule name and will have to be touched in every file if the docs path ever moves. Consider one of:-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-tap.md' -)({ +const DOCS_URL_BASE = + 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules'; + +export default ESLintUtils.RuleCreator( + (name) => `${DOCS_URL_BASE}/${name}.md`, +)({or create a shared
createRule
helper and reuse it across all rules to stay DRY.packages/eslint-plugin-rxjs/src/lib/rules/no-internal.ts (1)
7-9
: Prefer deriving the docs URL from the rule name to avoid duplicationHard-coding the full GitHub URL in every rule means:
• Any repo move (
main
→master
, owner rename, path change) forces a sweep of all rule files.
• Typos or copy-paste errors become more likely.Leverage the
ruleName
argument thatRuleCreator
passes instead:-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-internal.md' -)({ +export default ESLintUtils.RuleCreator( + (name) => + `https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/${name}.md` +)({That keeps the pattern DRY and resilient.
packages/eslint-plugin-rxjs/src/lib/rules/prefer-observer.ts (1)
17-19
: Parameterise the documentation URL to eliminate duplicationHard-coding the full URL in every rule means each file must be touched if the repo is moved, the branch name changes, or the docs folder is re-organised. Consider leveraging the
ruleName
parameter thatRuleCreator
passes in:-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/prefer-observer.md' -)({ +const url = (name: string) => + `https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/${name}.md`; + +export default ESLintUtils.RuleCreator(url)({One central helper (e.g.
createRuleWithDocsUrl
) could live insrc/lib/utils/rule-creator.ts
and be reused by all rules.packages/eslint-plugin-rxjs/package.json (1)
3-3
: Synchronise version bump with CHANGELOG
package.json
jumped to1.0.22
; ensure the changelog (or release notes) reflects the new version so consumers understand what changed.packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-observable.ts (1)
7-9
: Use theruleName
parameter instead of hard-coding the full URL
RuleCreator
passes the rule name to the callback, letting you build one generic URL builder and avoid copy-pasting the full path in every rule. That shrinks future maintenance and eliminates risk of typos.-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-ignored-observable.md' -)({ +export const docsUrl = (rule: string) => + `https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/${rule}.md`; + +export default ESLintUtils.RuleCreator(docsUrl)({A helper such as
docsUrl
(ideally moved to a small util module) can then be reused by every rule file.packages/eslint-plugin-rxjs/src/lib/rules/no-async-subscribe.ts (1)
7-9
: Avoid per-file URL duplicationSame comment as above: leverage the
ruleName
argument so each file need only import the shareddocsUrl
helper.-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-async-subscribe.md' -)({ +export default ESLintUtils.RuleCreator(docsUrl)({packages/eslint-plugin-rxjs/src/lib/rules/no-connectable.ts (1)
6-8
: Centralise docs URL generationCopy-pasted constants make future path changes error-prone. Re-use a single callback that interpolates
ruleName
.-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-connectable.md' -)({ +export default ESLintUtils.RuleCreator(docsUrl)({packages/eslint-plugin-rxjs/src/lib/rules/no-nested-subscribe.ts (1)
7-9
: Factor out repeated docs URLsHard-coding each rule’s link scales poorly. Prefer a shared helper that formats
https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/.../${ruleName}.md
.-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-nested-subscribe.md' -)({ +export default ESLintUtils.RuleCreator(docsUrl)({packages/eslint-plugin-rxjs/src/lib/rules/no-finnish.ts (1)
11-13
: DRY up documentation URL constructionAs with the other rule files, consider injecting the rule name rather than repeating the full path.
-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-finnish.md' -)({ +export default ESLintUtils.RuleCreator(docsUrl)({Implementing once in a tiny utility keeps every rule consistent and maintainable.
packages/eslint-plugin-rxjs/src/lib/rules/suffix-subjects.ts (1)
22-24
: Prefer a single, parameterized URL factory for all rulesEach rule now hard-codes its own GitHub URL. That works, but it repeats the base path and is error-prone if a file is renamed or the docs are reorganized.
RuleCreator
receives the rule name as its argument, so you can centralise the logic and remove duplication:-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/suffix-subjects.md' -)({ +const ruleUrl = (name: string) => + `https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/${name}.md`; + +export default ESLintUtils.RuleCreator(ruleUrl)({Then reuse
ruleUrl
in every rule file.
This keeps one authoritative source for the path and eliminates manual edits for new rules.packages/eslint-plugin-rxjs/src/lib/rules/finnish.ts (1)
25-27
: Consider parameterizing the docs URL inRuleCreator
Hard-coding the full URL makes every rule responsible for maintaining its own absolute link. Passing the
ruleName
parameter keeps all rules DRY and avoids copy-paste errors if the path ever changes:-export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/finnish.md' -)({ +export default ESLintUtils.RuleCreator( + (ruleName) => + `https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/${ruleName}.md` +)({This remains fully compatible with
ESLintUtils.RuleCreator
(it passesruleName
as the first argument) and eliminates duplication across files.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (41)
packages/eslint-plugin-rxjs/package.json
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/ban-observables.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/ban-operators.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/finnish.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/just.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/macro.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-async-subscribe.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-compat.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-connectable.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-create.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-cyclic-action.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-exposed-subjects.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-finnish.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-error.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-notifier.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-observable.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-replay-buffer.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-subscribe.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-subscription.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-takewhile-value.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-implicit-any-catch.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-index.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-internal.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-nested-subscribe.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-redundant-notify.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-sharereplay.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-subclass.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-subject-unsubscribe.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-subject-value.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-subscribe-handlers.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-tap.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-topromise.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-unbound-methods.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-catch.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-first.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-subject-next.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-switchmap.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-takeuntil.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/prefer-observer.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/suffix-subjects.ts
(1 hunks)packages/eslint-plugin-rxjs/src/lib/rules/throw-error.ts
(1 hunks)
🧰 Additional context used
🧠 Learnings (42)
📓 Common learnings
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-async-subscribe.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-tap.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-connectable.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-subclass.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-subject-next.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-finnish.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/ban-operators.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-subject-unsubscribe.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-sharereplay.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-observable.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/package.json (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-compat.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/throw-error.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-unbound-methods.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-takewhile-value.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-create.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-switchmap.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-cyclic-action.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/just.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/ban-observables.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-first.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-takeuntil.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-index.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-catch.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/suffix-subjects.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-nested-subscribe.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-subscribe.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-notifier.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-exposed-subjects.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-redundant-notify.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-subscription.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-internal.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-implicit-any-catch.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-topromise.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-subject-value.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-subscribe-handlers.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-replay-buffer.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/finnish.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-error.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/macro.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
packages/eslint-plugin-rxjs/src/lib/rules/prefer-observer.ts (1)
Learnt from: DaveMBush
PR: DaveMBush/eslint-plugin-rxjs#69
File: packages/eslint-plugin-rxjs/package.json:4-7
Timestamp: 2025-01-25T19:46:28.512Z
Learning: In eslint-plugin-rxjs, TypeScript should not be added as a peer dependency since most rules don't require TypeScript functionality. Only specific rules like no-unsafe-switchmap, no-unsafe-first, no-unsafe-catch, and no-cyclic-action use TypeScript features.
🔇 Additional comments (10)
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-first.ts (1)
12-14
: Documentation URL Verified and Change ApprovedThe documentation link in
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-first.ts
was checked and returned HTTP 200, confirming it’s accessible. No further changes are needed.packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-catch.ts (1)
17-19
: LGTM! Consistent URL standardization.The change follows the same pattern as other rules, properly centralizing the documentation URL in the RuleCreator function.
packages/eslint-plugin-rxjs/src/lib/rules/no-create.ts (1)
7-9
: LGTM! Consistent implementation.The change maintains consistency with the standardized URL approach across all rules.
packages/eslint-plugin-rxjs/src/lib/rules/ban-operators.ts (1)
8-10
: LGTM! Consistent pattern maintained.The change follows the established pattern for documentation URL standardization.
packages/eslint-plugin-rxjs/src/lib/rules/no-cyclic-action.ts (1)
18-20
: LGTM! Consistent implementation across all rules.The change maintains the established pattern for documentation URL standardization. This completes the consistent implementation across all rule files in the PR.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-subscription.ts (1)
7-9
: LGTM! Documentation URL standardization implemented correctly.The change correctly updates the rule creator to use a fixed GitHub documentation URL instead of the local filename. The URL format is consistent and properly references the rule's documentation.
packages/eslint-plugin-rxjs/src/lib/rules/no-ignored-error.ts (1)
7-9
: LGTM! Consistent documentation URL implementation.The rule creator correctly uses the fixed GitHub documentation URL format, maintaining consistency with the package-wide standardization effort.
packages/eslint-plugin-rxjs/src/lib/rules/no-unbound-methods.ts (1)
12-14
: LGTM! Documentation URL standardization applied correctly.The rule creator update follows the established pattern and correctly references the rule's documentation on GitHub.
packages/eslint-plugin-rxjs/src/lib/rules/ban-observables.ts (1)
8-10
: LGTM! Consistent with documentation URL standardization.The rule creator correctly implements the fixed GitHub documentation URL pattern, maintaining consistency across the package.
packages/eslint-plugin-rxjs/src/lib/rules/macro.ts (1)
5-7
: LGTM! Documentation URL standardization completed correctly.The rule creator update follows the established pattern and correctly references the macro rule's documentation on GitHub.
export default ESLintUtils.RuleCreator( | ||
() => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-unsafe-takeuntil.md' | ||
)({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Deduplicate documentation URL generation with a shared createRule
helper
All rules now hard-code their own documentation URL. This repeats the repo path string dozens of times and makes future moves/renames brittle. Define a single helper that derives the URL from the rule name and reuse it:
-export default ESLintUtils.RuleCreator(
- () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-unsafe-takeuntil.md'
-)({
+const createRule = ESLintUtils.RuleCreator(
+ (name) =>
+ `https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/${name}.md`,
+);
+
+export default createRule({
• Removes duplication across ~60 rule files
• One-liner change if the repo location or default branch ever changes
• Keeps each rule definition concise
🏁 Script executed:
#!/bin/bash
echo "Occurrences of ESLintUtils.RuleCreator across rule files:"
rg "ESLintUtils.RuleCreator" -g "packages/eslint-plugin-rxjs/src/lib/rules/*.ts" | wc -l
echo "Search for existing createRule helper or similar utilities:"
rg -l "createRule(" -g "packages/eslint-plugin-rxjs/src/lib"
Length of output: 479
🏁 Script executed:
#!/bin/bash
echo "Searching for any existing createRule helper in the plugin:"
rg -l "createRule" -g "packages/eslint-plugin-rxjs/src/lib"
Length of output: 335
Extract documentation URL generation into a shared createRule
helper
File: packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-takeuntil.ts
Lines: 20–22
All rule files currently inline the docs URL, repeating the same repo path across ~40 files. Introduce a centralized utility:
-
Create
packages/eslint-plugin-rxjs/src/lib/utils/createRule.ts
import { ESLintUtils } from '@typescript-eslint/experimental-utils'; export const createRule = ESLintUtils.RuleCreator( (name) => `https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/${name}.md`, );
-
Update
packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-takeuntil.ts
-import { ESLintUtils } from '@typescript-eslint/experimental-utils'; +import { createRule } from '../utils/createRule'; -export default ESLintUtils.RuleCreator( - () => 'https://github.com/DaveMBush/eslint-plugin-rxjs/blob/main/packages/eslint-plugin-rxjs/docs/rules/no-unsafe-takeuntil.md' -)({ +export default createRule({
• Eliminates duplication across all rule files
• Single change to update docs path for every rule
• Keeps individual rule definitions concise and DRY
🤖 Prompt for AI Agents
In packages/eslint-plugin-rxjs/src/lib/rules/no-unsafe-takeuntil.ts lines 20 to
22, replace the inline ESLintUtils.RuleCreator call that hardcodes the
documentation URL with a shared createRule helper. First, create a new file
packages/eslint-plugin-rxjs/src/lib/utils/createRule.ts exporting createRule
using ESLintUtils.RuleCreator with a function that generates the docs URL based
on the rule name. Then, import and use this createRule helper in
no-unsafe-takeuntil.ts to define the rule, passing only the rule name to
generate the docs URL dynamically. This removes duplication and centralizes URL
generation.
Issue Number: #196
Body
link lint rule to documentation
Summary by CodeRabbit