diff --git a/.github/file-filters.yml b/.github/file-filters.yml index 80b7482d9..6690cdb9d 100644 --- a/.github/file-filters.yml +++ b/.github/file-filters.yml @@ -33,7 +33,7 @@ admin: &admin dht_node: &dht_node - 'dht-node/**/*' -docker: &docker +docker-compose: &docker-compose - 'docker-compose.*' federation: &federation diff --git a/.github/workflows/test-admin-interface.yml b/.github/workflows/test_admin_interface.yml similarity index 100% rename from .github/workflows/test-admin-interface.yml rename to .github/workflows/test_admin_interface.yml diff --git a/.github/workflows/test_dht-node.yml b/.github/workflows/test_dht_node.yml similarity index 70% rename from .github/workflows/test_dht-node.yml rename to .github/workflows/test_dht_node.yml index a57f09399..bb24f2d2f 100644 --- a/.github/workflows/test_dht-node.yml +++ b/.github/workflows/test_dht_node.yml @@ -3,14 +3,12 @@ name: Gradido DHT Node Test CI on: push jobs: - # only (but most important) job from this workflow required for pull requests - # check results serve as run conditions for all other jobs here files-changed: name: Detect File Changes - DHT Node runs-on: ubuntu-latest outputs: dht_node: ${{ steps.changes.outputs.dht_node }} - docker: ${{ steps.changes.outputs.docker }} + docker-compose: ${{ steps.changes.outputs.docker-compose }} steps: - uses: actions/checkout@v3.3.0 @@ -22,12 +20,9 @@ jobs: filters: .github/file-filters.yml list-files: shell - ############################################################################## - # JOB: DOCKER BUILD TEST ##################################################### - ############################################################################## build: name: Docker Build Test - DHT Node - if: needs.files-changed.outputs.dht_node == 'true' || needs.files-changed.outputs.docker == 'true' + if: needs.files-changed.outputs.dht_node == 'true' needs: files-changed runs-on: ubuntu-latest steps: @@ -45,9 +40,6 @@ jobs: name: docker-dht-node-test path: /tmp/dht-node.tar - ############################################################################## - # JOB: LINT ################################################################## - ############################################################################## lint: name: Lint - DHT Node if: needs.files-changed.outputs.dht_node == 'true' @@ -60,12 +52,9 @@ jobs: - name: Lint run: cd dht-node && yarn && yarn run lint - ############################################################################## - # JOB: UNIT TEST ############################################################# - ############################################################################## unit_test: name: Unit Tests - DHT Node - if: needs.files-changed.outputs.dht_node == 'true' || needs.files-changed.outputs.docker == 'true' + if: needs.files-changed.outputs.dht_node == 'true' || needs.files-changed.outputs.docker-compose == 'true' needs: [files-changed, build] runs-on: ubuntu-latest steps: diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/test_e2e.yml similarity index 100% rename from .github/workflows/e2e-test.yml rename to .github/workflows/test_e2e.yml diff --git a/.github/workflows/test_federation.yml b/.github/workflows/test_federation.yml index fc29a1bf8..5fd714b00 100644 --- a/.github/workflows/test_federation.yml +++ b/.github/workflows/test_federation.yml @@ -3,13 +3,11 @@ name: Gradido Federation Test CI on: push jobs: - # only (but most important) job from this workflow required for pull requests - # check results serve as run conditions for all other jobs here files-changed: name: Detect File Changes - Federation runs-on: ubuntu-latest outputs: - docker: ${{ steps.changes.outputs.docker }} + docker-compose: ${{ steps.changes.outputs.docker-compose }} federation: ${{ steps.changes.outputs.federation }} steps: - uses: actions/checkout@v3.3.0 @@ -22,12 +20,9 @@ jobs: filters: .github/file-filters.yml list-files: shell - ############################################################################## - # JOB: DOCKER BUILD TEST ##################################################### - ############################################################################## build: name: Docker Build Test - Federation - if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.federation == 'true' + if: needs.files-changed.outputs.federation == 'true' needs: files-changed runs-on: ubuntu-latest steps: @@ -45,9 +40,6 @@ jobs: name: docker-federation-test path: /tmp/federation.tar - ############################################################################## - # JOB: LINT ################################################################## - ############################################################################## lint: name: Lint - Federation if: needs.files-changed.outputs.federation == 'true' @@ -60,12 +52,9 @@ jobs: - name: Lint run: cd federation && yarn && yarn run lint - ############################################################################## - # JOB: UNIT TEST ############################################################# - ############################################################################## unit_test: name: Unit Tests - Federation - if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.federation == 'true' + if: needs.files-changed.outputs.docker-compose == 'true' || needs.files-changed.outputs.federation == 'true' needs: [files-changed, build] runs-on: ubuntu-latest steps: diff --git a/.github/workflows/test-nginx.yml b/.github/workflows/test_nginx.yml similarity index 100% rename from .github/workflows/test-nginx.yml rename to .github/workflows/test_nginx.yml diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index 4c53a638f..0e63a9bfe 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -5,7 +5,7 @@ module.exports = { node: true, }, parser: '@typescript-eslint/parser', - plugins: ['prettier', '@typescript-eslint', 'type-graphql', 'jest', 'import', 'n'], + plugins: ['prettier', '@typescript-eslint', 'type-graphql', 'jest', 'import', 'n', 'promise'], extends: [ 'standard', 'eslint:recommended', @@ -142,6 +142,21 @@ module.exports = { 'n/prefer-global/url-search-params': 'error', 'n/prefer-promises/dns': 'error', 'n/prefer-promises/fs': 'error', + // promise + 'promise/catch-or-return': 'error', + 'promise/no-return-wrap': 'error', + 'promise/param-names': 'error', + 'promise/always-return': 'error', + 'promise/no-native': 'off', + 'promise/no-nesting': 'warn', + 'promise/no-promise-in-callback': 'warn', + 'promise/no-callback-in-promise': 'warn', + 'promise/avoid-new': 'warn', + 'promise/no-new-statics': 'error', + 'promise/no-return-in-finally': 'warn', + 'promise/valid-params': 'warn', + 'promise/prefer-await-to-callbacks': 'error', + 'promise/no-multiple-resolved': 'error', }, overrides: [ // only for ts files diff --git a/backend/log4js-config.json b/backend/log4js-config.json index e595e7c52..160883eb3 100644 --- a/backend/log4js-config.json +++ b/backend/log4js-config.json @@ -8,7 +8,7 @@ "pattern": "yyyy-MM-dd", "layout": { - "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" + "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" }, "keepFileExt" : true, "fileNameSep" : "_", @@ -21,7 +21,7 @@ "pattern": "yyyy-MM-dd", "layout": { - "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" + "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" }, "keepFileExt" : true, "fileNameSep" : "_", @@ -34,7 +34,7 @@ "pattern": "yyyy-MM-dd", "layout": { - "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" + "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" }, "keepFileExt" : true, "fileNameSep" : "_", @@ -47,7 +47,7 @@ "pattern": "yyyy-MM-dd", "layout": { - "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" + "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" }, "keepFileExt" : true, "fileNameSep" : "_", @@ -60,7 +60,7 @@ "pattern": "yyyy-MM-dd", "layout": { - "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" + "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m %s" }, "keepFileExt" : true, "fileNameSep" : "_", @@ -77,7 +77,7 @@ "type": "stdout", "layout": { - "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" + "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" } }, "apolloOut": @@ -85,7 +85,7 @@ "type": "stdout", "layout": { - "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" + "type": "pattern", "pattern": "%d{ISO8601} %p %c [%X{user}] [%f : %l] - %m" } } }, diff --git a/backend/src/apis/HttpRequest.ts b/backend/src/apis/HttpRequest.ts index 063dfa202..f40d577bd 100644 --- a/backend/src/apis/HttpRequest.ts +++ b/backend/src/apis/HttpRequest.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-argument */ @@ -9,39 +10,35 @@ import { backendLogger as logger } from '@/server/logger' // eslint-disable-next-line @typescript-eslint/no-explicit-any export const apiPost = async (url: string, payload: unknown): Promise => { logger.trace('POST', url, payload) - return axios - .post(url, payload) - .then((result) => { - logger.trace('POST-Response', result) - if (result.status !== 200) { - throw new LogError('HTTP Status Error', result.status) - } - if (result.data.state !== 'success') { - throw new Error(result.data.msg) - } - return { success: true, data: result.data } - }) - .catch((error) => { - return { success: false, data: error.message } - }) + try { + const result = await axios.post(url, payload) + logger.trace('POST-Response', result) + if (result.status !== 200) { + throw new LogError('HTTP Status Error', result.status) + } + if (result.data.state !== 'success') { + throw new LogError(result.data.msg) + } + return { success: true, data: result.data } + } catch (error: any) { + return { success: false, data: error.message } + } } // eslint-disable-next-line @typescript-eslint/no-explicit-any export const apiGet = async (url: string): Promise => { logger.trace('GET: url=' + url) - return axios - .get(url) - .then((result) => { - logger.trace('GET-Response', result) - if (result.status !== 200) { - throw new LogError('HTTP Status Error', result.status) - } - if (!['success', 'warning'].includes(result.data.state)) { - throw new Error(result.data.msg) - } - return { success: true, data: result.data } - }) - .catch((error) => { - return { success: false, data: error.message } - }) + try { + const result = await axios.get(url) + logger.trace('GET-Response', result) + if (result.status !== 200) { + throw new LogError('HTTP Status Error', result.status) + } + if (!['success', 'warning'].includes(result.data.state)) { + throw new LogError(result.data.msg) + } + return { success: true, data: result.data } + } catch (error: any) { + return { success: false, data: error.message } + } }