diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml deleted file mode 100644 index 4ed7d6aec1..0000000000 --- a/.github/workflows/e2e-test.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: E2E Test -on: [push, pull_request] - -jobs: - e2e-test: - name: Node.js - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - node-version: ["10.x", "12.x", "14.x"] - - steps: - - name: Checkout https://github.com/${{ github.repository }}@${{ github.ref }} - uses: actions/checkout@v2 - with: - persist-credentials: false - - - name: Set up Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - - name: Use cache - uses: actions/cache@v2 - with: - path: | - ~/.npm - ~/.cache - key: ${{ runner.os }}-node${{ matrix.node-version }}-E2E-${{ hashFiles('package-lock.json') }} - - - name: Install dependencies - run: | - npm ci - npm run cy:verify - - - name: Start MongoDB - run: | - docker run -d -p 27017:27017 mongo:4.0 - timeout 60s bash -c 'until nc -z -w 2 localhost 27017 && echo MongoDB ready; do sleep 2; done' - - - name: Run E2E test suite - id: test-suite - run: | - NODE_ENV=test npm start -- --silent & - npm run test:ci -- --config video=true - - - name: Prepare cypress artifacts - if: failure() && (steps.test-suite.outcome == 'failure') - working-directory: ./test/e2e - run: > - mkdir -p "screenshots" && find "screenshots" -mindepth 1 -maxdepth 1 -type d - -exec sh -c 'mv -- "videos/$(basename "$1").mp4" "$1"' _ {} \; - - - name: Upload cypress artifacts - if: failure() && (steps.test-suite.outcome == 'failure') - uses: actions/upload-artifact@v2 - with: - name: cypress-artifacts-node${{ matrix.node-version }} - path: test/e2e/screenshots diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index e7922ae780..0000000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Lint -on: [push, pull_request] - -jobs: - lint: - name: Node.js - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - node-version: ["14.x"] - - steps: - - name: Checkout https://github.com/${{ github.repository }}@${{ github.ref }} - uses: actions/checkout@v2 - with: - persist-credentials: false - - - name: Set up Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - - name: Run linter - run: npx --no-install jshint@2.12.0 . diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml new file mode 100644 index 0000000000..8ad631c3ca --- /dev/null +++ b/.github/workflows/semgrep.yml @@ -0,0 +1,21 @@ +on: + workflow_dispatch: {} + pull_request: {} + +name: Semgrep +jobs: + semgrep: + name: semgrep/ci + runs-on: ubuntu-20.04 + env: + SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }} + container: + image: semgrep/semgrep + + # Skip any PR created by dependabot to avoid permission issues: + if: (github.actor != 'dependabot[bot]') + + steps: + - uses: actions/checkout@v4 + - run: | + semgrep ci --supply-chain --debug diff --git a/package-lock.json b/package-lock.json index 3a26af2231..fbe8ca114a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,8 @@ "dependencies": { "bcrypt-nodejs": "0.0.3", "body-parser": "^1.15.1", + "color": "5.0.1", + "color-convert": "3.1.1", "consolidate": "^0.14.1", "csurf": "^1.8.3", "dont-sniff-mimetype": "^1.0.0", @@ -264,6 +266,23 @@ "node": ">=4" } }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, "node_modules/anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -1256,20 +1275,51 @@ "node": ">=0.10.0" } }, + "node_modules/color": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.1.tgz", + "integrity": "sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==", + "license": "MIT", + "dependencies": { + "color-convert": "^3.0.1", + "color-string": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.1.tgz", + "integrity": "sha512-TVoqAq8ZDIpK5lsQY874DDnu65CSsc9vzq0wLpNQ6UMBq81GSZocVazPiBbYGzngzBOIRahpkTzCLVe2at4MfA==", + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.0.tgz", + "integrity": "sha512-gNVoDzpaSwvftp6Y8nqk97FtZoXP9Yj7KGYB8yIXuv0JcfqbYihTrd1OU5iZW9btfXde4YAOCRySBHT7O910MA==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } }, "node_modules/color-support": { "version": "1.1.3", @@ -15546,6 +15596,23 @@ "dev": true, "requires": { "color-convert": "^1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + } } }, "anymatch": { @@ -16355,20 +16422,35 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.1.tgz", + "integrity": "sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==", + "requires": { + "color-convert": "^3.0.1", + "color-string": "^2.0.0" + } + }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.0.tgz", + "integrity": "sha512-TVoqAq8ZDIpK5lsQY874DDnu65CSsc9vzq0wLpNQ6UMBq81GSZocVazPiBbYGzngzBOIRahpkTzCLVe2at4MfA==", "requires": { - "color-name": "1.1.3" + "color-name": "^2.0.0" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==" + }, + "color-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.0.tgz", + "integrity": "sha512-gNVoDzpaSwvftp6Y8nqk97FtZoXP9Yj7KGYB8yIXuv0JcfqbYihTrd1OU5iZW9btfXde4YAOCRySBHT7O910MA==", + "requires": { + "color-name": "^2.0.0" + } }, "color-support": { "version": "1.1.3", diff --git a/package.json b/package.json index b2eb65a041..9792393c2c 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,8 @@ "dependencies": { "bcrypt-nodejs": "0.0.3", "body-parser": "^1.15.1", + "color": "5.0.1", + "color-convert": "^3.1.0", "consolidate": "^0.14.1", "csurf": "^1.8.3", "dont-sniff-mimetype": "^1.0.0",