Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=boolean-prop-naming.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"boolean-prop-naming.d.ts","sourceRoot":"","sources":["boolean-prop-naming.js"],"names":[],"mappings":"wBAyCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -11,4 +11,5 @@
 const Components = require('../util/Components');
 const propsUtil = require('../util/props');
+const astUtil = require('../util/ast');
 const docsUrl = require('../util/docsUrl');
 const propWrapperUtil = require('../util/propWrapper');
@@ -18,4 +19,16 @@
 const getSourceCode = eslintUtil.getSourceCode;
 const getText = eslintUtil.getText;
+
+/**
+ * Checks if prop is nested
+ * @param {Object} prop Property object, single prop type declaration
+ * @returns {boolean}
+ */
+function nestedPropTypes(prop) {
+  return (
+    prop.type === 'Property'
+    && astUtil.isCallExpression(prop.value)
+  );
+}
 
 // ------------------------------------------------------------------------------
@@ -129,5 +142,5 @@
      * Checks if prop is declared in flow way
      * @param {Object} prop Property object, single prop type declaration
-     * @returns {Boolean}
+     * @returns {boolean}
      */
     function flowCheck(prop) {
@@ -142,5 +155,5 @@
      * Checks if prop is declared in regular way
      * @param {Object} prop Property object, single prop type declaration
-     * @returns {Boolean}
+     * @returns {boolean}
      */
     function regularCheck(prop) {
@@ -164,16 +177,4 @@
 
     /**
-     * Checks if prop is nested
-     * @param {Object} prop Property object, single prop type declaration
-     * @returns {Boolean}
-     */
-    function nestedPropTypes(prop) {
-      return (
-        prop.type === 'Property'
-        && prop.value.type === 'CallExpression'
-      );
-    }
-
-    /**
      * Runs recursive check on all proptypes
      * @param {Array} proptypes A list of Property object (for each proptype defined)
@@ -181,13 +182,15 @@
      */
     function runCheck(proptypes, addInvalidProp) {
-      (proptypes || []).forEach((prop) => {
-        if (config.validateNested && nestedPropTypes(prop)) {
-          runCheck(prop.value.arguments[0].properties, addInvalidProp);
-          return;
-        }
-        if (flowCheck(prop) || regularCheck(prop) || tsCheck(prop)) {
-          addInvalidProp(prop);
-        }
-      });
+      if (proptypes) {
+        proptypes.forEach((prop) => {
+          if (config.validateNested && nestedPropTypes(prop)) {
+            runCheck(prop.value.arguments[0].properties, addInvalidProp);
+            return;
+          }
+          if (flowCheck(prop) || regularCheck(prop) || tsCheck(prop)) {
+            addInvalidProp(prop);
+          }
+        });
+      }
     }
 
@@ -257,12 +260,14 @@
       }
 
-      const annotationTypeParams = component.node.parent.id.typeAnnotation.typeAnnotation.typeParameters;
+      const annotationTypeArguments = propsUtil.getTypeArguments(
+        component.node.parent.id.typeAnnotation.typeAnnotation
+      );
       if (
-        annotationTypeParams && (
-          annotationTypeParams.type === 'TSTypeParameterInstantiation'
-          || annotationTypeParams.type === 'TypeParameterInstantiation'
+        annotationTypeArguments && (
+          annotationTypeArguments.type === 'TSTypeParameterInstantiation'
+          || annotationTypeArguments.type === 'TypeParameterInstantiation'
         )
       ) {
-        return annotationTypeParams.params.find(
+        return annotationTypeArguments.params.find(
           (param) => param.type === 'TSTypeReference' || param.type === 'GenericTypeAnnotation'
         );
@@ -310,5 +315,5 @@
         if (
           node.value
-          && node.value.type === 'CallExpression'
+          && astUtil.isCallExpression(node.value)
           && propWrapperUtil.isPropWrapperFunction(
             context,
@@ -336,5 +341,5 @@
         const right = node.parent.right;
         if (
-          right.type === 'CallExpression'
+          astUtil.isCallExpression(right)
           && propWrapperUtil.isPropWrapperFunction(
             context,
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=button-has-type.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"button-has-type.d.ts","sourceRoot":"","sources":["button-has-type.js"],"names":[],"mappings":"wBA8BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/button-has-type.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -29,4 +29,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -150,5 +151,10 @@
 
         const props = node.arguments[1].properties;
-        const typeProp = props.find((prop) => prop.key && prop.key.name === 'type');
+        const typeProp = props.find((prop) => (
+          'key' in prop
+          && prop.key
+          && 'name' in prop.key
+          && prop.key.name === 'type'
+        ));
 
         if (!typeProp) {
@@ -157,5 +163,5 @@
         }
 
-        checkExpression(node, typeProp.value);
+        checkExpression(node, 'value' in typeProp ? typeProp.value : undefined);
       },
     };
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=checked-requires-onchange-or-readonly.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"checked-requires-onchange-or-readonly.d.ts","sourceRoot":"","sources":["checked-requires-onchange-or-readonly.js"],"names":[],"mappings":"wBA2CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/checked-requires-onchange-or-readonly.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -25,5 +25,5 @@
 
 /**
- * @param {string[]} properties
+ * @param {object[]} properties
  * @param {string} keyName
  * @returns {Set<string>}
@@ -42,4 +42,5 @@
 }
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/default-props-match-prop-types.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/default-props-match-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/default-props-match-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=default-props-match-prop-types.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/default-props-match-prop-types.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/default-props-match-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/default-props-match-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"default-props-match-prop-types.d.ts","sourceRoot":"","sources":["default-props-match-prop-types.js"],"names":[],"mappings":"wBAuBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=destructuring-assignment.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"destructuring-assignment.d.ts","sourceRoot":"","sources":["destructuring-assignment.js"],"names":[],"mappings":"wBA2DW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -182,4 +182,23 @@
     }
 
+    // valid-jsdoc cannot read function types
+    // eslint-disable-next-line valid-jsdoc
+    /**
+     * Find a parent that satisfy the given predicate
+     * @param {ASTNode} node
+     * @param {(node: ASTNode) => boolean} predicate
+     * @returns {ASTNode | undefined}
+     */
+    function findParent(node, predicate) {
+      let n = node;
+      while (n) {
+        if (predicate(n)) {
+          return n;
+        }
+        n = n.parent;
+      }
+      return undefined;
+    }
+
     return {
 
@@ -197,10 +216,5 @@
 
       MemberExpression(node) {
-        let scope = getScope(context, node);
-        let SFCComponent = components.get(scope.block);
-        while (!SFCComponent && scope.upper && scope.upper !== scope) {
-          SFCComponent = components.get(scope.upper.block);
-          scope = scope.upper;
-        }
+        const SFCComponent = utils.getParentStatelessComponent(node);
         if (SFCComponent) {
           handleSFCUsage(node);
@@ -210,4 +224,23 @@
         if (classComponent) {
           handleClassUsage(node);
+        }
+      },
+
+      TSQualifiedName(node) {
+        if (configuration !== 'always') {
+          return;
+        }
+        // handle `typeof props.a.b`
+        if (node.left.type === 'Identifier'
+          && node.left.name === sfcParams.propsName()
+          && findParent(node, (n) => n.type === 'TSTypeQuery')
+          && utils.getParentStatelessComponent(node)
+        ) {
+          report(context, messages.useDestructAssignment, 'useDestructAssignment', {
+            node,
+            data: {
+              type: 'props',
+            },
+          });
         }
       },
@@ -258,4 +291,5 @@
             return;
           }
+
           // Skip if props is used elsewhere
           if (propsRefs.length > 1) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=display-name.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"display-name.d.ts","sourceRoot":"","sources":["display-name.js"],"names":[],"mappings":"wBA6BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/display-name.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -74,10 +74,11 @@
      * Checks if React.forwardRef is nested inside React.memo
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if React.forwardRef is nested inside React.memo, false if not.
+     * @returns {boolean} True if React.forwardRef is nested inside React.memo, false if not.
      */
     function isNestedMemo(node) {
-      const argumentIsCallExpression = node.arguments && node.arguments[0] && node.arguments[0].type === 'CallExpression';
-
-      return node.type === 'CallExpression' && argumentIsCallExpression && utils.isPragmaComponentWrapper(node);
+      return astUtil.isCallExpression(node)
+        && node.arguments
+        && astUtil.isCallExpression(node.arguments[0])
+        && utils.isPragmaComponentWrapper(node);
     }
 
@@ -112,5 +113,5 @@
      * Checks if the component have a name set by the transpiler
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if component has a name, false if not.
+     * @returns {boolean} True if component has a name, false if not.
      */
     function hasTranspilerName(node) {
@@ -199,5 +200,5 @@
           return;
         }
-        markDisplayNameAsDeclared(component.node.type === 'TSAsExpression' ? component.node.expression : component.node);
+        markDisplayNameAsDeclared(astUtil.unwrapTSAsExpression(component.node));
       },
 
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=forbid-component-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"forbid-component-props.d.ts","sourceRoot":"","sources":["forbid-component-props.js"],"names":[],"mappings":"wBAyBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -53,4 +53,9 @@
                     items: { type: 'string' },
                   },
+                  allowedForPatterns: {
+                    type: 'array',
+                    uniqueItems: true,
+                    items: { type: 'string' },
+                  },
                   message: { type: 'string' },
                 },
@@ -67,10 +72,18 @@
                     items: { type: 'string' },
                   },
-                  message: { type: 'string' },
-                },
-                required: ['disallowedFor'],
-                additionalProperties: false,
-              },
-
+                  disallowedForPatterns: {
+                    type: 'array',
+                    uniqueItems: true,
+                    minItems: 1,
+                    items: { type: 'string' },
+                  },
+                  message: { type: 'string' },
+                },
+                anyOf: [
+                  { required: ['disallowedFor'] },
+                  { required: ['disallowedForPatterns'] },
+                ],
+                additionalProperties: false,
+              },
               {
                 type: 'object',
@@ -82,4 +95,9 @@
                     items: { type: 'string' },
                   },
+                  allowedForPatterns: {
+                    type: 'array',
+                    uniqueItems: true,
+                    items: { type: 'string' },
+                  },
                   message: { type: 'string' },
                 },
@@ -96,7 +114,16 @@
                     items: { type: 'string' },
                   },
-                  message: { type: 'string' },
-                },
-                required: ['disallowedFor'],
+                  disallowedForPatterns: {
+                    type: 'array',
+                    uniqueItems: true,
+                    minItems: 1,
+                    items: { type: 'string' },
+                  },
+                  message: { type: 'string' },
+                },
+                anyOf: [
+                  { required: ['disallowedFor'] },
+                  { required: ['disallowedForPatterns'] },
+                ],
                 additionalProperties: false,
               },
@@ -115,6 +142,8 @@
       const prop = propName || propPattern;
       const options = {
-        allowList: typeof value === 'string' ? [] : (value.allowedFor || []),
-        disallowList: typeof value === 'string' ? [] : (value.disallowedFor || []),
+        allowList: [].concat(value.allowedFor || []),
+        allowPatternList: [].concat(value.allowedForPatterns || []),
+        disallowList: [].concat(value.disallowedFor || []),
+        disallowPatternList: [].concat(value.disallowedForPatterns || []),
         message: typeof value === 'string' ? null : value.message,
         isPattern: !!value.propNamePattern,
@@ -141,8 +170,38 @@
       }
 
+      function checkIsTagForbiddenByAllowOptions() {
+        if (options.allowList.indexOf(tagName) !== -1) {
+          return false;
+        }
+
+        if (options.allowPatternList.length === 0) {
+          return true;
+        }
+
+        return options.allowPatternList.every(
+          (pattern) => !minimatch(tagName, pattern)
+        );
+      }
+
+      function checkIsTagForbiddenByDisallowOptions() {
+        if (options.disallowList.indexOf(tagName) !== -1) {
+          return true;
+        }
+
+        if (options.disallowPatternList.length === 0) {
+          return false;
+        }
+
+        return options.disallowPatternList.some(
+          (pattern) => minimatch(tagName, pattern)
+        );
+      }
+
+      const hasDisallowOptions = options.disallowList.length > 0 || options.disallowPatternList.length > 0;
+
       // disallowList should have a least one item (schema configuration)
-      const isTagForbidden = options.disallowList.length > 0
-        ? options.disallowList.indexOf(tagName) !== -1
-        : options.allowList.indexOf(tagName) === -1;
+      const isTagForbidden = hasDisallowOptions
+        ? checkIsTagForbiddenByDisallowOptions()
+        : checkIsTagForbiddenByAllowOptions();
 
       // if the tagName is undefined (`<this.something>`), we assume it's a forbidden element
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-dom-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-dom-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-dom-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=forbid-dom-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-dom-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-dom-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-dom-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"forbid-dom-props.d.ts","sourceRoot":"","sources":["forbid-dom-props.js"],"names":[],"mappings":"wBAuCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=forbid-elements.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"forbid-elements.d.ts","sourceRoot":"","sources":["forbid-elements.js"],"names":[],"mappings":"wBAsBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-elements.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -21,4 +21,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -106,11 +107,9 @@
         }
 
