From beac127b5d31fe64069ca64d68a85995c2c4b5eb Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Wed, 9 Aug 2023 17:28:57 +0300 Subject: [PATCH 1/9] chore(ci): return e2e workflow --- .github/workflows/e2e.yml | 19 +++++++++++++++++++ docker-compose.ci.yml | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/e2e.yml diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 000000000..80408a11f --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,19 @@ +name: e2e + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build_and_run_e2e: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Build the stack + run: docker-compose -f docker-compose.ci.yml up -d + + - name: run e2e + uses: cypress-io/github-action@v4 diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index eca08729b..5d3be3573 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -24,7 +24,7 @@ services: - 3000:3000 build: context: . - dockerfile: Dockerfile.dev + dockerfile: Dockerfile depends_on: - db environment: From d0f510bbbf8a02207a572cae97e107db676c38aa Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Wed, 9 Aug 2023 21:52:36 +0300 Subject: [PATCH 2/9] chore(cypress): disable video recording --- cypress.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/cypress.config.ts b/cypress.config.ts index 722373c9c..0f1621850 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -3,4 +3,5 @@ export default { baseUrl: `http://${process.env.CYPRESS_baseUrl || 'localhost'}:3000`, supportFile: false, }, + video: false, }; From 8e4efb78bfcc4dde5ab5af836f488b3c58d2ccca Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Wed, 9 Aug 2023 22:06:26 +0300 Subject: [PATCH 3/9] chore(workflows): type-check in linters, full build in e2e --- .github/workflows/e2e.yml | 23 +++++++++++++---------- .github/workflows/pr.yml | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 80408a11f..c2442fcfb 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -1,19 +1,22 @@ -name: e2e +name: Cypress testing on: - push: - branches: [ "main" ] pull_request: - branches: [ "main" ] + branches: + - main + paths: + - '**/**.json' + - '**/**.js' + - '**/**.jsx' + - '**/**.ts' + - '**/**.tsx' jobs: - build_and_run_e2e: + e2e: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - - name: Build the stack + - uses: actions/checkout@v3 + - name: Setup Docker run: docker-compose -f docker-compose.ci.yml up -d - - - name: run e2e + - name: Run specs uses: cypress-io/github-action@v4 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index b9b9d3874..5aeb12c3f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -31,5 +31,5 @@ jobs: run: npm run lint - name: Unit run: npm run test - - name: Build - run: npm run build + - name: type-check + run: npm run type-check From 6c860ade3920cc15f0b5be472eb3263d70c13ce3 Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Wed, 9 Aug 2023 22:41:54 +0300 Subject: [PATCH 4/9] chore(e2e): run migrations before specs --- Dockerfile | 2 +- docker-compose.ci.yml | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index fa1009766..15b0a414c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:18.12.0-alpine as build WORKDIR /app COPY . . -RUN npm ci +RUN npm ci --no-audit --progress=false RUN npm run build FROM node:18.12.0-alpine AS runner diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index 5d3be3573..20ebc05dd 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -32,9 +32,11 @@ services: - NEXTAUTH_URL=http://localhost:3000 - NEXT_PUBLIC_NEXTAUTH_URL=http://localhost:3000 - NEXTAUTH_SECRET=ololo - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000/api/auth/signin"] - interval: 1s - timeout: 10s - retries: 10 - start_period: 3s + - ADMIN_EMAIL=test@taskany.org + - ADMIN_PASSWORD=test + - MAIL_USER=notify@taskany.org + - SENTRY_DISABLED=1 + - SENTRY_IGNORE_API_RESOLUTION_ERROR=1 + command: > + sh -c "node_modules/.bin/prisma migrate dev && + node_modules/.bin/concurrently 'node background/worker/index.js' 'node server.js'" From 54d3f9922089ab2972ee74baa619f76583c06189 Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Wed, 9 Aug 2023 23:44:24 +0300 Subject: [PATCH 5/9] chore: bump cypress --- .github/workflows/e2e.yml | 2 +- package-lock.json | 123 +++++++++++++++++++++++++++++--------- package.json | 2 +- 3 files changed, 98 insertions(+), 29 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index c2442fcfb..f9c913c57 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -19,4 +19,4 @@ jobs: - name: Setup Docker run: docker-compose -f docker-compose.ci.yml up -d - name: Run specs - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v5 diff --git a/package-lock.json b/package-lock.json index 2d35cc3f8..691ef9f10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -81,7 +81,7 @@ "@welldone-software/why-did-you-render": "7.0.1", "babel-eslint": "10.1.0", "babel-loader": "9.1.2", - "cypress": "11.2.0", + "cypress": "12.17.3", "dotenv": "16.3.1", "eslint": "8.46.0", "eslint-config-airbnb": "19.0.4", @@ -8908,14 +8908,15 @@ "license": "MIT" }, "node_modules/cypress": { - "version": "11.2.0", + "version": "12.17.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.3.tgz", + "integrity": "sha512-/R4+xdIDjUSLYkiQfwJd630S81KIgicmQOLXotFxVXkl+eTeVO+3bHXxdi5KBh/OgC33HWN33kHX+0tQR/ZWpg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^2.88.11", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", + "@types/node": "^16.18.39", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -8927,10 +8928,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -8945,12 +8946,12 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", "request-progress": "^3.0.0", - "semver": "^7.3.2", + "semver": "^7.5.3", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", @@ -8960,13 +8961,14 @@ "cypress": "bin/cypress" }, "engines": { - "node": ">=12.0.0" + "node": "^14.0.0 || ^16.0.0 || >=18.0.0" } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.36", - "dev": true, - "license": "MIT" + "version": "16.18.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.40.tgz", + "integrity": "sha512-+yno3ItTEwGxXiS/75Q/aHaa5srkpnJaH+kdkTVJ3DtJEwv92itpKbxU+FjPoh2m/5G9zmUQfrL4A4C13c+iGA==", + "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { "version": "4.3.0", @@ -9025,9 +9027,10 @@ "license": "MIT" }, "node_modules/cypress/node_modules/commander": { - "version": "5.1.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } @@ -9040,11 +9043,38 @@ "node": ">=8" } }, + "node_modules/cypress/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cypress/node_modules/proxy-from-env": { "version": "1.0.0", "dev": true, "license": "MIT" }, + "node_modules/cypress/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cypress/node_modules/supports-color": { "version": "8.1.1", "dev": true, @@ -9059,6 +9089,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/cypress/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/cyrillic-to-translit-js": { "version": "3.2.1", "license": "MIT", @@ -15886,8 +15922,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "license": "MIT", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -25957,12 +25994,14 @@ "version": "5.6.2" }, "cypress": { - "version": "11.2.0", + "version": "12.17.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.3.tgz", + "integrity": "sha512-/R4+xdIDjUSLYkiQfwJd630S81KIgicmQOLXotFxVXkl+eTeVO+3bHXxdi5KBh/OgC33HWN33kHX+0tQR/ZWpg==", "dev": true, "requires": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^2.88.11", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", + "@types/node": "^16.18.39", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -25974,10 +26013,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -25992,12 +26031,12 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", "request-progress": "^3.0.0", - "semver": "^7.3.2", + "semver": "^7.5.3", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", @@ -26005,7 +26044,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.36", + "version": "16.18.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.40.tgz", + "integrity": "sha512-+yno3ItTEwGxXiS/75Q/aHaa5srkpnJaH+kdkTVJ3DtJEwv92itpKbxU+FjPoh2m/5G9zmUQfrL4A4C13c+iGA==", "dev": true }, "ansi-styles": { @@ -26044,23 +26085,49 @@ "dev": true }, "commander": { - "version": "5.1.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "has-flag": { "version": "4.0.0", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "proxy-from-env": { "version": "1.0.0", "dev": true }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "supports-color": { "version": "8.1.1", "dev": true, "requires": { "has-flag": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -30355,7 +30422,9 @@ } }, "minimist": { - "version": "1.2.7" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "minimist-options": { "version": "4.1.0", diff --git a/package.json b/package.json index 9c4b93bce..97474c2ca 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "@welldone-software/why-did-you-render": "7.0.1", "babel-eslint": "10.1.0", "babel-loader": "9.1.2", - "cypress": "11.2.0", + "cypress": "12.17.3", "dotenv": "16.3.1", "eslint": "8.46.0", "eslint-config-airbnb": "19.0.4", From f000562ccaba1bb6c3c48d4cf623e93c9deaf339 Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Wed, 9 Aug 2023 23:44:44 +0300 Subject: [PATCH 6/9] chore(e2e): provide env variables --- .github/workflows/e2e.yml | 3 +++ cypress.config.ts | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index f9c913c57..bdc5b76da 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -20,3 +20,6 @@ jobs: run: docker-compose -f docker-compose.ci.yml up -d - name: Run specs uses: cypress-io/github-action@v5 + env: + CYPRESS_ADMIN_EMAIL: test@taskany.org + CYPRESS_ADMIN_PASSWORD: test diff --git a/cypress.config.ts b/cypress.config.ts index 0f1621850..d9e8b4728 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,7 +1,16 @@ -export default { +import { defineConfig } from 'cypress'; +import * as dotenv from 'dotenv'; + +dotenv.config(); + +export default defineConfig({ + env: { + ADMIN_EMAIL: process.env.ADMIN_EMAIL, + ADMIN_PASSWORD: process.env.ADMIN_PASSWORD, + }, e2e: { - baseUrl: `http://${process.env.CYPRESS_baseUrl || 'localhost'}:3000`, + baseUrl: 'http://localhost:3000', supportFile: false, }, video: false, -}; +}); From 7778405c616cb2f4a8055e462f1bbe6ee3237fdb Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Wed, 9 Aug 2023 23:45:53 +0300 Subject: [PATCH 7/9] test(e2e): sign in as admin --- cypress/e2e/dashboard.cy.ts | 16 ++++++++++++++++ cypress/e2e/home_page.cy.ts | 5 ----- 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 cypress/e2e/dashboard.cy.ts delete mode 100644 cypress/e2e/home_page.cy.ts diff --git a/cypress/e2e/dashboard.cy.ts b/cypress/e2e/dashboard.cy.ts new file mode 100644 index 000000000..ec1b4722e --- /dev/null +++ b/cypress/e2e/dashboard.cy.ts @@ -0,0 +1,16 @@ +const exactUrl = (route: string) => `${Cypress.config('baseUrl')}${route}`; + +describe('Dashboard', () => { + it('asks to sign in on fist visit', () => { + cy.visit('/'); + + cy.url().should('equal', exactUrl('/api/auth/signin')); + + cy.get('input[name=email]').type(Cypress.env('ADMIN_EMAIL')); + + // {enter} causes the form to submit + cy.get('input[name=password]').type(`${Cypress.env('ADMIN_PASSWORD')}{enter}`); + + cy.url().should('equal', exactUrl('/')); + }); +}); diff --git a/cypress/e2e/home_page.cy.ts b/cypress/e2e/home_page.cy.ts deleted file mode 100644 index cb8ec1c0e..000000000 --- a/cypress/e2e/home_page.cy.ts +++ /dev/null @@ -1,5 +0,0 @@ -describe('The Home Page', () => { - it('successfully loads', () => { - cy.visit('/api/auth/signin'); - }); -}); From b6bb7d45201763e91f118b434a9d8539ef569e0c Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Thu, 10 Aug 2023 00:04:09 +0300 Subject: [PATCH 8/9] chore(jest): resolve types conflicts --- package-lock.json | 500 ++++++++++++------- package.json | 3 +- src/utils/calculateDiffBetweenArrays.test.ts | 2 + src/utils/dateTime.test.ts | 2 + src/utils/keyPredictor.test.ts | 2 + 5 files changed, 321 insertions(+), 188 deletions(-) diff --git a/package-lock.json b/package-lock.json index 691ef9f10..4527127c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,12 +60,13 @@ "@commitlint/cli": "17.6.5", "@commitlint/config-conventional": "17.6.1", "@faker-js/faker": "7.6.0", + "@jest/globals": "29.6.2", "@next/bundle-analyzer": "13.4.12", "@prisma/client": "4.16.2", "@statoscope/webpack-plugin": "5.26.2", "@svgr/webpack": "7.0.0", "@types/cors": "2.8.13", - "@types/jest": "29.5.2", + "@types/jest": "29.5.3", "@types/markdown-it": "12.2.3", "@types/md5": "2.3.2", "@types/multer": "1.4.7", @@ -3776,35 +3777,38 @@ } }, "node_modules/@jest/environment": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", + "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/fake-timers": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^29.5.0" + "jest-mock": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", "dev": true, - "license": "MIT", "dependencies": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" + "expect": "^29.6.2", + "jest-snapshot": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", + "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", "dev": true, - "license": "MIT", "dependencies": { "jest-get-type": "^29.4.3" }, @@ -3813,30 +3817,32 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", + "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.2.tgz", + "integrity": "sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", + "@jest/types": "^29.6.1", + "jest-mock": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3968,11 +3974,12 @@ } }, "node_modules/@jest/schemas": { - "version": "29.4.3", + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", "dev": true, - "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4020,21 +4027,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", + "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", + "jest-haste-map": "^29.6.2", "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", + "jest-util": "^29.6.2", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -4114,11 +4122,12 @@ } }, "node_modules/@jest/types": { - "version": "29.5.0", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -4245,11 +4254,12 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "license": "MIT", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@mapbox/hast-util-table-cell-style": { @@ -5037,9 +5047,10 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.25.21", - "dev": true, - "license": "MIT" + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true }, "node_modules/@sinonjs/commons": { "version": "3.0.0", @@ -6520,9 +6531,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", - "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -6632,11 +6643,6 @@ "license": "MIT", "peer": true }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "dev": true, - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.5", "license": "MIT" @@ -9274,8 +9280,9 @@ }, "node_modules/diff-sequences": { "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -10473,15 +10480,17 @@ } }, "node_modules/expect": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.5.0", + "@jest/expect-utils": "^29.6.2", + "@types/node": "*", "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -12513,14 +12522,15 @@ } }, "node_modules/jest-diff": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", + "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "pretty-format": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -12528,8 +12538,9 @@ }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12542,8 +12553,9 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12557,8 +12569,9 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12568,21 +12581,24 @@ }, "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12705,19 +12721,20 @@ } }, "node_modules/jest-haste-map": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", + "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -12741,14 +12758,15 @@ } }, "node_modules/jest-matcher-utils": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", + "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.5.0", + "jest-diff": "^29.6.2", "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "pretty-format": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -12819,17 +12837,18 @@ } }, "node_modules/jest-message-util": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", + "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -12902,13 +12921,14 @@ } }, "node_modules/jest-mock": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", + "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-util": "^29.5.0" + "jest-util": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13253,33 +13273,31 @@ } }, "node_modules/jest-snapshot": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", + "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.5.0", + "expect": "^29.6.2", "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", + "jest-diff": "^29.6.2", "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" + "pretty-format": "^29.6.2", + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13338,6 +13356,33 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "dev": true, @@ -13349,12 +13394,19 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/jest-util": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", + "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -13592,12 +13644,13 @@ } }, "node_modules/jest-worker": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", + "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.5.0", + "jest-util": "^29.6.2", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -16848,11 +16901,12 @@ } }, "node_modules/pretty-format": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", + "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -22559,50 +22613,60 @@ } }, "@jest/environment": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", + "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", "dev": true, "requires": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/fake-timers": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^29.5.0" + "jest-mock": "^29.6.2" } }, "@jest/expect": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", "dev": true, "requires": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" + "expect": "^29.6.2", + "jest-snapshot": "^29.6.2" } }, "@jest/expect-utils": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", + "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", "dev": true, "requires": { "jest-get-type": "^29.4.3" } }, "@jest/fake-timers": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", + "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", "dev": true, "requires": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" } }, "@jest/globals": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.2.tgz", + "integrity": "sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==", "dev": true, "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", + "@jest/types": "^29.6.1", + "jest-mock": "^29.6.2" } }, "@jest/reporters": { @@ -22687,10 +22751,12 @@ } }, "@jest/schemas": { - "version": "29.4.3", + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", "dev": true, "requires": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" } }, "@jest/source-map": { @@ -22723,20 +22789,22 @@ } }, "@jest/transform": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", + "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", + "jest-haste-map": "^29.6.2", "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", + "jest-util": "^29.6.2", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -22787,10 +22855,12 @@ } }, "@jest/types": { - "version": "29.5.0", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", "dev": true, "requires": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -22875,10 +22945,12 @@ "version": "1.4.14" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@mapbox/hast-util-table-cell-style": { @@ -23362,7 +23434,9 @@ } }, "@sinclair/typebox": { - "version": "0.25.21", + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, "@sinonjs/commons": { @@ -24444,9 +24518,9 @@ } }, "@types/jest": { - "version": "29.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", - "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", "dev": true, "requires": { "expect": "^29.0.0", @@ -24543,10 +24617,6 @@ "dev": true, "peer": true }, - "@types/prettier": { - "version": "2.7.2", - "dev": true - }, "@types/prop-types": { "version": "15.7.5" }, @@ -26234,6 +26304,8 @@ }, "diff-sequences": { "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true }, "dir-glob": { @@ -27017,14 +27089,17 @@ "dev": true }, "expect": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", "dev": true, "requires": { - "@jest/expect-utils": "^29.5.0", + "@jest/expect-utils": "^29.6.2", + "@types/node": "*", "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2" } }, "extend": { @@ -28257,17 +28332,21 @@ } }, "jest-diff": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", + "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "pretty-format": "^29.6.2" }, "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -28275,6 +28354,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -28283,6 +28364,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -28290,14 +28373,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -28379,10 +28468,12 @@ "dev": true }, "jest-haste-map": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", + "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", "dev": true, "requires": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -28390,8 +28481,8 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", "micromatch": "^4.0.4", "walker": "^1.0.8" } @@ -28405,13 +28496,15 @@ } }, "jest-matcher-utils": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", + "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.5.0", + "jest-diff": "^29.6.2", "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "pretty-format": "^29.6.2" }, "dependencies": { "ansi-styles": { @@ -28454,16 +28547,18 @@ } }, "jest-message-util": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", + "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -28508,12 +28603,14 @@ } }, "jest-mock": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", + "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", "dev": true, "requires": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-util": "^29.5.0" + "jest-util": "^29.6.2" } }, "jest-pnp-resolver": { @@ -28741,32 +28838,31 @@ } }, "jest-snapshot": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", + "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", "dev": true, "requires": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.5.0", + "expect": "^29.6.2", "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", + "jest-diff": "^29.6.2", "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" + "pretty-format": "^29.6.2", + "semver": "^7.5.3" }, "dependencies": { "ansi-styles": { @@ -28799,20 +28895,46 @@ "version": "4.0.0", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "supports-color": { "version": "7.2.0", "dev": true, "requires": { "has-flag": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "jest-util": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", + "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", "dev": true, "requires": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -28964,11 +29086,13 @@ } }, "jest-worker": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", + "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", "dev": true, "requires": { "@types/node": "*", - "jest-util": "^29.5.0", + "jest-util": "^29.6.2", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -30979,10 +31103,12 @@ "dev": true }, "pretty-format": { - "version": "29.5.0", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", + "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", "dev": true, "requires": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, diff --git a/package.json b/package.json index 97474c2ca..d19cc0fb4 100644 --- a/package.json +++ b/package.json @@ -76,12 +76,13 @@ "@commitlint/cli": "17.6.5", "@commitlint/config-conventional": "17.6.1", "@faker-js/faker": "7.6.0", + "@jest/globals": "29.6.2", "@next/bundle-analyzer": "13.4.12", "@prisma/client": "4.16.2", "@statoscope/webpack-plugin": "5.26.2", "@svgr/webpack": "7.0.0", "@types/cors": "2.8.13", - "@types/jest": "29.5.2", + "@types/jest": "29.5.3", "@types/markdown-it": "12.2.3", "@types/md5": "2.3.2", "@types/multer": "1.4.7", diff --git a/src/utils/calculateDiffBetweenArrays.test.ts b/src/utils/calculateDiffBetweenArrays.test.ts index 012fd100d..02310ea60 100644 --- a/src/utils/calculateDiffBetweenArrays.test.ts +++ b/src/utils/calculateDiffBetweenArrays.test.ts @@ -1,3 +1,5 @@ +import { test, expect } from '@jest/globals'; + import { calculateDiffBetweenArrays } from './calculateDiffBetweenArrays'; const objectArray1 = Array.from({ length: 7 }, (_, index) => ({ id: index + 1 })); // [{ id: 1..7 }] diff --git a/src/utils/dateTime.test.ts b/src/utils/dateTime.test.ts index 3798524d3..9cc53aac9 100644 --- a/src/utils/dateTime.test.ts +++ b/src/utils/dateTime.test.ts @@ -1,3 +1,5 @@ +import { test, expect } from '@jest/globals'; + import { TLocale } from './getLang'; import { availableYears, diff --git a/src/utils/keyPredictor.test.ts b/src/utils/keyPredictor.test.ts index 483208b42..785b974d2 100644 --- a/src/utils/keyPredictor.test.ts +++ b/src/utils/keyPredictor.test.ts @@ -1,3 +1,5 @@ +import { test, expect } from '@jest/globals'; + import { keyPredictor } from './keyPredictor'; describe('keyPredictor', () => { From 065c274ca8069ede887279b723c8bdfc2faf7cdc Mon Sep 17 00:00:00 2001 From: Tony Vi Date: Thu, 10 Aug 2023 00:20:20 +0300 Subject: [PATCH 9/9] chore(e2e): seed db before run --- .env.ci | 11 +++++++++++ Dockerfile.ci | 30 ++++++++++++++++++++++++++++++ app_run.ci.sh | 4 ++++ docker-compose.ci.yml | 15 +-------------- package.json | 2 +- 5 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 .env.ci create mode 100644 Dockerfile.ci create mode 100644 app_run.ci.sh diff --git a/.env.ci b/.env.ci new file mode 100644 index 000000000..888369cd1 --- /dev/null +++ b/.env.ci @@ -0,0 +1,11 @@ +NODE_ENV=production + +DATABASE_URL=postgresql://prisma:hilly-sand-pit@db:5432/prisma?schema=prisma-pg-test +NEXTAUTH_URL=http://localhost:3000 +NEXT_PUBLIC_NEXTAUTH_URL=http://localhost:3000 +NEXTAUTH_SECRET=ololo +ADMIN_EMAIL=test@taskany.org +ADMIN_PASSWORD=test +MAIL_USER=notify@taskany.org +SENTRY_DISABLED=1 +SENTRY_IGNORE_API_RESOLUTION_ERROR=1 diff --git a/Dockerfile.ci b/Dockerfile.ci new file mode 100644 index 000000000..f77d3a73d --- /dev/null +++ b/Dockerfile.ci @@ -0,0 +1,30 @@ +FROM node:18.12.0-alpine as build + +WORKDIR /app +COPY . . +RUN mv .env.ci .env +RUN npm ci --no-audit --progress=false +RUN npx next telemetry disable +RUN npm run build + +FROM node:18.12.0-alpine AS runner + +WORKDIR /app +COPY --from=build /app/.env ./ +COPY --from=build /app/app_run.ci.sh ./ +COPY --from=build /app/src ./src +COPY --from=build /app/package*.json ./ +COPY --from=build /app/prisma ./prisma +COPY --from=build /app/public ./public +COPY --from=build /app/version ./public/version.txt +COPY --from=build /app/.next ./.next +COPY --from=build /app/next.config.js ./ +COPY --from=build /app/.next/standalone ./ +COPY --from=build /app/background ./background +COPY --from=build /app/node_modules ./node_modules + +RUN npx prisma generate + +EXPOSE 3000 + +CMD sh ./app_run.ci.sh diff --git a/app_run.ci.sh b/app_run.ci.sh new file mode 100644 index 000000000..3abd881d7 --- /dev/null +++ b/app_run.ci.sh @@ -0,0 +1,4 @@ +#!/bin/sh +npx prisma migrate deploy +npx prisma db seed +node_modules/.bin/concurrently 'node background/worker/index.js' 'node server.js' diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index 20ebc05dd..84c6073b7 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -24,19 +24,6 @@ services: - 3000:3000 build: context: . - dockerfile: Dockerfile + dockerfile: Dockerfile.ci depends_on: - db - environment: - - DATABASE_URL=postgresql://prisma:hilly-sand-pit@db:5432/prisma?schema=prisma-pg-test - - NEXTAUTH_URL=http://localhost:3000 - - NEXT_PUBLIC_NEXTAUTH_URL=http://localhost:3000 - - NEXTAUTH_SECRET=ololo - - ADMIN_EMAIL=test@taskany.org - - ADMIN_PASSWORD=test - - MAIL_USER=notify@taskany.org - - SENTRY_DISABLED=1 - - SENTRY_IGNORE_API_RESOLUTION_ERROR=1 - command: > - sh -c "node_modules/.bin/prisma migrate dev && - node_modules/.bin/concurrently 'node background/worker/index.js' 'node server.js'" diff --git a/package.json b/package.json index d19cc0fb4..1707c74eb 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "db:migrate": "npx prisma migrate deploy", "db:seed": "npx prisma db seed", "worker": "ts-node -r dotenv/config src/utils/worker/index.ts", - "build": "next build && npm run build:worker", + "build": "concurrently \"next build\" \"npm run build:worker\"", "build:worker": "tsc -p ./src/utils/worker", "build:analyze": "ANALYZE=true next build", "start": "concurrently \"npm run worker\" \"next start\"",