From 79da59245a1b05042213aebc87f75e5e228653ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Nov 2021 04:06:25 +0000 Subject: [PATCH 01/17] Bump eslint from 8.2.0 to 8.3.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.2.0 to 8.3.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.2.0...v8.3.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 58 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4a976a9d..5dde6eab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "@typescript-eslint/eslint-plugin": "^5.3.0", "@typescript-eslint/parser": "^5.3.0", "cross-env": "^7.0.3", - "eslint": "^8.2.0", + "eslint": "^8.3.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^27.3.1", @@ -5342,9 +5342,9 @@ } }, "node_modules/eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.0.4", @@ -5356,10 +5356,10 @@ "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^6.0.0", + "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -5511,9 +5511,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", - "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -5560,14 +5560,14 @@ "dev": true }, "node_modules/espree": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", - "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", "dev": true, "dependencies": { - "acorn": "^8.5.0", + "acorn": "^8.6.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.0.0" + "eslint-visitor-keys": "^3.1.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -15906,9 +15906,9 @@ } }, "eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", "dev": true, "requires": { "@eslint/eslintrc": "^1.0.4", @@ -15920,10 +15920,10 @@ "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^6.0.0", + "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -15974,9 +15974,9 @@ } }, "eslint-scope": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", - "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -16062,14 +16062,14 @@ "dev": true }, "espree": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", - "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", "dev": true, "requires": { - "acorn": "^8.5.0", + "acorn": "^8.6.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.0.0" + "eslint-visitor-keys": "^3.1.0" } }, "esprima": { diff --git a/package.json b/package.json index 142bad3c..0a3d52b4 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "@typescript-eslint/eslint-plugin": "^5.3.0", "@typescript-eslint/parser": "^5.3.0", "cross-env": "^7.0.3", - "eslint": "^8.2.0", + "eslint": "^8.3.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^27.3.1", From 257a02537443f4dcdee92359b3284acb21f56e87 Mon Sep 17 00:00:00 2001 From: samgozman Date: Tue, 14 Dec 2021 00:02:16 +0300 Subject: [PATCH 02/17] Add Docker config, update ENV schema --- Dockerfile | 36 ++++++++++++++++++++++++++++++++++ config/.development.env_sample | 6 ++++-- config/.production.env_sample | 6 ++++-- config/.test.env_sample | 6 ++++-- docker-compose.yaml | 18 +++++++++++++++++ src/app.module.ts | 8 +++++++- src/config.schema.ts | 8 ++++---- 7 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..d996d265 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ + +FROM node:16.13-alpine3.12 + +WORKDIR /app + +COPY package.json ./ + +RUN npm install + +COPY . ./ + +ARG MONGODB_URL=mongodb +ARG MONGODB_NAME=finra-short-api +ARG MONGO_INITDB_ROOT_USERNAME=admin +ARG MONGO_INITDB_ROOT_PASSWORD=secret +ARG JWT_SECRET=SomeRandomString +ARG ADMIN_SECRET=RandomSecretForUserCreationRoute +ARG SANDBOX_TOKEN=TinkoffApiSandboxToken +ARG SENTRY_DSN=https://public@sentry.example.com/1 +ARG SENTRY_TRACE_RATE=0.25 + +ENV MONGODB_URL=${MONGODB_URL} +ENV MONGODB_NAME=${MONGODB_NAME} +ENV MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME} +ENV MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD} +ENV JWT_SECRET=${JWT_SECRET} +ENV ADMIN_SECRET=${ADMIN_SECRET} +ENV SANDBOX_TOKEN=${SANDBOX_TOKEN} +ENV SENTRY_DSN=${SENTRY_DSN} +ENV SENTRY_TRACE_RATE=${SENTRY_TRACE_RATE} + +EXPOSE 3001 + +RUN npm run build + +CMD ["npm", "run", "start:prod"] \ No newline at end of file diff --git a/config/.development.env_sample b/config/.development.env_sample index 95b5a67e..06cb4f6d 100644 --- a/config/.development.env_sample +++ b/config/.development.env_sample @@ -1,5 +1,7 @@ -PORT=3000 -MONGODB_CONNECTION_URL=mongodb://127.0.0.1:27017/finra-short-api +MONGODB_URL=mongodb +MONGODB_NAME=finra-short-api +MONGO_INITDB_ROOT_USERNAME= +MONGO_INITDB_ROOT_PASSWORD= JWT_SECRET= ADMIN_SECRET= SANDBOX_TOKEN= diff --git a/config/.production.env_sample b/config/.production.env_sample index cb538b71..b6082cff 100644 --- a/config/.production.env_sample +++ b/config/.production.env_sample @@ -1,5 +1,7 @@ -PORT=3000 -MONGODB_CONNECTION_URL=mongodb+srv:// +MONGODB_URL=mongodb +MONGODB_NAME=finra-short-api +MONGO_INITDB_ROOT_USERNAME= +MONGO_INITDB_ROOT_PASSWORD= JWT_SECRET= ADMIN_SECRET= SANDBOX_TOKEN= diff --git a/config/.test.env_sample b/config/.test.env_sample index aa901fe7..c4991628 100644 --- a/config/.test.env_sample +++ b/config/.test.env_sample @@ -1,5 +1,7 @@ -PORT=3000 -MONGODB_CONNECTION_URL= +MONGODB_URL=mongodb +MONGODB_NAME=finra-short-api-test +MONGO_INITDB_ROOT_USERNAME= +MONGO_INITDB_ROOT_PASSWORD= JWT_SECRET=TestKey ADMIN_SECRET=AdminKey SANDBOX_TOKEN= diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..71ea920c --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,18 @@ +version: '3.8' + +services: + mongodb: + image: 'mongo' + volumes: + - ./data:/data/db + env_file: + - ./config/.production.env + + finra-api: + build: ./ + ports: + - '3001:3001' + env_file: + - ./config/.production.env + depends_on: + - mongodb diff --git a/src/app.module.ts b/src/app.module.ts index 35927763..e54f1dd4 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -31,7 +31,13 @@ import { Integrations } from '@sentry/node'; inject: [ConfigService], useFactory: (config: ConfigService) => { return { - uri: config.get('MONGODB_CONNECTION_URL'), + uri: `mongodb://${config.get( + 'MONGO_INITDB_ROOT_USERNAME', + )}:${config.get('MONGO_INITDB_ROOT_PASSWORD')}@${config.get( + 'MONGODB_URL', + )}:27017/${config.get( + 'MONGODB_NAME', + )}?authSource=admin&readPreference=primary&ssl=false`, useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, diff --git a/src/config.schema.ts b/src/config.schema.ts index d6425a44..729e5821 100644 --- a/src/config.schema.ts +++ b/src/config.schema.ts @@ -2,10 +2,10 @@ import Joi from '@hapi/joi'; // *.env validation export const configValidationSchema = Joi.object({ - PORT: Joi.number().default(3000).required(), - MONGODB_CONNECTION_URL: Joi.string() - .default('mongodb://127.0.0.1:27017/finra-short-api') - .required(), + MONGODB_URL: Joi.string().default('mongodb').required(), + MONGODB_NAME: Joi.string().default('finra-short-api').required(), + MONGO_INITDB_ROOT_USERNAME: Joi.string().default('admin').required(), + MONGO_INITDB_ROOT_PASSWORD: Joi.string().default('admin').required(), JWT_SECRET: Joi.string().required(), ADMIN_SECRET: Joi.string().required(), SANDBOX_TOKEN: Joi.string().required(), From ce81ea8216cb5f7bbb816869797b9b855edaf688 Mon Sep 17 00:00:00 2001 From: samgozman Date: Sun, 2 Jan 2022 10:43:00 +0300 Subject: [PATCH 03/17] Fix workflow naming --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 10ca7496..58788ab6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Node CI deploy +name: Publish to remote server on: push: From 6f044072c1b1c3052bc9c9738f7290e4a92d9b60 Mon Sep 17 00:00:00 2001 From: samgozman Date: Sun, 2 Jan 2022 10:54:17 +0300 Subject: [PATCH 04/17] Replace bcrypt package with bcryptjs --- package-lock.json | 479 ++----------------- package.json | 2 - src/authentication/authentication.service.ts | 2 +- src/guards/roles.guard.ts | 2 +- src/models/users/users.service.ts | 2 +- 5 files changed, 34 insertions(+), 453 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5dde6eab..873b48d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,6 @@ "@ntegral/nestjs-sentry": "^3.0.6", "@sentry/node": "^6.15.0", "@sentry/tracing": "^6.15.0", - "bcrypt": "^5.0.1", "bcryptjs": "^2.4.3", "class-transformer": "^0.4.0", "class-validator": "^0.13.1", @@ -46,7 +45,6 @@ "@nestjs/cli": "^8.1.4", "@nestjs/schematics": "^8.0.4", "@nestjs/testing": "^8.2.0", - "@types/bcrypt": "^5.0.0", "@types/bcryptjs": "^2.4.2", "@types/compression": "^1.7.2", "@types/express": "^4.17.13", @@ -1535,25 +1533,6 @@ "optional": true, "peer": true }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.7.tgz", - "integrity": "sha512-PplSvl4pJ5N3BkVjAdDzpPhVUPdC73JgttkR+LnBx2OORC1GCQsBjUeEuipf9uOaAM1SbxcdZFfR3KDTKm2S0A==", - "dependencies": { - "detect-libc": "^1.0.3", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.5", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, "node_modules/@nestjs/axios": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.0.3.tgz", @@ -2555,15 +2534,6 @@ "@babel/types": "^7.3.0" } }, - "node_modules/@types/bcrypt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.0.tgz", - "integrity": "sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/bcryptjs": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz", @@ -3295,11 +3265,6 @@ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, "node_modules/accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -3457,6 +3422,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3731,36 +3697,6 @@ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -3985,19 +3921,6 @@ } ] }, - "node_modules/bcrypt": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", - "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", @@ -4362,14 +4285,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -4515,14 +4430,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -4633,11 +4540,6 @@ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "node_modules/content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -4936,11 +4838,6 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "node_modules/denque": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", @@ -4969,17 +4866,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -5112,7 +4998,8 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/encodeurl": { "version": "1.0.2", @@ -6089,17 +5976,6 @@ "node": ">=12" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/fs-monkey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", @@ -6137,25 +6013,6 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "node_modules/gauge": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", - "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", - "dependencies": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -6462,11 +6319,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "node_modules/helmet": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz", @@ -6861,6 +6713,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -8431,6 +8284,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "devOptional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8463,6 +8317,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "dependencies": { "semver": "^6.0.0" }, @@ -8477,6 +8332,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -8636,29 +8492,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "node_modules/minipass": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", - "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -8933,11 +8766,6 @@ "tslib": "^2.0.3" } }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -8998,20 +8826,6 @@ "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9044,20 +8858,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", - "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, "node_modules/nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -10096,6 +9896,7 @@ "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -10193,11 +9994,6 @@ "node": ">= 0.8.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -10277,7 +10073,8 @@ "node_modules/signal-exit": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true }, "node_modules/sisteransi": { "version": "1.0.5", @@ -10410,6 +10207,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10451,6 +10249,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10658,33 +10457,6 @@ "node": ">=6" } }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -11525,14 +11297,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/windows-release": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", @@ -11699,7 +11463,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "devOptional": true }, "node_modules/yaml": { "version": "1.10.2", @@ -12928,22 +12693,6 @@ "optional": true, "peer": true }, - "@mapbox/node-pre-gyp": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.7.tgz", - "integrity": "sha512-PplSvl4pJ5N3BkVjAdDzpPhVUPdC73JgttkR+LnBx2OORC1GCQsBjUeEuipf9uOaAM1SbxcdZFfR3KDTKm2S0A==", - "requires": { - "detect-libc": "^1.0.3", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.5", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - } - }, "@nestjs/axios": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.0.3.tgz", @@ -13669,15 +13418,6 @@ "@babel/types": "^7.3.0" } }, - "@types/bcrypt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.0.tgz", - "integrity": "sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/bcryptjs": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz", @@ -14337,11 +14077,6 @@ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -14450,7 +14185,8 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -14659,32 +14395,6 @@ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -14860,15 +14570,6 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, - "bcrypt": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", - "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", - "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^3.1.0" - } - }, "bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", @@ -15148,11 +14849,6 @@ "readdirp": "~3.6.0" } }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -15268,11 +14964,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -15364,11 +15055,6 @@ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -15598,11 +15284,6 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "denque": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", @@ -15625,11 +15306,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -15731,7 +15407,8 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -16478,14 +16155,6 @@ "universalify": "^2.0.0" } }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, "fs-monkey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", @@ -16516,22 +16185,6 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gauge": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", - "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", - "requires": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -16744,11 +16397,6 @@ "has-symbols": "^1.0.2" } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "helmet": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz", @@ -17039,7 +16687,8 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -18263,6 +17912,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "devOptional": true, "requires": { "yallist": "^4.0.0" } @@ -18286,6 +17936,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "requires": { "semver": "^6.0.0" }, @@ -18293,7 +17944,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -18416,23 +18068,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "minipass": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", - "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -18637,11 +18272,6 @@ "tslib": "^2.0.3" } }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, "node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -18698,14 +18328,6 @@ "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "requires": { - "abbrev": "1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -18726,17 +18348,6 @@ "path-key": "^3.0.0" } }, - "npmlog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", - "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" - } - }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -19502,6 +19113,7 @@ "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -19585,11 +19197,6 @@ "send": "0.17.1" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -19651,7 +19258,8 @@ "signal-exit": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true }, "sisteransi": { "version": "1.0.5", @@ -19764,6 +19372,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -19796,6 +19405,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -19947,26 +19557,6 @@ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -20581,14 +20171,6 @@ "is-symbol": "^1.0.3" } }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "windows-release": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", @@ -20709,7 +20291,8 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "devOptional": true }, "yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index 0a3d52b4..1fa578c3 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,6 @@ "@ntegral/nestjs-sentry": "^3.0.6", "@sentry/node": "^6.15.0", "@sentry/tracing": "^6.15.0", - "bcrypt": "^5.0.1", "bcryptjs": "^2.4.3", "class-transformer": "^0.4.0", "class-validator": "^0.13.1", @@ -69,7 +68,6 @@ "@nestjs/cli": "^8.1.4", "@nestjs/schematics": "^8.0.4", "@nestjs/testing": "^8.2.0", - "@types/bcrypt": "^5.0.0", "@types/bcryptjs": "^2.4.2", "@types/compression": "^1.7.2", "@types/express": "^4.17.13", diff --git a/src/authentication/authentication.service.ts b/src/authentication/authentication.service.ts index 6a6c37cb..965c86a5 100644 --- a/src/authentication/authentication.service.ts +++ b/src/authentication/authentication.service.ts @@ -1,5 +1,5 @@ import { Injectable, UnauthorizedException } from '@nestjs/common'; -import { compare, genSalt, hash } from 'bcrypt'; +import { compare, genSalt, hash } from 'bcryptjs'; import { JwtService } from '@nestjs/jwt'; import { UsersService } from '../models/users/users.service'; import { AuthCredentialsDto } from './dtos/auth-credentials.dto'; diff --git a/src/guards/roles.guard.ts b/src/guards/roles.guard.ts index e3fc71a3..5be7f900 100644 --- a/src/guards/roles.guard.ts +++ b/src/guards/roles.guard.ts @@ -5,7 +5,7 @@ import { ForbiddenException, } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; -import { compare } from 'bcrypt'; +import { compare } from 'bcryptjs'; import { User } from '../models/users/schemas/user.schema'; import { UsersService } from '../models/users/users.service'; diff --git a/src/models/users/users.service.ts b/src/models/users/users.service.ts index a5a47dfa..ec9cf147 100644 --- a/src/models/users/users.service.ts +++ b/src/models/users/users.service.ts @@ -6,7 +6,7 @@ import { NotFoundException, } from '@nestjs/common'; import { randomBytes } from 'crypto'; -import { genSalt, hash } from 'bcrypt'; +import { genSalt, hash } from 'bcryptjs'; import { AnyKeys, AnyObject, FilterQuery } from 'mongoose'; import { IUserDocument } from './schemas/user.schema'; import { UpdateRolesDto } from './dtos/update-roles.dto'; From 80f71df8f8936786cd7de7a9d63e2279ac18567b Mon Sep 17 00:00:00 2001 From: samgozman Date: Sun, 2 Jan 2022 11:01:45 +0300 Subject: [PATCH 05/17] Add docker scripts for container registry --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 1fa578c3..b812bcda 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "scripts": { "prebuild": "rimraf dist", "build": "nest build", + "build:docker:dev": "docker build . -t ghcr.io/samgozman/finra-short-api:dev ", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "cross-env NODE_ENV=production nest start", "start:dev": "cross-env NODE_ENV=development nest start --watch", @@ -21,7 +22,8 @@ "test:debug": "cross-env NODE_ENV=test node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "cross-env NODE_ENV=test jest --config ./test/jest-e2e.json --detectOpenHandles", "test:e2e:watch": "cross-env NODE_ENV=test jest --config ./test/jest-e2e.json --watch --detectOpenHandles", - "test:e2e:github": "cross-env NODE_ENV=github jest --config ./test/jest-e2e.json --detectOpenHandles" + "test:e2e:github": "cross-env NODE_ENV=github jest --config ./test/jest-e2e.json --detectOpenHandles", + "push:docker:dev": "npm run build:docker:dev && docker push ghcr.io/samgozman/finra-short-api:dev" }, "repository": { "type": "git", From 81c597cdca30dae9cad9e4370311a66d33e29e97 Mon Sep 17 00:00:00 2001 From: samgozman Date: Sun, 2 Jan 2022 11:36:35 +0300 Subject: [PATCH 06/17] add dockerignore --- .dockerignore | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..c9a3d6dd --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +node_modules +Dockerfile +docker-compose.yaml +.git +.github +.gitignore +test/ +config/ \ No newline at end of file From 5baab5597ab80ac32bdeb6e77c594251e484f95d Mon Sep 17 00:00:00 2001 From: samgozman Date: Sun, 2 Jan 2022 11:49:01 +0300 Subject: [PATCH 07/17] Add PORT env --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index d996d265..f2a370e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,6 +28,7 @@ ENV ADMIN_SECRET=${ADMIN_SECRET} ENV SANDBOX_TOKEN=${SANDBOX_TOKEN} ENV SENTRY_DSN=${SENTRY_DSN} ENV SENTRY_TRACE_RATE=${SENTRY_TRACE_RATE} +ENV PORT=3001 EXPOSE 3001 From 9e55dd41e6995fb75b3f3b734d62d3531b6ccaee Mon Sep 17 00:00:00 2001 From: samgozman Date: Sun, 2 Jan 2022 11:52:07 +0300 Subject: [PATCH 08/17] Update sentry --- package-lock.json | 172 +++++++++++++++++++++++----------------------- package.json | 4 +- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/package-lock.json b/package-lock.json index 873b48d4..45fb99c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,8 +23,8 @@ "@nestjs/terminus": "^8.0.1", "@nestjs/throttler": "^2.0.0", "@ntegral/nestjs-sentry": "^3.0.6", - "@sentry/node": "^6.15.0", - "@sentry/tracing": "^6.15.0", + "@sentry/node": "^6.16.1", + "@sentry/tracing": "^6.16.1", "bcryptjs": "^2.4.3", "class-transformer": "^0.4.0", "class-validator": "^0.13.1", @@ -2274,14 +2274,14 @@ "peer": true }, "node_modules/@sentry/core": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.15.0.tgz", - "integrity": "sha512-mCbKyqvD1G3Re6gv6N8tRkBz84gvVWDfLtC6d1WBArIopzter6ktEbvq0cMT6EOvGI2OLXuJ6mtHA93/Q0gGpw==", - "dependencies": { - "@sentry/hub": "6.15.0", - "@sentry/minimal": "6.15.0", - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.16.1.tgz", + "integrity": "sha512-UFI0264CPUc5cR1zJH+S2UPOANpm6dLJOnsvnIGTjsrwzR0h8Hdl6rC2R/GPq+WNbnipo9hkiIwDlqbqvIU5vw==", + "dependencies": { + "@sentry/hub": "6.16.1", + "@sentry/minimal": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "engines": { @@ -2294,12 +2294,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/hub": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.15.0.tgz", - "integrity": "sha512-cUbHPeG6kKpGBaEMgbTWeU03Y1Up5T3urGF+cgtrn80PmPYYSUPvVvWlZQWPb8CJZ1yQ0gySWo5RUTatBFrEHA==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.16.1.tgz", + "integrity": "sha512-4PGtg6AfpqMkreTpL7ymDeQ/U1uXv03bKUuFdtsSTn/FRf9TLS4JB0KuTZCxfp1IRgAA+iFg6B784dDkT8R9eg==", "dependencies": { - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "engines": { @@ -2312,12 +2312,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/minimal": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.15.0.tgz", - "integrity": "sha512-7RJIvZsjBa1qFUfMrAzQsWdfZT6Gm4t6ZTYfkpsXPBA35hkzglKbBrhhsUvkxGIhUGw/PiCUqxBUjcmzQP0vfg==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.16.1.tgz", + "integrity": "sha512-dq+mI1EQIvUM+zJtGCVgH3/B3Sbx4hKlGf2Usovm9KoqWYA+QpfVBholYDe/H2RXgO7LFEefDLvOdHDkqeJoyA==", "dependencies": { - "@sentry/hub": "6.15.0", - "@sentry/types": "6.15.0", + "@sentry/hub": "6.16.1", + "@sentry/types": "6.16.1", "tslib": "^1.9.3" }, "engines": { @@ -2330,15 +2330,15 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/node": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.15.0.tgz", - "integrity": "sha512-V1GeupWi9ClmoMy5eBWdVTv3k+Yx/JpddT4zCzzYY9QfjYtEvQI7R3SWFtlgXuaQQaZNU0WUoE2UgJV2N/vS8g==", - "dependencies": { - "@sentry/core": "6.15.0", - "@sentry/hub": "6.15.0", - "@sentry/tracing": "6.15.0", - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.16.1.tgz", + "integrity": "sha512-SeDDoug2kUxeF1D7JGPa3h5EXxKtmA01mITBPYx5xbJ0sMksnv5I5bC1SJ8arRRzq6+W1C4IEeDBQtrVCk6ixA==", + "dependencies": { + "@sentry/core": "6.16.1", + "@sentry/hub": "6.16.1", + "@sentry/tracing": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", @@ -2354,14 +2354,14 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/tracing": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.15.0.tgz", - "integrity": "sha512-V5unvX8qNEfdawX+m2n0jKgmH/YR2ItWZLH+3UevBTptO+xyfvRtpgGXYWUCo3iGvFgWb1C+iIC7LViR9rTvBg==", - "dependencies": { - "@sentry/hub": "6.15.0", - "@sentry/minimal": "6.15.0", - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.16.1.tgz", + "integrity": "sha512-MPSbqXX59P+OEeST+U2V/8Hu/8QjpTUxTNeNyTHWIbbchdcMMjDbXTS3etCgajZR6Ro+DHElOz5cdSxH6IBGlA==", + "dependencies": { + "@sentry/hub": "6.16.1", + "@sentry/minimal": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "engines": { @@ -2374,19 +2374,19 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/types": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.15.0.tgz", - "integrity": "sha512-zBw5gPUsofXUSpS3ZAXqRNedLRBvirl3sqkj2Lez7X2EkKRgn5D8m9fQIrig/X3TsKcXUpijDW5Buk5zeCVzJA==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.16.1.tgz", + "integrity": "sha512-Wh354g30UsJ5kYJbercektGX4ZMc9MHU++1NjeN2bTMnbofEcpUDWIiKeulZEY65IC1iU+1zRQQgtYO+/hgCUQ==", "engines": { "node": ">=6" } }, "node_modules/@sentry/utils": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.15.0.tgz", - "integrity": "sha512-gnhKKyFtnNmKWjDizo7VKD0/Vx8cgW1lCusM6WI7jy2jlO3bQA0+Dzgmr4mIReZ74mq4VpOd2Vfrx7ZldW1DMw==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.16.1.tgz", + "integrity": "sha512-7ngq/i4R8JZitJo9Sl8PDnjSbDehOxgr1vsoMmerIsyRZ651C/8B+jVkMhaAPgSdyJ0AlE3O7DKKTP1FXFw9qw==", "dependencies": { - "@sentry/types": "6.15.0", + "@sentry/types": "6.16.1", "tslib": "^1.9.3" }, "engines": { @@ -13182,14 +13182,14 @@ "peer": true }, "@sentry/core": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.15.0.tgz", - "integrity": "sha512-mCbKyqvD1G3Re6gv6N8tRkBz84gvVWDfLtC6d1WBArIopzter6ktEbvq0cMT6EOvGI2OLXuJ6mtHA93/Q0gGpw==", - "requires": { - "@sentry/hub": "6.15.0", - "@sentry/minimal": "6.15.0", - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.16.1.tgz", + "integrity": "sha512-UFI0264CPUc5cR1zJH+S2UPOANpm6dLJOnsvnIGTjsrwzR0h8Hdl6rC2R/GPq+WNbnipo9hkiIwDlqbqvIU5vw==", + "requires": { + "@sentry/hub": "6.16.1", + "@sentry/minimal": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -13201,12 +13201,12 @@ } }, "@sentry/hub": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.15.0.tgz", - "integrity": "sha512-cUbHPeG6kKpGBaEMgbTWeU03Y1Up5T3urGF+cgtrn80PmPYYSUPvVvWlZQWPb8CJZ1yQ0gySWo5RUTatBFrEHA==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.16.1.tgz", + "integrity": "sha512-4PGtg6AfpqMkreTpL7ymDeQ/U1uXv03bKUuFdtsSTn/FRf9TLS4JB0KuTZCxfp1IRgAA+iFg6B784dDkT8R9eg==", "requires": { - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -13218,12 +13218,12 @@ } }, "@sentry/minimal": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.15.0.tgz", - "integrity": "sha512-7RJIvZsjBa1qFUfMrAzQsWdfZT6Gm4t6ZTYfkpsXPBA35hkzglKbBrhhsUvkxGIhUGw/PiCUqxBUjcmzQP0vfg==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.16.1.tgz", + "integrity": "sha512-dq+mI1EQIvUM+zJtGCVgH3/B3Sbx4hKlGf2Usovm9KoqWYA+QpfVBholYDe/H2RXgO7LFEefDLvOdHDkqeJoyA==", "requires": { - "@sentry/hub": "6.15.0", - "@sentry/types": "6.15.0", + "@sentry/hub": "6.16.1", + "@sentry/types": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -13235,15 +13235,15 @@ } }, "@sentry/node": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.15.0.tgz", - "integrity": "sha512-V1GeupWi9ClmoMy5eBWdVTv3k+Yx/JpddT4zCzzYY9QfjYtEvQI7R3SWFtlgXuaQQaZNU0WUoE2UgJV2N/vS8g==", - "requires": { - "@sentry/core": "6.15.0", - "@sentry/hub": "6.15.0", - "@sentry/tracing": "6.15.0", - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.16.1.tgz", + "integrity": "sha512-SeDDoug2kUxeF1D7JGPa3h5EXxKtmA01mITBPYx5xbJ0sMksnv5I5bC1SJ8arRRzq6+W1C4IEeDBQtrVCk6ixA==", + "requires": { + "@sentry/core": "6.16.1", + "@sentry/hub": "6.16.1", + "@sentry/tracing": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", @@ -13258,14 +13258,14 @@ } }, "@sentry/tracing": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.15.0.tgz", - "integrity": "sha512-V5unvX8qNEfdawX+m2n0jKgmH/YR2ItWZLH+3UevBTptO+xyfvRtpgGXYWUCo3iGvFgWb1C+iIC7LViR9rTvBg==", - "requires": { - "@sentry/hub": "6.15.0", - "@sentry/minimal": "6.15.0", - "@sentry/types": "6.15.0", - "@sentry/utils": "6.15.0", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.16.1.tgz", + "integrity": "sha512-MPSbqXX59P+OEeST+U2V/8Hu/8QjpTUxTNeNyTHWIbbchdcMMjDbXTS3etCgajZR6Ro+DHElOz5cdSxH6IBGlA==", + "requires": { + "@sentry/hub": "6.16.1", + "@sentry/minimal": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -13277,16 +13277,16 @@ } }, "@sentry/types": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.15.0.tgz", - "integrity": "sha512-zBw5gPUsofXUSpS3ZAXqRNedLRBvirl3sqkj2Lez7X2EkKRgn5D8m9fQIrig/X3TsKcXUpijDW5Buk5zeCVzJA==" + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.16.1.tgz", + "integrity": "sha512-Wh354g30UsJ5kYJbercektGX4ZMc9MHU++1NjeN2bTMnbofEcpUDWIiKeulZEY65IC1iU+1zRQQgtYO+/hgCUQ==" }, "@sentry/utils": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.15.0.tgz", - "integrity": "sha512-gnhKKyFtnNmKWjDizo7VKD0/Vx8cgW1lCusM6WI7jy2jlO3bQA0+Dzgmr4mIReZ74mq4VpOd2Vfrx7ZldW1DMw==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.16.1.tgz", + "integrity": "sha512-7ngq/i4R8JZitJo9Sl8PDnjSbDehOxgr1vsoMmerIsyRZ651C/8B+jVkMhaAPgSdyJ0AlE3O7DKKTP1FXFw9qw==", "requires": { - "@sentry/types": "6.15.0", + "@sentry/types": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { diff --git a/package.json b/package.json index b812bcda..096e38f9 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,8 @@ "@nestjs/terminus": "^8.0.1", "@nestjs/throttler": "^2.0.0", "@ntegral/nestjs-sentry": "^3.0.6", - "@sentry/node": "^6.15.0", - "@sentry/tracing": "^6.15.0", + "@sentry/node": "^6.16.1", + "@sentry/tracing": "^6.16.1", "bcryptjs": "^2.4.3", "class-transformer": "^0.4.0", "class-validator": "^0.13.1", From 790d2329c4958fc647c2cfeab6221cc3af44c4f5 Mon Sep 17 00:00:00 2001 From: samgozman Date: Wed, 5 Jan 2022 11:35:48 +0300 Subject: [PATCH 09/17] Change Guard for users/list api route --- src/models/users/users.controller.spec.ts | 2 ++ src/models/users/users.controller.ts | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/models/users/users.controller.spec.ts b/src/models/users/users.controller.spec.ts index 3551dd97..60ea3540 100644 --- a/src/models/users/users.controller.spec.ts +++ b/src/models/users/users.controller.spec.ts @@ -1,3 +1,4 @@ +import { ConfigService } from '@nestjs/config'; import { PassportModule } from '@nestjs/passport'; import { Test, TestingModule } from '@nestjs/testing'; import { UpdateRolesDto } from './dtos/update-roles.dto'; @@ -39,6 +40,7 @@ describe('UsersController', () => { provide: UsersService, useClass: MockUserService, }, + ConfigService, ], }).compile(); diff --git a/src/models/users/users.controller.ts b/src/models/users/users.controller.ts index 3f6e7dcc..674edcfa 100644 --- a/src/models/users/users.controller.ts +++ b/src/models/users/users.controller.ts @@ -19,6 +19,7 @@ import { ApiTags, } from '@nestjs/swagger'; import { SentryInterceptor } from '@ntegral/nestjs-sentry'; +import { AdminGuard } from '../../guards/admin.guard'; import { Roles } from '../../decorators/roles.decorator'; import { RolesGuard } from '../../guards/roles.guard'; import { Serialize } from '../../interceptors/serialize.interceptor'; @@ -40,7 +41,7 @@ export class UsersController { @Get('/list') @Serialize(UserDto) @Roles('admin') - @UseGuards(RolesGuard) + @UseGuards(AdminGuard) @ApiOperation({ summary: 'Get list of all users' }) @ApiOkResponse({ description: 'List of users response object', From a615658057c0254aa4e3c684ca7235a2787b5a30 Mon Sep 17 00:00:00 2001 From: samgozman Date: Wed, 5 Jan 2022 13:12:38 +0300 Subject: [PATCH 10/17] Add port for dev env --- config/.development.env_sample | 1 + 1 file changed, 1 insertion(+) diff --git a/config/.development.env_sample b/config/.development.env_sample index 06cb4f6d..a612096a 100644 --- a/config/.development.env_sample +++ b/config/.development.env_sample @@ -1,3 +1,4 @@ +PORT=3001 MONGODB_URL=mongodb MONGODB_NAME=finra-short-api MONGO_INITDB_ROOT_USERNAME= From eb35e391dccf166d002a342696e4faa3912a8a9e Mon Sep 17 00:00:00 2001 From: samgozman Date: Wed, 5 Jan 2022 13:12:55 +0300 Subject: [PATCH 11/17] Fix guards for user route --- src/models/users/users.controller.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/models/users/users.controller.ts b/src/models/users/users.controller.ts index 674edcfa..6de22876 100644 --- a/src/models/users/users.controller.ts +++ b/src/models/users/users.controller.ts @@ -31,7 +31,6 @@ import { UsersService } from './users.service'; @ApiTags('user') @Controller('user') -@UseGuards(AuthGuard()) @UseInterceptors(new SentryInterceptor()) @ApiBearerAuth('auth-with-admin-role') @ApiForbiddenResponse() @@ -42,6 +41,7 @@ export class UsersController { @Serialize(UserDto) @Roles('admin') @UseGuards(AdminGuard) + @ApiBearerAuth('ADMIN_SECRET') @ApiOperation({ summary: 'Get list of all users' }) @ApiOkResponse({ description: 'List of users response object', @@ -54,6 +54,7 @@ export class UsersController { @Post('/api') @Serialize(ApiKeyDto) @Roles('admin') + @UseGuards(AuthGuard()) @UseGuards(RolesGuard) @ApiOperation({ summary: 'Create API key for user to get access to the filtering', @@ -69,6 +70,7 @@ export class UsersController { @Patch('/roles') @Roles('admin') @Serialize(UserDto) + @UseGuards(AuthGuard()) @UseGuards(RolesGuard) @ApiOperation({ summary: 'Add new roles for a user' }) @ApiOkResponse({ From 58cbba9605abe3d2134fb932498c830de3e115d0 Mon Sep 17 00:00:00 2001 From: samgozman Date: Wed, 5 Jan 2022 15:12:24 +0300 Subject: [PATCH 12/17] Change auth guard for user controller --- src/models/users/users.controller.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/models/users/users.controller.ts b/src/models/users/users.controller.ts index 6de22876..ffd6d582 100644 --- a/src/models/users/users.controller.ts +++ b/src/models/users/users.controller.ts @@ -7,7 +7,6 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { AuthGuard } from '@nestjs/passport'; import { ApiBadRequestResponse, ApiBearerAuth, @@ -20,8 +19,6 @@ import { } from '@nestjs/swagger'; import { SentryInterceptor } from '@ntegral/nestjs-sentry'; import { AdminGuard } from '../../guards/admin.guard'; -import { Roles } from '../../decorators/roles.decorator'; -import { RolesGuard } from '../../guards/roles.guard'; import { Serialize } from '../../interceptors/serialize.interceptor'; import { ApiKeyDto } from './dtos/apikey.dto'; import { CreateUserApiKeyDto } from './dtos/create-user-api-key.dto'; @@ -39,7 +36,6 @@ export class UsersController { @Get('/list') @Serialize(UserDto) - @Roles('admin') @UseGuards(AdminGuard) @ApiBearerAuth('ADMIN_SECRET') @ApiOperation({ summary: 'Get list of all users' }) @@ -53,9 +49,8 @@ export class UsersController { @Post('/api') @Serialize(ApiKeyDto) - @Roles('admin') - @UseGuards(AuthGuard()) - @UseGuards(RolesGuard) + @UseGuards(AdminGuard) + @ApiBearerAuth('ADMIN_SECRET') @ApiOperation({ summary: 'Create API key for user to get access to the filtering', }) @@ -68,10 +63,9 @@ export class UsersController { } @Patch('/roles') - @Roles('admin') @Serialize(UserDto) - @UseGuards(AuthGuard()) - @UseGuards(RolesGuard) + @UseGuards(AdminGuard) + @ApiBearerAuth('ADMIN_SECRET') @ApiOperation({ summary: 'Add new roles for a user' }) @ApiOkResponse({ description: 'User with roles response object', From 3d5d47eb6fcf2e11f36fbc879f5ff133235f21af Mon Sep 17 00:00:00 2001 From: samgozman Date: Sat, 5 Feb 2022 18:41:08 +0300 Subject: [PATCH 13/17] Temporary disable disable admin role grant protection --- src/models/users/users.service.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/models/users/users.service.ts b/src/models/users/users.service.ts index ec9cf147..7fdb0e25 100644 --- a/src/models/users/users.service.ts +++ b/src/models/users/users.service.ts @@ -62,9 +62,11 @@ export class UsersService { async updateRoles(updateRolesDto: UpdateRolesDto) { // Check roles. They should contains only predefined values const { login, role } = updateRolesDto; - if (role === 'admin') { - throw new BadRequestException('You can not set admin roles via request'); - } + + // TODO: if role === 'admin' checks if one allready exists. Limit admin users by 1 + // if (role === 'admin') { + // throw new BadRequestException('You can not set admin roles via request'); + // } const user = await this.findOne({ login }); From d53c88a60586bf9bf6f05e9f15787c13374cc142 Mon Sep 17 00:00:00 2001 From: samgozman Date: Sat, 12 Feb 2022 18:50:59 +0300 Subject: [PATCH 14/17] Change promise all statement --- src/models/filters/filters.service.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/models/filters/filters.service.ts b/src/models/filters/filters.service.ts index 208580da..728ccee4 100644 --- a/src/models/filters/filters.service.ts +++ b/src/models/filters/filters.service.ts @@ -199,9 +199,11 @@ export class FiltersService { this.logger.warn('The filters regeneration process has started'); const updaters = this.getFiltersUpdaters(); - await Promise.all(Object.values(updaters).map((e) => e())).catch(() => { - throw new Error('Error in filters generation process'); - }); + const filters = Object.values(updaters); + + this.logger.log(`Total filters: ${filters.length}`); + + await Promise.all(filters); this.logger.warn('The filter collection has been successfully generated'); From 01827f5fa111525ce7e92831e17851fbde39b39f Mon Sep 17 00:00:00 2001 From: samgozman Date: Sat, 12 Feb 2022 18:59:45 +0300 Subject: [PATCH 15/17] Change promise all condition --- src/models/filters/filters.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/filters/filters.service.ts b/src/models/filters/filters.service.ts index 728ccee4..79f9ed41 100644 --- a/src/models/filters/filters.service.ts +++ b/src/models/filters/filters.service.ts @@ -203,7 +203,7 @@ export class FiltersService { this.logger.log(`Total filters: ${filters.length}`); - await Promise.all(filters); + await Promise.all(filters.map((filter) => filter())); this.logger.warn('The filter collection has been successfully generated'); From 17558e7f2b3b1bedebac3e311a360b644e453ea1 Mon Sep 17 00:00:00 2001 From: samgozman Date: Wed, 16 Feb 2022 19:12:11 +0300 Subject: [PATCH 16/17] Update schedule lib --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 45fb99c5..e5250ee1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@nestjs/mongoose": "^8.0.1", "@nestjs/passport": "^8.0.1", "@nestjs/platform-express": "^8.2.0", - "@nestjs/schedule": "^1.0.1", + "@nestjs/schedule": "^1.0.2", "@nestjs/swagger": "^5.1.4", "@nestjs/terminus": "^8.0.1", "@nestjs/throttler": "^2.0.0", diff --git a/package.json b/package.json index 096e38f9..55aea27e 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@nestjs/mongoose": "^8.0.1", "@nestjs/passport": "^8.0.1", "@nestjs/platform-express": "^8.2.0", - "@nestjs/schedule": "^1.0.1", + "@nestjs/schedule": "^1.0.2", "@nestjs/swagger": "^5.1.4", "@nestjs/terminus": "^8.0.1", "@nestjs/throttler": "^2.0.0", From 2440273016324c366711dc40315919c04999552f Mon Sep 17 00:00:00 2001 From: "s.gozman" Date: Fri, 8 Apr 2022 07:20:33 +0300 Subject: [PATCH 17/17] Add new docker script and version update --- package-lock.json | 4 ++-- package.json | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index e5250ee1..4577bb94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "finra-short-api", - "version": "2.0.9", + "version": "2.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "finra-short-api", - "version": "2.0.9", + "version": "2.1.0", "license": "MIT", "dependencies": { "@hapi/joi": "^17.1.1", diff --git a/package.json b/package.json index 55aea27e..214c7940 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "finra-short-api", - "version": "2.0.9", + "version": "2.1.0", "description": "API for TightShorts.ru - FINRA parser and screener", "author": "Sam Gozman ", "private": true, @@ -9,6 +9,7 @@ "prebuild": "rimraf dist", "build": "nest build", "build:docker:dev": "docker build . -t ghcr.io/samgozman/finra-short-api:dev ", + "build:docker:latest": "docker build . -t ghcr.io/samgozman/finra-short-api:latest ", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "cross-env NODE_ENV=production nest start", "start:dev": "cross-env NODE_ENV=development nest start --watch", @@ -23,7 +24,8 @@ "test:e2e": "cross-env NODE_ENV=test jest --config ./test/jest-e2e.json --detectOpenHandles", "test:e2e:watch": "cross-env NODE_ENV=test jest --config ./test/jest-e2e.json --watch --detectOpenHandles", "test:e2e:github": "cross-env NODE_ENV=github jest --config ./test/jest-e2e.json --detectOpenHandles", - "push:docker:dev": "npm run build:docker:dev && docker push ghcr.io/samgozman/finra-short-api:dev" + "push:docker:dev": "npm run build:docker:dev && docker push ghcr.io/samgozman/finra-short-api:dev", + "push:docker:latest": "npm run build:docker:latest && docker push ghcr.io/samgozman/finra-short-api:latest" }, "repository": { "type": "git",