{
  "name": "unleash-server",
  "type": "module",
  "description": "Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.",
  "version": "7.6.1",
  "keywords": [
    "unleash",
    "feature flag",
    "flag",
    "feature toggle",
    "feature",
    "toggle"
  ],
  "files": [
    "dist",
    "frontend/build",
    "frontend/build/*",
    "frontend/build/**/*",
    "frontend/index.js",
    "frontend/package.json"
  ],
  "repository": {
    "type": "git",
    "url": "https://github.com/Unleash/unleash.git"
  },
  "bugs": {
    "url": "https://github.com/unleash/unleash/issues"
  },
  "types": "./dist/lib/server-impl.d.ts",
  "engines": {
    "node": ">=22"
  },
  "license": "Apache-2.0",
  "exports": "./dist/lib/server-impl.js",
  "scripts": {
    "ci": "yarn lint:fix && yarn build:backend && yarn test --reporter=dot",
    "start": "TZ=UTC node ./dist/server.js",
    "copy-templates": "mkdir -p dist && cp -r src/mailtemplates dist/",
    "copy-migrations-package": "mkdir -p dist/migrations && cp src/migrations/package.json dist/migrations/",
    "build:backend": "tsc --pretty && yarn copy-migrations-package",
    "build:frontend": "yarn --cwd ./frontend run build",
    "build:frontend:if-needed": "./scripts/build-frontend-if-needed.sh",
    "build": "yarn run clean && concurrently \"yarn:copy-templates\" \"yarn:build:frontend\" \"yarn:build:backend\"",
    "dev:vite": "TZ=UTC NODE_ENV=development vite-node src/server-dev.ts",
    "dev:backend": "yarn copy-migrations-package && TZ=UTC NODE_ENV=${NODE_ENV:-development} tsc-watch --onSuccess \"node dist/server-dev.js\"",
    "dev:frontend": "wait-on tcp:4242 && yarn --cwd ./frontend run dev",
    "dev:frontend:cloud": "UNLEASH_BASE_PATH=/demo/ yarn run dev:frontend",
    "dev": "concurrently \"yarn:dev:backend\" \"yarn:dev:frontend\"",
    "profile:startup": "./scripts/profile-startup.sh",
    "prepare:backend": "concurrently \"yarn:copy-templates\" \"yarn:build:backend\"",
    "start:dev": "yarn run clean && yarn dev:backend",
    "db-migrate": "db-migrate --migrations-dir ./src/migrations",
    "lint": "biome check . --error-on-warnings",
    "lint:fix": "biome check . --write --error-on-warnings",
    "lint:fix:unsafe": "biome check . --write --error-on-warnings --unsafe",
    "local:package": "del-cli --force build && mkdir build && cp -r dist CHANGELOG.md LICENSE README.md package.json build",
    "build:watch": "tsc -w",
    "prepare": "husky && yarn --cwd ./frontend install && if [ ! -d ./dist ]; then yarn build; fi",
    "test": "PORT=4243 vitest run",
    "test:unit": "PORT=4243 vitest --exclude src/test/e2e",
    "test:docker": "./scripts/docker-postgres.sh",
    "test:report": "PORT=4243 vitest --reporter=junit",
    "test:docker:cleanup": "docker rm -f unleash-postgres",
    "test:watch": "vitest",
    "test:coverage": "PORT=4243 vitest run --coverage --outputFile=\"coverage/report.json\"",
    "test:updateSnapshot": "PORT=4243 vitest run -u",
    "test:ui": "vitest --ui",
    "test:trace": "NODE_OPTIONS=--trace-warnings yarn test --no-file-parallelism",
    "seed:setup": "ts-node src/test/e2e/seed/segment.seed.ts",
    "seed:serve": "UNLEASH_DATABASE_NAME=unleash_test UNLEASH_DATABASE_SCHEMA=seed yarn run start:dev",
    "clean": "del-cli --force dist",
    "prepack": "./scripts/prepack.sh",
    "schema:update": "node ./.husky/update-openapi-spec-list.js"
  },
  "dependencies": {
    "@json2csv/plainjs": "^7.0.6",
    "@slack/web-api": "^7.14.1",
    "@wesleytodd/openapi": "^1.1.0",
    "ajv": "^8.18.0",
    "ajv-formats": "^3.0.1",
    "async": "^3.2.6",
    "bcryptjs": "^3.0.3",
    "compression": "^1.8.1",
    "connect-session-knex": "^5.0.0",
    "cookie-parser": "^1.4.7",
    "cookie-session": "^2.1.1",
    "cors": "^2.8.6",
    "date-fns": "^4.1.0",
    "db-migrate": "0.11.14",
    "db-migrate-pg": "1.5.2",
    "db-migrate-shared": "1.2.0",
    "deep-object-diff": "^1.1.9",
    "deepmerge": "^4.3.1",
    "errorhandler": "^1.5.2",
    "express": "^4.22.1",
    "express-rate-limit": "^8.3.0",
    "express-session": "^1.19.0",
    "fast-json-patch": "^3.1.1",
    "hash-sum": "^2.0.0",
    "helmet": "^8.1.0",
    "http-errors": "^2.0.1",
    "hyperloglog-lite": "^1.0.2",
    "ip-address": "^10.1.0",
    "joi": "^18.0.2",
    "js-sha256": "^0.11.1",
    "js-yaml": "^4.1.1",
    "json-diff": "^1.0.6",
    "json-schema-to-ts": "3.1.1",
    "knex": "^3.1.0",
    "ky": "^1.14.3",
    "lodash.groupby": "^4.6.0",
    "lodash.sortby": "^4.7.0",
    "log4js": "^6.9.1",
    "memoizee": "^0.4.17",
    "mime": "^4.1.0",
    "murmurhash3js": "^3.0.1",
    "mustache": "^4.2.0",
    "nodemailer": "^8.0.5",
    "normalize-url": "^8.1.1",
    "openapi-types": "^12.1.3",
    "owasp-password-strength-test": "^1.3.0",
    "parse-database-url": "^0.3.0",
    "pg": "^8.20.0",
    "pg-connection-string": "^2.12.0",
    "pkginfo": "^0.4.1",
    "prom-client": "^15.1.3",
    "re2js": "^1.2.2",
    "sanitize-filename": "^1.6.3",
    "semver": "^7.7.4",
    "serve-favicon": "^2.5.1",
    "slug": "^11.0.1",
    "stoppable": "^1.1.0",
    "tldts": "7.0.25",
    "ts-toolbelt": "^9.6.0",
    "type-is": "^2.0.1",
    "ulidx": "^2.4.1",
    "unleash-client": "^6.10.1"
  },
  "devDependencies": {
    "@apidevtools/swagger-parser": "12.1.0",
    "@biomejs/biome": "^2.4.6",
    "@cyclonedx/yarn-plugin-cyclonedx": "^3.3.0",
    "@faker-js/faker": "^10.3.0",
    "@fast-check/vitest": "^0.3.0",
    "@types/cors": "2.8.19",
    "@types/express": "4.17.25",
    "@types/express-session": "1.18.2",
    "@types/hash-sum": "^1.0.2",
    "@types/js-yaml": "4.0.9",
    "@types/lodash.groupby": "4.6.9",
    "@types/lodash.isequal": "^4.5.8",
    "@types/memoizee": "0.4.12",
    "@types/murmurhash3js": "^3.0.7",
    "@types/mustache": "^4.2.6",
    "@types/node": "22.19.15",
    "@types/nodemailer": "^7.0.11",
    "@types/owasp-password-strength-test": "1.3.2",
    "@types/pg": "8.18.0",
    "@types/semver": "7.7.1",
    "@types/slug": "^5.0.9",
    "@types/stoppable": "1.1.3",
    "@types/supertest": "6.0.3",
    "@types/type-is": "1.6.7",
    "@vitest/coverage-v8": "^4.0.18",
    "@vitest/ui": "^4.0.18",
    "concurrently": "^9.2.1",
    "del-cli": "6.0.0",
    "fast-check": "4.6.0",
    "fetch-mock": "^12.6.0",
    "husky": "^9.1.7",
    "lint-staged": "16.3.3",
    "nock": "^14.0.11",
    "openapi-enforcer": "1.23.0",
    "proxyquire": "2.1.3",
    "source-map-support": "0.5.21",
    "superagent": "10.3.0",
    "supertest": "7.2.2",
    "ts-node": "10.9.2",
    "tsc-watch": "7.2.0",
    "typescript": "5.9.3",
    "vite-node": "^5.3.0",
    "vitest": "^4.0.18",
    "wait-on": "^9.0.4"
  },
  "resolutions": {
    "glob": "^10.5.0",
    "async": "^3.2.4",
    "es5-ext": "0.10.64",
    "node-forge": "^1.0.0",
    "set-value": "^4.0.1",
    "ansi-regex": "^5.0.1",
    "ssh2": "^1.4.0",
    "json-schema": "^0.4.0",
    "ip": "^2.0.1",
    "semver": "^7.7.3",
    "tough-cookie": "4.1.4",
    "@wesleytodd/openapi/path-to-regexp": "6.3.0",
    "router/path-to-regexp": "1.9.0",
    "@types/express-session/@types/express": "4.17.25",
    "prompt": "link:./node_modules/.cache/null",
    "lodash": ">=4.18.0"
  },
  "lint-staged": {
    "*.{js,ts}": [
      "yarn biome check --write --no-errors-on-unmatched"
    ],
    "*.{jsx,tsx}": [
      "yarn biome check --write --no-errors-on-unmatched"
    ],
    "*.json": [
      "yarn biome format --write --no-errors-on-unmatched"
    ]
  },
  "packageManager": "yarn@4.13.0"
}
