{
  "name": "static",
  "version": "1.0.0",
  "description": "User interface for Amundsen",
  "main": "index.js",
  "repository": {
    "type": "git",
    "url": "https://github.com/lyft/amundsenfrontendlibrary"
  },
  "scripts": {
    "build": "cross-env TS_NODE_PROJECT='tsconfig.webpack.json' webpack --progress --config webpack.prod.ts",
    "dev-build": "cross-env TS_NODE_PROJECT='tsconfig.webpack.json' webpack --progress --config webpack.dev.ts",
    "test": "cross-env TZ=UTC jest --coverage --collectCoverageFrom=js/**/*.{js,jsx,ts,tsx}",
    "posttest": "npm run format",
    "test-nocov": "cross-env TZ=UTC jest",
    "watch": "cross-env TS_NODE_PROJECT='tsconfig.webpack.json' webpack --progress --config webpack.dev.ts --watch",
    "lint": "npm run eslint",
    "lint-fix": "npm run eslint-fix",
    "eslint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx .",
    "eslint:errors": "eslint --ignore-path=.eslintignore --quiet --ext .js,.jsx,.ts,.tsx .",
    "eslint-fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx .",
    "test:watch": "cross-env TZ=UTC jest --watch",
    "tsc": "tsc",
    "stylelint": "stylelint '**/*.scss'",
    "stylelint-fix": "stylelint --fix '**/*.scss'",
    "format": "prettier --loglevel warn --write \"**/*.{ts,tsx,css,scss}\""
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.8.4",
    "@babel/core": "^7.9.6",
    "@babel/plugin-proposal-class-properties": "^7.0.0",
    "@babel/plugin-proposal-decorators": "^7.0.0",
    "@babel/plugin-proposal-do-expressions": "^7.0.0",
    "@babel/plugin-proposal-export-default-from": "^7.0.0",
    "@babel/plugin-proposal-export-namespace-from": "^7.0.0",
    "@babel/plugin-proposal-function-bind": "^7.0.0",
    "@babel/plugin-proposal-function-sent": "^7.0.0",
    "@babel/plugin-proposal-json-strings": "^7.0.0",
    "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
    "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
    "@babel/plugin-proposal-numeric-separator": "^7.0.0",
    "@babel/plugin-proposal-optional-chaining": "^7.0.0",
    "@babel/plugin-proposal-pipeline-operator": "^7.0.0",
    "@babel/plugin-proposal-throw-expressions": "^7.0.0",
    "@babel/plugin-syntax-dynamic-import": "^7.0.0",
    "@babel/plugin-syntax-import-meta": "^7.0.0",
    "@babel/preset-env": "^7.0.0",
    "@babel/preset-react": "^7.9.4",
    "@types/enzyme": "^3.10.5",
    "@types/jasmine-matchers": "^0.2.32",
    "@types/jest": "^24.9.1",
    "@types/node": "^10.17.21",
    "@types/react-redux": "^6.0.14",
    "@types/react-router": "^4.4.5",
    "@types/react-tagsinput": "^3.19.7",
    "@types/webpack": "^4.41.12",
    "@typescript-eslint/eslint-plugin": "^3.1.0",
    "@typescript-eslint/eslint-plugin-tslint": "^3.1.0",
    "@typescript-eslint/parser": "^3.1.0",
    "babel-jest": "^24.9.0",
    "babel-loader": "^8.1.0",
    "bootstrap-sass": "^3.4.1",
    "clean-webpack-plugin": "3.0.0",
    "cross-env": "^5.2.1",
    "css-loader": "^3.5.3",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.2",
    "enzyme-to-json": "^3.4.4",
    "eslint": "^7.2.0",
    "eslint-config-airbnb-typescript": "^8.0.2",
    "eslint-config-prettier": "^6.11.0",
    "eslint-plugin-import": "^2.21.1",
    "eslint-plugin-jsx-a11y": "^6.2.3",
    "eslint-plugin-prettier": "^3.1.3",
    "eslint-plugin-react": "^7.20.0",
    "eslint-plugin-react-hooks": "^4.0.4",
    "html-webpack-plugin": "4.3.0",
    "husky": "^4.2.5",
    "jest": "^25.5.4",
    "jest-css-modules": "^2.1.0",
    "lint-staged": "^10.2.9",
    "mini-css-extract-plugin": "^0.4.5",
    "moment-locales-webpack-plugin": "^1.2.0",
    "node-sass": "^4.14.1",
    "postcss": "^7.0.30",
    "prettier": "^2.0.5",
    "redux-mock-store": "^1.5.4",
    "redux-saga": "^1.1.3",
    "redux-saga-test-plan": "4.0.0-beta.3",
    "sass-loader": "^7.3.1",
    "style-loader": "^0.20.3",
    "stylelint": "^13.6.0",
    "stylelint-config-standard": "^20.0.0",
    "stylelint-prettier": "^1.1.2",
    "stylelint-scss": "^3.17.2",
    "terser-webpack-plugin": "^2.3.6",
    "ts-jest": "^24.3.0",
    "ts-loader": "^6.2.2",
    "ts-node": "^8.10.1",
    "tsconfig-paths": "^3.9.0",
    "tslint": "^6.1.2",
    "typescript": "^3.9.2",
    "webpack": "^4.43.0",
    "webpack-bundle-analyzer": "^3.8.0",
    "webpack-cli": "^3.3.11",
    "webpack-merge": "^4.2.2",
    "webpack-sources": "^1.4.3",
    "webworkify-webpack": "2.1.0"
  },
  "dependencies": {
    "autosize": "^4.0.2",
    "axios": "0.19.0",
    "core-js": "^3.6.5",
    "form-serialize": "^0.7.2",
    "jquery": "^3.5.0",
    "moment-timezone": "^0.5.28",
    "react": "^16.13.1",
    "react-avatar": "^2.5.1",
    "react-bootstrap": "^0.32.4",
    "react-code-blocks": "0.0.7",
    "react-document-title": "^2.0.3",
    "react-dom": "^16.13.1",
    "react-js-pagination": "^3.0.3",
    "react-linkify": "^0.2.2",
    "react-markdown": "^4.3.1",
    "react-redux": "^5.1.0",
    "react-router-dom": "^4.3.1",
    "react-sanitized-html": "^2.0.0",
    "react-select": "^2.4.4",
    "redux": "^4.0.0",
    "redux-promise": "^0.5.3",
    "sanitize-html": "^1.23.0",
    "simple-query-string": "^1.3.2",
    "throttle-debounce": "^2.1.0",
    "urijs": "^1.19.2"
  },
  "optionalDependencies": {
    "fsevents": "*"
  },
  "browserslist": [
    "defaults",
    "not IE 11"
  ],
  "babel": {
    "presets": [
      "@babel/preset-react",
      [
        "@babel/preset-env",
        {
          "useBuiltIns": "usage",
          "corejs": 3,
          "debug": true
        }
      ]
    ],
    "plugins": [
      "@babel/plugin-syntax-dynamic-import",
      "@babel/plugin-syntax-import-meta",
      "@babel/plugin-proposal-class-properties",
      "@babel/plugin-proposal-json-strings",
      [
        "@babel/plugin-proposal-decorators",
        {
          "legacy": true
        }
      ],
      "@babel/plugin-proposal-function-sent",
      "@babel/plugin-proposal-export-namespace-from",
      "@babel/plugin-proposal-numeric-separator",
      "@babel/plugin-proposal-throw-expressions",
      "@babel/plugin-proposal-export-default-from",
      "@babel/plugin-proposal-logical-assignment-operators",
      "@babel/plugin-proposal-optional-chaining",
      [
        "@babel/plugin-proposal-pipeline-operator",
        {
          "proposal": "minimal"
        }
      ],
      "@babel/plugin-proposal-nullish-coalescing-operator",
      "@babel/plugin-proposal-do-expressions",
      "@babel/plugin-proposal-function-bind"
    ]
  },
  "jest": {
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ],
    "testMatch": [
      "**/__tests__/*.(ts|tsx|js)"
    ]
  },
  "eslintConfig": {
    "env": {
      "browser": true,
      "node": true
    },
    "extends": [
      "plugin:react/recommended",
      "airbnb-typescript",
      "prettier/@typescript-eslint",
      "plugin:prettier/recommended",
      "prettier/react"
    ],
    "ignorePatterns": [
      "**/*{.,-}min.js",
      "**/*.sh",
      "coverage/**",
      "dist/*",
      "images/*",
      "node_modules/*",
      "node_modules*/*",
      "stylesheets/*",
      "vendor/*",
      "docs/*",
      "appbuilder/*",
      "**/*{.,-}min.js",
      "**/*.sh",
      "coverage/**",
      "dist/*",
      "images/*",
      "node_modules/*",
      "node_modules*/*",
      "stylesheets/*",
      "vendor/*",
      "docs/*",
      "appbuilder/*"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
      "project": "tsconfig.json",
      "sourceType": "module"
    },
    "plugins": [
      "prettier",
      "@typescript-eslint",
      "@typescript-eslint/tslint",
      "jsx-a11y"
    ],
    "rules": {
      "prettier/prettier": [
        "error"
      ],
      "arrow-parens": [
        "off",
        "always"
      ],
      "brace-style": [
        "off",
        "off"
      ],
      "curly": [
        "error",
        "multi-line"
      ],
      "eqeqeq": [
        "error",
        "smart"
      ],
      "id-blacklist": [
        "error",
        "any",
        "Number",
        "number",
        "String",
        "string",
        "Boolean",
        "boolean",
        "Undefined",
        "undefined"
      ],
      "one-var": [
        "error",
        "never"
      ],
      "@typescript-eslint/dot-notation": "warn",
      "@typescript-eslint/lines-between-class-members": "warn",
      "@typescript-eslint/naming-convention": "warn",
      "@typescript-eslint/no-unused-expressions": "warn",
      "@typescript-eslint/no-unused-vars": "warn",
      "@typescript-eslint/no-use-before-define": "warn",
      "@typescript-eslint/member-delimiter-style": [
        "off",
        {
          "multiline": {
            "delimiter": "none",
            "requireLast": true
          },
          "singleline": {
            "delimiter": "semi",
            "requireLast": false
          }
        }
      ],
      "@typescript-eslint/no-param-reassign": "off",
      "@typescript-eslint/no-this-alias": "error",
      "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error",
      "@typescript-eslint/semi": [
        "off",
        null
      ],
      "@typescript-eslint/tslint/config": [
        "error",
        {
          "lintFile": "./tslint.json",
          "rules": {
            "function-name": true,
            "jsx-boolean-value": true,
            "jsx-key": true,
            "jsx-no-bind": true,
            "jsx-no-lambda": true,
            "jsx-no-string-ref": true,
            "jsx-self-close": true,
            "no-else-after-return": true,
            "no-function-constructor-with-string-args": true,
            "no-increment-decrement": true,
            "object-shorthand-properties-first": true,
            "ter-prefer-arrow-callback": true
          }
        }
      ],
      "@typescript-eslint/indent": "off",
      "array-callback-return": "warn",
      "camelcase": "off",
      "class-methods-use-this": "off",
      "consistent-return": "warn",
      "default-case": "warn",
      "func-names": "off",
      "guard-for-in": "off",
      "id-match": "error",
      "import/extensions": "off",
      "import/first": "warn",
      "import/no-cycle": "warn",
      "import/no-extraneous-dependencies": "off",
      "import/no-named-as-default": "off",
      "import/no-unresolved": "off",
      "import/order": "warn",
      "import/prefer-default-export": "off",
      "indent": "off",
      "new-cap": "off",
      "no-bitwise": "off",
      "no-case-declarations": "warn",
      "no-confusing-arrow": "off",
      "no-continue": "off",
      "no-duplicate-imports": "error",
      "no-eval": "error",
      "no-extra-boolean-cast": "warn",
      "no-irregular-whitespace": "off",
      "no-mixed-operators": "off",
      "no-multi-assign": "off",
      "no-multi-spaces": "off",
      "no-multi-str": "warn",
      "no-nested-ternary": "warn",
      "no-new-wrappers": "error",
      "no-param-reassign": "warn",
      "no-plusplus": "off",
      "no-prototype-builtins": "off",
      "no-restricted-globals": "warn",
      "no-restricted-properties": "off",
      "no-restricted-syntax": "off",
      "no-script-url": "warn",
      "no-shadow": "warn",
      "no-undef": "off",
      "no-underscore-dangle": "error",
      "no-unneeded-ternary": "warn",
      "no-useless-return": "warn",
      "no-var": "error",
      "no-void": "warn",
      "object-shorthand": "error",
      "padded-blocks": "off",
      "prefer-arrow-callback": "off",
      "prefer-const": "error",
      "prefer-destructuring": "warn",
      "prefer-promise-reject-errors": "warn",
      "prefer-template": "off",
      "radix": "error",
      "react/button-has-type": "warn",
      "react/destructuring-assignment": "warn",
      "react/forbid-prop-types": "off",
      "react/jsx-boolean-value": "warn",
      "react/jsx-closing-tag-location": "warn",
      "react/jsx-indent": "off",
      "react/jsx-no-bind": "off",
      "react/jsx-one-expression-per-line": "off",
      "react/jsx-props-no-spreading": "warn",
      "react/no-access-state-in-setstate": "warn",
      "react/no-array-index-key": "off",
      "react/no-did-update-set-state": "warn",
      "react/no-string-refs": "off",
      "react/no-unescaped-entities": "off",
      "react/no-unused-prop-types": "off",
      "react/prefer-stateless-function": "warn",
      "react/require-default-props": "off",
      "react/sort-comp": "warn",
      "react/state-in-constructor": "off",
      "react/static-property-placement": "warn",
      "space-in-parens": [
        "off",
        "never"
      ],
      "spaced-comment": [
        "error",
        "always",
        {
          "markers": [
            "/"
          ]
        }
      ],
      "jsx-a11y/label-has-associated-control": "warn",
      "jsx-a11y/control-has-associated-label": "warn",
      "jsx-a11y/click-events-have-key-events": "warn",
      "jsx-a11y/no-noninteractive-element-interactions": "warn",
      "jsx-a11y/no-static-element-interactions": "warn",
      "jsx-a11y/anchor-is-valid": [
        "error",
        {
          "components": [
            "Link"
          ],
          "specialLink": [
            "to",
            "hrefLeft",
            "hrefRight"
          ],
          "aspects": [
            "noHref",
            "invalidHref",
            "preferButton"
          ]
        }
      ]
    },
    "globals": {
      "document": true
    },
    "settings": {
      "import/resolver": {
        "node": {
          "extensions": [
            ".js",
            ".jsx",
            ".json",
            ".tsx"
          ]
        }
      },
      "react": {
        "pragma": "React",
        "version": "detect"
      },
      "propWrapperFunctions": [
        "forbidExtraProps",
        "exact",
        "Object.freeze"
      ],
      "import/extensions": [
        ".js",
        ".mjs",
        ".jsx"
      ],
      "import/core-modules": [],
      "import/ignore": [
        "node_modules",
        "\\.(coffee|scss|css|less|hbs|svg|json)$"
      ]
    }
  },
  "prettier": {
    "endOfLine": "lf",
    "tabWidth": 2,
    "semi": true,
    "bracketSpacing": true,
    "singleQuote": true,
    "jsxBracketSameLine": false,
    "arrowParens": "always",
    "overrides": [
      {
        "files": "*.md",
        "options": {
          "printWidth": 70,
          "useTabs": false,
          "trailingComma": "none",
          "arrowParens": "avoid",
          "proseWrap": "never"
        }
      }
    ]
  },
  "stylelint": {
    "plugins": [
      "stylelint-scss",
      "stylelint-prettier"
    ],
    "rules": {
      "prettier/prettier": true,
      "scss/dollar-variable-colon-space-after": "always",
      "no-descending-specificity": null,
      "block-no-empty": null,
      "at-rule-no-unknown": [
        true,
        {
          "ignoreAtRules": [
            "function",
            "if",
            "each",
            "include",
            "mixin"
          ]
        }
      ]
    },
    "extends": "stylelint-config-standard"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.js": [
      "prettier --write",
      "eslint --fix"
    ],
    "*.jsx": [
      "prettier --write",
      "eslint --fix"
    ],
    "*.ts": [
      "prettier --write",
      "eslint --fix"
    ],
    "*.tsx": [
      "prettier --write",
      "eslint --fix"
    ],
    "*.scss": [
      "prettier --write",
      "npm run stylelint-fix"
    ]
  }
}
