@eslint-react/shared 2.7.2-next.6 → 2.7.3-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -187,12 +187,21 @@ declare const RE_HOOK_NAME: RegExp;
187
187
  //#endregion
188
188
  //#region src/define-rule-listener.d.ts
189
189
  /**
190
- * Defines a RuleListener by merging multiple visitor objects
191
- * @param visitor The base visitor object
192
- * @param visitors Additional visitor objects to merge
193
- * @returns The merged RuleListener
194
- */
195
- declare function defineRuleListener(visitor: RuleListener, ...visitors: RuleListener[]): RuleListener;
190
+ * Defines a rule listener by merging multiple visitor objects
191
+ *
192
+ * @param base Base visitor object (target of merge)
193
+ * @param rest Additional visitor objects to merge (one or more)
194
+ * @returns Merged RuleListener object
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * const listener1 = { Identifier: () => console.log(1) };
199
+ * const listener2 = { Identifier: () => console.log(2) };
200
+ * const merged = defineRuleListener(listener1, listener2);
201
+ * // When encountering Identifier nodes, outputs 1 then 2
202
+ * ```
203
+ */
204
+ declare function defineRuleListener(base: RuleListener, ...rest: RuleListener[]): RuleListener;
196
205
  //#endregion
197
206
  //#region src/react-version.d.ts
198
207
  declare function getReactVersion(fallback: string): string;
package/dist/index.js CHANGED
@@ -136,20 +136,29 @@ const RE_HOOK_NAME = /^use/u;
136
136
  //#endregion
137
137
  //#region src/define-rule-listener.ts
138
138
  /**
139
- * Defines a RuleListener by merging multiple visitor objects
140
- * @param visitor The base visitor object
141
- * @param visitors Additional visitor objects to merge
142
- * @returns The merged RuleListener
143
- */
144
- function defineRuleListener(visitor, ...visitors) {
145
- for (const v of visitors) for (const key in v) if (visitor[key] != null) {
146
- const o = visitor[key];
147
- visitor[key] = (...args) => {
148
- o(...args);
149
- v[key]?.(...args);
150
- };
151
- } else visitor[key] = v[key];
152
- return visitor;
139
+ * Defines a rule listener by merging multiple visitor objects
140
+ *
141
+ * @param base Base visitor object (target of merge)
142
+ * @param rest Additional visitor objects to merge (one or more)
143
+ * @returns Merged RuleListener object
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * const listener1 = { Identifier: () => console.log(1) };
148
+ * const listener2 = { Identifier: () => console.log(2) };
149
+ * const merged = defineRuleListener(listener1, listener2);
150
+ * // When encountering Identifier nodes, outputs 1 then 2
151
+ * ```
152
+ */
153
+ function defineRuleListener(base, ...rest) {
154
+ for (const r of rest) for (const key in r) {
155
+ const existing = base[key];
156
+ base[key] = existing ? (...args) => {
157
+ existing(...args);
158
+ r[key]?.(...args);
159
+ } : r[key];
160
+ }
161
+ return base;
153
162
  }
154
163
 
155
164
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eslint-react/shared",
3
- "version": "2.7.2-next.6",
3
+ "version": "2.7.3-next.0",
4
4
  "description": "ESLint React's Shared constants and functions.",
5
5
  "homepage": "https://github.com/Rel1cx/eslint-react",
6
6
  "bugs": {
@@ -33,7 +33,7 @@
33
33
  "@typescript-eslint/utils": "^8.53.0",
34
34
  "ts-pattern": "^5.9.0",
35
35
  "zod": "^3.25.0 || ^4.0.0",
36
- "@eslint-react/eff": "2.7.2-next.6"
36
+ "@eslint-react/eff": "2.7.3-next.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@tsconfig/node22": "^22.0.5",