-        const argType = argument.type;
-
-        if (argType === 'Identifier' && /^[A-Z_]/.test(argument.name)) {
+        if (argument.type === 'Identifier' && /^[A-Z_]/.test(argument.name)) {
           reportIfForbidden(argument.name, argument);
-        } else if (argType === 'Literal' && /^[a-z][^.]*$/.test(argument.value)) {
+        } else if (argument.type === 'Literal' && /^[a-z][^.]*$/.test(String(argument.value))) {
           reportIfForbidden(argument.value, argument);
-        } else if (argType === 'MemberExpression') {
+        } else if (argument.type === 'MemberExpression') {
           reportIfForbidden(getText(context, argument), argument);
         }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=forbid-foreign-prop-types.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"forbid-foreign-prop-types.d.ts","sourceRoot":"","sources":["forbid-foreign-prop-types.js"],"names":[],"mappings":"wBAeW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -14,4 +14,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -109,5 +110,7 @@
             && !isAllowedAssignment(node)
           )) || (
+            // @ts-expect-error The JSXText type is not present in the estree type definitions
             (node.property.type === 'Literal' || node.property.type === 'JSXText')
+            && 'value' in node.property
             && node.property.value === 'propTypes'
             && !ast.isAssignmentLHS(node)
@@ -122,5 +125,9 @@
 
       ObjectPattern(node) {
-        const propTypesNode = node.properties.find((property) => property.type === 'Property' && property.key.name === 'propTypes');
+        const propTypesNode = node.properties.find((property) => (
+          property.type === 'Property'
+          && 'name' in property.key
+          && property.key.name === 'propTypes'
+        ));
 
         if (propTypesNode) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=forbid-prop-types.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"forbid-prop-types.d.ts","sourceRoot":"","sources":["forbid-prop-types.js"],"names":[],"mappings":"wBA4BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -27,4 +27,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -135,5 +136,5 @@
             value = value.object;
           }
-          if (value.type === 'CallExpression') {
+          if (astUtil.isCallExpression(value)) {
             if (!isPropTypesPackage(value.callee)) {
               return;
@@ -159,27 +160,23 @@
 
     function checkNode(node) {
-      switch (node && node.type) {
-        case 'ObjectExpression':
-          checkProperties(node.properties);
-          break;
-        case 'Identifier': {
-          const propTypesObject = variableUtil.findVariableByName(context, node, node.name);
-          if (propTypesObject && propTypesObject.properties) {
-            checkProperties(propTypesObject.properties);
-          }
-          break;
-        }
-        case 'CallExpression': {
-          const innerNode = node.arguments && node.arguments[0];
-          if (
-            propWrapperUtil.isPropWrapperFunction(context, getText(context, node.callee))
+      if (!node) {
+        return;
+      }
+
+      if (node.type === 'ObjectExpression') {
+        checkProperties(node.properties);
+      } else if (node.type === 'Identifier') {
+        const propTypesObject = variableUtil.findVariableByName(context, node, node.name);
+        if (propTypesObject && propTypesObject.properties) {
+          checkProperties(propTypesObject.properties);
+        }
+      } else if (astUtil.isCallExpression(node)) {
+        const innerNode = node.arguments && node.arguments[0];
+        if (
+          propWrapperUtil.isPropWrapperFunction(context, getText(context, node.callee))
             && innerNode
-          ) {
-            checkNode(innerNode);
-          }
-          break;
-        }
-        default:
-          break;
+        ) {
+          checkNode(innerNode);
+        }
       }
     }
@@ -197,5 +194,7 @@
           if (node.specifiers.length >= 1) {
             const propTypesSpecifier = node.specifiers.find((specifier) => (
-              specifier.imported && specifier.imported.name === 'PropTypes'
+              'imported' in specifier
+              && specifier.imported
+              && specifier.imported.name === 'PropTypes'
             ));
             if (propTypesSpecifier) {
@@ -233,10 +232,11 @@
         }
 
-        checkNode(node.parent.right);
+        checkNode('right' in node.parent && node.parent.right);
       },
 
       CallExpression(node) {
         if (
-          node.callee.object
+          node.callee.type === 'MemberExpression'
+          && node.callee.object
           && !isPropTypesPackage(node.callee.object)
           && !propsUtil.isPropTypesDeclaration(node.callee)
@@ -247,7 +247,10 @@
         if (
           node.arguments.length > 0
-          && (node.callee.name === 'shape' || astUtil.getPropertyName(node.callee) === 'shape')
-        ) {
-          checkProperties(node.arguments[0].properties);
+          && (
+            ('name' in node.callee && node.callee.name === 'shape')
+            || astUtil.getPropertyName(node.callee) === 'shape'
+          )
+        ) {
+          checkProperties('properties' in node.arguments[0] && node.arguments[0].properties);
         }
       },
@@ -272,5 +275,5 @@
       ObjectExpression(node) {
         node.properties.forEach((property) => {
-          if (!property.key) {
+          if (!('key' in property) || !property.key) {
             return;
           }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,23 @@
+export declare const meta: {
+    docs: {
+        description: string;
+        category: string;
+        recommended: boolean;
+        url: string;
+    };
+    messages: {
+        missingRefParameter: string;
+        addRefParameter: string;
+        removeForwardRef: string;
+    };
+    schema: any[];
+    type: string;
+    hasSuggestions: boolean;
+};
+export declare function create(context: any): {
+    'FunctionExpression, ArrowFunctionExpression'(node: any): void;
+};
+export declare function create(context: any): {
+    'FunctionExpression, ArrowFunctionExpression'(node: any): void;
+};
+//# sourceMappingURL=forward-ref-uses-ref.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"forward-ref-uses-ref.d.ts","sourceRoot":"","sources":["forward-ref-uses-ref.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAyDE;;EAwCC;AAxCD;;EAwCC"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forward-ref-uses-ref.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,99 @@
+/**
+ * @fileoverview Require all forwardRef components include a ref parameter
+ */
+
+'use strict';
+
+const isParenthesized = require('../util/ast').isParenthesized;
+const docsUrl = require('../util/docsUrl');
+const report = require('../util/report');
+const getMessageData = require('../util/message');
+
+// ------------------------------------------------------------------------------
+// Rule Definition
+// ------------------------------------------------------------------------------
+
+/**
+ * @param {ASTNode} node
+ * @returns {boolean} If the node represents the identifier `forwardRef`.
+ */
+function isForwardRefIdentifier(node) {
+  return node.type === 'Identifier' && node.name === 'forwardRef';
+}
+
+/**
+ * @param {ASTNode} node
+ * @returns {boolean} If the node represents a function call `forwardRef()` or `React.forwardRef()`.
+ */
+function isForwardRefCall(node) {
+  return (
+    node.type === 'CallExpression'
+    && (
+      isForwardRefIdentifier(node.callee)
+      || (node.callee.type === 'MemberExpression' && isForwardRefIdentifier(node.callee.property))
+    )
+  );
+}
+
+const messages = {
+  missingRefParameter: 'forwardRef is used with this component but no ref parameter is set',
+  addRefParameter: 'Add a ref parameter',
+  removeForwardRef: 'Remove forwardRef wrapper',
+};
+
+module.exports = {
+  meta: {
+    docs: {
+      description: 'Require all forwardRef components include a ref parameter',
+      category: 'Possible Errors',
+      recommended: false,
+      url: docsUrl('forward-ref-uses-ref'),
+    },
+    messages,
+    schema: [],
+    type: 'suggestion',
+    hasSuggestions: true,
+  },
+
+  create(context) {
+    const sourceCode = context.getSourceCode();
+
+    return {
+      'FunctionExpression, ArrowFunctionExpression'(node) {
+        if (!isForwardRefCall(node.parent)) {
+          return;
+        }
+
+        if (node.params.length === 1) {
+          report(context, messages.missingRefParameter, 'missingRefParameter', {
+            node,
+            suggest: [
+              Object.assign(
+                getMessageData('addRefParameter', messages.addRefParameter),
+                {
+                  fix(fixer) {
+                    const param = node.params[0];
+                    // If using shorthand arrow function syntax, add parentheses around the new parameter pair
+                    const shouldAddParentheses = node.type === 'ArrowFunctionExpression' && !isParenthesized(context, param);
+                    return [].concat(
+                      shouldAddParentheses ? fixer.insertTextBefore(param, '(') : [],
+                      fixer.insertTextAfter(param, `, ref${shouldAddParentheses ? ')' : ''}`)
+                    );
+                  },
+                }
+              ),
+              Object.assign(
+                getMessageData('removeForwardRef', messages.removeForwardRef),
+                {
+                  fix(fixer) {
+                    return fixer.replaceText(node.parent, sourceCode.getText(node));
+                  },
+                }
+              ),
+            ],
+          });
+        }
+      },
+    };
+  },
+};
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=function-component-definition.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"function-component-definition.d.ts","sourceRoot":"","sources":["function-component-definition.js"],"names":[],"mappings":"wBAqHW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/function-component-definition.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -11,4 +11,5 @@
 const reportC = require('../util/report');
 const getText = require('../util/eslint').getText;
+const propsUtil = require('../util/props');
 
 // ------------------------------------------------------------------------------
@@ -35,10 +36,10 @@
 
 function hasOneUnconstrainedTypeParam(node) {
-  const nodeTypeParams = node.typeParameters;
-
-  return nodeTypeParams
-    && nodeTypeParams.params
-    && nodeTypeParams.params.length === 1
-    && !nodeTypeParams.params[0].constraint;
+  const nodeTypeArguments = propsUtil.getTypeArguments(node);
+
+  return nodeTypeArguments
+    && nodeTypeArguments.params
+    && nodeTypeArguments.params.length === 1
+    && !nodeTypeArguments.params[0].constraint;
 }
 
@@ -203,9 +204,10 @@
       }
 
+      const nodeTypeArguments = propsUtil.getTypeArguments(node);
       return (fixer) => fixer.replaceTextRange(
         options.range,
         buildFunction(options.template, {
           typeAnnotation,
-          typeParams: getNodeText(node.typeParameters, source),
+          typeParams: getNodeText(nodeTypeArguments, source),
           params: getParams(node, source),
           returnType: getNodeText(node.returnType, source),
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=hook-use-state.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"hook-use-state.d.ts","sourceRoot":"","sources":["hook-use-state.js"],"names":[],"mappings":"wBA4BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/hook-use-state.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -27,4 +27,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/iframe-missing-sandbox.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/iframe-missing-sandbox.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/iframe-missing-sandbox.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=iframe-missing-sandbox.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/iframe-missing-sandbox.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/iframe-missing-sandbox.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/iframe-missing-sandbox.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"iframe-missing-sandbox.d.ts","sourceRoot":"","sources":["iframe-missing-sandbox.js"],"names":[],"mappings":"wBA+GW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,158 @@
+declare const _exports: {
+    'boolean-prop-naming': import("eslint").Rule.RuleModule;
+    'button-has-type': import("eslint").Rule.RuleModule;
+    'checked-requires-onchange-or-readonly': import("eslint").Rule.RuleModule;
+    'default-props-match-prop-types': import("eslint").Rule.RuleModule;
+    'destructuring-assignment': import("eslint").Rule.RuleModule;
+    'display-name': import("eslint").Rule.RuleModule;
+    'forbid-component-props': import("eslint").Rule.RuleModule;
+    'forbid-dom-props': import("eslint").Rule.RuleModule;
+    'forbid-elements': import("eslint").Rule.RuleModule;
+    'forbid-foreign-prop-types': import("eslint").Rule.RuleModule;
+    'forbid-prop-types': import("eslint").Rule.RuleModule;
+    'forward-ref-uses-ref': {
+        meta: {
+            docs: {
+                description: string;
+                category: string;
+                recommended: boolean;
+                url: string;
+            };
+            messages: {
+                missingRefParameter: string;
+                addRefParameter: string;
+                removeForwardRef: string;
+            };
+            schema: undefined[];
+            type: string;
+            hasSuggestions: boolean;
+        };
+        create(context: any): {
+            'FunctionExpression, ArrowFunctionExpression'(node: any): void;
+        };
+    };
+    'function-component-definition': import("eslint").Rule.RuleModule;
+    'hook-use-state': import("eslint").Rule.RuleModule;
+    'iframe-missing-sandbox': import("eslint").Rule.RuleModule;
+    'jsx-boolean-value': import("eslint").Rule.RuleModule;
+    'jsx-child-element-spacing': import("eslint").Rule.RuleModule;
+    'jsx-closing-bracket-location': import("eslint").Rule.RuleModule;
+    'jsx-closing-tag-location': import("eslint").Rule.RuleModule;
+    'jsx-curly-spacing': import("eslint").Rule.RuleModule;
+    'jsx-curly-newline': import("eslint").Rule.RuleModule;
+    'jsx-equals-spacing': import("eslint").Rule.RuleModule;
+    'jsx-filename-extension': import("eslint").Rule.RuleModule;
+    'jsx-first-prop-new-line': import("eslint").Rule.RuleModule;
+    'jsx-handler-names': import("eslint").Rule.RuleModule;
+    'jsx-indent': import("eslint").Rule.RuleModule;
+    'jsx-indent-props': import("eslint").Rule.RuleModule;
+    'jsx-key': import("eslint").Rule.RuleModule;
+    'jsx-max-depth': import("eslint").Rule.RuleModule;
+    'jsx-max-props-per-line': import("eslint").Rule.RuleModule;
+    'jsx-newline': import("eslint").Rule.RuleModule;
+    'jsx-no-bind': import("eslint").Rule.RuleModule;
+    'jsx-no-comment-textnodes': import("eslint").Rule.RuleModule;
+    'jsx-no-constructed-context-values': import("eslint").Rule.RuleModule;
+    'jsx-no-duplicate-props': import("eslint").Rule.RuleModule;
+    'jsx-no-leaked-render': import("eslint").Rule.RuleModule;
+    'jsx-no-literals': {
+        meta: import("eslint").Rule.RuleMetaData;
+        create(context: any): (false & {
+            Literal(node: any): void;
+            JSXAttribute(node: any): void;
+            JSXText(node: any): void;
+            TemplateLiteral(node: any): void;
+        }) | ({
+            ImportDeclaration(node: any): void;
+            VariableDeclaration(node: any): void;
+        } & {
+            Literal(node: any): void;
+            JSXAttribute(node: any): void;
+            JSXText(node: any): void;
+            TemplateLiteral(node: any): void;
+        });
+    };
+    'jsx-no-script-url': import("eslint").Rule.RuleModule;
+    'jsx-no-target-blank': import("eslint").Rule.RuleModule;
+    'jsx-no-useless-fragment': import("eslint").Rule.RuleModule;
+    'jsx-one-expression-per-line': import("eslint").Rule.RuleModule;
+    'jsx-no-undef': import("eslint").Rule.RuleModule;
+    'jsx-curly-brace-presence': import("eslint").Rule.RuleModule;
+    'jsx-pascal-case': import("eslint").Rule.RuleModule;
+    'jsx-fragments': import("eslint").Rule.RuleModule;
+    'jsx-props-no-multi-spaces': import("eslint").Rule.RuleModule;
+    'jsx-props-no-spreading': import("eslint").Rule.RuleModule;
+    'jsx-props-no-spread-multi': {
+        meta: {
+            docs: {
+                description: string;
+                category: string;
+                recommended: boolean;
+                url: string;
+            };
+            messages: {
+                noMultiSpreading: string;
+            };
+        };
+        create(context: any): {
+            JSXOpeningElement(node: any): void;
+        };
+    };
+    'jsx-sort-default-props': import("eslint").Rule.RuleModule;
+    'jsx-sort-props': import("eslint").Rule.RuleModule;
+    'jsx-space-before-closing': import("eslint").Rule.RuleModule;
+    'jsx-tag-spacing': import("eslint").Rule.RuleModule;
+    'jsx-uses-react': import("eslint").Rule.RuleModule;
+    'jsx-uses-vars': import("eslint").Rule.RuleModule;
+    'jsx-wrap-multilines': import("eslint").Rule.RuleModule;
+    'no-invalid-html-attribute': import("eslint").Rule.RuleModule;
+    'no-access-state-in-setstate': import("eslint").Rule.RuleModule;
+    'no-adjacent-inline-elements': import("eslint").Rule.RuleModule;
+    'no-array-index-key': import("eslint").Rule.RuleModule;
+    'no-arrow-function-lifecycle': import("eslint").Rule.RuleModule;
+    'no-children-prop': import("eslint").Rule.RuleModule;
+    'no-danger': import("eslint").Rule.RuleModule;
+    'no-danger-with-children': import("eslint").Rule.RuleModule;
+    'no-deprecated': import("eslint").Rule.RuleModule;
+    'no-did-mount-set-state': import("eslint").Rule.RuleModule;
+    'no-did-update-set-state': import("eslint").Rule.RuleModule;
+    'no-direct-mutation-state': import("eslint").Rule.RuleModule;
+    'no-find-dom-node': import("eslint").Rule.RuleModule;
+    'no-is-mounted': import("eslint").Rule.RuleModule;
+    'no-multi-comp': import("eslint").Rule.RuleModule;
+    'no-namespace': import("eslint").Rule.RuleModule;
+    'no-set-state': import("eslint").Rule.RuleModule;
+    'no-string-refs': import("eslint").Rule.RuleModule;
+    'no-redundant-should-component-update': import("eslint").Rule.RuleModule;
+    'no-render-return-value': import("eslint").Rule.RuleModule;
+    'no-this-in-sfc': import("eslint").Rule.RuleModule;
+    'no-typos': import("eslint").Rule.RuleModule;
+    'no-unescaped-entities': import("eslint").Rule.RuleModule;
+    'no-unknown-property': import("eslint").Rule.RuleModule;
+    'no-unsafe': import("eslint").Rule.RuleModule;
+    'no-unstable-nested-components': import("eslint").Rule.RuleModule;
+    'no-unused-class-component-methods': import("eslint").Rule.RuleModule;
+    'no-unused-prop-types': import("eslint").Rule.RuleModule;
+    'no-unused-state': import("eslint").Rule.RuleModule;
+    'no-object-type-as-default-prop': import("eslint").Rule.RuleModule;
+    'no-will-update-set-state': import("eslint").Rule.RuleModule;
+    'prefer-es6-class': import("eslint").Rule.RuleModule;
+    'prefer-exact-props': import("eslint").Rule.RuleModule;
+    'prefer-read-only-props': import("eslint").Rule.RuleModule;
+    'prefer-stateless-function': import("eslint").Rule.RuleModule;
+    'prop-types': import("eslint").Rule.RuleModule;
+    'react-in-jsx-scope': import("eslint").Rule.RuleModule;
+    'require-default-props': import("eslint").Rule.RuleModule;
+    'require-optimization': import("eslint").Rule.RuleModule;
+    'require-render-return': import("eslint").Rule.RuleModule;
+    'self-closing-comp': import("eslint").Rule.RuleModule;
+    'sort-comp': import("eslint").Rule.RuleModule;
+    'sort-default-props': import("eslint").Rule.RuleModule;
+    'sort-prop-types': import("eslint").Rule.RuleModule;
+    'state-in-constructor': import("eslint").Rule.RuleModule;
+    'static-property-placement': import("eslint").Rule.RuleModule;
+    'style-prop-object': import("eslint").Rule.RuleModule;
+    'void-dom-elements-no-children': import("eslint").Rule.RuleModule;
+};
+export = _exports;
+//# sourceMappingURL=index.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":""}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -16,4 +16,5 @@
   'forbid-foreign-prop-types': require('./forbid-foreign-prop-types'),
   'forbid-prop-types': require('./forbid-prop-types'),
+  'forward-ref-uses-ref': require('./forward-ref-uses-ref'),
   'function-component-definition': require('./function-component-definition'),
   'hook-use-state': require('./hook-use-state'),
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-boolean-value.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-boolean-value.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-boolean-value.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-boolean-value.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-boolean-value.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-boolean-value.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-boolean-value.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-boolean-value.d.ts","sourceRoot":"","sources":["jsx-boolean-value.js"],"names":[],"mappings":"wBAwDW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-child-element-spacing.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-child-element-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-child-element-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-child-element-spacing.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-child-element-spacing.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-child-element-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-child-element-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-child-element-spacing.d.ts","sourceRoot":"","sources":["jsx-child-element-spacing.js"],"names":[],"mappings":"wBA8CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-closing-bracket-location.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-closing-bracket-location.d.ts","sourceRoot":"","sources":["jsx-closing-bracket-location.js"],"names":[],"mappings":"wBAsBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -21,4 +21,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -101,5 +102,5 @@
      * Get expected location for the closing bracket
      * @param {Object} tokens Locations of the opening bracket, closing bracket and last prop
-     * @return {String} Expected location for the closing bracket
+     * @return {string} Expected location for the closing bracket
      */
     function getExpectedLocation(tokens) {
@@ -122,5 +123,5 @@
      * expected location.
      * @param {Object} tokens Locations of the opening bracket, closing bracket and last prop
-     * @param {String} expectedLocation Expected location for the closing bracket
+     * @param {string} expectedLocation Expected location for the closing bracket
      * @return {?Number} The correct column for the closing bracket, or null
      */
@@ -141,6 +142,6 @@
      * Check if the closing bracket is correctly located
      * @param {Object} tokens Locations of the opening bracket, closing bracket and last prop
-     * @param {String} expectedLocation Expected location for the closing bracket
-     * @return {Boolean} True if the closing bracket is correctly located, false if not
+     * @param {string} expectedLocation Expected location for the closing bracket
+     * @return {boolean} True if the closing bracket is correctly located, false if not
      */
     function hasCorrectLocation(tokens, expectedLocation) {
@@ -164,7 +165,7 @@
      * Get the characters used for indentation on the line to be matched
      * @param {Object} tokens Locations of the opening bracket, closing bracket and last prop
-     * @param {String} expectedLocation Expected location for the closing bracket
-     * @param {Number} [correctColumn] Expected column for the closing bracket. Default to 0
-     * @return {String} The characters used for indentation
+     * @param {string} expectedLocation Expected location for the closing bracket
+     * @param {number} [correctColumn] Expected column for the closing bracket. Default to 0
+     * @return {string} The characters used for indentation
      */
     function getIndentation(tokens, expectedLocation, correctColumn) {
@@ -236,5 +237,5 @@
      *
      * @param {ASTNode} node The AST node being checked.
-     * @returns {String} Unique ID (based on its range)
+     * @returns {string} Unique ID (based on its range)
      */
     function getOpeningElementId(node) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-tag-location.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-tag-location.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-tag-location.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-closing-tag-location.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-tag-location.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-tag-location.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-closing-tag-location.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-closing-tag-location.d.ts","sourceRoot":"","sources":["jsx-closing-tag-location.js"],"names":[],"mappings":"wBAgCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-curly-brace-presence.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-curly-brace-presence.d.ts","sourceRoot":"","sources":["jsx-curly-brace-presence.js"],"names":[],"mappings":"wBAgJW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -31,4 +31,106 @@
 ];
 const DEFAULT_CONFIG = { props: OPTION_NEVER, children: OPTION_NEVER, propElementValues: OPTION_IGNORE };
+
+const HTML_ENTITY_REGEX = () => /&[A-Za-z\d#]+;/g;
+
+function containsLineTerminators(rawStringValue) {
+  return /[\n\r\u2028\u2029]/.test(rawStringValue);
+}
+
+function containsBackslash(rawStringValue) {
+  return arrayIncludes(rawStringValue, '\\');
+}
+
+function containsHTMLEntity(rawStringValue) {
+  return HTML_ENTITY_REGEX().test(rawStringValue);
+}
+
+function containsOnlyHtmlEntities(rawStringValue) {
+  return rawStringValue.replace(HTML_ENTITY_REGEX(), '').trim() === '';
+}
+
+function containsDisallowedJSXTextChars(rawStringValue) {
+  return /[{<>}]/.test(rawStringValue);
+}
+
+function containsQuoteCharacters(value) {
+  return /['"]/.test(value);
+}
+
+function containsMultilineComment(value) {
+  return /\/\*/.test(value);
+}
+
+function escapeDoubleQuotes(rawStringValue) {
+  return rawStringValue.replace(/\\"/g, '"').replace(/"/g, '\\"');
+}
+
+function escapeBackslashes(rawStringValue) {
+  return rawStringValue.replace(/\\/g, '\\\\');
+}
+
+function needToEscapeCharacterForJSX(raw, node) {
+  return (
+    containsBackslash(raw)
+    || containsHTMLEntity(raw)
+    || (node.parent.type !== 'JSXAttribute' && containsDisallowedJSXTextChars(raw))
+  );
+}
+
+function containsWhitespaceExpression(child) {
+  if (child.type === 'JSXExpressionContainer') {
+    const value = child.expression.value;
+    return value ? jsxUtil.isWhiteSpaces(value) : false;
+  }
+  return false;
+}
+
+function isLineBreak(text) {
+  return containsLineTerminators(text) && text.trim() === '';
+}
+
+function wrapNonHTMLEntities(text) {
+  const HTML_ENTITY = '<HTML_ENTITY>';
+  const withCurlyBraces = text.split(HTML_ENTITY_REGEX()).map((word) => (
+    word === '' ? '' : `{${JSON.stringify(word)}}`
+  )).join(HTML_ENTITY);
+
+  const htmlEntities = text.match(HTML_ENTITY_REGEX());
+  return htmlEntities.reduce((acc, htmlEntity) => (
+    acc.replace(HTML_ENTITY, htmlEntity)
+  ), withCurlyBraces);
+}
+
+function wrapWithCurlyBraces(rawText) {
+  if (!containsLineTerminators(rawText)) {
+    return `{${JSON.stringify(rawText)}}`;
+  }
+
+  return rawText.split('\n').map((line) => {
+    if (line.trim() === '') {
+      return line;
+    }
+    const firstCharIndex = line.search(/[^\s]/);
+    const leftWhitespace = line.slice(0, firstCharIndex);
+    const text = line.slice(firstCharIndex);
+
+    if (containsHTMLEntity(line)) {
+      return `${leftWhitespace}${wrapNonHTMLEntities(text)}`;
+    }
+    return `${leftWhitespace}{${JSON.stringify(text)}}`;
+  }).join('\n');
+}
+
+function isWhiteSpaceLiteral(node) {
+  return node.type && node.type === 'Literal' && node.value && jsxUtil.isWhiteSpaces(node.value);
+}
+
+function isStringWithTrailingWhiteSpaces(value) {
+  return /^\s|\s$/.test(value);
+}
+
+function isLiteralWithTrailingWhiteSpaces(node) {
+  return node.type && node.type === 'Literal' && node.value && isStringWithTrailingWhiteSpaces(node.value);
+}
 
 // ------------------------------------------------------------------------------
@@ -75,97 +177,8 @@
 
   create(context) {
-    const HTML_ENTITY_REGEX = () => /&[A-Za-z\d#]+;/g;
     const ruleOptions = context.options[0];
     const userConfig = typeof ruleOptions === 'string'
       ? { props: ruleOptions, children: ruleOptions, propElementValues: OPTION_IGNORE }
       : Object.assign({}, DEFAULT_CONFIG, ruleOptions);
-
-    function containsLineTerminators(rawStringValue) {
-      return /[\n\r\u2028\u2029]/.test(rawStringValue);
-    }
-
-    function containsBackslash(rawStringValue) {
-      return arrayIncludes(rawStringValue, '\\');
-    }
-
-    function containsHTMLEntity(rawStringValue) {
-      return HTML_ENTITY_REGEX().test(rawStringValue);
-    }
-
-    function containsOnlyHtmlEntities(rawStringValue) {
-      return rawStringValue.replace(HTML_ENTITY_REGEX(), '').trim() === '';
-    }
-
-    function containsDisallowedJSXTextChars(rawStringValue) {
-      return /[{<>}]/.test(rawStringValue);
-    }
-
-    function containsQuoteCharacters(value) {
-      return /['"]/.test(value);
-    }
-
-    function containsMultilineComment(value) {
-      return /\/\*/.test(value);
-    }
-
-    function escapeDoubleQuotes(rawStringValue) {
-      return rawStringValue.replace(/\\"/g, '"').replace(/"/g, '\\"');
-    }
-
-    function escapeBackslashes(rawStringValue) {
-      return rawStringValue.replace(/\\/g, '\\\\');
-    }
-
-    function needToEscapeCharacterForJSX(raw, node) {
-      return (
-        containsBackslash(raw)
-        || containsHTMLEntity(raw)
-        || (node.parent.type !== 'JSXAttribute' && containsDisallowedJSXTextChars(raw))
-      );
-    }
-
-    function containsWhitespaceExpression(child) {
-      if (child.type === 'JSXExpressionContainer') {
-        const value = child.expression.value;
-        return value ? jsxUtil.isWhiteSpaces(value) : false;
-      }
-      return false;
-    }
-
-    function isLineBreak(text) {
-      return containsLineTerminators(text) && text.trim() === '';
-    }
-
-    function wrapNonHTMLEntities(text) {
-      const HTML_ENTITY = '<HTML_ENTITY>';
-      const withCurlyBraces = text.split(HTML_ENTITY_REGEX()).map((word) => (
-        word === '' ? '' : `{${JSON.stringify(word)}}`
-      )).join(HTML_ENTITY);
-
-      const htmlEntities = text.match(HTML_ENTITY_REGEX());
-      return htmlEntities.reduce((acc, htmlEntity) => (
-        acc.replace(HTML_ENTITY, htmlEntity)
-      ), withCurlyBraces);
-    }
-
-    function wrapWithCurlyBraces(rawText) {
-      if (!containsLineTerminators(rawText)) {
-        return `{${JSON.stringify(rawText)}}`;
-      }
-
-      return rawText.split('\n').map((line) => {
-        if (line.trim() === '') {
-          return line;
-        }
-        const firstCharIndex = line.search(/[^\s]/);
-        const leftWhitespace = line.slice(0, firstCharIndex);
-        const text = line.slice(firstCharIndex);
-
-        if (containsHTMLEntity(line)) {
-          return `${leftWhitespace}${wrapNonHTMLEntities(text)}`;
-        }
-        return `${leftWhitespace}{${JSON.stringify(text)}}`;
-      }).join('\n');
-    }
 
     /**
@@ -187,8 +200,12 @@
 
             if (parentType === 'JSXAttribute') {
-              textToReplace = `"${expressionType === 'TemplateLiteral'
-                ? expression.quasis[0].value.raw
-                : expression.raw.slice(1, -1)
-              }"`;
+              if (expressionType !== 'TemplateLiteral' && /["]/.test(expression.raw.slice(1, -1))) {
+                textToReplace = expression.raw;
+              } else {
+                textToReplace = `"${expressionType === 'TemplateLiteral'
+                  ? expression.quasis[0].value.raw
+                  : expression.raw.slice(1, -1)
+                }"`;
+              }
             } else if (jsxUtil.isJSX(expression)) {
               textToReplace = getText(context, expression);
@@ -234,16 +251,4 @@
     }
 
-    function isWhiteSpaceLiteral(node) {
-      return node.type && node.type === 'Literal' && node.value && jsxUtil.isWhiteSpaces(node.value);
-    }
-
-    function isStringWithTrailingWhiteSpaces(value) {
-      return /^\s|\s$/.test(value);
-    }
-
-    function isLiteralWithTrailingWhiteSpaces(node) {
-      return node.type && node.type === 'Literal' && node.value && isStringWithTrailingWhiteSpaces(node.value);
-    }
-
     // Bail out if there is any character that needs to be escaped in JSX
     // because escaping decreases readability and the original code may be more
@@ -269,5 +274,5 @@
           && !needToEscapeCharacterForJSX(expression.raw, JSXExpressionNode) && (
           jsxUtil.isJSX(JSXExpressionNode.parent)
-          || !containsQuoteCharacters(expression.value)
+          || (!containsQuoteCharacters(expression.value) || typeof expression.value === 'string')
         )
       ) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-newline.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-newline.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-newline.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-curly-newline.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-newline.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-newline.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-newline.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-curly-newline.d.ts","sourceRoot":"","sources":["jsx-curly-newline.js"],"names":[],"mappings":"wBA+CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-curly-spacing.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-curly-spacing.d.ts","sourceRoot":"","sources":["jsx-curly-spacing.js"],"names":[],"mappings":"wBAqCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -36,4 +36,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-equals-spacing.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-equals-spacing.d.ts","sourceRoot":"","sources":["jsx-equals-spacing.js"],"names":[],"mappings":"wBAsBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -21,4 +21,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-filename-extension.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-filename-extension.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-filename-extension.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-filename-extension.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-filename-extension.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-filename-extension.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-filename-extension.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-filename-extension.d.ts","sourceRoot":"","sources":["jsx-filename-extension.js"],"names":[],"mappings":"wBA8BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-first-prop-new-line.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-first-prop-new-line.d.ts","sourceRoot":"","sources":["jsx-first-prop-new-line.js"],"names":[],"mappings":"wBAoBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -8,4 +8,5 @@
 const docsUrl = require('../util/docsUrl');
 const report = require('../util/report');
+const propsUtil = require('../util/props');
 
 // ------------------------------------------------------------------------------
@@ -56,5 +57,6 @@
                 node: decl,
                 fix(fixer) {
-                  return fixer.replaceTextRange([(node.typeParameters || node.name).range[1], decl.range[0]], '\n');
+                  const nodeTypeArguments = propsUtil.getTypeArguments(node);
+                  return fixer.replaceTextRange([(nodeTypeArguments || node.name).range[1], decl.range[0]], '\n');
                 },
               });
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-fragments.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-fragments.d.ts","sourceRoot":"","sources":["jsx-fragments.js"],"names":[],"mappings":"wBA6BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -23,10 +23,10 @@
 
 const messages = {
-  fragmentsNotSupported: 'Fragments are only supported starting from React v16.2. '
-    + 'Please disable the `react/jsx-fragments` rule in `eslint` settings or upgrade your version of React.',
+  fragmentsNotSupported: 'Fragments are only supported starting from React v16.2. Please disable the `react/jsx-fragments` rule in `eslint` settings or upgrade your version of React.',
   preferPragma: 'Prefer {{react}}.{{fragment}} over fragment shorthand',
   preferFragment: 'Prefer fragment shorthand over {{react}}.{{fragment}}',
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -171,5 +171,5 @@
         if (node.source && node.source.value === 'react') {
           node.specifiers.forEach((spec) => {
-            if (spec.imported && spec.imported.name === fragmentPragma) {
+            if ('imported' in spec && spec.imported && spec.imported.name === fragmentPragma) {
               if (spec.local) {
                 fragmentNames.add(spec.local.name);
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-handler-names.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-handler-names.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-handler-names.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-handler-names.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-handler-names.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-handler-names.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-handler-names.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-handler-names.d.ts","sourceRoot":"","sources":["jsx-handler-names.js"],"names":[],"mappings":"wBAqBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-indent-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-indent-props.d.ts","sourceRoot":"","sources":["jsx-indent-props.js"],"names":[],"mappings":"wBA+CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -46,4 +46,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -117,6 +118,6 @@
      * Reports a given indent violation and properly pluralizes the message
      * @param {ASTNode} node Node violating the indent rule
-     * @param {Number} needed Expected indentation character count
-     * @param {Number} gotten Indentation character count in the actual node/code
+     * @param {number} needed Expected indentation character count
+     * @param {number} gotten Indentation character count in the actual node/code
      */
     function report(node, needed, gotten) {
@@ -142,5 +143,5 @@
      * Get node indent
      * @param {ASTNode} node Node to examine
-     * @return {Number} Indent
+     * @return {number} Indent
      */
     function getNodeIndent(node) {
@@ -174,5 +175,5 @@
      * Check indent for nodes list
      * @param {ASTNode[]} nodes list of node objects
-     * @param {Number} indent needed indent
+     * @param {number} indent needed indent
      */
     function checkNodesIndent(nodes, indent) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-indent.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-indent.d.ts","sourceRoot":"","sources":["jsx-indent.js"],"names":[],"mappings":"wBAoDW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-indent.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -51,4 +51,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -106,5 +107,5 @@
      * Responsible for fixing the indentation issue fix
      * @param {ASTNode} node Node violating the indent rule
-     * @param {Number} needed Expected indentation character count
+     * @param {number} needed Expected indentation character count
      * @returns {Function} function to be executed by the fixer
      * @private
@@ -147,6 +148,6 @@
      * Reports a given indent violation and properly pluralizes the message
      * @param {ASTNode} node Node violating the indent rule
-     * @param {Number} needed Expected indentation character count
-     * @param {Number} gotten Indentation character count in the actual node/code
+     * @param {number} needed Expected indentation character count
+     * @param {number} gotten Indentation character count in the actual node/code
      * @param {Object} [loc] Error line and column location
      */
@@ -169,7 +170,7 @@
      * Get node indent
      * @param {ASTNode} node Node to examine
-     * @param {Boolean} [byLastLine] get indent of node's last line
-     * @param {Boolean} [excludeCommas] skip comma on start of line
-     * @return {Number} Indent
+     * @param {boolean} [byLastLine] get indent of node's last line
+     * @param {boolean} [excludeCommas] skip comma on start of line
+     * @return {number} Indent
      */
     function getNodeIndent(node, byLastLine, excludeCommas) {
@@ -198,5 +199,5 @@
      * Check if the node is the right member of a logical expression
      * @param {ASTNode} node The node to check
-     * @return {Boolean} true if its the case, false if not
+     * @return {boolean} true if its the case, false if not
      */
     function isRightInLogicalExp(node) {
@@ -213,5 +214,5 @@
      * Check if the node is the alternate member of a conditional expression
      * @param {ASTNode} node The node to check
-     * @return {Boolean} true if its the case, false if not
+     * @return {boolean} true if its the case, false if not
      */
     function isAlternateInConditionalExp(node) {
@@ -228,5 +229,5 @@
      * Check if the node is within a DoExpression block but not the first expression (which need to be indented)
      * @param {ASTNode} node The node to check
-     * @return {Boolean} true if its the case, false if not
+     * @return {boolean} true if its the case, false if not
      */
     function isSecondOrSubsequentExpWithinDoExp(node) {
@@ -299,6 +300,6 @@
      * Check indent for nodes list
      * @param {ASTNode} node The node to check
-     * @param {Number} indent needed indent
-     * @param {Boolean} [excludeCommas] skip comma on start of line
+     * @param {number} indent needed indent
+     * @param {boolean} [excludeCommas] skip comma on start of line
      */
     function checkNodesIndent(node, indent, excludeCommas) {
@@ -319,5 +320,5 @@
      * Check indent for Literal Node or JSXText Node
      * @param {ASTNode} node The node to check
-     * @param {Number} indent needed indent
+     * @param {number} indent needed indent
      */
     function checkLiteralNodeIndent(node, indent) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-key.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-key.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-key.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-key.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-key.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-key.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-key.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-key.d.ts","sourceRoot":"","sources":["jsx-key.js"],"names":[],"mappings":"wBAmCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-max-depth.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-max-depth.d.ts","sourceRoot":"","sources":["jsx-max-depth.js"],"names":[],"mappings":"wBAsBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -92,5 +92,5 @@
       function find(refs, prevRefs) {
         for (let i = refs.length - 1; i >= 0; i--) {
-          if (has(refs[i], 'writeExpr')) {
+          if (typeof refs[i].writeExpr !== 'undefined') {
             const writeExpr = refs[i].writeExpr;
 
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-props-per-line.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-props-per-line.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-props-per-line.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-max-props-per-line.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-props-per-line.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-props-per-line.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-max-props-per-line.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-max-props-per-line.d.ts","sourceRoot":"","sources":["jsx-max-props-per-line.js"],"names":[],"mappings":"wBA0BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-newline.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-newline.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-newline.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-newline.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-newline.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-newline.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-newline.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-newline.d.ts","sourceRoot":"","sources":["jsx-newline.js"],"names":[],"mappings":"wBA0BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-bind.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-bind.d.ts","sourceRoot":"","sources":["jsx-no-bind.js"],"names":[],"mappings":"wBA2BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,4 +10,5 @@
 const propName = require('jsx-ast-utils/propName');
 const docsUrl = require('../util/docsUrl');
+const astUtil = require('../util/ast');
 const jsxUtil = require('../util/jsx');
 const report = require('../util/report');
@@ -25,4 +26,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -84,8 +86,7 @@
 
     function getNodeViolationType(node) {
-      const nodeType = node.type;
       if (
         !configuration.allowBind
-        && nodeType === 'CallExpression'
+        && astUtil.isCallExpression(node)
         && node.callee.type === 'MemberExpression'
         && node.callee.property.type === 'Identifier'
@@ -94,19 +95,19 @@
         return 'bindCall';
       }
-      if (nodeType === 'ConditionalExpression') {
+      if (node.type === 'ConditionalExpression') {
         return getNodeViolationType(node.test)
                || getNodeViolationType(node.consequent)
                || getNodeViolationType(node.alternate);
       }
-      if (!configuration.allowArrowFunctions && nodeType === 'ArrowFunctionExpression') {
+      if (!configuration.allowArrowFunctions && node.type === 'ArrowFunctionExpression') {
         return 'arrowFunc';
       }
       if (
         !configuration.allowFunctions
-        && (nodeType === 'FunctionExpression' || nodeType === 'FunctionDeclaration')
+        && (node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration')
       ) {
         return 'func';
       }
-      if (!configuration.allowBind && nodeType === 'BindExpression') {
+      if (!configuration.allowBind && node.type === 'BindExpression') {
         return 'bindExpression';
       }
@@ -117,5 +118,5 @@
     /**
      * @param {string | number} violationType
-     * @param {any} variableName
+     * @param {unknown} variableName
      * @param {string | number} blockStart
      */
@@ -176,9 +177,8 @@
           blockAncestors.length > 0
           && variableViolationType
+          && 'kind' in node.parent
           && node.parent.kind === 'const' // only support const right now
         ) {
-          addVariableNameToSet(
-            variableViolationType, node.id.name, blockAncestors[0].range[0]
-          );
+          addVariableNameToSet(variableViolationType, 'name' in node.id ? node.id.name : undefined, blockAncestors[0].range[0]);
         }
       },
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-comment-textnodes.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-comment-textnodes.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-comment-textnodes.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-comment-textnodes.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-comment-textnodes.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-comment-textnodes.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-comment-textnodes.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-comment-textnodes.d.ts","sourceRoot":"","sources":["jsx-no-comment-textnodes.js"],"names":[],"mappings":"wBAyCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-constructed-context-values.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-constructed-context-values.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-constructed-context-values.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-constructed-context-values.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-constructed-context-values.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-constructed-context-values.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-constructed-context-values.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-constructed-context-values.d.ts","sourceRoot":"","sources":["jsx-no-constructed-context-values.js"],"names":[],"mappings":"wBAoIW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-duplicate-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-duplicate-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-duplicate-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-duplicate-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-duplicate-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-duplicate-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-duplicate-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-duplicate-props.d.ts","sourceRoot":"","sources":["jsx-no-duplicate-props.js"],"names":[],"mappings":"wBAmBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-leaked-render.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-leaked-render.d.ts","sourceRoot":"","sources":["jsx-no-leaked-render.js"],"names":[],"mappings":"wBA+GW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-leaked-render.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -110,7 +110,4 @@
 }
 
-/**
- * @type {import('eslint').Rule.RuleModule}
- */
 /** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,81 @@
+export type RawElementConfigProperties = {
+    noStrings?: boolean;
+    allowedStrings?: string[];
+    ignoreProps?: boolean;
+    noAttributeStrings?: boolean;
+};
+export type RawOverrideConfigProperties = {
+    allowElement?: boolean;
+    applyToNestedElements?: boolean;
+};
+export type RawElementConfig = {
+    noStrings?: boolean;
+    allowedStrings?: string[];
+    ignoreProps?: boolean;
+    noAttributeStrings?: boolean;
+};
+export type RawOverrideConfig = {
+    noStrings?: boolean;
+    allowedStrings?: string[];
+    ignoreProps?: boolean;
+    noAttributeStrings?: boolean;
+};
+export type RawElementOverrides = {
+    elementOverrides?: Record<string, RawOverrideConfig>;
+};
+/**
+ * ----------------------------------------------------------------------
+ */
+export type RawConfig = RawElementConfigProperties & RawElementOverrides;
+export type ElementConfigType = {
+    type: 'element';
+};
+export type ElementConfigProperties = {
+    noStrings: boolean;
+    allowedStrings: Set<string>;
+    ignoreProps: boolean;
+    noAttributeStrings: boolean;
+};
+export type OverrideConfigProperties = {
+    type: 'override';
+    name: string;
+    allowElement: boolean;
+    applyToNestedElements: boolean;
+};
+export type ElementConfig = ElementConfigType & ElementConfigProperties;
+export type OverrideConfig = OverrideConfigProperties & ElementConfigProperties;
+export type ElementOverrides = {
+    elementOverrides: Record<string, OverrideConfig>;
+};
+export type Config = ElementConfigType & ElementConfigProperties & ElementOverrides;
+export type ResolvedConfig = (OverrideConfigProperties & ElementConfigProperties) | (ElementConfigType & ElementConfigProperties & ElementOverrides);
+export declare const meta: import('eslint').Rule.RuleModule["meta"];
+export declare function create(context: any): (false & {
+    Literal(node: any): void;
+    JSXAttribute(node: any): void;
+    JSXText(node: any): void;
+    TemplateLiteral(node: any): void;
+}) | ({
+    ImportDeclaration(node: any): void;
+    VariableDeclaration(node: any): void;
+} & {
+    Literal(node: any): void;
+    JSXAttribute(node: any): void;
+    JSXText(node: any): void;
+    TemplateLiteral(node: any): void;
+});
+export declare function create(context: any): (false & {
+    Literal(node: any): void;
+    JSXAttribute(node: any): void;
+    JSXText(node: any): void;
+    TemplateLiteral(node: any): void;
+}) | ({
+    ImportDeclaration(node: any): void;
+    VariableDeclaration(node: any): void;
+} & {
+    Literal(node: any): void;
+    JSXAttribute(node: any): void;
+    JSXText(node: any): void;
+    TemplateLiteral(node: any): void;
+});
+//# sourceMappingURL=jsx-no-literals.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-literals.d.ts","sourceRoot":"","sources":["jsx-no-literals.js"],"names":[],"mappings":";gBAqEc,OAAO;qBACP,MAAM,EAAE;kBACR,OAAO;yBACP,OAAO;;;mBAGP,OAAO;4BACP,OAAO;;;gBAPP,OAAO;qBACP,MAAM,EAAE;kBACR,OAAO;yBACP,OAAO;;;gBAHP,OAAO;qBACP,MAAM,EAAE;kBACR,OAAO;yBACP,OAAO;;;uBAUP,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;;;;;;;UAOjC,SAAS;;;eAGT,OAAO;oBACP,GAAG,CAAC,MAAM,CAAC;iBACX,OAAO;wBACP,OAAO;;;UAGP,UAAU;UACV,MAAM;kBACN,OAAO;2BACP,OAAO;;;;;sBAMP,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;;;;2BA8EzB,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAoBzD;;;;;;;;;;;;;GA2VC;AA3VD;;;;;;;;;;;;;GA2VC"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -9,4 +9,8 @@
 const iterFrom = require('es-iterator-helpers/Iterator.from');
 const map = require('es-iterator-helpers/Iterator.prototype.map');
+const some = require('es-iterator-helpers/Iterator.prototype.some');
+const flatMap = require('es-iterator-helpers/Iterator.prototype.flatMap');
+const fromEntries = require('object.fromentries');
+const entries = require('object.entries');
 
 const docsUrl = require('../util/docsUrl');
@@ -18,18 +22,167 @@
 // ------------------------------------------------------------------------------
 
-function trimIfString(val) {
-  return typeof val === 'string' ? val.trim() : val;
+/**
+ * @param {unknown} value
+ * @returns {string | unknown}
+ */
+function trimIfString(value) {
+  return typeof value === 'string' ? value.trim() : value;
 }
+
+const reOverridableElement = /^[A-Z][\w.]*$/;
+const reIsWhiteSpace = /^[\s]+$/;
+const jsxElementTypes = new Set(['JSXElement', 'JSXFragment']);
+const standardJSXNodeParentTypes = new Set(['JSXAttribute', 'JSXElement', 'JSXExpressionContainer', 'JSXFragment']);
 
 const messages = {
   invalidPropValue: 'Invalid prop value: "{{text}}"',
+  invalidPropValueInElement: 'Invalid prop value: "{{text}}" in {{element}}',
   noStringsInAttributes: 'Strings not allowed in attributes: "{{text}}"',
+  noStringsInAttributesInElement: 'Strings not allowed in attributes: "{{text}}" in {{element}}',
   noStringsInJSX: 'Strings not allowed in JSX files: "{{text}}"',
+  noStringsInJSXInElement: 'Strings not allowed in JSX files: "{{text}}" in {{element}}',
   literalNotInJSXExpression: 'Missing JSX expression container around literal string: "{{text}}"',
+  literalNotInJSXExpressionInElement: 'Missing JSX expression container around literal string: "{{text}}" in {{element}}',
 };
 
-/** @type {import('eslint').Rule.RuleModule} */
+/** @type {Exclude<import('eslint').Rule.RuleModule['meta']['schema'], unknown[]>['properties']} */
+const commonPropertiesSchema = {
+  noStrings: {
+    type: 'boolean',
+  },
+  allowedStrings: {
+    type: 'array',
+    uniqueItems: true,
+    items: {
+      type: 'string',
+    },
+  },
+  ignoreProps: {
+    type: 'boolean',
+  },
+  noAttributeStrings: {
+    type: 'boolean',
+  },
+};
+
+/**
+ * @typedef RawElementConfigProperties
+ * @property {boolean} [noStrings]
+ * @property {string[]} [allowedStrings]
+ * @property {boolean} [ignoreProps]
+ * @property {boolean} [noAttributeStrings]
+ *
+ * @typedef RawOverrideConfigProperties
+ * @property {boolean} [allowElement]
+ * @property {boolean} [applyToNestedElements=true]
+ *
+ * @typedef {RawElementConfigProperties} RawElementConfig
+ * @typedef {RawElementConfigProperties & RawElementConfigProperties} RawOverrideConfig
+ *
+ * @typedef RawElementOverrides
+ * @property {Record<string, RawOverrideConfig>} [elementOverrides]
+ *
+ * @typedef {RawElementConfig & RawElementOverrides} RawConfig
+ *
+ * ----------------------------------------------------------------------
+ *
+ * @typedef ElementConfigType
+ * @property {'element'} type
+ *
+ * @typedef ElementConfigProperties
+ * @property {boolean} noStrings
+ * @property {Set<string>} allowedStrings
+ * @property {boolean} ignoreProps
+ * @property {boolean} noAttributeStrings
+ *
+ * @typedef OverrideConfigProperties
+ * @property {'override'} type
+ * @property {string} name
+ * @property {boolean} allowElement
+ * @property {boolean} applyToNestedElements
+ *
+ * @typedef {ElementConfigType & ElementConfigProperties} ElementConfig
+ * @typedef {OverrideConfigProperties & ElementConfigProperties} OverrideConfig
+ *
+ * @typedef ElementOverrides
+ * @property {Record<string, OverrideConfig>} elementOverrides
+ *
+ * @typedef {ElementConfig & ElementOverrides} Config
+ * @typedef {Config | OverrideConfig} ResolvedConfig
+ */
+
+/**
+ * Normalizes the element portion of the config
+ * @param {RawConfig} config
+ * @returns {ElementConfig}
+ */
+function normalizeElementConfig(config) {
+  return {
+    type: 'element',
+    noStrings: !!config.noStrings,
+    allowedStrings: config.allowedStrings
+      ? new Set(map(iterFrom(config.allowedStrings), trimIfString))
+      : new Set(),
+    ignoreProps: !!config.ignoreProps,
+    noAttributeStrings: !!config.noAttributeStrings,
+  };
+}
+
+/**
+ * Normalizes the config and applies default values to all config options
+ * @param {RawConfig} config
+ * @returns {Config}
+ */
+function normalizeConfig(config) {
+  /** @type {Config} */
+  const normalizedConfig = Object.assign(normalizeElementConfig(config), {
+    elementOverrides: {},
+  });
+
+  if (config.elementOverrides) {
+    normalizedConfig.elementOverrides = fromEntries(
+      flatMap(
+        iterFrom(entries(config.elementOverrides)),
+        (entry) => {
+          const elementName = entry[0];
+          const rawElementConfig = entry[1];
+
+          if (!reOverridableElement.test(elementName)) {
+            return [];
+          }
+
+          return [[
+            elementName,
+            Object.assign(normalizeElementConfig(rawElementConfig), {
+              type: 'override',
+              name: elementName,
+              allowElement: !!rawElementConfig.allowElement,
+              applyToNestedElements: typeof rawElementConfig.applyToNestedElements === 'undefined' || !!rawElementConfig.applyToNestedElements,
+            }),
+          ]];
+        }
+      )
+    );
+  }
+
+  return normalizedConfig;
+}
+
+const elementOverrides = {
+  type: 'object',
+  patternProperties: {
+    [reOverridableElement.source]: {
+      type: 'object',
+      properties: Object.assign(
+        { applyToNestedElements: { type: 'boolean' } },
+        commonPropertiesSchema
+      ),
+
+    },
+  },
+};
+
 module.exports = {
-  meta: {
+  meta: /** @type {import('eslint').Rule.RuleModule["meta"]} */ ({
     docs: {
       description: 'Disallow usage of string literals in JSX',
@@ -43,47 +196,119 @@
     schema: [{
       type: 'object',
-      properties: {
-        noStrings: {
-          type: 'boolean',
-        },
-        allowedStrings: {
-          type: 'array',
-          uniqueItems: true,
-          items: {
-            type: 'string',
-          },
-        },
-        ignoreProps: {
-          type: 'boolean',
-        },
-        noAttributeStrings: {
-          type: 'boolean',
-        },
-      },
+      properties: Object.assign(
+        { elementOverrides },
+        commonPropertiesSchema
+      ),
       additionalProperties: false,
     }],
-  },
+  }),
 
   create(context) {
-    const defaults = {
-      noStrings: false,
-      allowedStrings: [],
-      ignoreProps: false,
-      noAttributeStrings: false,
-    };
-    const config = Object.assign({}, defaults, context.options[0] || {});
-    config.allowedStrings = new Set(map(iterFrom(config.allowedStrings), trimIfString));
-
-    function defaultMessageId() {
-      const ancestorIsJSXElement = arguments.length >= 1 && arguments[0];
-      if (config.noAttributeStrings && !ancestorIsJSXElement) {
-        return 'noStringsInAttributes';
-      }
-      if (config.noStrings) {
-        return 'noStringsInJSX';
-      }
-      return 'literalNotInJSXExpression';
-    }
-
+    /** @type {RawConfig} */
+    const rawConfig = (context.options.length && context.options[0]) || {};
+    const config = normalizeConfig(rawConfig);
+
+    const hasElementOverrides = Object.keys(config.elementOverrides).length > 0;
+
+    /** @type {Map<string, string>} */
+    const renamedImportMap = new Map();
+
+    /**
+     * Determines if the given expression is a require statement. Supports
+     * nested MemberExpresions. ie `require('foo').nested.property`
+     * @param {ASTNode} node
+     * @returns {boolean}
+     */
+    function isRequireStatement(node) {
+      if (node.type === 'CallExpression') {
+        if (node.callee.type === 'Identifier') {
+          return node.callee.name === 'require';
+        }
+      }
+      if (node.type === 'MemberExpression') {
+        return isRequireStatement(node.object);
+      }
+
+      return false;
+    }
+
+    /** @typedef {{ name: string, compoundName?: string }} ElementNameFragment */
+
+    /**
+     * Gets the name of the given JSX element. Supports nested
+     * JSXMemeberExpressions. ie `<Namesapce.Component.SubComponent />`
+     * @param {ASTNode} node
+     * @returns {ElementNameFragment | undefined}
+     */
+    function getJSXElementName(node) {
+      if (node.openingElement.name.type === 'JSXIdentifier') {
+        const name = node.openingElement.name.name;
+        return {
+          name: renamedImportMap.get(name) || name,
+          compoundName: undefined,
+        };
+      }
+
+      /** @type {string[]} */
+      const nameFragments = [];
+
+      if (node.openingElement.name.type === 'JSXMemberExpression') {
+        /** @type {ASTNode} */
+        let current = node.openingElement.name;
+        while (current.type === 'JSXMemberExpression') {
+          if (current.property.type === 'JSXIdentifier') {
+            nameFragments.unshift(current.property.name);
+          }
+
+          current = current.object;
+        }
+
+        if (current.type === 'JSXIdentifier') {
+          nameFragments.unshift(current.name);
+
+          const rootFragment = nameFragments[0];
+          if (rootFragment) {
+            const rootFragmentRenamed = renamedImportMap.get(rootFragment);
+            if (rootFragmentRenamed) {
+              nameFragments[0] = rootFragmentRenamed;
+            }
+          }
+
+          const nameFragment = nameFragments[nameFragments.length - 1];
+          if (nameFragment) {
+            return {
+              name: nameFragment,
+              compoundName: nameFragments.join('.'),
+            };
+          }
+        }
+      }
+    }
+
+    /**
+     * Gets all JSXElement ancestor nodes for the given node
+     * @param {ASTNode} node
+     * @returns {ASTNode[]}
+     */
+    function getJSXElementAncestors(node) {
+      /** @type {ASTNode[]} */
+      const ancestors = [];
+
+      let current = node;
+      while (current) {
+        if (current.type === 'JSXElement') {
+          ancestors.push(current);
+        }
+
+        current = current.parent;
+      }
+
+      return ancestors;
+    }
+
+    /**
+     * @param {ASTNode} node
+     * @returns {ASTNode}
+     */
     function getParentIgnoringBinaryExpressions(node) {
       let current = node;
@@ -94,62 +319,130 @@
     }
 
-    function getValidation(node) {
-      const values = [trimIfString(node.raw), trimIfString(node.value)];
-      if (values.some((value) => config.allowedStrings.has(value))) {
-        return false;
-      }
-
+    /**
+     * @param {ASTNode} node
+     * @returns {{ parent: ASTNode, grandParent: ASTNode }}
+     */
+    function getParentAndGrandParent(node) {
       const parent = getParentIgnoringBinaryExpressions(node);
-
-      function isParentNodeStandard() {
-        if (!/^[\s]+$/.test(node.value) && typeof node.value === 'string' && parent.type.includes('JSX')) {
-          if (config.noAttributeStrings) {
-            return parent.type === 'JSXAttribute' || parent.type === 'JSXElement';
-          }
-          if (!config.noAttributeStrings) {
-            return parent.type !== 'JSXAttribute';
-          }
-        }
-
-        return false;
-      }
-
-      const standard = isParentNodeStandard();
-
-      if (config.noStrings) {
-        return standard;
-      }
-      return standard && parent.type !== 'JSXExpressionContainer';
-    }
-
-    function getParentAndGrandParentType(node) {
-      const parent = getParentIgnoringBinaryExpressions(node);
-      const parentType = parent.type;
-      const grandParentType = parent.parent.type;
-
       return {
         parent,
-        parentType,
-        grandParentType,
         grandParent: parent.parent,
       };
     }
 
+    /**
+     * @param {ASTNode} node
+     * @returns {boolean}
+     */
     function hasJSXElementParentOrGrandParent(node) {
-      const parents = getParentAndGrandParentType(node);
-      const parentType = parents.parentType;
-      const grandParentType = parents.grandParentType;
-
-      return parentType === 'JSXFragment' || parentType === 'JSXElement' || grandParentType === 'JSXElement';
-    }
-
-    function reportLiteralNode(node, messageId) {
-      const ancestorIsJSXElement = hasJSXElementParentOrGrandParent(node);
-      messageId = messageId || defaultMessageId(ancestorIsJSXElement);
-
+      const ancestors = getParentAndGrandParent(node);
+      return some(iterFrom([ancestors.parent, ancestors.grandParent]), (parent) => jsxElementTypes.has(parent.type));
+    }
+
+    /**
+     * Determines whether a given node's value and its immediate parent are
+     * viable text nodes that can/should be reported on
+     * @param {ASTNode} node
+     * @param {ResolvedConfig} resolvedConfig
+     * @returns {boolean}
+     */
+    function isViableTextNode(node, resolvedConfig) {
+      const textValues = iterFrom([trimIfString(node.raw), trimIfString(node.value)]);
+      if (some(textValues, (value) => resolvedConfig.allowedStrings.has(value))) {
+        return false;
+      }
+
+      const parent = getParentIgnoringBinaryExpressions(node);
+
+      let isStandardJSXNode = false;
+      if (typeof node.value === 'string' && !reIsWhiteSpace.test(node.value) && standardJSXNodeParentTypes.has(parent.type)) {
+        if (resolvedConfig.noAttributeStrings) {
+          isStandardJSXNode = parent.type === 'JSXAttribute' || parent.type === 'JSXElement';
+        } else {
+          isStandardJSXNode = parent.type !== 'JSXAttribute';
+        }
+      }
+
+      if (resolvedConfig.noStrings) {
+        return isStandardJSXNode;
+      }
+
+      return isStandardJSXNode && parent.type !== 'JSXExpressionContainer';
+    }
+
+    /**
+     * Gets an override config for a given node. For any given node, we also
+     * need to traverse the ancestor tree to determine if an ancestor's config
+     * will also apply to the current node.
+     * @param {ASTNode} node
+     * @returns {OverrideConfig | undefined}
+     */
+    function getOverrideConfig(node) {
+      if (!hasElementOverrides) {
+        return;
+      }
+
+      const allAncestorElements = getJSXElementAncestors(node);
+      if (!allAncestorElements.length) {
+        return;
+      }
+
+      for (const ancestorElement of allAncestorElements) {
+        const isClosestJSXAncestor = ancestorElement === allAncestorElements[0];
+
+        const ancestor = getJSXElementName(ancestorElement);
+        if (ancestor) {
+          if (ancestor.name) {
+            const ancestorElements = config.elementOverrides[ancestor.name];
+            const ancestorConfig = ancestor.compoundName
+              ? config.elementOverrides[ancestor.compoundName] || ancestorElements
+              : ancestorElements;
+
+            if (ancestorConfig) {
+              if (isClosestJSXAncestor || ancestorConfig.applyToNestedElements) {
+                return ancestorConfig;
+              }
+            }
+          }
+        }
+      }
+    }
+
+    /**
+     * @param {ResolvedConfig} resolvedConfig
+     * @returns {boolean}
+     */
+    function shouldAllowElement(resolvedConfig) {
+      return resolvedConfig.type === 'override' && 'allowElement' in resolvedConfig && !!resolvedConfig.allowElement;
+    }
+
+    /**
+     * @param {boolean} ancestorIsJSXElement
+     * @param {ResolvedConfig} resolvedConfig
+     * @returns {string}
+     */
+    function defaultMessageId(ancestorIsJSXElement, resolvedConfig) {
+      if (resolvedConfig.noAttributeStrings && !ancestorIsJSXElement) {
+        return resolvedConfig.type === 'override' ? 'noStringsInAttributesInElement' : 'noStringsInAttributes';
+      }
+
+      if (resolvedConfig.noStrings) {
+        return resolvedConfig.type === 'override' ? 'noStringsInJSXInElement' : 'noStringsInJSX';
+      }
+
+      return resolvedConfig.type === 'override' ? 'literalNotInJSXExpressionInElement' : 'literalNotInJSXExpression';
+    }
+
+    /**
+     * @param {ASTNode} node
+     * @param {string} messageId
+     * @param {ResolvedConfig} resolvedConfig
+     */
+    function reportLiteralNode(node, messageId, resolvedConfig) {
       report(context, messages[messageId], messageId, {
         node,
         data: {
           text: getText(context, node).trim(),
+          element: resolvedConfig.type === 'override' && 'name' in resolvedConfig ? resolvedConfig.name : undefined,
         },
       });
@@ -160,38 +453,102 @@
     // --------------------------------------------------------------------------
 
-    return {
+    return Object.assign(hasElementOverrides ? {
+      // Get renamed import local names mapped to their imported name
+      ImportDeclaration(node) {
+        node.specifiers
+          .filter((s) => s.type === 'ImportSpecifier')
+          .forEach((specifier) => {
+            renamedImportMap.set(
+              (specifier.local || specifier.imported).name,
+              specifier.imported.name
+            );
+          });
+      },
+
+      // Get renamed destructured local names mapped to their imported name
+      VariableDeclaration(node) {
+        node.declarations
+          .filter((d) => (
+            d.type === 'VariableDeclarator'
+            && isRequireStatement(d.init)
+            && d.id.type === 'ObjectPattern'
+          ))
+          .forEach((declaration) => {
+            declaration.id.properties
+              .filter((property) => (
+                property.type === 'Property'
+                && property.key.type === 'Identifier'
+                && property.value.type === 'Identifier'
+              ))
+              .forEach((property) => {
+                renamedImportMap.set(property.value.name, property.key.name);
+              });
+          });
+      },
+    } : false, {
       Literal(node) {
-        if (getValidation(node) && (hasJSXElementParentOrGrandParent(node) || !config.ignoreProps)) {
-          reportLiteralNode(node);
+        const resolvedConfig = getOverrideConfig(node) || config;
+
+        const hasJSXParentOrGrandParent = hasJSXElementParentOrGrandParent(node);
+        if (hasJSXParentOrGrandParent && shouldAllowElement(resolvedConfig)) {
+          return;
+        }
+
+        if (isViableTextNode(node, resolvedConfig)) {
+          if (hasJSXParentOrGrandParent || !config.ignoreProps) {
+            reportLiteralNode(node, defaultMessageId(hasJSXParentOrGrandParent, resolvedConfig), resolvedConfig);
+          }
         }
       },
 
       JSXAttribute(node) {
-        const isNodeValueString = node && node.value && node.value.type === 'Literal' && typeof node.value.value === 'string' && !config.allowedStrings.has(node.value.value);
-
-        if (config.noStrings && !config.ignoreProps && isNodeValueString) {
-          const messageId = 'invalidPropValue';
-          reportLiteralNode(node, messageId);
+        const isLiteralString = node.value && node.value.type === 'Literal'
+          && typeof node.value.value === 'string';
+        const isStringLiteral = node.value && node.value.type === 'StringLiteral';
+
+        if (isLiteralString || isStringLiteral) {
+          const resolvedConfig = getOverrideConfig(node) || config;
+
+          if (
+            resolvedConfig.noStrings
+            && !resolvedConfig.ignoreProps
+            && !resolvedConfig.allowedStrings.has(node.value.value)
+          ) {
+            const messageId = resolvedConfig.type === 'override' ? 'invalidPropValueInElement' : 'invalidPropValue';
+            reportLiteralNode(node, messageId, resolvedConfig);
+          }
         }
       },
 
       JSXText(node) {
-        if (getValidation(node)) {
-          reportLiteralNode(node);
+        const resolvedConfig = getOverrideConfig(node) || config;
+
+        if (shouldAllowElement(resolvedConfig)) {
+          return;
+        }
+
+        if (isViableTextNode(node, resolvedConfig)) {
+          const hasJSXParendOrGrantParent = hasJSXElementParentOrGrandParent(node);
+          reportLiteralNode(node, defaultMessageId(hasJSXParendOrGrantParent, resolvedConfig), resolvedConfig);
         }
       },
 
       TemplateLiteral(node) {
-        const parents = getParentAndGrandParentType(node);
-        const parentType = parents.parentType;
-        const grandParentType = parents.grandParentType;
-        const isParentJSXExpressionCont = parentType === 'JSXExpressionContainer';
-        const isParentJSXElement = parentType === 'JSXElement' || grandParentType === 'JSXElement';
-
-        if (isParentJSXExpressionCont && config.noStrings && (isParentJSXElement || !config.ignoreProps)) {
-          reportLiteralNode(node);
+        const ancestors = getParentAndGrandParent(node);
+        const isParentJSXExpressionCont = ancestors.parent.type === 'JSXExpressionContainer';
+        const isParentJSXElement = ancestors.grandParent.type === 'JSXElement';
+
+        if (isParentJSXExpressionCont) {
+          const resolvedConfig = getOverrideConfig(node) || config;
+
+          if (
+            resolvedConfig.noStrings
+            && (isParentJSXElement || !resolvedConfig.ignoreProps)
+          ) {
+            reportLiteralNode(node, defaultMessageId(isParentJSXElement, resolvedConfig), resolvedConfig);
+          }
         }
       },
-    };
+    });
   },
 };
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-script-url.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-script-url.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-script-url.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-script-url.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-script-url.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-script-url.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-script-url.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-script-url.d.ts","sourceRoot":"","sources":["jsx-no-script-url.js"],"names":[],"mappings":"wBA6CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-target-blank.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-target-blank.d.ts","sourceRoot":"","sources":["jsx-no-target-blank.js"],"names":[],"mappings":"wBAgIW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -71,5 +71,5 @@
  * @param {ASTNode} value The AST node being checked.
  * @param {ASTNode} targetValue The AST node being checked.
- * @returns {String | String[] | null} The string value, or null if not a string.
+ * @returns {string | string[] | null} The string value, or null if not a string.
  */
 function getStringFromValue(value, targetValue) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-undef.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-undef.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-undef.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-undef.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-undef.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-undef.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-undef.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-undef.d.ts","sourceRoot":"","sources":["jsx-no-undef.js"],"names":[],"mappings":"wBAoBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-no-useless-fragment.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-no-useless-fragment.d.ts","sourceRoot":"","sources":["jsx-no-useless-fragment.js"],"names":[],"mappings":"wBAsFW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -8,4 +8,5 @@
 
 const pragmaUtil = require('../util/pragma');
+const astUtil = require('../util/ast');
 const jsxUtil = require('../util/jsx');
 const docsUrl = require('../util/docsUrl');
@@ -76,6 +77,5 @@
   return node
     && node.type === 'JSXExpressionContainer'
-    && node.expression
-    && node.expression.type === 'CallExpression';
+    && astUtil.isCallExpression(node.expression);
 }
 
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-one-expression-per-line.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-one-expression-per-line.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-one-expression-per-line.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-one-expression-per-line.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-one-expression-per-line.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-one-expression-per-line.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-one-expression-per-line.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-one-expression-per-line.d.ts","sourceRoot":"","sources":["jsx-one-expression-per-line.js"],"names":[],"mappings":"wBA2BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-pascal-case.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-pascal-case.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-pascal-case.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-pascal-case.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-pascal-case.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-pascal-case.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-pascal-case.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-pascal-case.d.ts","sourceRoot":"","sources":["jsx-pascal-case.js"],"names":[],"mappings":"wBA8EW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-props-no-multi-spaces.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-props-no-multi-spaces.d.ts","sourceRoot":"","sources":["jsx-props-no-multi-spaces.js"],"names":[],"mappings":"wBAwBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -9,4 +9,5 @@
 const eslintUtil = require('../util/eslint');
 const report = require('../util/report');
+const propsUtil = require('../util/props');
 
 const getSourceCode = eslintUtil.getSourceCode;
@@ -104,10 +105,10 @@
 
     function containsGenericType(node) {
-      const nodeTypeParams = node.typeParameters;
-      if (typeof nodeTypeParams === 'undefined') {
+      const nodeTypeArguments = propsUtil.getTypeArguments(node);
+      if (typeof nodeTypeArguments === 'undefined') {
         return false;
       }
 
-      return nodeTypeParams.type === 'TSTypeParameterInstantiation';
+      return nodeTypeArguments.type === 'TSTypeParameterInstantiation';
     }
 
@@ -115,5 +116,5 @@
       const name = node.name;
       if (containsGenericType(node)) {
-        const type = node.typeParameters;
+        const nodeTypeArguments = propsUtil.getTypeArguments(node);
 
         return Object.assign(
@@ -123,5 +124,5 @@
             range: [
               name.range[0],
-              type.range[1],
+              nodeTypeArguments.range[1],
             ],
           }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spread-multi.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spread-multi.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spread-multi.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,20 @@
+declare namespace messages {
+    export const noMultiSpreading: string;
+}
+export declare namespace meta {
+    export namespace docs {
+        export const description: string;
+        export const category: string;
+        export const recommended: boolean;
+        export const url: string;
+    }
+    export { messages };
+}
+export declare function create(context: any): {
+    JSXOpeningElement(node: any): void;
+};
+export declare function create(context: any): {
+    JSXOpeningElement(node: any): void;
+};
+export {};
+//# sourceMappingURL=jsx-props-no-spread-multi.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spread-multi.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spread-multi.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spread-multi.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-props-no-spread-multi.d.ts","sourceRoot":"","sources":["jsx-props-no-spread-multi.js"],"names":[],"mappings":";;;;;;;;;;;;AA6BE;;EAsBC;AAtBD;;EAsBC"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-props-no-spreading.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-props-no-spreading.d.ts","sourceRoot":"","sources":["jsx-props-no-spreading.js"],"names":[],"mappings":"wBAwCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -59,4 +59,7 @@
           },
           custom: {
+            enum: [OPTIONS.enforce, OPTIONS.ignore],
+          },
+          explicitSpread: {
             enum: [OPTIONS.enforce, OPTIONS.ignore],
           },
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-sort-default-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-sort-default-props.d.ts","sourceRoot":"","sources":["jsx-sort-default-props.js"],"names":[],"mappings":"wBA2BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -26,4 +26,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -58,5 +59,5 @@
      * Get properties name
      * @param {Object} node - Property.
-     * @returns {String} Property name.
+     * @returns {string} Property name.
      */
     function getPropertyName(node) {
@@ -79,5 +80,5 @@
      * Checks if the Identifier node passed in looks like a defaultProps declaration.
      * @param   {ASTNode}  node The node to check. Must be an Identifier node.
-     * @returns {Boolean}       `true` if the node is a defaultProps declaration, `false` if not
+     * @returns {boolean}       `true` if the node is a defaultProps declaration, `false` if not
      */
     function isDefaultPropsDeclaration(node) {
@@ -179,5 +180,5 @@
         }
 
-        checkNode(node.parent.right);
+        checkNode('right' in node.parent && node.parent.right);
       },
 
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-sort-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-sort-props.d.ts","sourceRoot":"","sources":["jsx-sort-props.js"],"names":[],"mappings":"wBAoVW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -13,4 +13,5 @@
 const jsxUtil = require('../util/jsx');
 const report = require('../util/report');
+const propTypesSortUtil = require('../util/propTypesSort');
 const eslintUtil = require('../util/eslint');
 
@@ -21,8 +22,4 @@
 // Rule Definition
 // ------------------------------------------------------------------------------
-
-function isCallbackPropName(name) {
-  return /^on[A-Z]/.test(name);
-}
 
 function isMultilineProp(node) {
@@ -86,6 +83,6 @@
 
   if (options.callbacksLast) {
-    const aIsCallback = isCallbackPropName(aProp);
-    const bIsCallback = isCallbackPropName(bProp);
+    const aIsCallback = propTypesSortUtil.isCallbackPropName(aProp);
+    const bIsCallback = propTypesSortUtil.isCallbackPropName(bProp);
     if (aIsCallback && !bIsCallback) {
       return 1;
@@ -280,6 +277,6 @@
  * Checks if the `reservedFirst` option is valid
  * @param {Object} context The context of the rule
- * @param {Boolean|Array<String>} reservedFirst The `reservedFirst` option
- * @return {Function|undefined} If an error is detected, a function to generate the error message, otherwise, `undefined`
+ * @param {boolean | string[]} reservedFirst The `reservedFirst` option
+ * @return {Function | undefined} If an error is detected, a function to generate the error message, otherwise, `undefined`
  */
 // eslint-disable-next-line consistent-return
@@ -426,6 +423,6 @@
           const previousValue = memo.value;
           const currentValue = decl.value;
-          const previousIsCallback = isCallbackPropName(previousPropName);
-          const currentIsCallback = isCallbackPropName(currentPropName);
+          const previousIsCallback = propTypesSortUtil.isCallbackPropName(previousPropName);
+          const currentIsCallback = propTypesSortUtil.isCallbackPropName(currentPropName);
 
           if (ignoreCase) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-space-before-closing.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-space-before-closing.d.ts","sourceRoot":"","sources":["jsx-space-before-closing.js"],"names":[],"mappings":"wBAyBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -24,4 +24,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -59,5 +60,5 @@
 
         const leftToken = getTokenBeforeClosingBracket(node);
-        const closingSlash = sourceCode.getTokenAfter(leftToken);
+        const closingSlash = /** @type {import("eslint").AST.Token} */ (sourceCode.getTokenAfter(leftToken));
 
         if (leftToken.loc.end.line !== closingSlash.loc.start.line) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-tag-spacing.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-tag-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-tag-spacing.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-tag-spacing.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-tag-spacing.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-tag-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-tag-spacing.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-tag-spacing.d.ts","sourceRoot":"","sources":["jsx-tag-spacing.js"],"names":[],"mappings":"wBAqQW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-react.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-react.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-react.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-uses-react.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-react.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-react.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-react.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-uses-react.d.ts","sourceRoot":"","sources":["jsx-uses-react.js"],"names":[],"mappings":"wBAeW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-vars.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-vars.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-vars.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-uses-vars.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-vars.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-vars.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-uses-vars.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-uses-vars.d.ts","sourceRoot":"","sources":["jsx-uses-vars.js"],"names":[],"mappings":"wBAiBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-wrap-multilines.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-wrap-multilines.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-wrap-multilines.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=jsx-wrap-multilines.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-wrap-multilines.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-wrap-multilines.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/jsx-wrap-multilines.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jsx-wrap-multilines.d.ts","sourceRoot":"","sources":["jsx-wrap-multilines.js"],"names":[],"mappings":"wBAyCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-access-state-in-setstate.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-access-state-in-setstate.d.ts","sourceRoot":"","sources":["no-access-state-in-setstate.js"],"names":[],"mappings":"wBAqBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -7,4 +7,5 @@
 
 const docsUrl = require('../util/docsUrl');
+const astUtil = require('../util/ast');
 const componentUtil = require('../util/componentUtil');
 const report = require('../util/report');
@@ -19,4 +20,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -33,5 +35,5 @@
   create(context) {
     function isSetStateCall(node) {
-      return node.type === 'CallExpression'
+      return astUtil.isCallExpression(node)
         && node.callee.property
         && node.callee.property.name === 'setState'
@@ -73,10 +75,10 @@
         // method containing this.state to the methods array
         methods.forEach((method) => {
-          if (node.callee.name === method.methodName) {
+          if ('name' in node.callee && node.callee.name === method.methodName) {
             let current = node.parent;
             while (current.type !== 'Program') {
               if (current.type === 'MethodDefinition') {
                 methods.push({
-                  methodName: current.key.name,
+                  methodName: 'name' in current.key ? current.key.name : undefined,
                   node: method.node,
                 });
@@ -93,5 +95,5 @@
         while (current.type !== 'Program') {
           if (isFirstArgumentInSetStateCall(current, node)) {
-            const methodName = node.callee.name;
+            const methodName = 'name' in node.callee ? node.callee.name : undefined;
             methods.forEach((method) => {
               if (method.methodName === methodName) {
@@ -110,8 +112,10 @@
       MemberExpression(node) {
         if (
-          node.property.name === 'state'
+          'name' in node.property
+          && node.property.name === 'state'
           && node.object.type === 'ThisExpression'
           && isClassComponent(node)
         ) {
+          /** @type {import("eslint").Rule.Node} */
           let current = node;
           while (current.type !== 'Program') {
@@ -127,11 +131,15 @@
             if (current.type === 'MethodDefinition') {
               methods.push({
-                methodName: current.key.name,
-                node,
-              });
-              break;
-            } else if (current.type === 'FunctionExpression' && current.parent.key) {
+                methodName: 'name' in current.key ? current.key.name : undefined,
+                node,
+              });
+              break;
+            } else if (
+              current.type === 'FunctionExpression'
+              && 'key' in current.parent
+              && current.parent.key
+            ) {
               methods.push({
-                methodName: current.parent.key.name,
+                methodName: 'name' in current.parent.key ? current.parent.key.name : undefined,
                 node,
               });
@@ -144,5 +152,5 @@
                 node,
                 scope: getScope(context, node),
-                variableName: current.id.name,
+                variableName: 'name' in current.id ? current.id.name : undefined,
               });
               break;
@@ -156,4 +164,5 @@
       Identifier(node) {
         // Checks if the identifier is a variable within an object
+        /** @type {import("eslint").Rule.Node} */
         let current = node;
         while (current.parent.type === 'BinaryExpression') {
@@ -161,6 +170,6 @@
         }
         if (
-          current.parent.value === current
-          || current.parent.object === current
+          ('value' in current.parent && current.parent.value === current)
+          || ('object' in current.parent && current.parent.object === current)
         ) {
           while (current.type !== 'Program') {
@@ -180,7 +189,14 @@
 
       ObjectPattern(node) {
-        const isDerivedFromThis = node.parent.init && node.parent.init.type === 'ThisExpression';
+        const isDerivedFromThis = 'init' in node.parent && node.parent.init && node.parent.init.type === 'ThisExpression';
         node.properties.forEach((property) => {
-          if (property && property.key && property.key.name === 'state' && isDerivedFromThis) {
+          if (
+            property
+            && 'key' in property
+            && property.key
+            && 'name' in property.key
+            && property.key.name === 'state'
+            && isDerivedFromThis
+          ) {
             vars.push({
               node: property.key,
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-adjacent-inline-elements.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-adjacent-inline-elements.d.ts","sourceRoot":"","sources":["no-adjacent-inline-elements.js"],"names":[],"mappings":"wBA+EW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -9,4 +9,5 @@
 const isCreateElement = require('../util/isCreateElement');
 const report = require('../util/report');
+const astUtil = require('../util/ast');
 
 // ------------------------------------------------------------------------------
@@ -63,5 +64,5 @@
     return true;
   }
-  if (node.type === 'CallExpression' && inlineNames.indexOf(node.arguments[0].value) > -1) {
+  if (astUtil.isCallExpression(node) && inlineNames.indexOf(node.arguments[0].value) > -1) {
     return true;
   }
@@ -77,4 +78,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -118,5 +120,5 @@
           return;
         }
-        const children = node.arguments[2].elements;
+        const children = 'elements' in node.arguments[2] ? node.arguments[2].elements : undefined;
         validate(node, children);
       },
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-array-index-key.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-array-index-key.d.ts","sourceRoot":"","sources":["no-array-index-key.js"],"names":[],"mappings":"wBA2CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -190,12 +190,13 @@
       }
 
-      if (node.type === 'CallExpression'
-          && node.callee
-          && node.callee.type === 'MemberExpression'
-          && node.callee.object
-          && isArrayIndex(node.callee.object)
-          && node.callee.property
-          && node.callee.property.type === 'Identifier'
-          && node.callee.property.name === 'toString'
+      if (
+        astUtil.isCallExpression(node)
+        && node.callee
+        && node.callee.type === 'MemberExpression'
+        && node.callee.object
+        && isArrayIndex(node.callee.object)
+        && node.callee.property
+        && node.callee.property.type === 'Identifier'
+        && node.callee.property.name === 'toString'
       ) {
         // key={bar.toString()}
@@ -206,11 +207,12 @@
       }
 
-      if (node.type === 'CallExpression'
-          && node.callee
-          && node.callee.type === 'Identifier'
-          && node.callee.name === 'String'
-          && Array.isArray(node.arguments)
-          && node.arguments.length > 0
-          && isArrayIndex(node.arguments[0])
+      if (
+        astUtil.isCallExpression(node)
+        && node.callee
+        && node.callee.type === 'Identifier'
+        && node.callee.name === 'String'
+        && Array.isArray(node.arguments)
+        && node.arguments.length > 0
+        && isArrayIndex(node.arguments[0])
       ) {
         // key={String(bar)}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-arrow-function-lifecycle.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-arrow-function-lifecycle.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-arrow-function-lifecycle.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-arrow-function-lifecycle.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-arrow-function-lifecycle.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-arrow-function-lifecycle.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-arrow-function-lifecycle.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-arrow-function-lifecycle.d.ts","sourceRoot":"","sources":["no-arrow-function-lifecycle.js"],"names":[],"mappings":"wBAsCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-children-prop.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-children-prop.d.ts","sourceRoot":"","sources":["no-children-prop.js"],"names":[],"mappings":"wBAuCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-children-prop.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -18,5 +18,5 @@
  * @param {ASTNode} node - The AST node being checked.
  * @param {Context} context - The AST node being checked.
- * @returns {Boolean} - True if node is a createElement call with a props
+ * @returns {boolean} - True if node is a createElement call with a props
  * object literal, False if not.
 */
@@ -38,4 +38,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -87,9 +88,14 @@
         }
 
-        const props = node.arguments[1].properties;
-        const childrenProp = props.find((prop) => prop.key && prop.key.name === 'children');
+        const props = 'properties' in node.arguments[1] ? node.arguments[1].properties : undefined;
+        const childrenProp = props.find((prop) => (
+          'key' in prop
+          && prop.key
+          && 'name' in prop.key
+          && prop.key.name === 'children'
+        ));
 
         if (childrenProp) {
-          if (childrenProp.value && !isFunction(childrenProp.value)) {
+          if ('value' in childrenProp && childrenProp.value && !isFunction(childrenProp.value)) {
             report(context, messages.passChildrenAsArgs, 'passChildrenAsArgs', {
               node,
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-danger-with-children.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-danger-with-children.d.ts","sourceRoot":"","sources":["no-danger-with-children.js"],"names":[],"mappings":"wBAmBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -18,4 +18,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -86,5 +87,5 @@
      * Checks to see if a node is a line break
      * @param {ASTNode} node The AST node being checked
-     * @returns {Boolean} True if node is a line break, false if not
+     * @returns {boolean} True if node is a line break, false if not
      */
     function isLineBreak(node) {
@@ -120,4 +121,5 @@
           node.callee
           && node.callee.type === 'MemberExpression'
+          && 'name' in node.callee.property
           && node.callee.property.name === 'createElement'
           && node.arguments.length > 1
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-danger.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-danger.d.ts","sourceRoot":"","sources":["no-danger.js"],"names":[],"mappings":"wBA8CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-danger.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -30,5 +30,5 @@
 /**
  * Checks if a JSX attribute is dangerous.
- * @param {String} name - Name of the attribute to check.
+ * @param {string} name - Name of the attribute to check.
  * @returns {boolean} Whether or not the attribute is dangerous.
  */
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-deprecated.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-deprecated.d.ts","sourceRoot":"","sources":["no-deprecated.js"],"names":[],"mappings":"wBAqHW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-deprecated.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -116,4 +116,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -227,6 +228,7 @@
           return;
         }
-        node.specifiers.filter(((s) => s.imported)).forEach((specifier) => {
-          checkDeprecation(node, `${MODULES[node.source.value][0]}.${specifier.imported.name}`, specifier);
+        node.specifiers.filter(((s) => 'imported' in s && s.imported)).forEach((specifier) => {
+          // TODO, semver-major: remove `in` check as part of jsdoc->tsdoc migration
+          checkDeprecation(node, 'imported' in specifier && `${MODULES[node.source.value][0]}.${specifier.imported.name}`, specifier);
         });
       },
@@ -234,9 +236,14 @@
       VariableDeclarator(node) {
         const reactModuleName = getReactModuleName(node);
-        const isRequire = node.init && node.init.callee && node.init.callee.name === 'require';
+        const isRequire = node.init
+          && 'callee' in node.init
+          && node.init.callee
+          && 'name' in node.init.callee
+          && node.init.callee.name === 'require';
         const isReactRequire = node.init
+          && 'arguments' in node.init
           && node.init.arguments
           && node.init.arguments.length
-          && typeof MODULES[node.init.arguments[0].value] !== 'undefined';
+          && typeof MODULES['value' in node.init.arguments[0] ? node.init.arguments[0].value : undefined] !== 'undefined';
         const isDestructuring = node.id && node.id.type === 'ObjectPattern';
 
@@ -247,6 +254,11 @@
           return;
         }
-        node.id.properties.filter((p) => p.type !== 'RestElement' && p.key).forEach((property) => {
-          checkDeprecation(node, `${reactModuleName || pragma}.${property.key.name}`, property);
+
+        ('properties' in node.id ? node.id.properties : undefined).filter((p) => p.type !== 'RestElement' && p.key).forEach((property) => {
+          checkDeprecation(
+            node,
+            'key' in property && 'name' in property.key && `${reactModuleName || pragma}.${property.key.name}`,
+            property
+          );
         });
       },
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-mount-set-state.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-mount-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-mount-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-did-mount-set-state.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-mount-set-state.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-mount-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-mount-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-did-mount-set-state.d.ts","sourceRoot":"","sources":["no-did-mount-set-state.js"],"names":[],"mappings":"wBASW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-update-set-state.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-update-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-update-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-did-update-set-state.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-update-set-state.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-update-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-did-update-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-did-update-set-state.d.ts","sourceRoot":"","sources":["no-did-update-set-state.js"],"names":[],"mappings":"wBASW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-direct-mutation-state.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-direct-mutation-state.d.ts","sourceRoot":"","sources":["no-direct-mutation-state.js"],"names":[],"mappings":"wBAuBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -39,8 +39,8 @@
      * Checks if the component is valid
      * @param {Object} component The component to process
-     * @returns {Boolean} True if the component is valid, false if not.
+     * @returns {boolean} True if the component is valid, false if not.
      */
     function isValid(component) {
-      return Boolean(component && !component.mutateSetState);
+      return !!component && !component.mutateSetState;
     }
 
@@ -74,5 +74,5 @@
      * Determine if we should currently ignore assignments in this component.
      * @param {?Object} component The component to process
-     * @returns {Boolean} True if we should skip assignment checks.
+     * @returns {boolean} True if we should skip assignment checks.
      */
     function shouldIgnoreComponent(component) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-find-dom-node.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-find-dom-node.d.ts","sourceRoot":"","sources":["no-find-dom-node.js"],"names":[],"mappings":"wBAkBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -17,4 +17,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -36,7 +37,12 @@
         const callee = node.callee;
 
-        const isfindDOMNode = (callee.name === 'findDOMNode')
-          || (callee.property && callee.property.name === 'findDOMNode');
-        if (!isfindDOMNode) {
+        const isFindDOMNode = ('name' in callee && callee.name === 'findDOMNode') || (
+          'property' in callee
+          && callee.property
+          && 'name' in callee.property
+          && callee.property.name === 'findDOMNode'
+        );
+
+        if (!isFindDOMNode) {
           return;
         }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-invalid-html-attribute.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-invalid-html-attribute.d.ts","sourceRoot":"","sources":["no-invalid-html-attribute.js"],"names":[],"mappings":"wBA+kBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-invalid-html-attribute.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -290,5 +290,5 @@
 
   const singleAttributeParts = splitIntoRangedParts(node, /(\S+)/g);
-  for (const singlePart of singleAttributeParts) {
+  singleAttributeParts.forEach((singlePart) => {
     const allowedTags = VALID_VALUES.get(attributeName).get(singlePart.value);
     const reportingValue = singlePart.reportingValue;
@@ -330,13 +330,11 @@
       });
     }
-  }
+  });
 
   const allowedPairsForAttribute = VALID_PAIR_VALUES.get(attributeName);
   if (allowedPairsForAttribute) {
     const pairAttributeParts = splitIntoRangedParts(node, /(?=(\b\S+\s*\S+))/g);
-    for (const pairPart of pairAttributeParts) {
-      for (const allowedPair of allowedPairsForAttribute) {
-        const pairing = allowedPair[0];
-        const siblings = allowedPair[1];
+    pairAttributeParts.forEach((pairPart) => {
+      allowedPairsForAttribute.forEach((siblings, pairing) => {
         const attributes = pairPart.reportingValue.split('\u0020');
         const firstValue = attributes[0];
@@ -358,10 +356,10 @@
           }
         }
-      }
-    }
+      });
+    });
   }
 
   const whitespaceParts = splitIntoRangedParts(node, /(\s+)/g);
-  for (const whitespacePart of whitespaceParts) {
+  whitespaceParts.forEach((whitespacePart) => {
     const data = { attributeName };
 
@@ -387,5 +385,5 @@
       });
     }
-  }
+  });
 }
 
@@ -580,7 +578,7 @@
 
     if (prop.value.type === 'ArrayExpression') {
-      for (const value of prop.value.elements) {
+      prop.value.elements.forEach((value) => {
         checkPropValidValue(context, node, value, attribute);
-      }
+      });
 
       // eslint-disable-next-line no-continue
@@ -592,4 +590,5 @@
 }
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -641,5 +640,5 @@
 
         // ignore non-HTML elements
-        if (!HTML_ELEMENTS.has(elemNameArg.value)) {
+        if (typeof elemNameArg.value === 'string' && !HTML_ELEMENTS.has(elemNameArg.value)) {
           return;
         }
@@ -647,7 +646,7 @@
         const attributes = new Set(context.options[0] || DEFAULT_ATTRIBUTES);
 
-        for (const attribute of attributes) {
+        attributes.forEach((attribute) => {
           checkCreateProps(context, node, attribute);
-        }
+        });
       },
     };
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-is-mounted.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-is-mounted.d.ts","sourceRoot":"","sources":["no-is-mounted.js"],"names":[],"mappings":"wBAmBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -18,4 +18,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -39,5 +40,9 @@
           return;
         }
-        if (callee.object.type !== 'ThisExpression' || callee.property.name !== 'isMounted') {
+        if (
+          callee.object.type !== 'ThisExpression'
+          || !('name' in callee.property)
+          || callee.property.name !== 'isMounted'
+        ) {
           return;
         }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-multi-comp.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-multi-comp.d.ts","sourceRoot":"","sources":["no-multi-comp.js"],"names":[],"mappings":"wBAqBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -51,5 +51,5 @@
      * Checks if the component is ignored
      * @param {Object} component The component being checked.
-     * @returns {Boolean} True if the component is ignored, false if not.
+     * @returns {boolean} True if the component is ignored, false if not.
      */
     function isIgnored(component) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-namespace.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-namespace.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-namespace.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-namespace.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-namespace.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-namespace.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-namespace.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-namespace.d.ts","sourceRoot":"","sources":["no-namespace.js"],"names":[],"mappings":"wBAoBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-object-type-as-default-prop.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-object-type-as-default-prop.d.ts","sourceRoot":"","sources":["no-object-type-as-default-prop.js"],"names":[],"mappings":"wBAiFW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-object-type-as-default-prop.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,4 +10,5 @@
 const Components = require('../util/Components');
 const docsUrl = require('../util/docsUrl');
+const astUtil = require('../util/ast');
 const report = require('../util/report');
 
@@ -56,5 +57,5 @@
       });
     } else if (
-      propDefaultValueType === 'CallExpression'
+      astUtil.isCallExpression(propDefaultValue.right)
       && propDefaultValue.right.callee.type === 'Identifier'
       && propDefaultValue.right.callee.name === 'Symbol'
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-redundant-should-component-update.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-redundant-should-component-update.d.ts","sourceRoot":"","sources":["no-redundant-should-component-update.js"],"names":[],"mappings":"wBAmBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -37,5 +37,5 @@
      * Checks for shouldComponentUpdate property
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} Whether or not the property exists.
+     * @returns {boolean} Whether or not the property exists.
      */
     function hasShouldComponentUpdate(node) {
@@ -50,5 +50,5 @@
      * Get name of node if available
      * @param {ASTNode} node The AST node being checked.
-     * @return {String} The name of the node
+     * @return {string} The name of the node
      */
     function getNodeName(node) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-render-return-value.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-render-return-value.d.ts","sourceRoot":"","sources":["no-render-return-value.js"],"names":[],"mappings":"wBAmBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -18,4 +18,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -57,5 +58,5 @@
           callee.object.type !== 'Identifier'
           || !calleeObjectName.test(callee.object.name)
-          || callee.property.name !== 'render'
+          || (!('name' in callee.property) || callee.property.name !== 'render')
         ) {
           return;
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-set-state.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-set-state.d.ts","sourceRoot":"","sources":["no-set-state.js"],"names":[],"mappings":"wBAqBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-set-state.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -39,8 +39,8 @@
      * Checks if the component is valid
      * @param {Object} component The component to process
-     * @returns {Boolean} True if the component is valid, false if not.
+     * @returns {boolean} True if the component is valid, false if not.
      */
     function isValid(component) {
-      return Boolean(component && !component.useSetState);
+      return !!component && !component.useSetState;
     }
 
@@ -50,7 +50,6 @@
      */
     function reportSetStateUsages(component) {
-      let setStateUsage;
       for (let i = 0, j = component.setStateUsages.length; i < j; i++) {
-        setStateUsage = component.setStateUsages[i];
+        const setStateUsage = component.setStateUsages[i];
         report(context, messages.noSetState, 'noSetState', {
           node: setStateUsage,
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-string-refs.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-string-refs.d.ts","sourceRoot":"","sources":["no-string-refs.js"],"names":[],"mappings":"wBAqBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-string-refs.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -9,4 +9,5 @@
 const docsUrl = require('../util/docsUrl');
 const report = require('../util/report');
+const testReactVersion = require('../util/version').testReactVersion;
 
 // ------------------------------------------------------------------------------
@@ -43,9 +44,10 @@
 
   create(context) {
+    const checkRefsUsage = testReactVersion(context, '< 18.3.0'); // `this.refs` is writable in React 18.3.0 and later, see https://github.com/facebook/react/pull/28867
     const detectTemplateLiterals = context.options[0] ? context.options[0].noTemplateLiterals : false;
     /**
      * Checks if we are using refs
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if we are using refs, false if not.
+     * @returns {boolean} True if we are using refs, false if not.
      */
     function isRefsUsage(node) {
@@ -60,12 +62,10 @@
      * Checks if we are using a ref attribute
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if we are using a ref attribute, false if not.
+     * @returns {boolean} True if we are using a ref attribute, false if not.
      */
     function isRefAttribute(node) {
-      return !!(
-        node.type === 'JSXAttribute'
-        && node.name
-        && node.name.name === 'ref'
-      );
+      return node.type === 'JSXAttribute'
+        && !!node.name
+        && node.name.name === 'ref';
     }
 
@@ -73,12 +73,10 @@
      * Checks if a node contains a string value
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if the node contains a string value, false if not.
+     * @returns {boolean} True if the node contains a string value, false if not.
      */
     function containsStringLiteral(node) {
-      return !!(
-        node.value
+      return !!node.value
         && node.value.type === 'Literal'
-        && typeof node.value.value === 'string'
-      );
+        && typeof node.value.value === 'string';
     }
 
@@ -86,19 +84,17 @@
      * Checks if a node contains a string value within a jsx expression
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if the node contains a string value within a jsx expression, false if not.
+     * @returns {boolean} True if the node contains a string value within a jsx expression, false if not.
      */
     function containsStringExpressionContainer(node) {
-      return !!(
-        node.value
+      return !!node.value
         && node.value.type === 'JSXExpressionContainer'
         && node.value.expression
         && ((node.value.expression.type === 'Literal' && typeof node.value.expression.value === 'string')
-        || (node.value.expression.type === 'TemplateLiteral' && detectTemplateLiterals))
-      );
+        || (node.value.expression.type === 'TemplateLiteral' && detectTemplateLiterals));
     }
 
     return {
       MemberExpression(node) {
-        if (isRefsUsage(node)) {
+        if (checkRefsUsage && isRefsUsage(node)) {
           report(context, messages.thisRefsDeprecated, 'thisRefsDeprecated', {
             node,
@@ -106,4 +102,5 @@
         }
       },
+
       JSXAttribute(node) {
         if (
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-this-in-sfc.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-this-in-sfc.d.ts","sourceRoot":"","sources":["no-this-in-sfc.js"],"names":[],"mappings":"wBAkBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-typos.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-typos.d.ts","sourceRoot":"","sources":["no-typos.js"],"names":[],"mappings":"wBA+BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-typos.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -8,4 +8,5 @@
 const Components = require('../util/Components');
 const docsUrl = require('../util/docsUrl');
+const astUtil = require('../util/ast');
 const componentUtil = require('../util/componentUtil');
 const report = require('../util/report');
@@ -110,9 +111,9 @@
         ) { // PropTypes.myProp
           checkValidPropType(node.property);
-        } else if (node.object.type === 'CallExpression') {
+        } else if (astUtil.isCallExpression(node.object)) {
           checkValidPropTypeQualifier(node.property);
           checkValidCallExpression(node.object);
         }
-      } else if (node.type === 'CallExpression') {
+      } else if (astUtil.isCallExpression(node)) {
         checkValidCallExpression(node);
       }
@@ -195,5 +196,6 @@
           if (node.specifiers.length >= 1) {
             const propTypesSpecifier = node.specifiers.find((specifier) => (
-              specifier.imported && specifier.imported.name === 'PropTypes'
+              specifier.imported
+              && specifier.imported.name === 'PropTypes'
             ));
             if (propTypesSpecifier) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-unescaped-entities.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-unescaped-entities.d.ts","sourceRoot":"","sources":["no-unescaped-entities.js"],"names":[],"mappings":"wBAwCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,4 +10,5 @@
 const jsxUtil = require('../util/jsx');
 const report = require('../util/report');
+const getMessageData = require('../util/message');
 
 // ------------------------------------------------------------------------------
@@ -35,4 +36,5 @@
   unescapedEntity: 'HTML entity, `{{entity}}` , must be escaped.',
   unescapedEntityAlts: '`{{entity}}` can be escaped with {{alts}}.',
+  replaceWithAlt: 'Replace with `{{alt}}`.',
 };
 
@@ -40,4 +42,5 @@
 module.exports = {
   meta: {
+    hasSuggestions: true,
     docs: {
       description: 'Disallow unescaped HTML entities from appearing in markup',
@@ -118,4 +121,23 @@
                   alts: entities[j].alternatives.map((alt) => `\`${alt}\``).join(', '),
                 },
+                suggest: entities[j].alternatives.map((alt) => Object.assign(
+                  getMessageData('replaceWithAlt', messages.replaceWithAlt),
+                  {
+                    data: { alt },
+                    fix(fixer) {
+                      const lineToChange = i - node.loc.start.line;
+
+                      const newText = node.raw.split('\n').map((line, idx) => {
+                        if (idx === lineToChange) {
+                          return line.slice(0, index) + alt + line.slice(index + 1);
+                        }
+
+                        return line;
+                      }).join('\n');
+
+                      return fixer.replaceText(node, newText);
+                    },
+                  }
+                )),
               });
             }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-unknown-property.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-unknown-property.d.ts","sourceRoot":"","sources":["no-unknown-property.js"],"names":[],"mappings":"wBAsgBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -416,6 +416,6 @@
  * Note - these exclusions are not made by React core team, but `eslint-plugin-react` community.
  *
- * @param {String} name - Attribute name to be normalized
- * @returns {String} Result
+ * @param {string} name - Attribute name to be normalized
+ * @returns {string} Result
  */
 function normalizeAttributeCase(name) {
@@ -429,5 +429,5 @@
  * then the attribute is a valid data attribute.
  *
- * @param {String} name - Attribute name to be tested
+ * @param {string} name - Attribute name to be tested
  * @returns {boolean} Result
  */
@@ -439,5 +439,5 @@
  * Checks if an attribute name has at least one uppercase characters
  *
- * @param {String} name
+ * @param {string} name
  * @returns {boolean} Result
  */
@@ -450,6 +450,6 @@
  * of standard aria property names
  *
- * @param {String} name - Attribute name to be tested
- * @returns {Boolean} Result
+ * @param {string} name - Attribute name to be tested
+ * @returns {boolean} Result
  */
 
@@ -461,8 +461,12 @@
  * Extracts the tag name for the JSXAttribute
  * @param {JSXAttribute} node - JSXAttribute being tested.
- * @returns {String|null} tag name
+ * @returns {string | null} tag name
  */
 function getTagName(node) {
-  if (node && node.parent && node.parent.name && node.parent.name) {
+  if (
+    node
+    && node.parent
+    && node.parent.name
+  ) {
     return node.parent.name.name;
   }
@@ -474,5 +478,5 @@
  * something like <Foo.bar />
  * @param {JSXAttribute} node - JSXAttribute being tested.
- * @returns {Boolean} result
+ * @returns {boolean} result
  */
 function tagNameHasDot(node) {
@@ -486,7 +490,7 @@
 /**
  * Get the standard name of the attribute.
- * @param {String} name - Name of the attribute.
- * @param {String} context - eslint context
- * @returns {String | undefined} The standard name of the attribute, or undefined if no standard name was found.
+ * @param {string} name - Name of the attribute.
+ * @param {object} context - eslint context
+ * @returns {string | undefined} The standard name of the attribute, or undefined if no standard name was found.
  */
 function getStandardName(name, context) {
@@ -513,4 +517,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -593,5 +598,7 @@
 
         // Some attributes are allowed on some tags only
-        const allowedTags = has(ATTRIBUTE_TAGS_MAP, name) ? ATTRIBUTE_TAGS_MAP[/** @type {keyof ATTRIBUTE_TAGS_MAP} */ (name)] : null;
+        const allowedTags = has(ATTRIBUTE_TAGS_MAP, name)
+          ? ATTRIBUTE_TAGS_MAP[/** @type {keyof ATTRIBUTE_TAGS_MAP} */ (name)]
+          : null;
         if (tagName && allowedTags) {
           // Scenario 1A: Allowed attribute found where not supposed to, report it
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-unsafe.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-unsafe.d.ts","sourceRoot":"","sources":["no-unsafe.js"],"names":[],"mappings":"wBAqBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unsafe.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -58,16 +58,13 @@
       UNSAFE_componentWillMount: {
         newMethod: 'componentDidMount',
-        details:
-          'See https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html.',
+        details: 'See https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html.',
       },
       UNSAFE_componentWillReceiveProps: {
         newMethod: 'getDerivedStateFromProps',
-        details:
-          'See https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html.',
+        details: 'See https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html.',
       },
       UNSAFE_componentWillUpdate: {
         newMethod: 'componentDidUpdate',
-        details:
-          'See https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html.',
+        details: 'See https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html.',
       },
     };
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-unstable-nested-components.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-unstable-nested-components.d.ts","sourceRoot":"","sources":["no-unstable-nested-components.js"],"names":[],"mappings":"wBAsQW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unstable-nested-components.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -6,6 +6,8 @@
 'use strict';
 
+const minimatch = require('minimatch');
 const Components = require('../util/Components');
 const docsUrl = require('../util/docsUrl');
+const astUtil = require('../util/ast');
 const isCreateElement = require('../util/isCreateElement');
 const report = require('../util/report');
@@ -24,6 +26,6 @@
 /**
  * Generate error message with given parent component name
- * @param {String} parentName Name of the parent component, if known
- * @returns {String} Error message with parent component name
+ * @param {string} parentName Name of the parent component, if known
+ * @returns {string} Error message with parent component name
  */
 function generateErrorMessageWithParentName(parentName) {
@@ -32,10 +34,11 @@
 
 /**
- * Check whether given text starts with `render`. Comparison is case-sensitive.
- * @param {String} text Text to validate
- * @returns {Boolean}
- */
-function startsWithRender(text) {
-  return (text || '').startsWith('render');
+ * Check whether given text matches the pattern passed in.
+ * @param {string} text Text to validate
+ * @param {string} pattern Pattern to match against
+ * @returns {boolean}
+ */
+function propMatchesRenderPropPattern(text, pattern) {
+  return typeof text === 'string' && minimatch(text, pattern);
 }
 
@@ -63,10 +66,9 @@
  * @param {ASTNode} node The AST node
  * @param {Context} context eslint context
- * @returns {Boolean} True if node is a `createElement` call, false if not
+ * @returns {boolean} True if node is a `createElement` call, false if not
  */
 function isCreateElementMatcher(node, context) {
   return (
-    node
-    && node.type === 'CallExpression'
+    astUtil.isCallExpression(node)
     && isCreateElement(context, node)
   );
@@ -76,5 +78,5 @@
  * Matcher used to check whether given node is a `ObjectExpression`
  * @param {ASTNode} node The AST node
- * @returns {Boolean} True if node is a `ObjectExpression`, false if not
+ * @returns {boolean} True if node is a `ObjectExpression`, false if not
  */
 function isObjectExpressionMatcher(node) {
@@ -85,5 +87,5 @@
  * Matcher used to check whether given node is a `JSXExpressionContainer`
  * @param {ASTNode} node The AST node
- * @returns {Boolean} True if node is a `JSXExpressionContainer`, false if not
+ * @returns {boolean} True if node is a `JSXExpressionContainer`, false if not
  */
 function isJSXExpressionContainerMatcher(node) {
@@ -94,5 +96,5 @@
  * Matcher used to check whether given node is a `JSXAttribute` of `JSXExpressionContainer`
  * @param {ASTNode} node The AST node
- * @returns {Boolean} True if node is a `JSXAttribute` of `JSXExpressionContainer`, false if not
+ * @returns {boolean} True if node is a `JSXAttribute` of `JSXExpressionContainer`, false if not
  */
 function isJSXAttributeOfExpressionContainerMatcher(node) {
@@ -108,5 +110,5 @@
  * Matcher used to check whether given node is an object `Property`
  * @param {ASTNode} node The AST node
- * @returns {Boolean} True if node is a `Property`, false if not
+ * @returns {boolean} True if node is a `Property`, false if not
  */
 function isPropertyOfObjectExpressionMatcher(node) {
@@ -116,13 +118,4 @@
     && node.parent.type === 'Property'
   );
-}
-
-/**
- * Matcher used to check whether given node is a `CallExpression`
- * @param {ASTNode} node The AST node
- * @returns {Boolean} True if node is a `CallExpression`, false if not
- */
-function isCallExpressionMatcher(node) {
-  return node && node.type === 'CallExpression';
 }
 
@@ -133,5 +126,5 @@
  * ```
  * @param {ASTNode} node The AST node
- * @returns {Boolean} True if node is directly inside `map` call, false if not
+ * @returns {boolean} True if node is directly inside `map` call, false if not
  */
 function isMapCall(node) {
@@ -148,5 +141,5 @@
  * @param {ASTNode} node The AST node
  * @param {Context} context eslint context
- * @returns {Boolean} True if node is a `ReturnStatement` of a React hook, false if not
+ * @returns {boolean} True if node is a `ReturnStatement` of a React hook, false if not
  */
 function isReturnStatementOfHook(node, context) {
@@ -159,5 +152,5 @@
   }
 
-  const callExpression = getClosestMatchingParent(node, context, isCallExpressionMatcher);
+  const callExpression = getClosestMatchingParent(node, context, astUtil.isCallExpression);
   return (
     callExpression
@@ -175,7 +168,8 @@
  * @param {ASTNode} node The AST node
  * @param {Context} context eslint context
- * @returns {Boolean} True if component is declared inside a render prop, false if not
- */
-function isComponentInRenderProp(node, context) {
+ * @param {string} propNamePattern a pattern to match render props against
+ * @returns {boolean} True if component is declared inside a render prop, false if not
+ */
+function isComponentInRenderProp(node, context, propNamePattern) {
   if (
     node
@@ -183,5 +177,5 @@
     && node.parent.type === 'Property'
     && node.parent.key
-    && startsWithRender(node.parent.key.name)
+    && propMatchesRenderPropPattern(node.parent.key.name, propNamePattern)
   ) {
     return true;
@@ -212,5 +206,5 @@
 
     // Starts with render, e.g. <Component renderFooter={() => <div />} />
-    if (startsWithRender(propName)) {
+    if (propMatchesRenderPropPattern(propName, propNamePattern)) {
       return true;
     }
@@ -232,7 +226,8 @@
  *  ```
  * @param {ASTNode} node The AST node
- * @returns {Boolean} True if component is declared inside a render property, false if not
- */
-function isDirectValueOfRenderProperty(node) {
+ * @param {string} propNamePattern The pattern to match render props against
+ * @returns {boolean} True if component is declared inside a render property, false if not
+ */
+function isDirectValueOfRenderProperty(node, propNamePattern) {
   return (
     node
@@ -241,5 +236,5 @@
     && node.parent.key
     && node.parent.key.type === 'Identifier'
-    && startsWithRender(node.parent.key.name)
+    && propMatchesRenderPropPattern(node.parent.key.name, propNamePattern)
   );
 }
@@ -248,5 +243,5 @@
  * Resolve the component name of given node
  * @param {ASTNode} node The AST node of the component
- * @returns {String} Name of the component, if any
+ * @returns {string} Name of the component, if any
  */
 function resolveComponentName(node) {
@@ -287,4 +282,7 @@
           type: 'boolean',
         },
+        propNamePattern: {
+          type: 'string',
+        },
       },
       additionalProperties: false,
@@ -294,4 +292,5 @@
   create: Components.detect((context, components, utils) => {
     const allowAsProps = context.options.some((option) => option && option.allowAsProps);
+    const propNamePattern = (context.options[0] || {}).propNamePattern || 'render*';
 
     /**
@@ -304,5 +303,5 @@
      * ```
      * @param {ASTNode} node The AST node being checked
-     * @returns {Boolean} True if node is inside class component's render block, false if not
+     * @returns {boolean} True if node is inside class component's render block, false if not
      */
     function isInsideRenderMethod(node) {
@@ -332,5 +331,5 @@
      * ```
      * @param {ASTNode} node The AST node being checked
-     * @returns {Boolean} True if given node a function component declared inside class component, false if not
+     * @returns {boolean} True if given node a function component declared inside class component, false if not
      */
     function isFunctionComponentInsideClassComponent(node) {
@@ -355,5 +354,5 @@
      * ```
      * @param {ASTNode} node The AST node
-     * @returns {Boolean} True if node is declare inside `createElement` call's props, false if not
+     * @returns {boolean} True if node is declare inside `createElement` call's props, false if not
      */
     function isComponentInsideCreateElementsProp(node) {
@@ -378,5 +377,5 @@
      * ```
      * @param {ASTNode} node The AST node being checked
-     * @returns {Boolean} True if node is a component declared inside prop, false if not
+     * @returns {boolean} True if node is a component declared inside prop, false if not
      */
     function isComponentInProp(node) {
@@ -400,5 +399,5 @@
      * ```
      * @param {ASTNode} node The AST node being checked
-     * @returns {Boolean} True if node is a stateless component returning non-JSX, false if not
+     * @returns {boolean} True if node is a stateless component returning non-JSX, false if not
      */
     function isStatelessComponentReturningNull(node) {
@@ -428,5 +427,5 @@
       if (
         // Support allowAsProps option
-        (isDeclaredInsideProps && (allowAsProps || isComponentInRenderProp(node, context)))
+        (isDeclaredInsideProps && (allowAsProps || isComponentInRenderProp(node, context, propNamePattern)))
 
         // Prevent reporting components created inside Array.map calls
@@ -438,5 +437,5 @@
 
         // Do not mark objects containing render methods
-        || isDirectValueOfRenderProperty(node)
+        || isDirectValueOfRenderProperty(node, propNamePattern)
 
         // Prevent reporting nested class components twice
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-unused-class-component-methods.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-unused-class-component-methods.d.ts","sourceRoot":"","sources":["no-unused-class-component-methods.js"],"names":[],"mappings":"wBAoGW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-class-component-methods.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -99,4 +99,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -249,5 +250,5 @@
             .filter((prop) => prop.type === 'Property' && isKeyLiteralLike(prop, prop.key))
             .forEach((prop) => {
-              addUsedProperty(prop.key);
+              addUsedProperty('key' in prop ? prop.key : undefined);
             });
         }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-unused-prop-types.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-unused-prop-types.d.ts","sourceRoot":"","sources":["no-unused-prop-types.js"],"names":[],"mappings":"wBAiCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -14,4 +14,13 @@
 const docsUrl = require('../util/docsUrl');
 const report = require('../util/report');
+
+/**
+ * Checks if the component must be validated
+ * @param {Object} component The component to process
+ * @returns {boolean} True if the component must be validated, false if not.
+ */
+function mustBeValidated(component) {
+  return !!component && !component.ignoreUnusedPropTypesValidation;
+}
 
 // ------------------------------------------------------------------------------
@@ -65,6 +74,6 @@
     /**
      * Checks if the prop is ignored
-     * @param {String} name Name of the prop to check.
-     * @returns {Boolean} True if the prop is ignored, false if not.
+     * @param {string} name Name of the prop to check.
+     * @returns {boolean} True if the prop is ignored, false if not.
      */
     function isIgnored(name) {
@@ -73,20 +82,8 @@
 
     /**
-     * Checks if the component must be validated
-     * @param {Object} component The component to process
-     * @returns {Boolean} True if the component must be validated, false if not.
-     */
-    function mustBeValidated(component) {
-      return Boolean(
-        component
-        && !component.ignoreUnusedPropTypesValidation
-      );
-    }
-
-    /**
      * Checks if a prop is used
      * @param {ASTNode} node The AST node being checked.
      * @param {Object} prop Declared prop object
-     * @returns {Boolean} True if the prop is used, false if not.
+     * @returns {boolean} True if the prop is used, false if not.
      */
     function isPropUsed(node, prop) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-unused-state.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-unused-state.d.ts","sourceRoot":"","sources":["no-unused-state.js"],"names":[],"mappings":"wBAgFW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-unused-state.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -11,5 +11,5 @@
 
 const docsUrl = require('../util/docsUrl');
-const ast = require('../util/ast');
+const astUtil = require('../util/ast');
 const componentUtil = require('../util/componentUtil');
 const report = require('../util/report');
@@ -45,5 +45,5 @@
 
 function isThisExpression(node) {
-  return ast.unwrapTSAsExpression(uncast(node)).type === 'ThisExpression';
+  return astUtil.unwrapTSAsExpression(uncast(node)).type === 'ThisExpression';
 }
 
@@ -66,5 +66,5 @@
 
 function isSetStateCall(node) {
-  const unwrappedCalleeNode = ast.unwrapTSAsExpression(node.callee);
+  const unwrappedCalleeNode = astUtil.unwrapTSAsExpression(node.callee);
 
   return (
@@ -79,4 +79,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -175,5 +176,5 @@
     // destructures `this.state`.
     function handleStateDestructuring(node) {
-      for (const prop of node.properties) {
+      node.properties.forEach((prop) => {
         if (prop.type === 'Property') {
           addUsedStateField(prop.key);
@@ -184,5 +185,5 @@
           classInfo.aliases.add(getName(prop.argument));
         }
-      }
+      });
     }
 
@@ -190,5 +191,5 @@
     // AssignmentExpressions and VariableDeclarators.
     function handleAssignment(left, right) {
-      const unwrappedRight = ast.unwrapTSAsExpression(right);
+      const unwrappedRight = astUtil.unwrapTSAsExpression(right);
 
       switch (left.type) {
@@ -202,5 +203,5 @@
             handleStateDestructuring(left);
           } else if (isThisExpression(unwrappedRight) && classInfo.aliases) {
-            for (const prop of left.properties) {
+            left.properties.forEach((prop) => {
               if (prop.type === 'Property' && getName(prop.key) === 'state') {
                 const name = getName(prop.value);
@@ -211,5 +212,5 @@
                 }
               }
-            }
+            });
           }
           break;
@@ -221,5 +222,5 @@
     function reportUnusedFields() {
       // Report all unused state fields.
-      for (const node of classInfo.stateFields) {
+      classInfo.stateFields.forEach((node) => {
         const name = getName(node.key);
         if (!classInfo.usedStateFields.has(name)) {
@@ -231,5 +232,5 @@
           });
         }
-      }
+      });
     }
 
@@ -293,6 +294,6 @@
         }
 
-        const unwrappedNode = ast.unwrapTSAsExpression(node);
-        const unwrappedArgumentNode = ast.unwrapTSAsExpression(unwrappedNode.arguments[0]);
+        const unwrappedNode = astUtil.unwrapTSAsExpression(node);
+        const unwrappedArgumentNode = astUtil.unwrapTSAsExpression(unwrappedNode.arguments[0]);
 
         // If we're looking at a `this.setState({})` invocation, record all the
@@ -309,5 +310,5 @@
           && unwrappedArgumentNode.type === 'ArrowFunctionExpression'
         ) {
-          const unwrappedBodyNode = ast.unwrapTSAsExpression(unwrappedArgumentNode.body);
+          const unwrappedBodyNode = astUtil.unwrapTSAsExpression(unwrappedArgumentNode.body);
 
           if (unwrappedBodyNode.type === 'ObjectExpression') {
@@ -331,5 +332,5 @@
         // If we see state being assigned as a class property using an object
         // expression, record all the fields of that object as state fields.
-        const unwrappedValueNode = ast.unwrapTSAsExpression(node.value);
+        const unwrappedValueNode = astUtil.unwrapTSAsExpression(node.value);
 
         const name = getName(node.key);
@@ -432,5 +433,9 @@
         }
 
-        if (parent.key.name === 'getInitialState') {
+        if (
+          'key' in parent
+          && 'name' in parent.key
+          && parent.key.name === 'getInitialState'
+        ) {
           const body = node.body.body;
           const lastBodyNode = body[body.length - 1];
@@ -453,6 +458,6 @@
         }
 
-        const unwrappedLeft = ast.unwrapTSAsExpression(node.left);
-        const unwrappedRight = ast.unwrapTSAsExpression(node.right);
+        const unwrappedLeft = astUtil.unwrapTSAsExpression(node.left);
+        const unwrappedRight = astUtil.unwrapTSAsExpression(node.right);
 
         // Check for assignments like `this.state = {}`
@@ -464,4 +469,5 @@
         ) {
           // Find the nearest function expression containing this assignment.
+          /** @type {import("eslint").Rule.Node} */
           let fn = node;
           while (fn.type !== 'FunctionExpression' && fn.parent) {
@@ -494,5 +500,5 @@
           return;
         }
-        if (isStateReference(ast.unwrapTSAsExpression(node.object))) {
+        if (isStateReference(astUtil.unwrapTSAsExpression(node.object))) {
           // If we see this.state[foo] access, give up.
           if (node.computed && node.property.type !== 'Literal') {
@@ -503,5 +509,5 @@
           addUsedStateField(node.property);
         // If we see a `this.state` access in a CallExpression, give up.
-        } else if (isStateReference(node) && node.parent.type === 'CallExpression') {
+        } else if (isStateReference(node) && astUtil.isCallExpression(node.parent)) {
           classInfo = null;
         }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-will-update-set-state.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-will-update-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-will-update-set-state.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=no-will-update-set-state.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-will-update-set-state.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-will-update-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-will-update-set-state.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"no-will-update-set-state.d.ts","sourceRoot":"","sources":["no-will-update-set-state.js"],"names":[],"mappings":"wBAUW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-es6-class.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-es6-class.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-es6-class.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=prefer-es6-class.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-es6-class.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-es6-class.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-es6-class.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"prefer-es6-class.d.ts","sourceRoot":"","sources":["prefer-es6-class.js"],"names":[],"mappings":"wBAoBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=prefer-exact-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"prefer-exact-props.d.ts","sourceRoot":"","sources":["prefer-exact-props.js"],"names":[],"mappings":"wBAwBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-exact-props.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -7,4 +7,5 @@
 const Components = require('../util/Components');
 const docsUrl = require('../util/docsUrl');
+const astUtil = require('../util/ast');
 const propsUtil = require('../util/props');
 const propWrapperUtil = require('../util/propWrapper');
@@ -82,6 +83,5 @@
     function isNonExactPropWrapperFunction(node) {
       return (
-        node
-        && node.type === 'CallExpression'
+        astUtil.isCallExpression(node)
         && !propWrapperUtil.isExactPropWrapperFunction(context, getText(context, node.callee))
       );
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-read-only-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-read-only-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-read-only-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=prefer-read-only-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-read-only-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-read-only-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-read-only-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"prefer-read-only-props.d.ts","sourceRoot":"","sources":["prefer-read-only-props.js"],"names":[],"mappings":"wBAiDW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=prefer-stateless-function.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"prefer-stateless-function.d.ts","sourceRoot":"","sources":["prefer-stateless-function.js"],"names":[],"mappings":"wBA8BW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -71,5 +71,5 @@
         body.length === 1
         && body[0].type === 'ExpressionStatement'
-        && body[0].expression.type === 'CallExpression'
+        && astUtil.isCallExpression(body[0].expression)
         && body[0].expression.callee.type === 'Super'
       );
@@ -192,5 +192,5 @@
      * Check if a given AST node have any other properties the ones available in stateless components
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if the node has at least one other property, false if not.
+     * @returns {boolean} True if the node has at least one other property, false if not.
      */
     function hasOtherProperties(node) {
@@ -355,5 +355,7 @@
           scope = scope.upper;
         }
-        const isRender = blockNode && blockNode.key && blockNode.key.name === 'render';
+        const isRender = blockNode
+          && blockNode.key
+          && blockNode.key.name === 'render';
         const allowNull = testReactVersion(context, '>= 15.0.0'); // Stateless components can return null since React 15
         const isReturningJSX = utils.isReturningJSX(node, !allowNull);
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=prop-types.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"prop-types.d.ts","sourceRoot":"","sources":["prop-types.js"],"names":[],"mappings":"wBAwBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/prop-types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -65,6 +65,6 @@
     /**
      * Checks if the prop is ignored
-     * @param {String} name Name of the prop to check.
-     * @returns {Boolean} True if the prop is ignored, false if not.
+     * @param {string} name Name of the prop to check.
+     * @returns {boolean} True if the prop is ignored, false if not.
      */
     function isIgnored(name) {
@@ -90,5 +90,5 @@
      * Internal: Checks if the prop is declared
      * @param {Object} declaredPropTypes Description of propTypes declared in the current component
-     * @param {String[]} keyList Dot separated name of the prop to check.
+     * @param {string[]} keyList Dot separated name of the prop to check.
      * @returns {boolean} True if the prop is declared, false if not.
      */
@@ -149,6 +149,6 @@
      * Checks if the prop is declared
      * @param {ASTNode} node The AST node being checked.
-     * @param {String[]} names List of names of the prop to check.
-     * @returns {Boolean} True if the prop is declared, false if not.
+     * @param {string[]} names List of names of the prop to check.
+     * @returns {boolean} True if the prop is declared, false if not.
      */
     function isDeclaredInComponent(node, names) {
@@ -191,5 +191,5 @@
      * @param {Object} component The current component to process
      * @param {Array} list The all components to process
-     * @returns {Boolean} True if the component is nested False if not.
+     * @returns {boolean} True if the component is nested False if not.
      */
     function checkNestedComponent(component, list) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/react-in-jsx-scope.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/react-in-jsx-scope.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/react-in-jsx-scope.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=react-in-jsx-scope.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/react-in-jsx-scope.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/react-in-jsx-scope.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/react-in-jsx-scope.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"react-in-jsx-scope.d.ts","sourceRoot":"","sources":["react-in-jsx-scope.js"],"names":[],"mappings":"wBAoBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-default-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-default-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-default-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=require-default-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-default-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-default-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-default-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"require-default-props.d.ts","sourceRoot":"","sources":["require-default-props.js"],"names":[],"mappings":"wBAiCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=require-optimization.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"require-optimization.d.ts","sourceRoot":"","sources":["require-optimization.js"],"names":[],"mappings":"wBAmBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-optimization.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -51,5 +51,5 @@
      * Checks to see if our component is decorated by PureRenderMixin via reactMixin
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if node is decorated with a PureRenderMixin, false if not.
+     * @returns {boolean} True if node is decorated with a PureRenderMixin, false if not.
      */
     function hasPureRenderDecorator(node) {
@@ -78,5 +78,5 @@
      * Checks to see if our component is custom decorated
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if node is decorated name with a custom decorated, false if not.
+     * @returns {boolean} True if node is decorated name with a custom decorated, false if not.
      */
     function hasCustomDecorator(node) {
@@ -86,7 +86,8 @@
         for (let i = 0; i < allowLength; i++) {
           for (let j = 0, l = node.decorators.length; j < l; j++) {
+            const expression = node.decorators[j].expression;
             if (
-              node.decorators[j].expression
-              && node.decorators[j].expression.name === allowDecorators[i]
+              expression
+              && expression.name === allowDecorators[i]
             ) {
               return true;
@@ -102,11 +103,8 @@
      * Checks if we are declaring a shouldComponentUpdate method
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if we are declaring a shouldComponentUpdate method, false if not.
+     * @returns {boolean} True if we are declaring a shouldComponentUpdate method, false if not.
      */
     function isSCUDeclared(node) {
-      return Boolean(
-        node
-        && node.name === 'shouldComponentUpdate'
-      );
+      return !!node && node.name === 'shouldComponentUpdate';
     }
 
@@ -114,5 +112,5 @@
      * Checks if we are declaring a PureRenderMixin mixin
      * @param {ASTNode} node The AST node being checked.
-     * @returns {Boolean} True if we are declaring a PureRenderMixin method, false if not.
+     * @returns {boolean} True if we are declaring a PureRenderMixin method, false if not.
      */
     function isPureRenderDeclared(node) {
@@ -127,6 +125,6 @@
       }
 
-      return Boolean(
-        node
+      return (
+        !!node
         && node.key.name === 'mixins'
         && hasPR
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-render-return.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-render-return.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-render-return.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=require-render-return.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-render-return.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-render-return.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/require-render-return.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"require-render-return.d.ts","sourceRoot":"","sources":["require-render-return.js"],"names":[],"mappings":"wBAwBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=self-closing-comp.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"self-closing-comp.d.ts","sourceRoot":"","sources":["self-closing-comp.js"],"names":[],"mappings":"wBA4CW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,9 +10,32 @@
 const report = require('../util/report');
 
+const optionDefaults = { component: true, html: true };
+
+function isComponent(node) {
+  return (
+    node.name
+    && (node.name.type === 'JSXIdentifier' || node.name.type === 'JSXMemberExpression')
+    && !jsxUtil.isDOMComponent(node)
+  );
+}
+
+function childrenIsEmpty(node) {
+  return node.parent.children.length === 0;
+}
+
+function childrenIsMultilineSpaces(node) {
+  const childrens = node.parent.children;
+
+  return (
+    childrens.length === 1
+    && (childrens[0].type === 'Literal' || childrens[0].type === 'JSXText')
+    && childrens[0].value.indexOf('\n') !== -1
+    && childrens[0].value.replace(/(?!\xA0)\s/g, '') === ''
+  );
+}
+
 // ------------------------------------------------------------------------------
 // Rule Definition
 // ------------------------------------------------------------------------------
-
-const optionDefaults = { component: true, html: true };
 
 const messages = {
@@ -50,27 +73,4 @@
 
   create(context) {
-    function isComponent(node) {
-      return (
-        node.name
-        && (node.name.type === 'JSXIdentifier' || node.name.type === 'JSXMemberExpression')
-        && !jsxUtil.isDOMComponent(node)
-      );
-    }
-
-    function childrenIsEmpty(node) {
-      return node.parent.children.length === 0;
-    }
-
-    function childrenIsMultilineSpaces(node) {
-      const childrens = node.parent.children;
-
-      return (
-        childrens.length === 1
-        && (childrens[0].type === 'Literal' || childrens[0].type === 'JSXText')
-        && childrens[0].value.indexOf('\n') !== -1
-        && childrens[0].value.replace(/(?!\xA0)\s/g, '') === ''
-      );
-    }
-
     function isShouldBeSelfClosed(node) {
       const configuration = Object.assign({}, optionDefaults, context.options[0]);
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=sort-comp.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"sort-comp.d.ts","sourceRoot":"","sources":["sort-comp.js"],"names":[],"mappings":"wBAwFW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-comp.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -235,5 +235,5 @@
      * Get properties name
      * @param {Object} node - Property.
-     * @returns {String} Property name.
+     * @returns {string} Property name.
      */
     function getPropertyName(node) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=sort-default-props.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"sort-default-props.d.ts","sourceRoot":"","sources":["sort-default-props.js"],"names":[],"mappings":"wBAwBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-default-props.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -23,4 +23,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -53,5 +54,5 @@
      * Get properties name
      * @param {Object} node - Property.
-     * @returns {String} Property name.
+     * @returns {string} Property name.
      */
     function getPropertyName(node) {
@@ -74,5 +75,5 @@
      * Checks if the Identifier node passed in looks like a defaultProps declaration.
      * @param   {ASTNode}  node The node to check. Must be an Identifier node.
-     * @returns {Boolean}       `true` if the node is a defaultProps declaration, `false` if not
+     * @returns {boolean}       `true` if the node is a defaultProps declaration, `false` if not
      */
     function isDefaultPropsDeclaration(node) {
@@ -173,5 +174,5 @@
         }
 
-        checkNode(node.parent.right);
+        checkNode('right' in node.parent && node.parent.right);
       },
     };
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=sort-prop-types.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"sort-prop-types.d.ts","sourceRoot":"","sources":["sort-prop-types.js"],"names":[],"mappings":"wBAsCW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -5,4 +5,5 @@
 'use strict';
 
+const astUtil = require('../util/ast');
 const variableUtil = require('../util/variable');
 const propsUtil = require('../util/props');
@@ -34,26 +35,4 @@
   }
   return getText(context, node.key || node.argument);
-}
-
-function getValueName(node) {
-  return node.type === 'Property' && node.value.property && node.value.property.name;
-}
-
-function isCallbackPropName(propName) {
-  return /^on[A-Z]/.test(propName);
-}
-
-function isRequiredProp(node) {
-  return getValueName(node) === 'isRequired';
-}
-
-function isShapeProp(node) {
-  return Boolean(
-    node && node.callee && node.callee.property && node.callee.property.name === 'shape'
-  );
-}
-
-function toLowerCase(item) {
-  return String(item).toLowerCase();
 }
 
@@ -146,12 +125,12 @@
         let prevPropName = getKey(context, prev);
         let currentPropName = getKey(context, curr);
-        const previousIsRequired = isRequiredProp(prev);
-        const currentIsRequired = isRequiredProp(curr);
-        const previousIsCallback = isCallbackPropName(prevPropName);
-        const currentIsCallback = isCallbackPropName(currentPropName);
+        const previousIsRequired = propTypesSortUtil.isRequiredProp(prev);
+        const currentIsRequired = propTypesSortUtil.isRequiredProp(curr);
+        const previousIsCallback = propTypesSortUtil.isCallbackPropName(prevPropName);
+        const currentIsCallback = propTypesSortUtil.isCallbackPropName(currentPropName);
 
         if (ignoreCase) {
-          prevPropName = toLowerCase(prevPropName);
-          currentPropName = toLowerCase(currentPropName);
+          prevPropName = String(prevPropName).toLowerCase();
+          currentPropName = String(currentPropName).toLowerCase();
         }
 
@@ -208,24 +187,20 @@
 
     function checkNode(node) {
-      switch (node && node.type) {
-        case 'ObjectExpression':
-          checkSorted(node.properties);
-          break;
-        case 'Identifier': {
-          const propTypesObject = variableUtil.findVariableByName(context, node, node.name);
-          if (propTypesObject && propTypesObject.properties) {
-            checkSorted(propTypesObject.properties);
-          }
-          break;
-        }
-        case 'CallExpression': {
-          const innerNode = node.arguments && node.arguments[0];
-          if (propWrapperUtil.isPropWrapperFunction(context, node.callee.name) && innerNode) {
-            checkNode(innerNode);
-          }
-          break;
-        }
-        default:
-          break;
+      if (!node) {
+        return;
+      }
+
+      if (node.type === 'ObjectExpression') {
+        checkSorted(node.properties);
+      } else if (node.type === 'Identifier') {
+        const propTypesObject = variableUtil.findVariableByName(context, node, node.name);
+        if (propTypesObject && propTypesObject.properties) {
+          checkSorted(propTypesObject.properties);
+        }
+      } else if (astUtil.isCallExpression(node)) {
+        const innerNode = node.arguments && node.arguments[0];
+        if (propWrapperUtil.isPropWrapperFunction(context, node.callee.name) && innerNode) {
+          checkNode(innerNode);
+        }
       }
     }
@@ -261,5 +236,5 @@
     return Object.assign({
       CallExpression(node) {
-        if (!sortShapeProp || !isShapeProp(node) || !(node.arguments && node.arguments[0])) {
+        if (!sortShapeProp || !propTypesSortUtil.isShapeProp(node) || !(node.arguments && node.arguments[0])) {
           return;
         }
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/state-in-constructor.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/state-in-constructor.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/state-in-constructor.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=state-in-constructor.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/state-in-constructor.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/state-in-constructor.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/state-in-constructor.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"state-in-constructor.d.ts","sourceRoot":"","sources":["state-in-constructor.js"],"names":[],"mappings":"wBAqBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=static-property-placement.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"static-property-placement.d.ts","sourceRoot":"","sources":["static-property-placement.js"],"names":[],"mappings":"wBA0DW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/static-property-placement.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -100,5 +100,5 @@
       * Checks if we are declaring context in class
       * @param {ASTNode} node
-      * @returns {Boolean} True if we are declaring context in class, false if not.
+      * @returns {boolean} True if we are declaring context in class, false if not.
      */
     function isContextInClass(node) {
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=style-prop-object.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"style-prop-object.d.ts","sourceRoot":"","sources":["style-prop-object.js"],"names":[],"mappings":"wBAoBW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/style-prop-object.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -19,4 +19,5 @@
 };
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -81,5 +82,5 @@
           && node.arguments.length > 1
         ) {
-          if (node.arguments[0].name) {
+          if ('name' in node.arguments[0] && node.arguments[0].name) {
             // store name of component
             const componentName = node.arguments[0].name;
@@ -92,6 +93,13 @@
           }
           if (node.arguments[1].type === 'ObjectExpression') {
-            const style = node.arguments[1].properties.find((property) => property.key && property.key.name === 'style' && !property.computed);
-            if (style) {
+            const style = node.arguments[1].properties.find((property) => (
+              'key' in property
+              && property.key
+              && 'name' in property.key
+              && property.key.name === 'style'
+              && !property.computed
+            ));
+
+            if (style && 'value' in style) {
               if (style.value.type === 'Identifier') {
                 checkIdentifiers(style.value);
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.d.ts
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+declare const _exports: import('eslint').Rule.RuleModule;
+export = _exports;
+//# sourceMappingURL=void-dom-elements-no-children.d.ts.map
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.d.ts.map
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.d.ts.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"void-dom-elements-no-children.d.ts","sourceRoot":"","sources":["void-dom-elements-no-children.js"],"names":[],"mappings":"wBAiDW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU"}
Index: imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.js
===================================================================
--- imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -48,4 +48,5 @@
 const noChildrenInVoidEl = 'Void DOM element <{{element}} /> cannot receive children.';
 
+/** @type {import('eslint').Rule.RuleModule} */
 module.exports = {
   meta: {
@@ -120,5 +121,5 @@
       }
 
-      const elementName = args[0].value;
+      const elementName = 'value' in args[0] ? args[0].value : undefined;
 
       if (!isVoidDOMElement(elementName)) {
@@ -145,5 +146,5 @@
 
       const hasChildrenPropOrDanger = props.some((prop) => {
-        if (!prop.key) {
+        if (!('key' in prop) || !prop.key || !('name' in prop.key)) {
           return false;
         }
