diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 890e6b2d..814c73a1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,7 +45,7 @@ jobs: - name: setup node.js uses: actions/setup-node@master with: - node-version: 20.x + node-version: 18.x - name: setup pnpm uses: pnpm/action-setup@v2 diff --git a/backend/Dockerfile b/backend/Dockerfile index bfaa842f..c5b27131 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20-alpine +FROM node:18-alpine # https://github.com/pnpm/pnpm/issues/4495#issuecomment-1317831712 ENV PNPM_HOME="/root/.local/share/pnpm" ENV PATH="${PATH}:${PNPM_HOME}" diff --git a/backend/package.json b/backend/package.json index 8eb248f3..743df35d 100644 --- a/backend/package.json +++ b/backend/package.json @@ -7,7 +7,7 @@ "author": "jolim, chanykim, tkim, jimin, wocho, seongyle, seunam", "license": "MIT", "engines": { - "node": ">=20.0.0" + "node": ">=20.3.1 || >=18.16.1 <20.0.0" }, "scripts": { "start": "node dist/server.js", @@ -26,7 +26,7 @@ "@types/jest": "^29.5.2", "@types/jsonwebtoken": "^9.0.2", "@types/morgan": "^1.9.4", - "@types/node": "^20.3.1", + "@types/node": "^18.16.1", "@types/node-schedule": "^2.1.0", "@types/passport": "^1.0.12", "@types/passport-jwt": "^3.0.8", diff --git a/backend/pnpm-lock.yaml b/backend/pnpm-lock.yaml index 877459ea..1e57c05d 100644 --- a/backend/pnpm-lock.yaml +++ b/backend/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -125,8 +125,8 @@ devDependencies: specifier: ^1.9.4 version: 1.9.4 '@types/node': - specifier: ^20.3.1 - version: 20.3.1 + specifier: ^18.16.1 + version: 18.16.1 '@types/node-schedule': specifier: ^2.1.0 version: 2.1.0 @@ -159,7 +159,7 @@ devDependencies: version: 2.27.5(@typescript-eslint/parser@5.60.0)(eslint@8.43.0) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.1)(ts-node@10.9.1) nodemon: specifier: ^2.0.22 version: 2.0.22 @@ -171,7 +171,7 @@ devDependencies: version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@5.0.4) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.3.1)(typescript@5.0.4) + version: 10.9.1(@types/node@18.16.1)(typescript@5.0.4) typescript: specifier: 5.0.4 version: 5.0.4 @@ -659,7 +659,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -679,14 +679,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.1)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -712,7 +712,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 jest-mock: 29.5.0 /@jest/expect-utils@29.5.0: @@ -736,7 +736,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -767,7 +767,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.3.1 + '@types/node': 18.16.1 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -849,7 +849,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.1 + '@types/node': 18.16.1 '@types/yargs': 17.0.24 chalk: 4.1.2 @@ -969,7 +969,7 @@ packages: resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: false /@slack/types@2.8.0: @@ -984,7 +984,7 @@ packages: '@slack/logger': 3.0.0 '@slack/types': 2.8.0 '@types/is-stream': 1.1.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 axios: 0.26.1 eventemitter3: 3.1.2 form-data: 2.5.1 @@ -1046,20 +1046,20 @@ packages: /@types/bcrypt@5.0.0: resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/cookie-parser@1.4.3: @@ -1071,13 +1071,13 @@ packages: /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -1095,7 +1095,7 @@ packages: /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} @@ -1104,7 +1104,7 @@ packages: /@types/is-stream@1.1.0: resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: false /@types/istanbul-lib-coverage@2.0.4: @@ -1137,7 +1137,7 @@ packages: /@types/jsonwebtoken@9.0.2: resolution: {integrity: sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/mime@1.3.2: @@ -1151,21 +1151,21 @@ packages: /@types/morgan@1.9.4: resolution: {integrity: sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/node-schedule@2.1.0: resolution: {integrity: sha512-NiTwl8YN3v/1YCKrDFSmCTkVxFDylueEqsOFdgF+vPsm+AlyJKGAo5yzX1FiOxPsZiN6/r8gJitYx2EaSuBmmg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false - /@types/node@20.3.1: - resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} + /@types/node@18.16.1: + resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==} /@types/passport-jwt@3.0.8: resolution: {integrity: sha512-VKJZDJUAHFhPHHYvxdqFcc5vlDht8Q2pL1/ePvKAgqRThDaCc84lSYOTQmnx3+JIkDlN+2KfhFhXIzlcVT+Pcw==} @@ -1202,7 +1202,7 @@ packages: /@types/readable-stream@2.3.15: resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 safe-buffer: 5.1.2 dev: false @@ -1218,14 +1218,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/serve-static@1.15.1: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 20.3.1 + '@types/node': 18.16.1 dev: true /@types/stack-utils@2.0.1: @@ -3606,7 +3606,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -3625,7 +3625,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli@29.5.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.16.1)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3642,7 +3642,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.1)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -3652,7 +3652,7 @@ packages: - supports-color - ts-node - /jest-config@29.5.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest-config@29.5.0(@types/node@18.16.1)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -3667,7 +3667,7 @@ packages: '@babel/core': 7.22.5 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 babel-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 ci-info: 3.8.0 @@ -3687,7 +3687,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.1)(typescript@5.0.4) transitivePeerDependencies: - supports-color @@ -3723,7 +3723,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -3737,7 +3737,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 - '@types/node': 20.3.1 + '@types/node': 18.16.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -3785,7 +3785,7 @@ packages: jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.1)(ts-node@10.9.1) ts-essentials: 7.0.3(typescript@5.0.4) typescript: 5.0.4 dev: false @@ -3795,7 +3795,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 jest-util: 29.5.0 /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): @@ -3845,7 +3845,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -3875,7 +3875,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.1 @@ -3928,7 +3928,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -3951,7 +3951,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.16.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -3962,12 +3962,12 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.16.1 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.5.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.16.1)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3980,7 +3980,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.1)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -5780,7 +5780,7 @@ packages: '@babel/core': 7.22.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.1)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -5790,7 +5790,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@20.3.1)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.16.1)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -5809,7 +5809,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.3.1 + '@types/node': 18.16.1 acorn: 8.9.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -6088,7 +6088,7 @@ packages: pg: 8.11.0 reflect-metadata: 0.1.13 sha.js: 2.4.11 - ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.1)(typescript@5.0.4) tslib: 2.5.2 uuid: 8.3.2 xml2js: 0.4.23 diff --git a/migration/Dockerfile b/migration/Dockerfile index a3eeb86c..6aae6800 100644 --- a/migration/Dockerfile +++ b/migration/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20-alpine +FROM node:18-alpine ENV PNPM_HOME="/root/.local/share/pnpm" ENV PATH="${PATH}:${PNPM_HOME}" RUN npm install --global pnpm