@luxass/eslint-config 4.0.0-beta.0 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1443,8 +1443,8 @@ async function react() {
1443
1443
  }
1444
1444
  },
1445
1445
  {
1446
- "files": [GLOB_REACT],
1447
- "languageOptions": {
1446
+ files: [GLOB_REACT],
1447
+ languageOptions: {
1448
1448
  ...pluginReact.configs.recommended.languageOptions,
1449
1449
  globals: {
1450
1450
  ...import_globals2.default.browser
@@ -1455,427 +1455,424 @@ async function react() {
1455
1455
  }
1456
1456
  }
1457
1457
  },
1458
- "name": "luxass:react:rules",
1459
- ...pluginReact.configs.all.rules,
1460
- ...pluginReactHooks.configs.recommended.rules,
1461
- ...pluginA11y.configs.recommended.rules,
1462
- "jsx-a11y/accessible-emoji": ["warn"],
1463
- "jsx-a11y/alt-text": [
1464
- "warn",
1465
- {
1466
- "area": [],
1467
- "elements": ["img", "object", "area", 'input[type="image"]'],
1468
- "img": [],
1469
- 'input[type="image"]': [],
1470
- "object": []
1471
- }
1472
- ],
1473
- "jsx-a11y/anchor-has-content": ["warn", { components: [] }],
1474
- "jsx-a11y/anchor-is-valid": [
1475
- "warn",
1476
- {
1477
- aspects: ["noHref", "invalidHref", "preferButton"],
1478
- components: ["Link"],
1479
- specialLink: ["to"]
1480
- }
1481
- ],
1482
- "jsx-a11y/aria-activedescendant-has-tabindex": ["warn"],
1483
- "jsx-a11y/aria-props": ["warn"],
1484
- "jsx-a11y/aria-proptypes": ["warn"],
1485
- "jsx-a11y/aria-role": ["warn", { ignoreNonDOM: false }],
1486
- "jsx-a11y/aria-unsupported-elements": ["warn"],
1487
- "jsx-a11y/autocomplete-valid": ["off", { inputComponents: [] }],
1488
- "jsx-a11y/click-events-have-key-events": ["warn"],
1489
- "jsx-a11y/control-has-associated-label": [
1490
- "warn",
1491
- {
1492
- controlComponents: [],
1493
- depth: 5,
1494
- ignoreElements: [
1495
- "audio",
1496
- "canvas",
1497
- "embed",
1498
- "input",
1499
- "textarea",
1500
- "tr",
1501
- "video"
1502
- ],
1503
- ignoreRoles: [
1504
- "grid",
1505
- "listbox",
1506
- "menu",
1507
- "menubar",
1508
- "radiogroup",
1509
- "row",
1510
- "tablist",
1511
- "toolbar",
1512
- "tree",
1513
- "treegrid"
1514
- ],
1515
- labelAttributes: ["label"]
1516
- }
1517
- ],
1518
- "jsx-a11y/heading-has-content": ["warn", { components: [""] }],
1519
- "jsx-a11y/html-has-lang": ["warn"],
1520
- "jsx-a11y/iframe-has-title": ["warn"],
1521
- "jsx-a11y/img-redundant-alt": ["warn"],
1522
- "jsx-a11y/interactive-supports-focus": ["warn"],
1523
- "jsx-a11y/label-has-associated-control": [
1524
- "warn",
1525
- {
1526
- assert: "both",
1527
- controlComponents: [],
1528
- depth: 25,
1529
- labelAttributes: [],
1530
- labelComponents: []
1531
- }
1532
- ],
1533
- "jsx-a11y/label-has-for": [
1534
- "off",
1535
- {
1536
- allowChildren: false,
1537
- components: [],
1538
- required: {
1539
- every: ["nesting", "id"]
1458
+ name: "luxass:react:rules",
1459
+ rules: {
1460
+ ...pluginReact.configs.all.rules,
1461
+ ...pluginReactHooks.configs.recommended.rules,
1462
+ ...pluginA11y.configs.recommended.rules,
1463
+ "jsx-a11y/accessible-emoji": ["warn"],
1464
+ "jsx-a11y/alt-text": [
1465
+ "warn",
1466
+ {
1467
+ "area": [],
1468
+ "elements": ["img", "object", "area", 'input[type="image"]'],
1469
+ "img": [],
1470
+ 'input[type="image"]': [],
1471
+ "object": []
1540
1472
  }
1541
- }
1542
- ],
1543
- "jsx-a11y/lang": ["warn"],
1544
- "jsx-a11y/media-has-caption": [
1545
- "warn",
1546
- {
1547
- audio: [],
1548
- track: [],
1549
- video: []
1550
- }
1551
- ],
1552
- "jsx-a11y/mouse-events-have-key-events": ["warn"],
1553
- "jsx-a11y/no-access-key": ["warn"],
1554
- "jsx-a11y/no-autofocus": ["warn", { ignoreNonDOM: true }],
1555
- "jsx-a11y/no-distracting-elements": [
1556
- "warn",
1557
- { elements: ["marquee", "blink"] }
1558
- ],
1559
- "jsx-a11y/no-interactive-element-to-noninteractive-role": [
1560
- "warn",
1561
- { tr: ["none", "presentation"] }
1562
- ],
1563
- "jsx-a11y/no-noninteractive-element-interactions": [
1564
- "warn",
1565
- {
1566
- handlers: [
1567
- "onClick",
1568
- "onMouseDown",
1569
- "onMouseUp",
1570
- "onKeyPress",
1571
- "onKeyDown",
1572
- "onKeyUp"
1573
- ]
1574
- }
1575
- ],
1576
- "jsx-a11y/no-noninteractive-element-to-interactive-role": [
1577
- "warn",
1578
- {
1579
- li: ["menuitem", "option", "row", "tab", "treeitem"],
1580
- ol: [
1581
- "listbox",
1582
- "menu",
1583
- "menubar",
1584
- "radiogroup",
1585
- "tablist",
1586
- "tree",
1587
- "treegrid"
1588
- ],
1589
- table: ["grid"],
1590
- td: ["gridcell"],
1591
- ul: [
1592
- "listbox",
1593
- "menu",
1594
- "menubar",
1595
- "radiogroup",
1596
- "tablist",
1597
- "tree",
1598
- "treegrid"
1599
- ]
1600
- }
1601
- ],
1602
- "jsx-a11y/no-noninteractive-tabindex": [
1603
- "warn",
1604
- { roles: ["tabpanel"], tags: [] }
1605
- ],
1606
- "jsx-a11y/no-onchange": ["off"],
1607
- "jsx-a11y/no-redundant-roles": ["warn"],
1608
- "jsx-a11y/no-static-element-interactions": [
1609
- "off",
1610
- {
1611
- handlers: [
1612
- "onClick",
1613
- "onMouseDown",
1614
- "onMouseUp",
1615
- "onKeyPress",
1616
- "onKeyDown",
1617
- "onKeyUp"
1618
- ]
1619
- }
1620
- ],
1621
- "jsx-a11y/role-has-required-aria-props": ["warn"],
1622
- "jsx-a11y/role-supports-aria-props": ["warn"],
1623
- "jsx-a11y/scope": ["warn"],
1624
- "jsx-a11y/tabindex-no-positive": ["warn"],
1625
- "react-hooks/exhaustive-deps": ["warn"],
1626
- "react-hooks/rules-of-hooks": ["error"],
1627
- "react/boolean-prop-naming": [
1628
- "warn",
1629
- { rule: "^(is|has)[A-Z]([A-Za-z0-9]?)+", validateNested: true }
1630
- ],
1631
- "react/button-has-type": [
1632
- "error",
1633
- { button: true, reset: false, submit: true }
1634
- ],
1635
- "react/default-props-match-prop-types": [
1636
- "error",
1637
- { allowRequiredDefaults: false }
1638
- ],
1639
- "react/destructuring-assignment": ["off", "always"],
1640
- "react/display-name": ["error", { ignoreTranspilerName: false }],
1641
- "react/forbid-component-props": ["off", { forbid: [] }],
1642
- "react/forbid-dom-props": ["off", { forbid: [] }],
1643
- "react/forbid-elements": ["off", { forbid: [] }],
1644
- "react/forbid-foreign-prop-types": ["error", { allowInPropTypes: true }],
1645
- "react/forbid-prop-types": ["error", { forbid: ["any", "array"] }],
1646
- "react/function-component-definition": [
1647
- "error",
1648
- {
1649
- namedComponents: "arrow-function",
1650
- unnamedComponents: "arrow-function"
1651
- }
1652
- ],
1653
- "react/hook-use-state": ["error"],
1654
- "react/iframe-missing-sandbox": ["error"],
1655
- "react/jsx-boolean-value": ["error", "never", { always: [] }],
1656
- "react/jsx-child-element-spacing": ["off"],
1657
- "react/jsx-closing-bracket-location": [
1658
- "off",
1659
- { nonEmpty: "tag-aligned", selfClosing: false }
1660
- ],
1661
- "react/jsx-closing-tag-location": ["off"],
1662
- "react/jsx-curly-brace-presence": [
1663
- "error",
1664
- { children: "ignore", propElementValues: "always", props: "never" }
1665
- ],
1666
- "react/jsx-curly-newline": [
1667
- "off",
1668
- { multiline: "consistent", singleline: "forbid" }
1669
- ],
1670
- "react/jsx-curly-spacing": ["error", "never"],
1671
- "react/jsx-equals-spacing": ["error", "never"],
1672
- "react/jsx-filename-extension": ["warn", { extensions: [".tsx"] }],
1673
- "react/jsx-first-prop-new-line": ["off", "multiline"],
1674
- "react/jsx-fragments": ["error", "syntax"],
1675
- "react/jsx-handler-names": [
1676
- "error",
1677
- { eventHandlerPrefix: "handle", eventHandlerPropPrefix: "on" }
1678
- ],
1679
- "react/jsx-indent": ["off", "tab"],
1680
- "react/jsx-indent-props": ["off", "tab"],
1681
- "react/jsx-key": [
1682
- "error",
1683
- {
1684
- checkFragmentShorthand: true,
1685
- checkKeyMustBeforeSpread: true,
1686
- warnOnDuplicates: true
1687
- }
1688
- ],
1689
- "react/jsx-max-depth": ["off"],
1690
- "react/jsx-max-props-per-line": [
1691
- "off",
1692
- { maximum: 3, when: "multiline" }
1693
- ],
1694
- "react/jsx-newline": ["off"],
1695
- "react/jsx-no-bind": [
1696
- "error",
1697
- {
1698
- allowArrowFunctions: true,
1699
- allowBind: false,
1700
- allowFunctions: false,
1701
- ignoreDOMComponents: false,
1702
- ignoreRefs: false
1703
- }
1704
- ],
1705
- "react/jsx-no-comment-textnodes": ["error"],
1706
- "react/jsx-no-constructed-context-values": ["error"],
1707
- "react/jsx-no-duplicate-props": ["error", { ignoreCase: false }],
1708
- "react/jsx-no-literals": ["off", { noStrings: true }],
1709
- "react/jsx-no-script-url": ["error", [{ name: "Link", props: ["to"] }]],
1710
- "react/jsx-no-target-blank": [
1711
- "error",
1712
- { forms: true, links: true, warnOnSpreadAttributes: true }
1713
- ],
1714
- "react/jsx-no-undef": ["error"],
1715
- "react/jsx-no-useless-fragment": ["error"],
1716
- "react/jsx-one-expression-per-line": ["off", { allow: "single-child" }],
1717
- "react/jsx-pascal-case": ["error", { allowAllCaps: true, ignore: [] }],
1718
- "react/jsx-props-no-multi-spaces": ["error"],
1719
- "react/jsx-props-no-spreading": [
1720
- "off",
1721
- {
1722
- custom: "enforce",
1723
- exceptions: [],
1724
- explicitSpread: "ignore",
1725
- html: "enforce"
1726
- }
1727
- ],
1728
- "react/jsx-sort-default-props": ["off", { ignoreCase: true }],
1729
- "react/jsx-sort-prop-types": ["off"],
1730
- "react/jsx-sort-props": [
1731
- "error",
1732
- {
1733
- callbacksLast: true,
1734
- locale: "auto",
1735
- multiline: "ignore",
1736
- noSortAlphabetically: true,
1737
- reservedFirst: true,
1738
- shorthandFirst: true
1739
- }
1740
- ],
1741
- "react/jsx-space-before-closing": ["off", "always"],
1742
- "react/jsx-tag-spacing": [
1743
- "error",
1744
- {
1745
- afterOpening: "never",
1746
- beforeClosing: "never",
1747
- beforeSelfClosing: "always",
1748
- closingSlash: "never"
1749
- }
1750
- ],
1751
- "react/jsx-uses-react": ["off"],
1752
- "react/jsx-uses-vars": ["error"],
1753
- "react/jsx-wrap-multilines": [
1754
- "error",
1755
- {
1756
- arrow: "parens-new-line",
1757
- assignment: "parens-new-line",
1758
- condition: "ignore",
1759
- declaration: "parens-new-line",
1760
- logical: "ignore",
1761
- prop: "ignore",
1762
- return: "parens-new-line"
1763
- }
1764
- ],
1765
- "react/no-access-state-in-setstate": ["error"],
1766
- "react/no-adjacent-inline-elements": ["off"],
1767
- "react/no-array-index-key": ["error"],
1768
- "react/no-arrow-function-lifecycle": ["error"],
1769
- "react/no-children-prop": ["error"],
1770
- "react/no-danger": ["error"],
1771
- "react/no-danger-with-children": ["error"],
1772
- "react/no-deprecated": ["error"],
1773
- "react/no-did-mount-set-state": ["off"],
1774
- "react/no-did-update-set-state": ["error"],
1775
- "react/no-direct-mutation-state": ["error"],
1776
- "react/no-find-dom-node": ["error"],
1777
- "react/no-invalid-html-attribute": ["error"],
1778
- "react/no-is-mounted": ["error"],
1779
- "react/no-multi-comp": ["off"],
1780
- "react/no-namespace": ["error"],
1781
- "react/no-redundant-should-component-update": ["error"],
1782
- "react/no-render-return-value": ["error"],
1783
- "react/no-set-state": ["off"],
1784
- "react/no-string-refs": ["error", { noTemplateLiterals: true }],
1785
- "react/no-this-in-sfc": ["error"],
1786
- "react/no-typos": ["error"],
1787
- "react/no-unescaped-entities": ["error"],
1788
- "react/no-unknown-property": ["error"],
1789
- "react/no-unsafe": ["error", { checkAliases: true }],
1790
- "react/no-unstable-nested-components": ["error"],
1791
- "react/no-unused-class-component-methods": ["error"],
1792
- "react/no-unused-prop-types": [
1793
- "error",
1794
- { customValidators: [], skipShapeProps: true }
1795
- ],
1796
- "react/no-unused-state": ["error"],
1797
- "react/no-will-update-set-state": ["error"],
1798
- "react/prefer-es6-class": ["error", "always"],
1799
- "react/prefer-exact-props": ["error"],
1800
- "react/prefer-read-only-props": ["error"],
1801
- "react/prefer-stateless-function": [
1802
- "error",
1803
- { ignorePureComponents: true }
1804
- ],
1805
- "react/prop-types": [
1806
- "error",
1807
- { customValidators: [], ignore: [], skipUndeclared: false }
1808
- ],
1809
- "react/react-in-jsx-scope": ["off"],
1810
- "react/require-default-props": [
1811
- "off",
1812
- { forbidDefaultForRequired: true, ignoreFunctionalComponents: true }
1813
- ],
1814
- "react/require-optimization": ["off", { allowDecorators: [] }],
1815
- "react/require-render-return": ["error"],
1816
- "react/self-closing-comp": ["error", { component: true, html: true }],
1817
- "react/sort-comp": [
1818
- "off",
1819
- {
1820
- groups: {
1821
- lifecycle: [
1822
- "displayName",
1823
- "propTypes",
1824
- "contextTypes",
1825
- "childContextTypes",
1826
- "mixins",
1827
- "statics",
1828
- "defaultProps",
1829
- "constructor",
1830
- "getDefaultProps",
1831
- "getInitialState",
1832
- "state",
1833
- "getChildContext",
1834
- "getDerivedStateFromProps",
1835
- "componentWillMount",
1836
- "UNSAFE_componentWillMount",
1837
- "componentDidMount",
1838
- "componentWillReceiveProps",
1839
- "UNSAFE_componentWillReceiveProps",
1840
- "shouldComponentUpdate",
1841
- "componentWillUpdate",
1842
- "UNSAFE_componentWillUpdate",
1843
- "getSnapshotBeforeUpdate",
1844
- "componentDidUpdate",
1845
- "componentDidCatch",
1846
- "componentWillUnmount"
1473
+ ],
1474
+ "jsx-a11y/anchor-has-content": ["warn", { components: [] }],
1475
+ "jsx-a11y/anchor-is-valid": [
1476
+ "warn",
1477
+ {
1478
+ aspects: ["noHref", "invalidHref", "preferButton"],
1479
+ components: ["Link"],
1480
+ specialLink: ["to"]
1481
+ }
1482
+ ],
1483
+ "jsx-a11y/aria-activedescendant-has-tabindex": ["warn"],
1484
+ "jsx-a11y/aria-props": ["warn"],
1485
+ "jsx-a11y/aria-proptypes": ["warn"],
1486
+ "jsx-a11y/aria-role": ["warn", { ignoreNonDOM: false }],
1487
+ "jsx-a11y/aria-unsupported-elements": ["warn"],
1488
+ "jsx-a11y/autocomplete-valid": ["off", { inputComponents: [] }],
1489
+ "jsx-a11y/click-events-have-key-events": ["warn"],
1490
+ "jsx-a11y/control-has-associated-label": [
1491
+ "warn",
1492
+ {
1493
+ controlComponents: [],
1494
+ depth: 5,
1495
+ ignoreElements: [
1496
+ "audio",
1497
+ "canvas",
1498
+ "embed",
1499
+ "input",
1500
+ "textarea",
1501
+ "tr",
1502
+ "video"
1847
1503
  ],
1848
- rendering: ["/^render.+$/", "render"]
1849
- },
1850
- order: [
1851
- "static-variables",
1852
- "static-methods",
1853
- "instance-variables",
1854
- "lifecycle",
1855
- "/^handle.+$/",
1856
- "/^on.+$/",
1857
- "getters",
1858
- "setters",
1859
- "/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/",
1860
- "instance-methods",
1861
- "everything-else",
1862
- "rendering"
1863
- ]
1864
- }
1865
- ],
1866
- "react/sort-prop-types": [
1867
- "off",
1868
- {
1869
- callbacksLast: false,
1870
- ignoreCase: true,
1871
- requiredFirst: false,
1872
- sortShapeProp: true
1873
- }
1874
- ],
1875
- "react/state-in-constructor": ["error", "never"],
1876
- "react/static-property-placement": ["error", "property assignment"],
1877
- "react/style-prop-object": ["error", { allow: ["FormattedNumber"] }],
1878
- "react/void-dom-elements-no-children": ["error"]
1504
+ ignoreRoles: [
1505
+ "grid",
1506
+ "listbox",
1507
+ "menu",
1508
+ "menubar",
1509
+ "radiogroup",
1510
+ "row",
1511
+ "tablist",
1512
+ "toolbar",
1513
+ "tree",
1514
+ "treegrid"
1515
+ ],
1516
+ labelAttributes: ["label"]
1517
+ }
1518
+ ],
1519
+ "jsx-a11y/heading-has-content": ["warn", { components: [""] }],
1520
+ "jsx-a11y/html-has-lang": ["warn"],
1521
+ "jsx-a11y/iframe-has-title": ["warn"],
1522
+ "jsx-a11y/img-redundant-alt": ["warn"],
1523
+ "jsx-a11y/interactive-supports-focus": ["warn"],
1524
+ "jsx-a11y/label-has-associated-control": [
1525
+ "warn",
1526
+ {
1527
+ assert: "both",
1528
+ controlComponents: [],
1529
+ depth: 25,
1530
+ labelAttributes: [],
1531
+ labelComponents: []
1532
+ }
1533
+ ],
1534
+ "jsx-a11y/label-has-for": [
1535
+ "off",
1536
+ {
1537
+ allowChildren: false,
1538
+ components: [],
1539
+ required: {
1540
+ every: ["nesting", "id"]
1541
+ }
1542
+ }
1543
+ ],
1544
+ "jsx-a11y/lang": ["warn"],
1545
+ "jsx-a11y/media-has-caption": [
1546
+ "warn",
1547
+ {
1548
+ audio: [],
1549
+ track: [],
1550
+ video: []
1551
+ }
1552
+ ],
1553
+ "jsx-a11y/mouse-events-have-key-events": ["warn"],
1554
+ "jsx-a11y/no-access-key": ["warn"],
1555
+ "jsx-a11y/no-autofocus": ["warn", { ignoreNonDOM: true }],
1556
+ "jsx-a11y/no-distracting-elements": [
1557
+ "warn",
1558
+ { elements: ["marquee", "blink"] }
1559
+ ],
1560
+ "jsx-a11y/no-interactive-element-to-noninteractive-role": [
1561
+ "warn",
1562
+ { tr: ["none", "presentation"] }
1563
+ ],
1564
+ "jsx-a11y/no-noninteractive-element-interactions": [
1565
+ "warn",
1566
+ {
1567
+ handlers: [
1568
+ "onClick",
1569
+ "onMouseDown",
1570
+ "onMouseUp",
1571
+ "onKeyPress",
1572
+ "onKeyDown",
1573
+ "onKeyUp"
1574
+ ]
1575
+ }
1576
+ ],
1577
+ "jsx-a11y/no-noninteractive-element-to-interactive-role": [
1578
+ "warn",
1579
+ {
1580
+ li: ["menuitem", "option", "row", "tab", "treeitem"],
1581
+ ol: [
1582
+ "listbox",
1583
+ "menu",
1584
+ "menubar",
1585
+ "radiogroup",
1586
+ "tablist",
1587
+ "tree",
1588
+ "treegrid"
1589
+ ],
1590
+ table: ["grid"],
1591
+ td: ["gridcell"],
1592
+ ul: [
1593
+ "listbox",
1594
+ "menu",
1595
+ "menubar",
1596
+ "radiogroup",
1597
+ "tablist",
1598
+ "tree",
1599
+ "treegrid"
1600
+ ]
1601
+ }
1602
+ ],
1603
+ "jsx-a11y/no-noninteractive-tabindex": [
1604
+ "warn",
1605
+ { roles: ["tabpanel"], tags: [] }
1606
+ ],
1607
+ "jsx-a11y/no-onchange": ["off"],
1608
+ "jsx-a11y/no-redundant-roles": ["warn"],
1609
+ "jsx-a11y/no-static-element-interactions": [
1610
+ "off",
1611
+ {
1612
+ handlers: [
1613
+ "onClick",
1614
+ "onMouseDown",
1615
+ "onMouseUp",
1616
+ "onKeyPress",
1617
+ "onKeyDown",
1618
+ "onKeyUp"
1619
+ ]
1620
+ }
1621
+ ],
1622
+ "jsx-a11y/role-has-required-aria-props": ["warn"],
1623
+ "jsx-a11y/role-supports-aria-props": ["warn"],
1624
+ "jsx-a11y/scope": ["warn"],
1625
+ "jsx-a11y/tabindex-no-positive": ["warn"],
1626
+ "react-hooks/exhaustive-deps": ["warn"],
1627
+ "react-hooks/rules-of-hooks": ["error"],
1628
+ "react/boolean-prop-naming": [
1629
+ "warn",
1630
+ { rule: "^(is|has)[A-Z]([A-Za-z0-9]?)+", validateNested: true }
1631
+ ],
1632
+ "react/button-has-type": [
1633
+ "error",
1634
+ { button: true, reset: false, submit: true }
1635
+ ],
1636
+ "react/default-props-match-prop-types": [
1637
+ "error",
1638
+ { allowRequiredDefaults: false }
1639
+ ],
1640
+ "react/destructuring-assignment": ["off", "always"],
1641
+ "react/display-name": ["error", { ignoreTranspilerName: false }],
1642
+ "react/forbid-component-props": ["off", { forbid: [] }],
1643
+ "react/forbid-dom-props": ["off", { forbid: [] }],
1644
+ "react/forbid-elements": ["off", { forbid: [] }],
1645
+ "react/forbid-foreign-prop-types": ["error", { allowInPropTypes: true }],
1646
+ "react/forbid-prop-types": ["error", { forbid: ["any", "array"] }],
1647
+ "react/function-component-definition": "error",
1648
+ "react/hook-use-state": ["error"],
1649
+ "react/iframe-missing-sandbox": ["error"],
1650
+ "react/jsx-boolean-value": ["error", "never", { always: [] }],
1651
+ "react/jsx-child-element-spacing": ["off"],
1652
+ "react/jsx-closing-bracket-location": [
1653
+ "off",
1654
+ { nonEmpty: "tag-aligned", selfClosing: false }
1655
+ ],
1656
+ "react/jsx-closing-tag-location": ["off"],
1657
+ "react/jsx-curly-brace-presence": [
1658
+ "error",
1659
+ { children: "ignore", propElementValues: "always", props: "never" }
1660
+ ],
1661
+ "react/jsx-curly-newline": [
1662
+ "off",
1663
+ { multiline: "consistent", singleline: "forbid" }
1664
+ ],
1665
+ "react/jsx-curly-spacing": ["error", "never"],
1666
+ "react/jsx-equals-spacing": ["error", "never"],
1667
+ "react/jsx-filename-extension": ["warn", { extensions: [".tsx"] }],
1668
+ "react/jsx-first-prop-new-line": ["off", "multiline"],
1669
+ "react/jsx-fragments": ["error", "syntax"],
1670
+ "react/jsx-handler-names": [
1671
+ "error",
1672
+ { eventHandlerPrefix: "handle", eventHandlerPropPrefix: "on" }
1673
+ ],
1674
+ "react/jsx-indent": ["off", "tab"],
1675
+ "react/jsx-indent-props": ["off", "tab"],
1676
+ "react/jsx-key": [
1677
+ "error",
1678
+ {
1679
+ checkFragmentShorthand: true,
1680
+ checkKeyMustBeforeSpread: true,
1681
+ warnOnDuplicates: true
1682
+ }
1683
+ ],
1684
+ "react/jsx-max-depth": ["off"],
1685
+ "react/jsx-max-props-per-line": [
1686
+ "off",
1687
+ { maximum: 3, when: "multiline" }
1688
+ ],
1689
+ "react/jsx-newline": ["off"],
1690
+ "react/jsx-no-bind": [
1691
+ "error",
1692
+ {
1693
+ allowArrowFunctions: true,
1694
+ allowBind: false,
1695
+ allowFunctions: false,
1696
+ ignoreDOMComponents: false,
1697
+ ignoreRefs: false
1698
+ }
1699
+ ],
1700
+ "react/jsx-no-comment-textnodes": ["error"],
1701
+ "react/jsx-no-constructed-context-values": ["error"],
1702
+ "react/jsx-no-duplicate-props": ["error", { ignoreCase: false }],
1703
+ "react/jsx-no-leaked-render": "off",
1704
+ "react/jsx-no-literals": ["off", { noStrings: true }],
1705
+ "react/jsx-no-script-url": ["error", [{ name: "Link", props: ["to"] }]],
1706
+ "react/jsx-no-target-blank": [
1707
+ "error",
1708
+ { forms: true, links: true, warnOnSpreadAttributes: true }
1709
+ ],
1710
+ "react/jsx-no-undef": ["error"],
1711
+ "react/jsx-no-useless-fragment": ["error"],
1712
+ "react/jsx-one-expression-per-line": ["off", { allow: "single-child" }],
1713
+ "react/jsx-pascal-case": ["error", { allowAllCaps: true, ignore: [] }],
1714
+ "react/jsx-props-no-multi-spaces": ["error"],
1715
+ "react/jsx-props-no-spreading": [
1716
+ "off",
1717
+ {
1718
+ custom: "enforce",
1719
+ exceptions: [],
1720
+ explicitSpread: "ignore",
1721
+ html: "enforce"
1722
+ }
1723
+ ],
1724
+ "react/jsx-sort-default-props": ["off", { ignoreCase: true }],
1725
+ "react/jsx-sort-prop-types": ["off"],
1726
+ "react/jsx-sort-props": [
1727
+ "error",
1728
+ {
1729
+ callbacksLast: true,
1730
+ locale: "auto",
1731
+ multiline: "ignore",
1732
+ noSortAlphabetically: true,
1733
+ reservedFirst: true,
1734
+ shorthandFirst: true
1735
+ }
1736
+ ],
1737
+ "react/jsx-space-before-closing": ["off", "always"],
1738
+ "react/jsx-tag-spacing": [
1739
+ "error",
1740
+ {
1741
+ afterOpening: "never",
1742
+ beforeClosing: "never",
1743
+ beforeSelfClosing: "always",
1744
+ closingSlash: "never"
1745
+ }
1746
+ ],
1747
+ "react/jsx-uses-react": ["off"],
1748
+ "react/jsx-uses-vars": ["error"],
1749
+ "react/jsx-wrap-multilines": [
1750
+ "error",
1751
+ {
1752
+ arrow: "parens-new-line",
1753
+ assignment: "parens-new-line",
1754
+ condition: "ignore",
1755
+ declaration: "parens-new-line",
1756
+ logical: "ignore",
1757
+ prop: "ignore",
1758
+ return: "parens-new-line"
1759
+ }
1760
+ ],
1761
+ "react/no-access-state-in-setstate": ["error"],
1762
+ "react/no-adjacent-inline-elements": ["off"],
1763
+ "react/no-array-index-key": ["error"],
1764
+ "react/no-arrow-function-lifecycle": ["error"],
1765
+ "react/no-children-prop": ["error"],
1766
+ "react/no-danger": ["error"],
1767
+ "react/no-danger-with-children": ["error"],
1768
+ "react/no-deprecated": ["error"],
1769
+ "react/no-did-mount-set-state": ["off"],
1770
+ "react/no-did-update-set-state": ["error"],
1771
+ "react/no-direct-mutation-state": ["error"],
1772
+ "react/no-find-dom-node": ["error"],
1773
+ "react/no-invalid-html-attribute": ["error"],
1774
+ "react/no-is-mounted": ["error"],
1775
+ "react/no-multi-comp": ["off"],
1776
+ "react/no-namespace": ["error"],
1777
+ "react/no-redundant-should-component-update": ["error"],
1778
+ "react/no-render-return-value": ["error"],
1779
+ "react/no-set-state": ["off"],
1780
+ "react/no-string-refs": ["error", { noTemplateLiterals: true }],
1781
+ "react/no-this-in-sfc": ["error"],
1782
+ "react/no-typos": ["error"],
1783
+ "react/no-unescaped-entities": ["error"],
1784
+ "react/no-unknown-property": ["error"],
1785
+ "react/no-unsafe": ["error", { checkAliases: true }],
1786
+ "react/no-unstable-nested-components": ["error"],
1787
+ "react/no-unused-class-component-methods": ["error"],
1788
+ "react/no-unused-prop-types": [
1789
+ "off"
1790
+ // { customValidators: [], skipShapeProps: true },
1791
+ ],
1792
+ "react/no-unused-state": ["error"],
1793
+ "react/no-will-update-set-state": ["error"],
1794
+ "react/prefer-es6-class": ["error", "always"],
1795
+ "react/prefer-exact-props": ["error"],
1796
+ "react/prefer-read-only-props": ["error"],
1797
+ "react/prefer-stateless-function": [
1798
+ "error",
1799
+ { ignorePureComponents: true }
1800
+ ],
1801
+ "react/prop-types": [
1802
+ "off"
1803
+ // { customValidators: [], ignore: [], skipUndeclared: false },
1804
+ ],
1805
+ "react/react-in-jsx-scope": ["off"],
1806
+ "react/require-default-props": [
1807
+ "off",
1808
+ { forbidDefaultForRequired: true, ignoreFunctionalComponents: true }
1809
+ ],
1810
+ "react/require-optimization": ["off", { allowDecorators: [] }],
1811
+ "react/require-render-return": ["error"],
1812
+ "react/self-closing-comp": ["error", { component: true, html: true }],
1813
+ "react/sort-comp": [
1814
+ "off",
1815
+ {
1816
+ groups: {
1817
+ lifecycle: [
1818
+ "displayName",
1819
+ "propTypes",
1820
+ "contextTypes",
1821
+ "childContextTypes",
1822
+ "mixins",
1823
+ "statics",
1824
+ "defaultProps",
1825
+ "constructor",
1826
+ "getDefaultProps",
1827
+ "getInitialState",
1828
+ "state",
1829
+ "getChildContext",
1830
+ "getDerivedStateFromProps",
1831
+ "componentWillMount",
1832
+ "UNSAFE_componentWillMount",
1833
+ "componentDidMount",
1834
+ "componentWillReceiveProps",
1835
+ "UNSAFE_componentWillReceiveProps",
1836
+ "shouldComponentUpdate",
1837
+ "componentWillUpdate",
1838
+ "UNSAFE_componentWillUpdate",
1839
+ "getSnapshotBeforeUpdate",
1840
+ "componentDidUpdate",
1841
+ "componentDidCatch",
1842
+ "componentWillUnmount"
1843
+ ],
1844
+ rendering: ["/^render.+$/", "render"]
1845
+ },
1846
+ order: [
1847
+ "static-variables",
1848
+ "static-methods",
1849
+ "instance-variables",
1850
+ "lifecycle",
1851
+ "/^handle.+$/",
1852
+ "/^on.+$/",
1853
+ "getters",
1854
+ "setters",
1855
+ "/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/",
1856
+ "instance-methods",
1857
+ "everything-else",
1858
+ "rendering"
1859
+ ]
1860
+ }
1861
+ ],
1862
+ "react/sort-prop-types": [
1863
+ "off",
1864
+ {
1865
+ callbacksLast: false,
1866
+ ignoreCase: true,
1867
+ requiredFirst: false,
1868
+ sortShapeProp: true
1869
+ }
1870
+ ],
1871
+ "react/state-in-constructor": ["error", "never"],
1872
+ "react/static-property-placement": ["error", "property assignment"],
1873
+ "react/style-prop-object": ["error", { allow: ["FormattedNumber"] }],
1874
+ "react/void-dom-elements-no-children": ["error"]
1875
+ }
1879
1876
  }
1880
1877
  ];
1881
1878
  }