{ "author": "Portainer.io", "name": "portainer", "homepage": "http://portainer.io", "version": "2.11.0", "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 ./", "validate:docs": "swagger2openapi --warnOnly api/docs/swagger.yaml -o api/docs/openapi.yaml && swagger-cli validate api/docs/openapi.yaml", "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,json}\"", "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 --silent", "storybook": "start-storybook -p 6006", "build-storybook": "build-storybook -o ./dist/storybook", "analyze-webpack": "webpack --config ./webpack/webpack.analyze.js" }, "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": { "@aws-crypto/sha256-js": "^2.0.0", "@fortawesome/fontawesome-free": "^5.15.4", "@lineup-lite/hooks": "^1.6.0", "@nxmix/tokenize-ansi": "^3.0.0", "@open-amt-cloud-toolkit/ui-toolkit-react": "2.0.0", "@reach/menu-button": "^0.16.1", "@uirouter/angularjs": "1.0.11", "@uirouter/react": "^1.0.7", "@uirouter/react-hybrid": "^1.0.4", "angular": "1.8.2", "angular-clipboard": "^1.6.2", "angular-file-saver": "^1.1.3", "angular-json-tree": "1.1.0", "angular-jwt": "~0.1.8", "angular-loading-bar": "~0.9.0", "angular-local-storage": "~0.5.2", "angular-messages": "1.8.2", "angular-mocks": "1.8.2", "angular-moment-picker": "^0.10.2", "angular-multiselect": "github:portainer/angular-multi-select#semver:~v4.0.1", "angular-resource": "1.8.2", "angular-sanitize": "1.8.2", "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", "axios": "^0.24.0", "axios-progress-bar": "^1.2.0", "babel-plugin-angularjs-annotate": "^0.10.0", "bootbox": "^5.5.2", "bootstrap": "^3.4.0", "buffer": "^6.0.3", "chardet": "^1.4.0", "chart.js": "~2.7.0", "clsx": "^1.1.1", "codemirror": "~5.64.0", "core-js": "^3.19.3", "fast-json-patch": "^3.1.0", "file-saver": "^2.0.5", "filesize": "~3.3.0", "filesize-parser": "^1.5.0", "formik": "^2.2.9", "i18next": "^21.3.3", "i18next-browser-languagedetector": "^6.1.2", "i18next-http-backend": "^1.3.1", "jquery": "^3.6.0", "js-base64": "^3.7.2", "js-yaml": "^3.14.0", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "moment": "^2.29.1", "msw": "^0.36.3", "ng-file-upload": "~12.2.13", "parse-duration": "^1.0.2", "rc-slider": "^9.7.5", "react": "^17.0.2", "react-dom": "^17.0.2", "react-i18next": "^11.12.0", "react-is": "^17.0.2", "react-query": "^3.34.3", "react-select": "^5.2.1", "react-table": "^7.7.0", "react-tooltip": "^4.2.21", "sanitize-html": "^2.5.3", "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.2", "yup": "^0.32.11" }, "devDependencies": { "@apidevtools/swagger-cli": "^4.0.4", "@babel/core": "^7.16.0", "@babel/preset-env": "^7.16.4", "@babel/preset-react": "^7.16.0", "@babel/preset-typescript": "^7.16.0", "@simbathesailor/use-what-changed": "^2.0.0", "@storybook/addon-actions": "^6.4.9", "@storybook/addon-essentials": "^6.4.9", "@storybook/addon-links": "^6.4.9", "@storybook/addon-postcss": "^2.0.0", "@storybook/builder-webpack5": "^6.4.9", "@storybook/manager-webpack5": "^6.4.9", "@storybook/react": "^6.4.9", "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^12.1.2", "@testing-library/user-event": "^13.5.0", "@types/angular": "^1.8.3", "@types/bootbox": "^5.2.2", "@types/file-saver": "^2.0.4", "@types/jest": "^27.0.3", "@types/jquery": "^3.5.10", "@types/lodash-es": "^4.17.5", "@types/nprogress": "^0.2.0", "@types/react": "^17.0.37", "@types/react-dom": "^17.0.11", "@types/react-table": "^7.7.6", "@types/sanitize-html": "^2.5.0", "@types/toastr": "^2.1.39", "@typescript-eslint/eslint-plugin": "^5.7.0", "@typescript-eslint/parser": "^5.7.0", "auto-ngtemplate-loader": "^2.0.1", "autoprefixer": "^7.1.1", "babel-jest": "^27.4.2", "babel-loader": "^8.2.3", "babel-plugin-i18next-extract": "^0.8.3", "babel-plugin-lodash": "^3.3.4", "clean-terminal-webpack-plugin": "^3.0.0", "clean-webpack-plugin": "^4.0.0", "copy-webpack-plugin": "6", "css-loader": "5", "cssnano": "^4.1.10", "cypress": "8.7", "cypress-wait-until": "^1.7.1", "dotenv-webpack": "^7.0.3", "eslint": "^8.4.1", "eslint-config-airbnb": "^19.0.2", "eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-prettier": "^8.3.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-jest": "^25.3.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-promise": "^5.2.0", "eslint-plugin-react": "^7.27.1", "eslint-plugin-react-hooks": "^4.3.0", "eslint-plugin-storybook": "^0.5.5", "eslint-webpack-plugin": "^3.1.1", "grunt": "^1.4.1", "grunt-cli": "^1.4.3", "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": "^5.0.0", "gruntify-eslint": "^3.1.0", "html-loader": "^0.5.5", "html-webpack-plugin": "^5.5.0", "husky": "4.2.5", "jest": "^27.4.3", "lint-staged": ">=10", "load-grunt-tasks": "^3.5.2", "lodash-webpack-plugin": "^0.11.6", "mini-css-extract-plugin": "1", "msw-storybook-addon": "^1.5.0", "ngtemplate-loader": "^2.1.0", "plop": "^2.6.0", "postcss": "7", "postcss-loader": "4", "prettier": "^2.5.1", "react-test-renderer": "^17.0.2", "source-map-loader": "^3.0.0", "speed-measure-webpack-plugin": "^1.5.0", "storybook-css-modules-preset": "^1.1.1", "style-loader": "2", "swagger2openapi": "^7.0.8", "tsconfig-paths-webpack-plugin": "^3.5.2", "typescript": "^4.5.2", "webpack": "^5.65.0", "webpack-build-notifier": "^2.3.0", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.9.1", "webpack-dev-server": "^4.6.0", "webpack-merge": "^5.8.0" }, "resolutions": { "**/jquery": "^3.6.0", "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", "**/moment": "^2.21.0" }, "husky": { "hooks": { "pre-commit": "lint-staged" } } }