From 76f05de6d3200cc3854218c3be076e5c868e335b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Tue, 21 Mar 2023 12:03:15 +0100 Subject: [PATCH 01/33] Added oracledb package --- .eslintrc.json | 6 ++-- .gitignore | 3 +- package.json | 21 +++++------ src/databaseConnection.ts | 75 +++++++++++++++++++++++++++++++++++++++ src/secrets.ts | 1 + yarn.lock | 26 +++++++++++--- 6 files changed, 115 insertions(+), 17 deletions(-) create mode 100644 src/databaseConnection.ts create mode 100644 src/secrets.ts diff --git a/.eslintrc.json b/.eslintrc.json index fdc8836..e904922 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,7 +1,7 @@ { "env": { - "browser": true, - "es2021": true + "es2021": true, + "node": true }, "extends": "standard-with-typescript", "overrides": [ @@ -12,5 +12,7 @@ "project": "./tsconfig.json" }, "rules": { + "@typescript-eslint/space-before-function-paren": "off", + "@typescript-eslint/comma-dangle": "off" } } diff --git a/.gitignore b/.gitignore index 64f046d..e8a7219 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ dist/ node_modules/ -coverage/ \ No newline at end of file +coverage/ +yarn-error.log \ No newline at end of file diff --git a/package.json b/package.json index e3154b9..b40d128 100644 --- a/package.json +++ b/package.json @@ -18,27 +18,28 @@ "devDependencies": { "@types/express": "^4.17.17", "@types/jest": "^29.4.4", + "@types/oracledb": "^5.2.4", "@typescript-eslint/eslint-plugin": "^5.43.0", "eslint": "^8.0.1", "eslint-config-standard-with-typescript": "^34.0.1", "eslint-plugin-import": "^2.25.2", "eslint-plugin-n": "^15.0.0", "eslint-plugin-promise": "^6.0.0", + "husky": "^8.0.0", "prettier": "2.8.4", "ts-jest": "^29.0.5", - "typescript": "4.9.5", - "husky": "^8.0.0" + "typescript": "4.9.5" }, "dependencies": { "express": "^4.18.2", - "jest": "^29.5.0" + "jest": "^29.5.0", + "oracledb": "^5.5.0" }, - "jest" : { - "collectCoverage": true, - "testEnvironment": "node", - "collectCoverageFrom": [ - "src/*.ts" - ] - + "jest": { + "collectCoverage": true, + "testEnvironment": "node", + "collectCoverageFrom": [ + "src/*.ts" + ] } } diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts new file mode 100644 index 0000000..c443899 --- /dev/null +++ b/src/databaseConnection.ts @@ -0,0 +1,75 @@ +import oracledb, { type Connection } from 'oracledb' +import { oraclePassword } from './secrets' + +export async function databaseConnect(): Promise { + return await oracledb.getConnection({ + user: 'kw438800', + password: oraclePassword, + connectionString: 'labora.mimuw.edu.pl/LABS', + }) +} + +export async function databaseInit(): Promise { + // Connect + let connection: Connection | undefined + + // Create the tables + // This will fail if tables already exist, but we don't care + try { + connection = await databaseConnect() + + try { + await connection.execute( + `CREATE TABLE Players ( + id NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1) PRIMARY KEY, + token VARCHAR(250) NOT NULL, + nickname VARCHAR(20) NOT NULL, + turn INTEGER NOT NULL, + game_id VARCHAR(6), + card1 VARCHAR(3), + card2 VARCHAR(3), + funds INTEGER, + bet INTEGER + )` + ) + } catch (err) { + console.error(err) + } + + try { + await connection.execute( + `CREATE TABLE Games ( + game_id VARCHAR(6) PRIMARY KEY, + game_master NOT NULL REFERENCES Players, + card1 VARCHAR(3), + card2 VARCHAR(3), + card3 VARCHAR(3), + card4 VARCHAR(3), + card5 VARCHAR(3), + game_round INTEGER DEFAULT 0 NOT NULL, + starting_funds INTEGER NOT NULL, + small_blind INTEGER NOT NULL, + small_blind_who REFERENCES Players, + current_table_value INTEGER, + current_player REFERENCES Players + )` + ) + } catch (err) { + console.error(err) + } + } catch (err) { + console.error(err) + } finally { + if (connection !== undefined) { + try { + await connection.close() + } catch (err) { + console.error(err) + } + } + } +} + +export function boolToInt(bool: boolean): number { + return bool ? 1 : 0 +} diff --git a/src/secrets.ts b/src/secrets.ts new file mode 100644 index 0000000..b4460f0 --- /dev/null +++ b/src/secrets.ts @@ -0,0 +1 @@ +export const oraclePassword = '' diff --git a/yarn.lock b/yarn.lock index ac24984..f34a2a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -759,6 +759,14 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== +"@types/oracledb@^5.2.4": + version "5.2.4" + resolved "https://registry.yarnpkg.com/@types/oracledb/-/oracledb-5.2.4.tgz#cfefde359235d0d656fe901b4b002ce15be9bb24" + integrity sha512-LalV4PvjLZtNERITHyXlPLhZvE4O8HKCRZz46reIj5QV+gpVFLtAr05Ghsg53Ujk03ldK6itUyVNITELSRluZA== + dependencies: + "@types/node" "*" + dotenv "^8.2.0" + "@types/prettier@^2.1.5": version "2.7.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" @@ -1394,6 +1402,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dotenv@^8.2.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3056,6 +3069,11 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +oracledb@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/oracledb/-/oracledb-5.5.0.tgz#0cf9af5d0c0815f74849ae9ed56aee823514d71b" + integrity sha512-i5cPvMENpZP8nnqptB6l0pjiOyySj1IISkbM4Hr3yZEDdANo2eezarwZb9NQ8fTh5pRjmgpZdSyIbnn9N3AENw== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -3648,10 +3666,10 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@*: - version "5.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.2.tgz#891e1a90c5189d8506af64b9ef929fca99ba1ee5" - integrity sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw== +typescript@4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== unbox-primitive@^1.0.2: version "1.0.2" From 5f79090a9d62333445e554aa21b47d81e135f606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Tue, 21 Mar 2023 12:06:36 +0100 Subject: [PATCH 02/33] Added init to index.ts --- src/index.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index c18e69a..f95edc9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,5 @@ import express from 'express' +import { databaseInit } from './databaseConnection' const app = express() export const port = 42069 @@ -7,6 +8,14 @@ app.get('/test', (req, res) => { res.send('Hello from typescript express!') }) -app.listen(port, () => { - console.log(`[server]: Server is running at localhost:${port}`) -}) +databaseInit() + .then(() => { + // Only start listening if database connection was successful + app.listen(port, () => { + console.log(`[server]: Server is running at localhost:${port}`) + }) + }) + .catch(() => { + // Don't start the server in case of an error + console.log('Failed to init database') + }) From f1d65d3179db476767bb1d145913f785e3de78ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 19:22:39 +0100 Subject: [PATCH 03/33] Moved credentials out of databaseConnection.ts --- src/databaseConnection.ts | 6 +++--- src/secrets.ts | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts index c443899..820266a 100644 --- a/src/databaseConnection.ts +++ b/src/databaseConnection.ts @@ -1,11 +1,11 @@ import oracledb, { type Connection } from 'oracledb' -import { oraclePassword } from './secrets' +import { oracleConnectionString, oraclePassword, oracleUser } from './secrets' export async function databaseConnect(): Promise { return await oracledb.getConnection({ - user: 'kw438800', + user: oracleUser, password: oraclePassword, - connectionString: 'labora.mimuw.edu.pl/LABS', + connectionString: oracleConnectionString, }) } diff --git a/src/secrets.ts b/src/secrets.ts index b4460f0..b299330 100644 --- a/src/secrets.ts +++ b/src/secrets.ts @@ -1 +1,3 @@ +export const oracleUser = '' export const oraclePassword = '' +export const oracleConnectionString = '' From ea019d6c01797e66ce52c2b1b0443d6b1c15870f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 19:23:33 +0100 Subject: [PATCH 04/33] Added secrets to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e8a7219..161a8be 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ dist/ node_modules/ coverage/ -yarn-error.log \ No newline at end of file +yarn-error.log +src/secrets.ts \ No newline at end of file From 234c88d63ed261f961fe269ecdf2b50b010ae048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 19:24:29 +0100 Subject: [PATCH 05/33] Removed secrets from repo --- src/secrets.ts | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 src/secrets.ts diff --git a/src/secrets.ts b/src/secrets.ts deleted file mode 100644 index b299330..0000000 --- a/src/secrets.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const oracleUser = '' -export const oraclePassword = '' -export const oracleConnectionString = '' From efa2ef9e1e408c8a68f043f7a8f0ea2fdf27679c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 21:19:27 +0100 Subject: [PATCH 06/33] Minor fixes --- src/databaseConnection.ts | 6 +++++- src/index.ts | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts index 820266a..520cf97 100644 --- a/src/databaseConnection.ts +++ b/src/databaseConnection.ts @@ -1,5 +1,9 @@ import oracledb, { type Connection } from 'oracledb' -import { oracleConnectionString, oraclePassword, oracleUser } from './secrets' +import { + oracleConnectionString, + oraclePassword, + oracleUser, +} from './secrets.js' export async function databaseConnect(): Promise { return await oracledb.getConnection({ diff --git a/src/index.ts b/src/index.ts index f95edc9..363ff07 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import express from 'express' -import { databaseInit } from './databaseConnection' +import { databaseInit } from './databaseConnection.js' const app = express() export const port = 42069 From 76b74b36ef9abd9a76d4832419b76c594c793b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 22:38:00 +0100 Subject: [PATCH 07/33] Update CI --- .github/workflows/main.yml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7b3b2ea..734a6dd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,32 +1,27 @@ -# This is a basic workflow to help you get started with Actions - name: CI (build) -# Controls when the workflow will run on: - # Triggers the workflow on push or pull request events but only for the main branch push: branches: [main] pull_request: branches: [main] - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains a single job called "build" build: - # The type of runner that the job will run on runs-on: ubuntu-latest steps: - # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - uses: actions/setup-node@v3 with: node-version: 18 + - name: Setup secrets + env: + FILE: ${{ secrets.SECRET.TS }} + run: + - echo $FILE > src/secrets.ts + - name: yarn install, build typescript run: | yarn install From 03a1f924b531ae874dd0aa17cd160c59a7191b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 22:40:21 +0100 Subject: [PATCH 08/33] Update CI --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 734a6dd..43977f8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,8 +19,8 @@ jobs: - name: Setup secrets env: FILE: ${{ secrets.SECRET.TS }} - run: - - echo $FILE > src/secrets.ts + run: | + echo $FILE > src/secrets.ts - name: yarn install, build typescript run: | From 59a188a32dff84377b50f8d44b8f75100614cb85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 22:44:14 +0100 Subject: [PATCH 09/33] Update CI --- .github/workflows/main.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 43977f8..f5fde70 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,9 +18,8 @@ jobs: - name: Setup secrets env: - FILE: ${{ secrets.SECRET.TS }} - run: | - echo $FILE > src/secrets.ts + FILE: ${{ secrets.SECRETS_TS }} + run: echo $FILE > src/secrets.ts - name: yarn install, build typescript run: | From b4b2d01a6ee7f4e49f670b0cc8dc4e33e8865668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 22:56:35 +0100 Subject: [PATCH 10/33] Added print for debugging workflow --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f5fde70..ad492e6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,9 @@ jobs: - name: Setup secrets env: FILE: ${{ secrets.SECRETS_TS }} - run: echo $FILE > src/secrets.ts + run: | + echo $FILE > src/secrets.ts + cat src/secrets.ts - name: yarn install, build typescript run: | From b9121e3e5a5224a0c18032027ca45bdd9dd6d315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 23:03:28 +0100 Subject: [PATCH 11/33] Removed debug print --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ad492e6..3540c8e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,7 +21,6 @@ jobs: FILE: ${{ secrets.SECRETS_TS }} run: | echo $FILE > src/secrets.ts - cat src/secrets.ts - name: yarn install, build typescript run: | From b1fe98cbb7a19a6dead3e8a26be2c4da041818cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 23:07:55 +0100 Subject: [PATCH 12/33] Updated test CI --- .github/workflows/test.yml | 18 ++++++------------ src/index.ts | 1 + 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ab39dbc..41102ef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,33 +1,27 @@ -# This is a basic workflow to help you get started with Actions - name: CI (test) -# Controls when the workflow will run on: push: branches: [main] pull_request: branches: [main] - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains a single job called "build" test: - # The type of runner that the job will run on runs-on: ubuntu-latest - # Steps represent a sequence of tasks that will be executed as part of the job steps: - # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - uses: actions/setup-node@v3 with: node-version: 18 - # Runs a set of commands using the runners shell + - name: Setup secrets + env: + FILE: ${{ secrets.SECRETS_TS }} + run: | + echo $FILE > src/secrets.ts + - name: Start server run: | yarn install diff --git a/src/index.ts b/src/index.ts index 363ff07..6b2ba1c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,4 +18,5 @@ databaseInit() .catch(() => { // Don't start the server in case of an error console.log('Failed to init database') + process.exit(1) }) From 7a9fedcbef435bd5eae07549a869e34aa667e3c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Wed, 22 Mar 2023 23:17:36 +0100 Subject: [PATCH 13/33] Made server fail to start if database connection cannot be established --- src/databaseConnection.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts index 520cf97..05f1c42 100644 --- a/src/databaseConnection.ts +++ b/src/databaseConnection.ts @@ -16,6 +16,7 @@ export async function databaseConnect(): Promise { export async function databaseInit(): Promise { // Connect let connection: Connection | undefined + let success = true // Create the tables // This will fail if tables already exist, but we don't care @@ -63,6 +64,7 @@ export async function databaseInit(): Promise { } } catch (err) { console.error(err) + success = false } finally { if (connection !== undefined) { try { @@ -72,6 +74,12 @@ export async function databaseInit(): Promise { } } } + + if (success) { + await Promise.resolve() + } else { + await Promise.reject(new Error('Failed to connect to database')) + } } export function boolToInt(bool: boolean): number { From 3af45c40200c28a90e93029b07e21ac2cf2ab4a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 09:57:38 +0100 Subject: [PATCH 14/33] Made tests run in docker container --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 41102ef..ff41b57 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,6 +9,7 @@ on: jobs: test: runs-on: ubuntu-latest + container: ghcr.io/oracle/oraclelinux8-instantclient:21 steps: - uses: actions/checkout@v2 From eb985624f8438a7379dc0f990633bcfdcc36cde0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 10:35:58 +0100 Subject: [PATCH 15/33] try installing oracle libraries --- .github/workflows/test.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ff41b57..a984ed0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,7 +9,6 @@ on: jobs: test: runs-on: ubuntu-latest - container: ghcr.io/oracle/oraclelinux8-instantclient:21 steps: - uses: actions/checkout@v2 @@ -17,6 +16,12 @@ jobs: with: node-version: 18 + - name: Setup Oracle instant client + run: | + wget https://students.mimuw.edu.pl/~kw438800/instantclient.rpm + sudo apt install alien libaio1 + sudo alien -i instantclient.rpm + - name: Setup secrets env: FILE: ${{ secrets.SECRETS_TS }} From 9cdac378ed876d83685fe7acc394a38c3d65619a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 10:50:52 +0100 Subject: [PATCH 16/33] More testing --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a984ed0..dd91b8a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,6 +21,7 @@ jobs: wget https://students.mimuw.edu.pl/~kw438800/instantclient.rpm sudo apt install alien libaio1 sudo alien -i instantclient.rpm + sqlplus - name: Setup secrets env: From 776169bd2c756389bc40362fa19416c5caf60f7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 10:59:41 +0100 Subject: [PATCH 17/33] more debugging info --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dd91b8a..7da7aea 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,6 +21,7 @@ jobs: wget https://students.mimuw.edu.pl/~kw438800/instantclient.rpm sudo apt install alien libaio1 sudo alien -i instantclient.rpm + ls /opt/oracle sqlplus - name: Setup secrets From 6943bc41e2b457fecaa8bb514273bed34644ad36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 11:03:50 +0100 Subject: [PATCH 18/33] tried fix --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7da7aea..6349b62 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,7 +21,7 @@ jobs: wget https://students.mimuw.edu.pl/~kw438800/instantclient.rpm sudo apt install alien libaio1 sudo alien -i instantclient.rpm - ls /opt/oracle + export PATH=/usr/lib/oracle/21.9/client64/bin:$PATH sqlplus - name: Setup secrets From afb3ac18113d2eb871cadd47c3f329dfc21ab063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 11:07:05 +0100 Subject: [PATCH 19/33] tried fix --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6349b62..c1e0927 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,6 @@ jobs: sudo apt install alien libaio1 sudo alien -i instantclient.rpm export PATH=/usr/lib/oracle/21.9/client64/bin:$PATH - sqlplus - name: Setup secrets env: From cbfaf98bd1845aea0bf79139ccdf91b6b07d9ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 12:02:37 +0100 Subject: [PATCH 20/33] Replaced oracle with postgres --- .github/workflows/test.yml | 7 --- package.json | 2 +- yarn.lock | 98 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 94 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c1e0927..41102ef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,13 +16,6 @@ jobs: with: node-version: 18 - - name: Setup Oracle instant client - run: | - wget https://students.mimuw.edu.pl/~kw438800/instantclient.rpm - sudo apt install alien libaio1 - sudo alien -i instantclient.rpm - export PATH=/usr/lib/oracle/21.9/client64/bin:$PATH - - name: Setup secrets env: FILE: ${{ secrets.SECRETS_TS }} diff --git a/package.json b/package.json index b40d128..c2bc11b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "dependencies": { "express": "^4.18.2", "jest": "^29.5.0", - "oracledb": "^5.5.0" + "pg": "^8.10.0" }, "jest": { "collectCoverage": true, diff --git a/yarn.lock b/yarn.lock index f34a2a0..9366407 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1156,6 +1156,11 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== + builtins@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" @@ -3069,11 +3074,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -oracledb@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/oracledb/-/oracledb-5.5.0.tgz#0cf9af5d0c0815f74849ae9ed56aee823514d71b" - integrity sha512-i5cPvMENpZP8nnqptB6l0pjiOyySj1IISkbM4Hr3yZEDdANo2eezarwZb9NQ8fTh5pRjmgpZdSyIbnn9N3AENw== - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -3107,6 +3107,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +packet-reader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -3159,6 +3164,57 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pg-connection-string@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" + integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== + +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-pool@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" + integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== + +pg-protocol@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== + +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg@^8.10.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.10.0.tgz#5b8379c9b4a36451d110fc8cd98fc325fe62ad24" + integrity sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ== + dependencies: + buffer-writer "2.0.0" + packet-reader "1.0.0" + pg-connection-string "^2.5.0" + pg-pool "^3.6.0" + pg-protocol "^1.6.0" + pg-types "^2.1.0" + pgpass "1.x" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -3181,6 +3237,28 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -3441,6 +3519,11 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +split2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3784,6 +3867,11 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" From f88f45c4d5954dd35912bb040bf99c6ebea0d5e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 12:49:12 +0100 Subject: [PATCH 21/33] Updated queries for postgres --- package.json | 1 + src/databaseConnection.ts | 70 +++++++++++++++------------------------ yarn.lock | 13 ++++++-- 3 files changed, 38 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index c2bc11b..7810477 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "typescript": "4.9.5" }, "dependencies": { + "@types/pg": "^8.6.6", "express": "^4.18.2", "jest": "^29.5.0", "pg": "^8.10.0" diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts index 05f1c42..45c1b0c 100644 --- a/src/databaseConnection.ts +++ b/src/databaseConnection.ts @@ -1,40 +1,28 @@ -import oracledb, { type Connection } from 'oracledb' -import { - oracleConnectionString, - oraclePassword, - oracleUser, -} from './secrets.js' +import { Client } from 'pg' -export async function databaseConnect(): Promise { - return await oracledb.getConnection({ - user: oracleUser, - password: oraclePassword, - connectionString: oracleConnectionString, - }) -} +const client = new Client() export async function databaseInit(): Promise { - // Connect - let connection: Connection | undefined let success = true - // Create the tables - // This will fail if tables already exist, but we don't care try { - connection = await databaseConnect() + // Connect + await client.connect() + // Create the tables + // This will fail if tables already exist, but we don't care try { - await connection.execute( - `CREATE TABLE Players ( - id NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1) PRIMARY KEY, - token VARCHAR(250) NOT NULL, + await client.query( + `CREATE TABLE IF NOT EXISTS Players ( + id SERIAL UNIQUE NOT NULL, + token VARCHAR(250) NOT NULL PRIMARY KEY, nickname VARCHAR(20) NOT NULL, - turn INTEGER NOT NULL, + turn BIGINT NOT NULL, game_id VARCHAR(6), card1 VARCHAR(3), card2 VARCHAR(3), - funds INTEGER, - bet INTEGER + funds BIGINT, + bet BIGINT )` ) } catch (err) { @@ -42,21 +30,21 @@ export async function databaseInit(): Promise { } try { - await connection.execute( - `CREATE TABLE Games ( + await client.query( + `CREATE TABLE IF NOT EXISTS Games ( game_id VARCHAR(6) PRIMARY KEY, - game_master NOT NULL REFERENCES Players, + game_master SERIAL REFERENCES Players(id) NOT NULL, card1 VARCHAR(3), card2 VARCHAR(3), card3 VARCHAR(3), card4 VARCHAR(3), card5 VARCHAR(3), - game_round INTEGER DEFAULT 0 NOT NULL, - starting_funds INTEGER NOT NULL, - small_blind INTEGER NOT NULL, - small_blind_who REFERENCES Players, - current_table_value INTEGER, - current_player REFERENCES Players + game_round BIGINT DEFAULT 0 NOT NULL, + starting_funds BIGINT NOT NULL, + small_blind BIGINT NOT NULL, + small_blind_who SERIAL REFERENCES Players(id) NOT NULL, + current_table_value BIGINT, + current_player SERIAL REFERENCES Players(id) NOT NULL )` ) } catch (err) { @@ -66,12 +54,10 @@ export async function databaseInit(): Promise { console.error(err) success = false } finally { - if (connection !== undefined) { - try { - await connection.close() - } catch (err) { - console.error(err) - } + try { + await client.end() + } catch (err) { + console.error(err) } } @@ -81,7 +67,3 @@ export async function databaseInit(): Promise { await Promise.reject(new Error('Failed to connect to database')) } } - -export function boolToInt(bool: boolean): number { - return bool ? 1 : 0 -} diff --git a/yarn.lock b/yarn.lock index 9366407..d4f053f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -767,6 +767,15 @@ "@types/node" "*" dotenv "^8.2.0" +"@types/pg@^8.6.6": + version "8.6.6" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.6.tgz#21cdf873a3e345a6e78f394677e3b3b1b543cb80" + integrity sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^2.2.0" + "@types/prettier@^2.1.5": version "2.7.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" @@ -3179,12 +3188,12 @@ pg-pool@^3.6.0: resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== -pg-protocol@^1.6.0: +pg-protocol@*, pg-protocol@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== -pg-types@^2.1.0: +pg-types@^2.1.0, pg-types@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== From b63535b9577feeb87c7682e18db5fd7b186741c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 13:22:04 +0100 Subject: [PATCH 22/33] Fixed connection to postgres --- src/databaseConnection.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts index 45c1b0c..bb4d60b 100644 --- a/src/databaseConnection.ts +++ b/src/databaseConnection.ts @@ -1,6 +1,15 @@ -import { Client } from 'pg' +import pg from 'pg' +import { user, password } from './secrets.js' +// pq is a CommonJS module, so we have to do it this way for the import to work +const { Client } = pg -const client = new Client() +const client = new Client({ + user, + password, + database: 'bd', + port: 5432, + host: 'localhost' +}) export async function databaseInit(): Promise { let success = true From 839a35b0b204f411a1cea631eb348aba19830199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 13:29:55 +0100 Subject: [PATCH 23/33] Updated CI --- .github/workflows/main.yml | 4 +--- .github/workflows/test.yml | 5 +++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3540c8e..a758327 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,10 +17,8 @@ jobs: node-version: 18 - name: Setup secrets - env: - FILE: ${{ secrets.SECRETS_TS }} run: | - echo $FILE > src/secrets.ts + echo "export const user = '';export const password = '';" > src/secrets.ts - name: yarn install, build typescript run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 41102ef..446e51a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,9 +18,10 @@ jobs: - name: Setup secrets env: - FILE: ${{ secrets.SECRETS_TS }} + USER: ${{ secrets.KWASOW_USERNAME }} + PASSWORD: ${{ secrets.KWASOW_PASSWORD }} run: | - echo $FILE > src/secrets.ts + echo "export const user = '$USER';export const password = '$PASSWORD';" > src/secrets.ts - name: Start server run: | From a25a41975a3fa3f2880c701ae4aaff76774b2544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 13:43:02 +0100 Subject: [PATCH 24/33] fixed ci? --- .github/workflows/eslint.yml | 3 +++ .github/workflows/prettier.yml | 3 +++ .github/workflows/test.yml | 5 +++++ .prettierignore | 3 ++- src/databaseConnection.ts | 2 +- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index db8e832..e743bbb 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -13,6 +13,9 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 + - name: Setup secrets + run: | + echo "export const user = '';export const password = '';" > src/secrets.ts - run: yarn install - uses: sibiraj-s/action-eslint@v2 with: diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 6dd7f08..fb8779a 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -13,5 +13,8 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 + - name: Setup secrets + run: | + echo "export const user = '';export const password = '';" > src/secrets.ts - run: yarn install - run: yarn pretty-check diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 446e51a..3a45800 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,9 +22,14 @@ jobs: PASSWORD: ${{ secrets.KWASOW_PASSWORD }} run: | echo "export const user = '$USER';export const password = '$PASSWORD';" > src/secrets.ts + - name: Start server + env: + USER: ${{ secrets.KWASOW_USERNAME }} + PASSWORD: ${{ secrets.KWASOW_PASSWORD }} run: | + ssh -fN -L 5432:lkdb:5432 $USER:$PASSWORD@students.mimuw.edu.pl yarn install yarn start & sleep 10 diff --git a/.prettierignore b/.prettierignore index 6ac2975..bddd176 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,4 +8,5 @@ package.json tsconfig.json yarn.lock yarn-error.log -coverage/ \ No newline at end of file +coverage/ +src/secrets.ts \ No newline at end of file diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts index bb4d60b..4b73d85 100644 --- a/src/databaseConnection.ts +++ b/src/databaseConnection.ts @@ -8,7 +8,7 @@ const client = new Client({ password, database: 'bd', port: 5432, - host: 'localhost' + host: 'localhost', }) export async function databaseInit(): Promise { From 1a2ddd8109c3765230f51c951b01f02f78e29b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 13:48:09 +0100 Subject: [PATCH 25/33] Fixed test CI --- .github/workflows/test.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3a45800..b21399b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,14 +22,17 @@ jobs: PASSWORD: ${{ secrets.KWASOW_PASSWORD }} run: | echo "export const user = '$USER';export const password = '$PASSWORD';" > src/secrets.ts - - - name: Start server + - name: Setup SSH tunnel env: USER: ${{ secrets.KWASOW_USERNAME }} PASSWORD: ${{ secrets.KWASOW_PASSWORD }} run: | + echo "StrictHostKeyChecking no" >> ~/.ssh/config ssh -fN -L 5432:lkdb:5432 $USER:$PASSWORD@students.mimuw.edu.pl + + - name: Start server + run: | yarn install yarn start & sleep 10 From 038c65f8a16a34733c9e5799fc8d24cff76800c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 13:49:33 +0100 Subject: [PATCH 26/33] More fixes --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b21399b..c9df446 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,6 +28,7 @@ jobs: USER: ${{ secrets.KWASOW_USERNAME }} PASSWORD: ${{ secrets.KWASOW_PASSWORD }} run: | + mkdir -p ~/.ssh echo "StrictHostKeyChecking no" >> ~/.ssh/config ssh -fN -L 5432:lkdb:5432 $USER:$PASSWORD@students.mimuw.edu.pl From 8560208d205a2b07fc965431bb076564b5f264f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 15:01:05 +0100 Subject: [PATCH 27/33] CI Fix --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c9df446..bc17cd2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,7 @@ jobs: run: | mkdir -p ~/.ssh echo "StrictHostKeyChecking no" >> ~/.ssh/config - ssh -fN -L 5432:lkdb:5432 $USER:$PASSWORD@students.mimuw.edu.pl + sshpass -p $PASSWORD ssh -fN -L 5432:lkdb:5432 $USER@students.mimuw.edu.pl - name: Start server run: | From 2d90a5d4af0269290f2fbbd5c2797bebd6c83041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 15:27:10 +0100 Subject: [PATCH 28/33] Added missing files from merge --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8c3d4f2..28daef4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: - name: Setup secrets run: | echo "export const user = '';export const password = '';" > src/secrets.ts - + - name: Add firebase service account json file env: JSON: ${{ secrets.FIREBASE_SERVICEACCOUNTJSON }} From 422552be1ff266faadda72a880bcfa307472caf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 15:34:29 +0100 Subject: [PATCH 29/33] Fixed weird stuff after merge --- package.json | 2 +- src/index.ts | 9 +-------- src/server.ts | 5 ----- 3 files changed, 2 insertions(+), 14 deletions(-) delete mode 100644 src/server.ts diff --git a/package.json b/package.json index 2619452..5bb67f2 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "type": "module", "license": "MIT", "scripts": { - "start": "tsc && node dist/server.js", + "start": "tsc && node dist/index.js", "build": "tsc", "test": "jest src/tests --coverage --config package.json", "lint": "eslint --ext '.js,.ts,.tsx' src/", diff --git a/src/index.ts b/src/index.ts index f2057a2..5e53a38 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import express from 'express' +import { app, port } from './app.js' import { databaseInit } from './databaseConnection.js' import admin from 'firebase-admin' import { readFileSync } from 'fs' @@ -15,13 +15,6 @@ admin.initializeApp({ }), }) -const app = express() -export const port = 42069 - -app.get('/test', (req, res) => { - res.send('Hello from typescript express!') -}) - databaseInit() .then(() => { // Only start listening if database connection was successful diff --git a/src/server.ts b/src/server.ts deleted file mode 100644 index 9aa44a4..0000000 --- a/src/server.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { app, port } from './app.js' - -app.listen(port, () => { - console.log(`[server]: Server is running at localhost:${port}`) -}) From f14e1124c7a5f74061660dfeff6e06bb5e8ed1af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 15:36:17 +0100 Subject: [PATCH 30/33] Added secrets to jest ignore pattern --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 5bb67f2..ce7982e 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,9 @@ "collectCoverageFrom": [ "src/*.ts" ], + "coveragePathIgnorePatterns": [ + "src/secrets.ts" + ], "preset": "ts-jest" } } From 711a517638fde3e94dd6c0e2ed9f8764a09701d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 15:38:58 +0100 Subject: [PATCH 31/33] Added lint staged --- .husky/pre-commit | 3 +- package.json | 11 +- yarn.lock | 296 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 300 insertions(+), 10 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 52c2123..d24fdfc 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn pretty -yarn lint \ No newline at end of file +npx lint-staged diff --git a/package.json b/package.json index ce7982e..d55d2b1 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "test": "jest src/tests --coverage --config package.json", "lint": "eslint --ext '.js,.ts,.tsx' src/", "pretty": "yarn prettier --write .", - "pretty-check": "yarn prettier --check .", + "pretty-check": "yarn prettier --check src/", "prepare": "husky install" }, "devDependencies": { @@ -25,6 +25,7 @@ "eslint-plugin-n": "^15.0.0", "eslint-plugin-promise": "^6.0.0", "husky": "^8.0.0", + "lint-staged": "^13.2.0", "prettier": "2.8.4", "supertest": "^6.3.3", "ts-jest": "^29.0.5", @@ -33,9 +34,9 @@ "dependencies": { "@types/pg": "^8.6.6", "express": "^4.18.2", - "pg": "^8.10.0", "firebase-admin": "^11.5.0", - "jest": "^29.5.0" + "jest": "^29.5.0", + "pg": "^8.10.0" }, "jest": { "collectCoverage": true, @@ -47,5 +48,9 @@ "src/secrets.ts" ], "preset": "ts-jest" + }, + "lint-staged": { + "*.(js|ts|tsx)": "yarn lint", + "src/*": "prettier --write" } } diff --git a/yarn.lock b/yarn.lock index ac3671a..dd8d2b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1186,6 +1186,14 @@ agent-base@6: dependencies: debug "4" +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -1196,7 +1204,7 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -1208,6 +1216,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1227,6 +1240,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + anymatch@^3.0.3: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -1306,6 +1324,11 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-retry@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" @@ -1529,6 +1552,11 @@ catharsis@^0.9.0: dependencies: lodash "^4.17.15" +chalk@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" + integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== + chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1561,6 +1589,34 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1613,6 +1669,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1620,6 +1681,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1" + integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA== + component-emitter@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1791,6 +1857,11 @@ duplexify@^4.0.0: readable-stream "^3.1.1" stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" @@ -1818,6 +1889,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2185,6 +2261,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" + integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2486,7 +2577,7 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -2730,6 +2821,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + husky@^8.0.0: version "8.0.3" resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" @@ -2768,6 +2864,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2853,6 +2954,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -2912,6 +3018,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -3538,6 +3649,11 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lilconfig@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + limiter@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" @@ -3555,6 +3671,39 @@ linkify-it@^3.0.1: dependencies: uc.micro "^1.0.1" +lint-staged@^13.2.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.0.tgz#b7abaf79c91cd36d824f17b23a4ce5209206126a" + integrity sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw== + dependencies: + chalk "5.2.0" + cli-truncate "^3.1.0" + commander "^10.0.0" + debug "^4.3.4" + execa "^7.0.0" + lilconfig "2.1.0" + listr2 "^5.0.7" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.3" + pidtree "^0.6.0" + string-argv "^0.3.1" + yaml "^2.2.1" + +listr2@^5.0.7: + version "5.0.8" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-5.0.8.tgz#a9379ffeb4bd83a68931a65fb223a11510d6ba23" + integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.19" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.8.0" + through "^2.3.8" + wrap-ansi "^7.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -3594,6 +3743,16 @@ lodash@^4.17.15, lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -3704,7 +3863,7 @@ methods@^1.1.2, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.4: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -3744,6 +3903,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -3832,6 +3996,13 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + object-hash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" @@ -3880,13 +4051,20 @@ once@^1.3.0, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -3939,6 +4117,13 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -3986,6 +4171,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -4062,6 +4252,11 @@ picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -4297,6 +4492,14 @@ resolve@^1.20.0, resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry-request@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.2.tgz#143d85f90c755af407fcc46b7166a4ba520e44da" @@ -4315,6 +4518,11 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -4329,6 +4537,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -4415,7 +4630,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -4430,6 +4645,32 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -4477,6 +4718,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +string-argv@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -4494,6 +4740,15 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.trim@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" @@ -4535,6 +4790,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -4550,6 +4812,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -4640,6 +4907,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + tmp@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -4914,6 +5186,15 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -4966,6 +5247,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" + integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" From f9e4f0193cb90c74c9544c56000c72718c4ec5a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 15:47:01 +0100 Subject: [PATCH 32/33] Added tests --- package.json | 1 - src/databaseConnection.ts | 2 +- src/index.ts | 2 +- src/tests/app.test.ts | 6 +++++- tsconfig.json | 3 ++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d55d2b1..aeafce6 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "main": "src/index.ts", "repository": "git@github.com:poker-io/pokerio-server.git", "author": "Karol WÄ…sowski ", - "type": "module", "license": "MIT", "scripts": { "start": "tsc && node dist/index.js", diff --git a/src/databaseConnection.ts b/src/databaseConnection.ts index 4b73d85..d0aafb3 100644 --- a/src/databaseConnection.ts +++ b/src/databaseConnection.ts @@ -1,5 +1,5 @@ import pg from 'pg' -import { user, password } from './secrets.js' +import { user, password } from './secrets' // pq is a CommonJS module, so we have to do it this way for the import to work const { Client } = pg diff --git a/src/index.ts b/src/index.ts index 5e53a38..f04072a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import { app, port } from './app.js' -import { databaseInit } from './databaseConnection.js' +import { databaseInit } from './databaseConnection' import admin from 'firebase-admin' import { readFileSync } from 'fs' diff --git a/src/tests/app.test.ts b/src/tests/app.test.ts index 441c86e..ff15ce5 100644 --- a/src/tests/app.test.ts +++ b/src/tests/app.test.ts @@ -1,6 +1,6 @@ import { app } from '../app' - import request from 'supertest' +import { databaseInit } from '../databaseConnection' test('Simple test', (done) => { request(app) @@ -10,3 +10,7 @@ test('Simple test', (done) => { .expect('Hello from typescript express!') .end(done) }) + +test('Database connection', async () => { + await expect(databaseInit()).resolves.not.toThrow() +}) diff --git a/tsconfig.json b/tsconfig.json index 88414b4..d8693e8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,8 @@ "moduleResolution": "node", "sourceMap": true, "outDir": "dist", - "strictNullChecks": true + "strictNullChecks": true, + "module": "CommonJS" }, "lib": ["es2015"], "include": [ From c0e4ee3e3a7bac0aca615c1888f2134cad714db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20W=C4=85sowski?= Date: Thu, 23 Mar 2023 18:11:01 +0100 Subject: [PATCH 33/33] Removed duplicate file from gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 713300e..0f7f7e2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ dist/ node_modules/ coverage/ -yarn-error.log src/secrets.ts src/serviceAccount.json yarn-error.log