{
  "author": "Portainer.io",
  "name": "portainer",
  "homepage": "http://portainer.io",
  "version": "2.9.3",
  "repository": {
    "type": "git",
    "url": "git@github.com:portainer/portainer.git"
  },
  "bugs": {
    "url": "https://github.com/portainer/portainer/issues"
  },
  "licenses": [
    {
      "type": "Zlib",
      "url": "https://raw.githubusercontent.com/portainer/portainer/develop/LICENSE"
    }
  ],
  "scripts": {
    "build": "grunt clean:all && grunt build",
    "build:server": "grunt clean:server && grunt build:server",
    "build:client": "grunt clean:client && grunt build:client",
    "prebuild:docs": "go install github.com/swaggo/swag/cmd/swag@v1.7.1",
    "build:docs": "cd api && swag init -g ./http/handler/handler.go --parseDependency --parseInternal --parseDepth 2 --markdownFiles ./",
    "clean": "grunt clean:all",
    "start": "grunt start",
    "start:clean": "grunt clean:all && grunt start",
    "start:localserver": "grunt start:localserver",
    "start:server": "grunt clean:server && grunt start:server",
    "start:client": "grunt clean:client && grunt start:client",
    "dev:client": "grunt clean:client && webpack-dev-server --config=./webpack/webpack.develop.js",
    "dev:client:prod": "grunt clean:client && webpack-dev-server --config=./webpack/webpack.production.js",
    "dev:nodl": "grunt clean:server && grunt clean:client && grunt build:server && grunt start:client",
    "start:toolkit": "grunt start:toolkit",
    "build:server:offline": "cd ./api/cmd/portainer && CGO_ENABLED=0 go build --installsuffix cgo --ldflags '-s' && mv -f portainer ../../../dist/portainer",
    "clean:all": "grunt clean:all",
    "format": "prettier --loglevel warn --write \"**/*.{js,css,html,jsx,tsx,ts}\"",
    "lint": "yarn lint:client; yarn lint:server",
    "lint:server": "cd api && golangci-lint run -E exportloopref",
    "lint:client": "eslint --cache --fix ./**/*.{js,jsx,ts,tsx}",
    "lint:pr": "make lint-pr",
    "test": "yarn test:client; yarn test:server",
    "test:server": "cd api && go test ./...",
    "test:client": "jest",
    "storybook": "start-storybook -p 6006",
    "build-storybook": "build-storybook -o ./dist/storybook"
  },
  "scriptsComments": {
    "build": "Build the entire app (backend/frontend) in development mode",
    "build:server": "Build the backend",
    "build:client": "Build the frontend (development mode)",
    "build:docs": "builds API docs",
    "clean": "Clean the entire dist folder",
    "start": "Build the entire app (backend/frontend) in development mode, run backend inside a container and start a watch process locally for the frontend files",
    "start:server": "Build the backend and run it inside a container",
    "start:toolkit": "Build the entire app (backend/frontend) in development mode, run backend locally and start a watch process for the frontend files",
    "clean:all": "Deprecated. Use the clean script instead",
    "build:server:offline": "Deprecated. Use the build:server script instead",
    "format": "Should be removed before pr is merged"
  },
  "engines": {
    "node": ">= 0.8.4"
  },
  "dependencies": {
    "@babel/polyfill": "^7.2.5",
    "@fortawesome/fontawesome-free": "^5.11.2",
    "@nxmix/tokenize-ansi": "^3.0.0",
    "@uirouter/angularjs": "1.0.11",
    "@uirouter/react": "^1.0.7",
    "@uirouter/react-hybrid": "^1.0.4",
    "angular": "1.8.0",
    "angular-clipboard": "^1.6.2",
    "angular-file-saver": "^1.1.3",
    "angular-json-tree": "1.0.1",
    "angular-jwt": "~0.1.8",
    "angular-loading-bar": "~0.9.0",
    "angular-local-storage": "~0.5.2",
    "angular-messages": "1.8.0",
    "angular-mocks": "1.8.0",
    "angular-moment-picker": "^0.10.2",
    "angular-multiselect": "github:portainer/angular-multi-select#semver:~v4.0.1",
    "angular-resource": "1.8.0",
    "angular-sanitize": "1.8.0",
    "angular-ui-bootstrap": "~2.5.0",
    "angular-utils-pagination": "~0.11.1",
    "angularjs-scroll-glue": "^2.2.0",
    "angularjs-slider": "^6.4.0",
    "angulartics": "^1.6.0",
    "babel-plugin-angularjs-annotate": "^0.10.0",
    "bootbox": "^5.4.0",
    "bootstrap": "^3.4.0",
    "chardet": "^1.3.0",
    "chart.js": "~2.7.0",
    "codemirror": "~5.30.0",
    "core-js": "^3.16.3",
    "fast-json-patch": "^3.0.0-1",
    "filesize": "~3.3.0",
    "filesize-parser": "^1.5.0",
    "jquery": "^3.5.1",
    "js-base64": "^3.6.0",
    "js-yaml": "^3.14.0",
    "lodash-es": "^4.17.21",
    "moment": "^2.21.0",
    "ng-file-upload": "~12.2.13",
    "parse-duration": "^1.0.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "source-map-loader": "^1.1.2",
    "spinkit": "^2.0.1",
    "splitargs": "github:deviantony/splitargs#semver:~0.2.0",
    "strip-ansi": "^6.0.0",
    "toastr": "^2.1.4",
    "ui-select": "^0.19.8",
    "uuid": "^3.3.2",
    "x256": "^0.0.2",
    "xterm": "^3.8.0",
    "yaml": "^1.10.0"
  },
  "devDependencies": {
    "@babel/core": "^7.1.2",
    "@babel/preset-env": "^7.1.0",
    "@babel/preset-react": "^7.14.5",
    "@babel/preset-typescript": "^7.15.0",
    "@storybook/addon-actions": "^6.3.11",
    "@storybook/addon-essentials": "^6.3.11",
    "@storybook/addon-links": "^6.3.11",
    "@storybook/addon-postcss": "^2.0.0",
    "@storybook/react": "^6.3.11",
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^12.0.0",
    "@types/angular": "^1.8.3",
    "@types/jquery": "^3.5.6",
    "@types/react": "^17.0.27",
    "@types/react-dom": "^17.0.9",
    "@typescript-eslint/eslint-plugin": "^4.33.0",
    "@typescript-eslint/parser": "^4.33.0",
    "auto-ngtemplate-loader": "^2.0.1",
    "autoprefixer": "^7.1.1",
    "babel-jest": "^27.1.0",
    "babel-loader": "^8.0.4",
    "babel-plugin-lodash": "^3.3.4",
    "clean-terminal-webpack-plugin": "^1.1.0",
    "clean-webpack-plugin": "^0.1.19",
    "css-loader": "5",
    "cssnano": "^4.1.10",
    "cypress": "^5.2.0",
    "cypress-wait-until": "^1.7.1",
    "eslint": "^7.29.0",
    "eslint-config-airbnb": "^18.2.1",
    "eslint-config-airbnb-typescript": "^14.0.1",
    "eslint-config-prettier": "^8.3.0",
    "eslint-import-resolver-alias": "^1.1.2",
    "eslint-plugin-eslint-comments": "^3.2.0",
    "eslint-plugin-import": "^2.24.2",
    "eslint-plugin-jest": "^24.4.0",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "eslint-plugin-promise": "^5.1.1",
    "eslint-plugin-react": "^7.24.0",
    "eslint-plugin-react-hooks": "^4.2.0",
    "eslint-webpack-plugin": "^2.5.4",
    "file-loader": "^1.1.11",
    "grunt": "^1.1.0",
    "grunt-cli": "^1.3.2",
    "grunt-contrib-clean": "^2.0.0",
    "grunt-contrib-copy": "^1.0.0",
    "grunt-env": "^0.4.4",
    "grunt-filerev": "^2.3.1",
    "grunt-postcss": "^0.8.0",
    "grunt-replace": "^1.0.1",
    "grunt-shell-spawn": "^0.4.0",
    "grunt-usemin": "^3.1.1",
    "grunt-webpack": "^3.1.3",
    "gruntify-eslint": "^3.1.0",
    "html-loader": "^0.5.5",
    "html-webpack-plugin": "^3.2.0",
    "husky": ">=4",
    "image-webpack-loader": "^4.5.0",
    "jest": "^27.1.0",
    "lint-staged": ">=10",
    "load-grunt-tasks": "^3.5.2",
    "lodash-webpack-plugin": "^0.11.5",
    "mini-css-extract-plugin": "1",
    "ngtemplate-loader": "^2.0.1",
    "plop": "^2.6.0",
    "postcss": "7",
    "postcss-loader": "4",
    "prettier": "^2.0.2",
    "react-test-renderer": "^17.0.2",
    "speed-measure-webpack-plugin": "^1.2.3",
    "storybook-css-modules-preset": "^1.1.1",
    "style-loader": "2",
    "tsconfig-paths-webpack-plugin": "^3.5.1",
    "typescript": "^4.4.3",
    "url-loader": "^1.1.1",
    "webpack": "^4.26.0",
    "webpack-build-notifier": "^0.1.30",
    "webpack-cli": "^3.1.2",
    "webpack-dev-server": "^3.11.0",
    "webpack-merge": "^4.1.4"
  },
  "resolutions": {
    "jquery": "^3.5.1",
    "decompress": "^4.2.1",
    "lodash": "^4.17.21",
    "js-yaml": "^3.14.0",
    "minimist": "^1.2.5",
    "http-proxy": "^1.18.1",
    "**/@uirouter/react": "^1.0.7",
    "**/@uirouter/angularjs": "1.0.11",
    "**/css-loader": "5"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  }
}