├── .nvmrc ├── .husky ├── pre-commit └── commit-msg ├── index.js ├── sfra.js ├── .gitattributes ├── sfra-storefront.js ├── lint-staged.config.mjs ├── .yarnrc.yml ├── commitlint.config.mjs ├── .vscode ├── extensions.json └── settings.json ├── .gitignore ├── lib ├── sfra │ ├── storefront.js │ └── index.js ├── sfcc-globals.js └── index.js ├── .editorconfig ├── .github └── workflows │ ├── commitlint.yml │ ├── ci.yml │ └── codeql-analysis.yml ├── renovate.json ├── LICENSE ├── eslint.config.mjs ├── package.json └── README.md /.nvmrc: -------------------------------------------------------------------------------- 1 | 24.12.0 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | yarn lint-staged 2 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib') 2 | -------------------------------------------------------------------------------- /sfra.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/sfra') 2 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | npx --no -- commitlint --edit "${1}" 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | /.yarn/releases/** binary 2 | /.yarn/plugins/** binary 3 | -------------------------------------------------------------------------------- /sfra-storefront.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/sfra/storefront') 2 | -------------------------------------------------------------------------------- /lint-staged.config.mjs: -------------------------------------------------------------------------------- 1 | export default { 2 | '**/*.{js,mjs}': 'eslint', 3 | } 4 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-4.12.0.cjs 4 | -------------------------------------------------------------------------------- /commitlint.config.mjs: -------------------------------------------------------------------------------- 1 | export default { extends: ['@commitlint/config-conventional'] } 2 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "editorconfig.editorconfig" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "eslint.format.enable": true, 3 | "editor.codeActionsOnSave": { 4 | "source.fixAll.eslint": "explicit" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | yarn-error.log 3 | 4 | # yarn 5 | .yarn/* 6 | !.yarn/patches 7 | !.yarn/plugins 8 | !.yarn/releases 9 | !.yarn/sdks 10 | !.yarn/versions 11 | -------------------------------------------------------------------------------- /lib/sfra/storefront.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | jquery: true, 5 | }, 6 | rules: { 7 | 'no-restricted-globals': 'off', 8 | 'semi-style': 'off', 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | end_of_line = lf 7 | charset = utf-8 8 | insert_final_newline = true 9 | indent_style = space 10 | indent_size = 2 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /.github/workflows/commitlint.yml: -------------------------------------------------------------------------------- 1 | name: Lint Commit Messages 2 | on: [pull_request] 3 | 4 | jobs: 5 | commitlint: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v6 9 | with: 10 | fetch-depth: 0 11 | - uses: wagoid/commitlint-github-action@v6 12 | -------------------------------------------------------------------------------- /lib/sfcc-globals.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | dw: true, 3 | customer: true, 4 | session: true, 5 | request: true, 6 | response: true, 7 | empty: true, 8 | PIPELET_ERROR: true, 9 | PIPELET_NEXT: true, 10 | global: true, 11 | webreferences: true, 12 | webreferences2: true, 13 | APIException: true, 14 | ConversionError: true, 15 | Fault: true, 16 | IOError: true, 17 | Iterator: true, 18 | QName: true, 19 | StopIteration: true, 20 | SystemError: true, 21 | XML: true, 22 | XMLList: true, 23 | XMLStreamError: true, 24 | } 25 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ], 6 | "semanticCommits": "enabled", 7 | "labels": [ 8 | "dependencies" 9 | ], 10 | "packageRules": [ 11 | { 12 | "groupName": "non-breaking", 13 | "matchUpdateTypes": [ 14 | "minor", 15 | "patch", 16 | "pin", 17 | "digest" 18 | ], 19 | "automerge": true, 20 | "automergeType": "branch", 21 | "matchPackageNames": [ 22 | "!eslint-plugin-es5", 23 | "!eslint-plugin-sitegenesis" 24 | ] 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [ '**' ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | permissions: 10 | id-token: write 11 | contents: write 12 | 13 | jobs: 14 | build: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v6 19 | 20 | - name: Use Node.js 21 | uses: actions/setup-node@v6 22 | with: 23 | node-version-file: '.nvmrc' 24 | cache: 'yarn' 25 | 26 | - name: Install dependencies 27 | run: yarn 28 | 29 | - name: Lint 30 | run: yarn lint 31 | 32 | release: 33 | needs: [build] 34 | if: github.ref == 'refs/heads/main' 35 | runs-on: ubuntu-latest 36 | steps: 37 | - uses: actions/checkout@v6 38 | with: 39 | fetch-depth: 0 40 | - uses: actions/setup-node@v6 41 | with: 42 | node-version-file: .nvmrc 43 | cache: 'yarn' 44 | - name: Release 45 | env: 46 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 47 | run: | 48 | yarn 49 | npx semantic-release 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Jens Simon 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | 3 | import { defineConfig } from 'eslint/config' 4 | import { includeIgnoreFile } from '@eslint/compat' 5 | import js from '@eslint/js' 6 | import { configs, plugins } from 'eslint-config-airbnb-extended' 7 | import { configs as eslintConfigs } from '@jenssimon/eslint-config-base' 8 | import globals from 'globals' 9 | 10 | 11 | const gitignorePath = path.resolve('.', '.gitignore') 12 | 13 | 14 | const jsConfig = [ 15 | { 16 | name: 'js/config', 17 | ...js.configs.recommended, 18 | }, 19 | plugins.stylistic, 20 | plugins.importX, 21 | ...configs.base.recommended, 22 | ] 23 | 24 | 25 | export default defineConfig( 26 | includeIgnoreFile(gitignorePath), 27 | { 28 | ignores: [ 29 | '.yarn/', 30 | '.yalc/', 31 | ], 32 | }, 33 | 34 | jsConfig, 35 | 36 | eslintConfigs.base, 37 | 38 | { 39 | files: [ 40 | '**/*.js', 41 | ], 42 | languageOptions: { 43 | globals: { 44 | ...globals.node, 45 | }, 46 | }, 47 | rules: { 48 | 'unicorn/prefer-module': 'off', 49 | 'import-x/no-unresolved': 'off', 50 | 'import-x/no-extraneous-dependencies': 'off', 51 | }, 52 | }, 53 | ) 54 | -------------------------------------------------------------------------------- /lib/sfra/index.js: -------------------------------------------------------------------------------- 1 | const sfccGlobals = require('../sfccGlobals') 2 | 3 | module.exports = { 4 | extends: [ 5 | 'airbnb-base/legacy', 6 | ], 7 | plugins: ['sitegenesis'], 8 | env: { 9 | commonjs: true, 10 | es6: true, 11 | }, 12 | globals: sfccGlobals, 13 | rules: { 14 | 'import/no-unresolved': 'off', 15 | // indent: ['error', 4, { SwitchCase: 1, VariableDeclarator: 1 }], 16 | 'func-names': 'off', 17 | 'require-jsdoc': 'error', 18 | 'valid-jsdoc': ['error', { 19 | preferType: { 20 | Boolean: 'boolean', Number: 'number', object: 'Object', String: 'string', 21 | }, 22 | requireReturn: false, 23 | }], 24 | 'vars-on-top': 'off', 25 | 'global-require': 'off', 26 | 'no-shadow': ['error', { allow: ['err', 'callback'] }], 27 | 28 | // fix configuration for newer ESLint versions 29 | 'comma-dangle': 'off', 30 | 'function-call-argument-newline': 'off', 31 | 'function-paren-newline': 'off', 32 | indent: 'off', 33 | 'lines-around-directive': 'off', 34 | 'linebreak-style': 'off', 35 | 'max-len': 'off', 36 | 'no-else-return': 'off', 37 | 'no-multi-assign': 'off', 38 | 'no-multiple-empty-lines': 'off', 39 | 'no-plusplus': 'off', 40 | 'no-redeclare': 'off', 41 | 'no-tabs': 'off', 42 | 'no-underscore-dangle': 'off', 43 | 'no-unused-vars': 'off', 44 | 'no-useless-return': 'off', 45 | 'object-curly-newline': 'off', 46 | 'operator-linebreak': 'off', 47 | 'spaced-comment': 'off', 48 | strict: 'off', 49 | }, 50 | // overrides: [ 51 | // { 52 | // files: [ 53 | // '**/controllers/**', 54 | // ], 55 | // rules: { 56 | // 'sitegenesis/no-global-require': ['error'], 57 | // }, 58 | // }, 59 | // ], 60 | } 61 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@jenssimon/eslint-config-sfcc", 3 | "version": "0.0.0-development", 4 | "description": "A collection of shareable ESLint configurations for Salesforce Commerce Cloud (SFCC)", 5 | "main": "index.js", 6 | "author": "Jens Simon ", 7 | "keywords": [ 8 | "eslint", 9 | "eslintconfig", 10 | "sfcc", 11 | "demandware", 12 | "salesforce", 13 | "commercecloud", 14 | "sfra" 15 | ], 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/jenssimon/eslint-config-sfcc" 19 | }, 20 | "license": "MIT", 21 | "files": [ 22 | "/index.js", 23 | "/sfra.js", 24 | "/sfra-storefront.js", 25 | "/lib/" 26 | ], 27 | "scripts": { 28 | "lint": "eslint ./", 29 | "commit": "cz", 30 | "prepack": "pinst --disable", 31 | "postpack": "pinst --enable", 32 | "semantic-release": "semantic-release" 33 | }, 34 | "dependencies": { 35 | "eslint-plugin-es5": "^1.5.0", 36 | "eslint-plugin-sitegenesis": "^1.0.0" 37 | }, 38 | "peerDependencies": { 39 | "@jenssimon/eslint-config-base": ">=6.7.0", 40 | "eslint": ">=7.0.0" 41 | }, 42 | "devDependencies": { 43 | "@commitlint/cli": "^20.0.0", 44 | "@commitlint/config-conventional": "^20.0.0", 45 | "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", 46 | "@eslint/compat": "^2.0.0", 47 | "@eslint/js": "^9.39.0", 48 | "@jenssimon/eslint-config-base": "^10.0.0", 49 | "@stylistic/eslint-plugin": "^5.5.0", 50 | "commitizen": "^4.3.0", 51 | "cz-conventional-changelog": "^3.3.0", 52 | "eslint": "^9.39.0", 53 | "eslint-config-airbnb-extended": "^2.3.2", 54 | "eslint-import-resolver-typescript": "^4.4.4", 55 | "eslint-plugin-import-esm": "^3.0.1", 56 | "eslint-plugin-import-x": "^4.16.1", 57 | "eslint-plugin-promise": "^7.2.1", 58 | "eslint-plugin-sonarjs": "^3.0.5", 59 | "eslint-plugin-unicorn": "^62.0.0", 60 | "globals": "^16.4.0", 61 | "husky": "^9.0.6", 62 | "lint-staged": "^16.0.0", 63 | "pinst": "^3.0.0", 64 | "semantic-release": "^25.0.0" 65 | }, 66 | "packageManager": "yarn@4.12.0", 67 | "config": { 68 | "commitizen": { 69 | "path": "./node_modules/cz-conventional-changelog" 70 | } 71 | }, 72 | "release": { 73 | "branches": [ 74 | "main" 75 | ] 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![NPM version][npm-image]][npm-url] [![Downloads][npm-downloads-image]][npm-url] [![star this repo][gh-stars-image]][gh-url] [![fork this repo][gh-forks-image]][gh-url] [![Build Status][gh-status-image]][gh-url] 2 | 3 | # eslint-config-sfcc 4 | 5 | > A collection of shareable ESLint configurations for Salesforce Commerce Cloud (SFCC) 6 | 7 | ## Installation 8 | 9 | ```sh 10 | yarn add @jenssimon/eslint-config-sfcc --dev 11 | ``` 12 | 13 | ## General 14 | 15 | All configurations are based on the [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript#readme) and a set of additions ([@jenssimon/eslint-config-base](https://github.com/jenssimon/eslint-config-base#readme)). 16 | 17 | This package contains a recommended configuration and a configuration that matches the original ESLint configuration for the Storefront Reference Architecture (SFRA) with adjustments to validate with newer ESLint versions. 18 | 19 | ## Configurations 20 | 21 | ### Standard configuration 22 | 23 | This configuration is recommended for every custom cartridge. It is based on ([@jenssimon/eslint-config-base](https://github.com/jenssimon/eslint-config-base#readme)). 24 | 25 | ```json 26 | { 27 | "extends": [ 28 | "@jenssimon/sfcc" 29 | ] 30 | } 31 | ``` 32 | 33 | ### Configuration for SFRA 34 | 35 | This configuration matches the original ESLint configuration for the Storefront Reference Architecture (SFRA) with adjustments to validate with newer ESLint versions. 36 | It's only thought to be used with `app_storefront_base`. 37 | 38 | ```json 39 | { 40 | "extends": [ 41 | "@jenssimon/sfcc/sfra" 42 | ] 43 | } 44 | ``` 45 | 46 | There is also a configuration for client side JS that extends the configuration mentioned above. 47 | 48 | ```json 49 | { 50 | "extends": [ 51 | "@jenssimon/sfcc/sfra-storefront" 52 | ] 53 | } 54 | ``` 55 | 56 | ## License 57 | 58 | MIT © 2022 [Jens Simon](https://github.com/jenssimon) 59 | 60 | [npm-url]: https://www.npmjs.com/package/@jenssimon/eslint-config-sfcc 61 | [npm-image]: https://badgen.net/npm/v/@jenssimon/eslint-config-sfcc 62 | [npm-downloads-image]: https://badgen.net/npm/dw/@jenssimon/eslint-config-sfcc 63 | 64 | [gh-url]: https://github.com/jenssimon/eslint-config-sfcc 65 | [gh-stars-image]: https://badgen.net/github/stars/jenssimon/eslint-config-sfcc 66 | [gh-forks-image]: https://badgen.net/github/forks/jenssimon/eslint-config-sfcc 67 | [gh-status-image]: https://badgen.net/github/status/jenssimon/eslint-config-sfcc 68 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ main ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ main ] 20 | schedule: 21 | - cron: '36 11 * * 0' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | 28 | strategy: 29 | fail-fast: false 30 | matrix: 31 | language: [ 'javascript' ] 32 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] 33 | # Learn more: 34 | # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed 35 | 36 | steps: 37 | - name: Checkout repository 38 | uses: actions/checkout@v6 39 | 40 | # Initializes the CodeQL tools for scanning. 41 | - name: Initialize CodeQL 42 | uses: github/codeql-action/init@v4 43 | with: 44 | languages: ${{ matrix.language }} 45 | # If you wish to specify custom queries, you can do so here or in a config file. 46 | # By default, queries listed here will override any specified in a config file. 47 | # Prefix the list here with "+" to use these queries and those in the config file. 48 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 49 | 50 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 51 | # If this step fails, then you should remove it and run the build manually (see below) 52 | - name: Autobuild 53 | uses: github/codeql-action/autobuild@v4 54 | 55 | # ℹ️ Command-line programs to run using the OS shell. 56 | # 📚 https://git.io/JvXDl 57 | 58 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 59 | # and modify them (or add more) to build your code if your project 60 | # uses a compiled language 61 | 62 | #- run: | 63 | # make bootstrap 64 | # make release 65 | 66 | - name: Perform CodeQL Analysis 67 | uses: github/codeql-action/analyze@v4 68 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | const sfccGlobals = require('./sfcc-globals') 2 | 3 | module.exports = { 4 | parser: '@babel/eslint-parser', 5 | parserOptions: { 6 | requireConfigFile: false, 7 | }, 8 | plugins: [ 9 | 'sitegenesis', 10 | 'es5', 11 | ], 12 | extends: [ 13 | '@jenssimon/base', 14 | ], 15 | env: { 16 | commonjs: true, 17 | es6: true, 18 | browser: false, 19 | }, 20 | globals: sfccGlobals, 21 | rules: { 22 | 'comma-dangle': ['error', { 23 | arrays: 'always-multiline', 24 | objects: 'always-multiline', 25 | imports: 'always-multiline', 26 | exports: 'always-multiline', 27 | functions: 'never', 28 | }], 29 | 'consistent-return': 'off', 30 | 31 | 'es5/no-arrow-functions': 'off', 32 | 'es5/no-binary-and-octal-literals': 'error', 33 | 'es5/no-block-scoping': 'off', 34 | 'es5/no-classes': 'error', 35 | 'es5/no-computed-properties': 'error', 36 | 'es5/no-default-parameters': 'error', 37 | 'es5/no-destructuring': 'off', 38 | 'es5/no-es6-methods': 'off', 39 | 'es5/no-es6-static-methods': 'error', 40 | 'es5/no-exponentiation-operator': 'error', 41 | 'es5/no-for-of': 'error', 42 | 'es5/no-generators': 'error', 43 | 'es5/no-modules': 'error', 44 | 'es5/no-object-super': 'error', 45 | 'es5/no-rest-parameters': 'error', 46 | 'es5/no-shorthand-properties': 'error', 47 | 'es5/no-spread': 'error', 48 | 'es5/no-template-literals': 'error', 49 | 'es5/no-typeof-symbol': 'error', 50 | 'es5/no-unicode-code-point-escape': 'error', 51 | 'es5/no-unicode-regex': 'error', 52 | 53 | 'global-require': 'off', 54 | 'import/extensions': 'off', 55 | 'import/no-unresolved': 'off', 56 | 'import/no-extraneous-dependencies': 'off', 57 | 'import/no-dynamic-require': 'off', 58 | 'new-cap': 'off', 59 | 'no-var': 'off', 60 | 'no-restricted-globals': 'off', 61 | 'object-shorthand': 'off', 62 | 'prefer-arrow-callback': 'off', 63 | 'prefer-const': 'off', 64 | 'prefer-destructuring': 'off', 65 | 'prefer-rest-params': 'off', 66 | 'prefer-spread': 'off', 67 | 'prefer-template': 'off', 68 | 69 | 'unicorn/no-for-loop': 'off', 70 | 'unicorn/prefer-array-flat': 'off', 71 | 'unicorn/prefer-array-flat-map': 'off', 72 | 'unicorn/prefer-at': 'off', 73 | 'unicorn/prefer-default-parameters': 'off', 74 | 'unicorn/prefer-modern-math-apis': 'off', 75 | 'unicorn/prefer-module': 'off', 76 | 'unicorn/prefer-node-protocol': 'off', 77 | 'unicorn/prefer-optional-catch-binding': 'off', 78 | 'unicorn/prefer-reflect-apply': 'off', 79 | 'unicorn/prefer-string-replace-all': 'off', 80 | 'unicorn/prefer-spread': 'off', 81 | 82 | strict: 'off', 83 | }, 84 | overrides: [ 85 | { 86 | files: [ 87 | '**/controllers/**', 88 | ], 89 | rules: { 90 | 'sitegenesis/no-global-require': ['error'], 91 | }, 92 | }, 93 | { 94 | files: [ 95 | '**/*.test.js', 96 | '**/__tests__/**', 97 | '**/__mocks__/**', 98 | ], 99 | rules: { 100 | 'es5/no-binary-and-octal-literals': 'off', 101 | 'es5/no-block-scoping': 'off', 102 | 'es5/no-classes': 'off', 103 | 'es5/no-computed-properties': 'off', 104 | 'es5/no-default-parameters': 'off', 105 | 'es5/no-destructuring': 'off', 106 | 'es5/no-es6-methods': 'off', 107 | 'es5/no-es6-static-methods': 'off', 108 | 'es5/no-exponentiation-operator': 'off', 109 | 'es5/no-for-of': 'off', 110 | 'es5/no-generators': 'off', 111 | 'es5/no-modules': 'off', 112 | 'es5/no-object-super': 'off', 113 | 'es5/no-rest-parameters': 'off', 114 | 'es5/no-shorthand-properties': 'off', 115 | 'es5/no-spread': 'off', 116 | 'es5/no-template-literals': 'off', 117 | 'es5/no-typeof-symbol': 'off', 118 | 'es5/no-unicode-code-point-escape': 'off', 119 | 'es5/no-unicode-regex': 'off', 120 | }, 121 | }, 122 | ], 123 | } 124 | --------------------------------------------------------------------------------