{ "name": "juice-shop", "version": "16.0.1", "private": true, "description": "Probably the most modern and sophisticated insecure web application", "keywords": [ "web security", "web application security", "webappsec", "owasp", "pentest", "pentesting", "security", "vulnerable", "vulnerability", "broken", "bodgeit", "ctf", "capture the flag", "awareness" ], "homepage": "https://owasp-juice.shop", "bugs": { "url": "https://github.com/juice-shop/juice-shop/issues" }, "repository": { "type": "git", "url": "https://github.com/juice-shop/juice-shop.git" }, "license": "MIT", "author": "Björn Kimminich (https://kimminich.de)", "contributors": [ "Björn Kimminich", "Jannik Hollenbach", "Aashish683", "greenkeeper[bot]", "MarcRler", "agrawalarpit14", "Scar26", "ShubhamPalriwala", "CaptainFreak", "JuiceShopBot", "Supratik Das", "the-pro", "Ziyang Li", "Timo Pagel", "aaryan10", "..." ], "scripts": { "build:frontend": "cd frontend && node ./node_modules/@angular/cli/bin/ng build --aot --configuration production --output-hashing=none --vendor-chunk=true --source-map=false", "build:server": "tsc", "cypress:open": "cypress open", "frisby": "nyc --report-dir=./build/reports/coverage/api-tests jest --silent --runInBand --forceExit", "postinstall": "cd frontend && npm install --legacy-peer-deps && cd .. && npm run build:frontend && (npm run --silent build:server || cd .)", "lint": "eslint *.ts data lib models routes test/**/*.ts views && cd frontend && ng lint && npx stylelint \"**/*.scss\" && cd ..", "lint:config": "schema validate -s config.schema.yml", "lint:fix": "eslint *.ts data lib models routes test/**/*.ts views rsn --fix && cd frontend && ng lint --fix && npx stylelint \"**/*.scss\" --fix && cd ..", "package": "grunt package", "package:ci": "npm prune --production && npm dedupe && cd frontend && npm prune --legacy-peer-deps --production && cd .. && npm run --silent sbom && grunt package", "serve": "concurrently --kill-others \"ts-node app.ts\" \"cd frontend && ng serve\"", "serve:dev": "concurrently --kill-others \"ts-node-dev app.ts\" \"cd frontend && ng serve\"", "start": "node build/app", "test": "cd frontend && ng test --watch=false --source-map=true && cd .. && npm run test:server", "test:chromium": "cd frontend && ng test --watch=false --source-map=false --browsers=ChromiumHeadless && cd .. && npm run test:server", "test:server": "nyc --report-dir=./build/reports/coverage/server-tests mocha -r ts-node/register -r source-map-support/register --recursive test/server/**/*.ts", "test:api": "npm run frisby", "rsn": "ts-node rsn/rsn.ts", "rsn:verbose": "ts-node rsn/rsn-verbose.ts", "rsn:update": "ts-node rsn/rsn-update.ts", "vagrant": "cd vagrant && vagrant up", "sbom": "npm run sbom:json && npm run sbom:xml", "sbom:json": "cyclonedx-npm --omit=dev --output-format=JSON --output-file=bom.json", "sbom:xml": " cyclonedx-npm --omit=dev --output-format=XML --output-file=bom.xml" }, "jest": { "preset": "ts-jest", "globals": { "ts-jest": { "diagnostics": false } }, "globalSetup": "./test/apiTestsSetup.ts", "globalTeardown": "./test/apiTestsTeardown.ts", "modulePathIgnorePatterns": [ "/build" ], "setupFilesAfterEnv": [ "./test/apiTestsSetupJest.ts" ], "testMatch": [ "/test/api/*Spec.[jt]s" ], "testPathIgnorePatterns": [ "/node_modules/", "/frontend/node_modules/" ], "testURL": "http://localhost" }, "nyc": { "extends": "@istanbuljs/nyc-config-typescript", "all": true, "include": [ "lib/*.ts", "models/*.ts", "routes/*.ts", "server.ts" ], "reporter": [ "lcov", "text-summary" ] }, "dependencies": { "body-parser": "^1.20.2", "check-dependencies": "^1.1.0", "check-internet-connected": "^2.0.6", "clarinet": "^0.12.5", "colors": "1.4.0", "compression": "^1.7.4", "concurrently": "^5.3.0", "config": "^3.3.7", "cookie-parser": "^1.4.5", "cors": "^2.8.5", "dottie": "^2.0.2", "download": "^8.0.0", "errorhandler": "^1.5.1", "ethers": "^6.7.0", "exif": "^0.6.0", "express": "^4.17.1", "express-ipfilter": "^1.2.0", "express-jwt": "0.1.3", "express-rate-limit": "^5.3.0", "express-robots-txt": "^0.4.1", "express-security.txt": "^2.0.0", "feature-policy": "^0.5.0", "file-stream-rotator": "^0.5.7", "file-type": "^16.1.0", "filesniffer": "^1.0.3", "finale-rest": "^1.1.1", "fs-extra": "^9.0.1", "fuzzball": "^1.3.0", "glob": "^7.1.6", "graceful-fs": "^4.2.6", "grunt": "^1.2.1", "grunt-contrib-compress": "^1.6.0", "grunt-replace-json": "^0.1.0", "hashids": "^2.2.1", "hbs": "^4.0.4", "helmet": "^4.0.0", "html-entities": "^1.3.1", "i18n": "^0.11.1", "js-yaml": "^3.14.0", "jsonwebtoken": "0.4.0", "jssha": "^3.1.1", "juicy-chat-bot": "~0.8.0", "libxmljs2": "^0.33.0", "marsdb": "^0.6.11", "median": "^0.0.2", "morgan": "^1.10.0", "multer": "^1.4.5-lts.1", "node-pre-gyp": "^0.15.0", "notevil": "^1.3.3", "on-finished": "^2.3.0", "otplib": "^12.0.1", "pdfkit": "^0.11.0", "portscanner": "^2.2.0", "prom-client": "^14.1.0", "pug": "^3.0.0", "replace": "^1.2.0", "request": "^2.88.2", "sanitize-filename": "^1.6.3", "sanitize-html": "1.4.2", "semver": "^7.3.2", "sequelize": "^6.15.1", "serve-index": "^1.9.1", "socket.io": "^3.1.0", "sqlite3": "^5.0.8", "svg-captcha": "^1.4.0", "swagger-ui-express": "^5.0.0", "ts-node-dev": "^1.1.6", "unzipper": "0.9.15", "web3": "^4.0.3", "winston": "^3.3.3", "yaml-schema-validator": "^1.2.2", "z85": "^0.0.2" }, "devDependencies": { "@cyclonedx/cyclonedx-npm": "^1.12.0", "@istanbuljs/nyc-config-typescript": "^1.0.1", "@types/chai": "^4.2.14", "@types/chai-as-promised": "^7.1.3", "@types/clarinet": "^0.12.1", "@types/compression": "^1.7.0", "@types/config": "^3.3.1", "@types/cookie-parser": "^1.4.2", "@types/cors": "^2.8.9", "@types/cross-spawn": "^6.0.2", "@types/cypress": "^1.1.3", "@types/download": "^8.0.5", "@types/errorhandler": "^1.5.0", "@types/exif": "^0.6.3", "@types/express": "^4.17.11", "@types/express-jwt": "^6.0.0", "@types/frisby": "^2.0.10", "@types/fs-extra": "^9.0.6", "@types/glob": "^7.1.6", "@types/graceful-fs": "^4.1.5", "@types/i18n": "^0.12.0", "@types/jasmine": "~3.9.1", "@types/jest": "^26.0.20", "@types/js-yaml": "^3.12.6", "@types/jsonwebtoken": "^8.5.0", "@types/jws": "^3.2.5", "@types/mocha": "^8.1.1", "@types/morgan": "^1.9.2", "@types/multer": "^1.4.5", "@types/node": "^17.0.36", "@types/on-finished": "^2.3.1", "@types/pdfkit": "^0.10.6", "@types/portscanner": "^2.1.0", "@types/pug": "^2.0.4", "@types/request": "^2.48.5", "@types/sanitize-html": "^1.27.0", "@types/semver": "^7.3.4", "@types/sequelize": "^4.28.11", "@types/serve-index": "^1.7.30", "@types/sinon": "^10.0.4", "@types/sinon-chai": "^3.2.5", "@types/socket.io": "^2.1.13", "@types/socket.io-client": "^1.4.35", "@types/swagger-ui-express": "^4.1.2", "@types/unzipper": "^0.10.3", "@types/validator": "^13.1.3", "@typescript-eslint/eslint-plugin": "^6.7.2", "@typescript-eslint/parser": "^6.7.2", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "cross-spawn": "^7.0.3", "cypress": "^13.6.1", "eslint": "^8.49.0", "eslint-config-standard-with-typescript": "^39.0.0", "eslint-plugin-import": "^2.28.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.1.1", "frisby": "https://github.com/bkimminich/frisby.git", "grunt-cli": "^1.3.2", "http-server": "^0.12.3", "jasmine": "^3.9.0", "jasmine-core": "~3.9.0", "jasmine-reporters": "^2.5.0", "jest": "^26.6.3", "mocha": "^8.1.1", "node-fetch": "^2.6.13", "nyc": "^15.1.0", "shelljs": "^0.8.4", "sinon": "^11.1.2", "sinon-chai": "^3.7.0", "socket.io-client": "^3.1.0", "source-map-support": "^0.5.19", "ts-jest": "^26.5.0", "ts-node": "^10.8.0", "typescript": "~4.6.0" }, "engines": { "node": "18 - 21" }, "os": [ "win32", "linux", "darwin", "freebsd", "openbsd" ], "cpu": [ "x64", "x32", "arm64", "arm" ], "heroku-run-build-script": true, "standard": { "global": [ "angular", "inject" ] } }