mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-05 17:53:12 +02:00
To prevent express from having to do etag calculation of all feature toggle responses even if hitting a memoized feature toggle this PR adds etag calculation to the memoized function. This will cost us an extra etag calculation for client SDK requests without ETag headers, but for SDK requests with ETag headers, it should reduce the number of etag calculations we do down to 1 per 0.6 seconds per query Co-authored-by: Gard Rimestad <gard@getunleash.io> Co-authored-by: Nuno Gois <nuno@getunleash.ai>
231 lines
6.9 KiB
JSON
231 lines
6.9 KiB
JSON
{
|
|
"name": "unleash-server",
|
|
"description": "Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.",
|
|
"version": "4.19.1",
|
|
"keywords": [
|
|
"unleash",
|
|
"feature toggle",
|
|
"feature",
|
|
"toggle"
|
|
],
|
|
"files": [
|
|
"dist",
|
|
"docs",
|
|
"frontend/build"
|
|
],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "ssh://git@github.com:unleash/unleash.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/unleash/unleash/issues"
|
|
},
|
|
"types": "./dist/lib/server-impl.d.ts",
|
|
"engines": {
|
|
"node": ">=14"
|
|
},
|
|
"license": "Apache-2.0",
|
|
"main": "./dist/lib/server-impl.js",
|
|
"scripts": {
|
|
"start": "node ./dist/server.js",
|
|
"prestart:dev": "yarn run clean",
|
|
"start:dev": "NODE_ENV=development tsc-watch --onSuccess \"node dist/server-dev.js\"",
|
|
"copy-templates": "copyfiles -u 1 src/mailtemplates/**/*.mustache dist/",
|
|
"db-migrate": "db-migrate --migrations-dir ./src/migrations",
|
|
"lint": "eslint ./src",
|
|
"local:package": "del-cli --force build && mkdir build && cp -r dist docs CHANGELOG.md LICENSE README.md package.json build",
|
|
"prebuild:watch": "yarn run clean",
|
|
"build:watch": "tsc -w",
|
|
"prebuild": "yarn run clean",
|
|
"build": "yarn run copy-templates && tsc --pretty",
|
|
"prepare": "node scripts/husky-install && cd frontend && yarn && cd .. && yarn run build",
|
|
"test": "NODE_ENV=test PORT=4243 jest",
|
|
"test:unit": "NODE_ENV=test PORT=4243 jest --testPathIgnorePatterns=src/test/e2e --testPathIgnorePatterns=dist",
|
|
"test:docker": "./scripts/docker-postgres.sh",
|
|
"test:docker:cleanup": "docker rm -f unleash-postgres",
|
|
"test:watch": "yarn test --watch",
|
|
"test:coverage": "NODE_ENV=test PORT=4243 jest --coverage --testLocationInResults --outputFile=\"coverage/report.json\" --forceExit --testTimeout=10000",
|
|
"test:coverage:jest": "NODE_ENV=test PORT=4243 jest --silent --ci --json --coverage --testLocationInResults --outputFile=\"report.json\" --forceExit --testTimeout=10000",
|
|
"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",
|
|
"preversion": "./scripts/check-release.sh",
|
|
"heroku-postbuild": "cd frontend && yarn && yarn build"
|
|
},
|
|
"jest": {
|
|
"automock": false,
|
|
"maxWorkers": 4,
|
|
"testTimeout": 10000,
|
|
"globalSetup": "./scripts/jest-setup.js",
|
|
"transform": {
|
|
"^.+\\.tsx?$": [
|
|
"@swc/jest"
|
|
]
|
|
},
|
|
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
|
|
"testPathIgnorePatterns": [
|
|
"/dist/",
|
|
"/node_modules/",
|
|
"/frontend/"
|
|
],
|
|
"moduleFileExtensions": [
|
|
"ts",
|
|
"tsx",
|
|
"js",
|
|
"jsx",
|
|
"json"
|
|
],
|
|
"coveragePathIgnorePatterns": [
|
|
"/node_modules/",
|
|
"/dist/",
|
|
"/src/migrations",
|
|
"/src/test"
|
|
]
|
|
},
|
|
"dependencies": {
|
|
"@unleash/express-openapi": "^0.2.1",
|
|
"ajv": "^8.11.0",
|
|
"ajv-formats": "^2.1.1",
|
|
"async": "^3.2.4",
|
|
"bcryptjs": "^2.4.3",
|
|
"compression": "^1.7.4",
|
|
"connect-session-knex": "^3.0.0",
|
|
"cookie-parser": "^1.4.5",
|
|
"cookie-session": "^2.0.0-rc.1",
|
|
"cors": "^2.8.5",
|
|
"date-fns": "^2.25.0",
|
|
"db-migrate": "0.11.13",
|
|
"db-migrate-pg": "1.2.2",
|
|
"db-migrate-shared": "1.2.0",
|
|
"deepmerge": "^4.2.2",
|
|
"errorhandler": "^1.5.1",
|
|
"etag": "^1.8.1",
|
|
"express": "^4.18.2",
|
|
"express-rate-limit": "^6.6.0",
|
|
"express-session": "^1.17.1",
|
|
"fast-json-patch": "^3.1.0",
|
|
"gravatar-url": "^3.1.0",
|
|
"helmet": "^6.0.0",
|
|
"ip": "^1.1.8",
|
|
"joi": "^17.3.0",
|
|
"js-sha256": "^0.9.0",
|
|
"js-yaml": "^4.1.0",
|
|
"json-schema-to-ts": "2.6.0",
|
|
"json2csv": "^5.0.7",
|
|
"knex": "^2.0.0",
|
|
"log4js": "^6.0.0",
|
|
"make-fetch-happen": "^11.0.0",
|
|
"memoizee": "^0.4.15",
|
|
"mime": "^3.0.0",
|
|
"multer": "^1.4.5-lts.1",
|
|
"murmurhash3js": "^3.0.1",
|
|
"mustache": "^4.1.0",
|
|
"nodemailer": "^6.5.0",
|
|
"openapi-types": "^12.0.0",
|
|
"owasp-password-strength-test": "^1.3.0",
|
|
"parse-database-url": "^0.3.0",
|
|
"pg": "^8.7.3",
|
|
"pg-connection-string": "^2.5.0",
|
|
"pkginfo": "^0.4.1",
|
|
"prom-client": "^14.0.0",
|
|
"response-time": "^2.3.2",
|
|
"semver": "^7.3.5",
|
|
"serve-favicon": "^2.5.0",
|
|
"stoppable": "^1.1.0",
|
|
"ts-toolbelt": "^9.6.0",
|
|
"type-is": "^1.6.18",
|
|
"unleash-client": "3.16.0",
|
|
"use-deep-compare-effect": "^1.8.1",
|
|
"uuid": "^8.3.2"
|
|
},
|
|
"devDependencies": {
|
|
"@apidevtools/swagger-parser": "10.1.0",
|
|
"@babel/core": "7.20.5",
|
|
"@swc/core": "1.3.22",
|
|
"@swc/jest": "0.2.24",
|
|
"@types/bcryptjs": "2.4.2",
|
|
"@types/cors": "2.8.13",
|
|
"@types/express": "4.17.14",
|
|
"@types/express-session": "1.17.5",
|
|
"@types/faker": "5.5.9",
|
|
"@types/jest": "29.2.4",
|
|
"@types/js-yaml": "4.0.5",
|
|
"@types/make-fetch-happen": "10.0.1",
|
|
"@types/memoizee": "0.4.8",
|
|
"@types/mime": "3.0.1",
|
|
"@types/node": "16.18.8",
|
|
"@types/nodemailer": "6.4.6",
|
|
"@types/owasp-password-strength-test": "1.3.0",
|
|
"@types/semver": "7.3.13",
|
|
"@types/stoppable": "1.1.1",
|
|
"@types/supertest": "2.0.12",
|
|
"@types/type-is": "1.6.3",
|
|
"@types/uuid": "8.3.4",
|
|
"@typescript-eslint/eslint-plugin": "5.42.1",
|
|
"@typescript-eslint/parser": "5.42.1",
|
|
"copyfiles": "2.4.1",
|
|
"coveralls": "3.1.1",
|
|
"del-cli": "5.0.0",
|
|
"eslint": "8.29.0",
|
|
"eslint-config-airbnb-base": "15.0.0",
|
|
"eslint-config-airbnb-typescript": "17.0.0",
|
|
"eslint-config-prettier": "8.5.0",
|
|
"eslint-plugin-import": "2.26.0",
|
|
"eslint-plugin-no-only-tests": "^3.1.0",
|
|
"eslint-plugin-prettier": "4.2.1",
|
|
"faker": "5.5.3",
|
|
"fast-check": "3.3.0",
|
|
"fetch-mock": "9.11.0",
|
|
"husky": "8.0.2",
|
|
"jest": "29.3.1",
|
|
"lint-staged": "13.1.0",
|
|
"nock": "13.2.9",
|
|
"openapi-enforcer": "1.22.2",
|
|
"prettier": "2.7.1",
|
|
"proxyquire": "2.1.3",
|
|
"source-map-support": "0.5.21",
|
|
"superagent": "8.0.6",
|
|
"supertest": "6.3.3",
|
|
"ts-node": "10.9.1",
|
|
"tsc-watch": "5.0.3",
|
|
"typescript": "4.8.4"
|
|
},
|
|
"resolutions": {
|
|
"async": "^3.2.4",
|
|
"db-migrate/rc/minimist": "^1.2.5",
|
|
"es5-ext": "0.10.62",
|
|
"knex/liftoff/object.map/**/kind-of": "^6.0.3",
|
|
"knex/liftoff/findup-sync/micromatc/kind-of": "^6.0.3",
|
|
"knex/liftoff/findup-sync/micromatc/nanomatch/kind-of": "^6.0.3",
|
|
"knex/liftoff/findup-sync/micromatch/define-property/**/kind-of": "^6.0.3",
|
|
"node-forge": "^1.0.0",
|
|
"set-value": "^4.0.1",
|
|
"ansi-regex": "^5.0.1",
|
|
"ssh2": "^1.4.0",
|
|
"json-schema": "^0.4.0",
|
|
"minimatch": "^5.0.0"
|
|
},
|
|
"lint-staged": {
|
|
"*.{js,ts}": [
|
|
"eslint --fix"
|
|
],
|
|
"*.{json,yaml,md}": [
|
|
"prettier --write"
|
|
]
|
|
},
|
|
"prettier": {
|
|
"proseWrap": "never",
|
|
"singleQuote": true,
|
|
"tabWidth": 4,
|
|
"trailingComma": "all",
|
|
"overrides": [
|
|
{
|
|
"files": "*.{json,yaml,yml,md}",
|
|
"options": {
|
|
"tabWidth": 2
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|