{
  "extends": [
    "eslint:recommended"
  ],
  "parserOptions": {
    "ecmaVersion": 12,
    "sourceType": "module"
  },
  "rules": {
    "arrow-body-style": [
      2,
      "as-needed",
      {"requireReturnForObjectLiteral": true}
    ],
    "comma-dangle": ["error", "always-multiline"],
    "curly": ["error", "multi-line", "consistent"],
    "indent": [
      "error",
      2,
      {
        "CallExpression": {
          "arguments": 1
        },
        "FunctionDeclaration": {
          "body": 1,
          "parameters": 1
        },
        "FunctionExpression": {
          "body": 1,
          "parameters": 1
        },
        "MemberExpression": 1,
        "ObjectExpression": 1,
        "SwitchCase": 1,
        "ignoredNodes": [
          "ConditionalExpression"
        ]
      }
    ],
    "max-len": [2, {
      "code": 100,
      "tabWidth": 2,
      "ignoreUrls": true
    }],
    "new-cap": 0,
    "newline-per-chained-call": ["error"],
    "object-curly-newline": [
      "error",
      {
        "multiline": true,
        "minProperties": 3,
        "consistent": true
      }],
    "object-property-newline": [
      "error",
      {"allowAllPropertiesOnSameLine": true}
    ],
    "prefer-template": ["error"],
    "require-jsdoc": 0,
    "space-infix-ops": [
      "error",
      {"int32Hint": false}
    ],
    "object-shorthand": "error",
    "no-await-in-loop": "warn",
    "prefer-destructuring": "error",

    // from google
    "guard-for-in": 2,
    "no-caller": 2,
    "no-extend-native": 2,
    "no-extra-bind": 2,
    "no-invalid-this": 2,
    "no-multi-spaces": 2,
    "no-multi-str": 2,
    "no-new-wrappers": 2,
    "no-with": 2,
    "prefer-promise-reject-errors": 2,
    "array-bracket-spacing": [2, "never"],
    "block-spacing": [2, "never"],
    "brace-style": 2,
    "camelcase": [2, {"properties": "never"}],
    "comma-spacing": 2,
    "comma-style": 2,
    "computed-property-spacing": 2,
    "eol-last": 2,
    "func-call-spacing": 2,
    "key-spacing": 2,
    "keyword-spacing": 2,
    "linebreak-style": 2,
    "no-array-constructor": 2,
    "no-multiple-empty-lines": [2, {"max": 2}],
    "no-new-object": 2,
    "no-tabs": 2,
    "no-trailing-spaces": 2,
    "object-curly-spacing": 2,
    "one-var": [2, {
      "var": "never",
      "let": "never",
      "const": "never"
    }],
    "operator-linebreak": [2, "after"],
    "padded-blocks": [2, "never"],
    "quote-props": [2, "consistent"],
    "quotes": [2, "single", {"allowTemplateLiterals": true}],
    "semi": 2,
    "semi-spacing": 2,
    "space-before-blocks": 2,
    "space-before-function-paren": [2, {
      "asyncArrow": "always",
      "anonymous": "never",
      "named": "never"
    }],
    "spaced-comment": [2, "always"],
    "switch-colon-spacing": 2,
    "arrow-parens": [2, "always"],
    "generator-star-spacing": [2, "after"],
    "no-var": 2,
    "prefer-const": [2, {"destructuring": "all"}],
    "prefer-rest-params": 2,
    "prefer-spread": 2,
    "rest-spread-spacing": 2,
    "yield-star-spacing": [2, "after"]
  },
  "env": {
    "node": true,
    "commonjs": true,
    "es6": true,
    "mocha": true
  }
}
