@pdg/react-hook 2.0.9 → 2.0.11

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.
@@ -1 +1,2 @@
1
- export declare const useChanged: (value: unknown, initial?: boolean) => boolean;
1
+ import { DependencyList } from 'react';
2
+ export declare const useChanged: (deps: DependencyList, initial?: boolean) => boolean;
@@ -0,0 +1,79 @@
1
+ declare const plugin: {
2
+ rules: {
3
+ 'exhaustive-deps': {
4
+ create(context: any): {
5
+ CallExpression(node: any): void;
6
+ };
7
+ meta: {
8
+ type: "suggestion";
9
+ docs: {
10
+ description: string;
11
+ recommended: true;
12
+ url: string;
13
+ };
14
+ fixable: "code";
15
+ hasSuggestions: true;
16
+ schema: {
17
+ type: "object";
18
+ additionalProperties: false;
19
+ enableDangerousAutofixThisMayCauseInfiniteLoops: boolean;
20
+ properties: {
21
+ additionalHooks: {
22
+ type: "string";
23
+ };
24
+ enableDangerousAutofixThisMayCauseInfiniteLoops: {
25
+ type: "boolean";
26
+ };
27
+ experimental_autoDependenciesHooks: {
28
+ type: "array";
29
+ items: {
30
+ type: "string";
31
+ };
32
+ };
33
+ requireExplicitEffectDeps: {
34
+ type: "boolean";
35
+ };
36
+ };
37
+ }[];
38
+ };
39
+ };
40
+ 'rules-of-hooks': {
41
+ meta: {
42
+ type: "problem";
43
+ docs: {
44
+ description: string;
45
+ recommended: true;
46
+ url: string;
47
+ };
48
+ schema: {
49
+ type: "object";
50
+ additionalProperties: false;
51
+ properties: {
52
+ additionalHooks: {
53
+ type: "string";
54
+ };
55
+ };
56
+ }[];
57
+ };
58
+ create(context: import("eslint").Rule.RuleContext): {
59
+ "*"(node: any): void;
60
+ "*:exit"(node: any): void;
61
+ CallExpression(node: import("estree").CallExpression & import("eslint").Rule.NodeParentExtension): void;
62
+ Identifier(node: import("estree").Identifier & import("eslint").Rule.NodeParentExtension): void;
63
+ "CallExpression:exit"(node: import("estree").CallExpression & import("eslint").Rule.NodeParentExtension): void;
64
+ FunctionDeclaration(node: import("estree").FunctionDeclaration & import("eslint").Rule.NodeParentExtension): void;
65
+ ArrowFunctionExpression(node: import("estree").ArrowFunctionExpression & import("eslint").Rule.NodeParentExtension): void;
66
+ };
67
+ };
68
+ };
69
+ configs: {
70
+ recommended: {
71
+ plugins: string[];
72
+ rules: {
73
+ '@pdg/react-hooks/rules-of-hooks': string;
74
+ '@pdg/react-hooks/exhaustive-deps': string;
75
+ };
76
+ };
77
+ };
78
+ };
79
+ export default plugin;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactHooksPlugin = require('eslint-plugin-react-hooks');
6
+
7
+ const plugin = {
8
+ rules: {
9
+ 'exhaustive-deps': Object.assign(Object.assign({}, reactHooksPlugin.rules['exhaustive-deps']), { create(context) {
10
+ const originalRule = reactHooksPlugin.rules['exhaustive-deps'].create(context);
11
+ return Object.assign(Object.assign({}, originalRule), { CallExpression(node) {
12
+ const callbackName = node.callee.name;
13
+ if (callbackName === 'useChanged') {
14
+ const fakeNode = Object.assign(Object.assign({}, node), { arguments: [{ type: 'Literal', value: null }, node.arguments[0]] });
15
+ return originalRule.CallExpression(fakeNode);
16
+ }
17
+ return originalRule.CallExpression(node);
18
+ } });
19
+ } }),
20
+ 'rules-of-hooks': reactHooksPlugin.rules['rules-of-hooks'],
21
+ },
22
+ configs: {
23
+ recommended: {
24
+ plugins: ['@pdg/react-hooks'],
25
+ rules: {
26
+ '@pdg/react-hooks/rules-of-hooks': 'error',
27
+ '@pdg/react-hooks/exhaustive-deps': 'error',
28
+ },
29
+ },
30
+ },
31
+ };
32
+
33
+ exports.default = plugin;
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import {c}from'react/compiler-runtime';import {useState,useRef,useEffect,useLayoutEffect,useImperativeHandle}from'react';function _arrayLikeToArray(r, a) {
1
+ import {useState,useRef,useEffect,useLayoutEffect,useImperativeHandle}from'react';import {c}from'react/compiler-runtime';function _arrayLikeToArray(r, a) {
2
2
  (null == a || a > r.length) && (a = r.length);
3
3
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
4
4
  return n;
@@ -42,23 +42,12 @@ function _unsupportedIterableToArray(r, a) {
42
42
  var t = {}.toString.call(r).slice(8, -1);
43
43
  return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
44
44
  }
45
- }var useChanged = function useChanged(value, t0) {
46
- var $ = c(2);
45
+ }var useChanged = function useChanged(deps, t0) {
47
46
  var initial = t0 === undefined ? false : t0;
48
- var t1;
49
- if ($[0] !== value) {
50
- t1 = typeof value === "function" ? function () {
51
- return value;
52
- } : value;
53
- $[0] = value;
54
- $[1] = t1;
55
- } else {
56
- t1 = $[1];
57
- }
58
- var _useState = useState(t1),
47
+ var _useState = useState(deps),
59
48
  _useState2 = _slicedToArray(_useState, 2),
60
- prevValue = _useState2[0],
61
- setPrevValue = _useState2[1];
49
+ prevValues = _useState2[0],
50
+ setPrevValues = _useState2[1];
62
51
  var _useState3 = useState(true),
63
52
  _useState4 = _slicedToArray(_useState3, 2),
64
53
  isFirst = _useState4[0],
@@ -70,11 +59,13 @@ function _unsupportedIterableToArray(r, a) {
70
59
  }
71
60
  }
72
61
  var changed = false;
73
- if (value !== prevValue) {
74
- setPrevValue(typeof value === "function" ? function () {
75
- return value;
76
- } : value);
77
- changed = true;
62
+ if (deps !== prevValues) {
63
+ if (deps.length !== prevValues.length || deps.some(function (v, i) {
64
+ return v !== prevValues[i];
65
+ })) {
66
+ changed = true;
67
+ }
68
+ setPrevValues(deps);
78
69
  }
79
70
  return changed;
80
71
  };function useMountedRef(t0) {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';var compilerRuntime=require('react/compiler-runtime'),react=require('react');function _arrayLikeToArray(r, a) {
1
+ 'use strict';var react=require('react'),compilerRuntime=require('react/compiler-runtime');function _arrayLikeToArray(r, a) {
2
2
  (null == a || a > r.length) && (a = r.length);
3
3
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
4
4
  return n;
@@ -42,23 +42,12 @@ function _unsupportedIterableToArray(r, a) {
42
42
  var t = {}.toString.call(r).slice(8, -1);
43
43
  return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
44
44
  }
45
- }var useChanged = function useChanged(value, t0) {
46
- var $ = compilerRuntime.c(2);
45
+ }var useChanged = function useChanged(deps, t0) {
47
46
  var initial = t0 === undefined ? false : t0;
48
- var t1;
49
- if ($[0] !== value) {
50
- t1 = typeof value === "function" ? function () {
51
- return value;
52
- } : value;
53
- $[0] = value;
54
- $[1] = t1;
55
- } else {
56
- t1 = $[1];
57
- }
58
- var _useState = react.useState(t1),
47
+ var _useState = react.useState(deps),
59
48
  _useState2 = _slicedToArray(_useState, 2),
60
- prevValue = _useState2[0],
61
- setPrevValue = _useState2[1];
49
+ prevValues = _useState2[0],
50
+ setPrevValues = _useState2[1];
62
51
  var _useState3 = react.useState(true),
63
52
  _useState4 = _slicedToArray(_useState3, 2),
64
53
  isFirst = _useState4[0],
@@ -70,11 +59,13 @@ function _unsupportedIterableToArray(r, a) {
70
59
  }
71
60
  }
72
61
  var changed = false;
73
- if (value !== prevValue) {
74
- setPrevValue(typeof value === "function" ? function () {
75
- return value;
76
- } : value);
77
- changed = true;
62
+ if (deps !== prevValues) {
63
+ if (deps.length !== prevValues.length || deps.some(function (v, i) {
64
+ return v !== prevValues[i];
65
+ })) {
66
+ changed = true;
67
+ }
68
+ setPrevValues(deps);
78
69
  }
79
70
  return changed;
80
71
  };function useMountedRef(t0) {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pdg/react-hook",
3
3
  "title": "Typescript React Hook Module",
4
4
  "description": "Typescript React Hook Module",
5
- "version": "2.0.9",
5
+ "version": "2.0.11",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "module": "./dist/index.esm.js",
@@ -12,7 +12,8 @@
12
12
  "types": "./dist/index.d.ts",
13
13
  "import": "./dist/index.esm.js",
14
14
  "require": "./dist/index.js"
15
- }
15
+ },
16
+ "./eslint-plugin": "./dist/eslint-plugin.js"
16
17
  },
17
18
  "repository": {
18
19
  "type": "git",
@@ -56,7 +57,7 @@
56
57
  "react-dom": ">=19.0.0"
57
58
  },
58
59
  "dependencies": {
59
- "@pdg/types": "^1.0.9"
60
+ "@pdg/types": "^1.0.10"
60
61
  },
61
62
  "devDependencies": {
62
63
  "@babel/core": "^7.28.5",