diff --git a/.github/workflows/demo-deploy-action.yml b/.github/workflows/demo-deploy-action.yml new file mode 100644 index 0000000000..fea5d780d6 --- /dev/null +++ b/.github/workflows/demo-deploy-action.yml @@ -0,0 +1,248 @@ +name: 'Demo-Deploy' + +on: + pull_request: + types: + - closed + branches: [ main ] + +jobs: + update-version: + if: github.event.pull_request.merged == true + runs-on: ubuntu-22.04 + outputs: + okr-docker-image: ${{ vars.NEW_VALUE_URL }}:${{ steps.store-version.outputs.version}}-DEMO + steps: + - uses: actions/checkout@v4 + with: + token: ${{secrets.VERSION_TOKEN}} + + - name: Generate and Set New Version + run: mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false + + - name: Extract Maven project version + run: echo "version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_OUTPUT + id: store-version + + - name: Set New Snapshot Version + run: mvn build-helper:parse-version versions:set -DnewVersion=${{ steps.store-version.outputs.version}}-SNAPSHOT -DgenerateBackupPoms=false + + - name: Commit and Push Changes + shell: bash + env: + COMMITPREFIX: '[VU]' + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git add . || { + echo "No files were changed, so we did not commit anything" + exit 1 + } + git commit -m "$COMMITPREFIX Automated version update" || { + echo "No changes to commit, skipping push" + exit 0 + } + git push -f origin main + + build-docker-image: + needs: update-version + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + + - name: Set up node 18 + uses: actions/setup-node@v4 + with: + node-version: 18.17.1 + + - name: Install Dependencies + run: cd ./frontend && npm ci + + - name: Build frontend with Angular + run: cd ./frontend && npm run build + + - name: Build backend with Maven + run: mvn -B clean package --file pom.xml -P build-for-docker + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build the docker image + uses: docker/build-push-action@v5 + with: + context: . + file: docker/Dockerfile + tags: ${{ needs.update-version.outputs.okr-docker-image}} + load: true + push: false + outputs: type=docker,dest=/tmp/okr-docker-image.tar + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: okr-image + path: /tmp/okr-docker-image.tar + + - name: print imagetags + run: echo ${{ needs.update-version.outputs.okr-docker-image}} + + e2e-docker: + runs-on: ubuntu-22.04 + needs: [build-docker-image,update-version] + steps: + - uses: actions/checkout@v4 + + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: okr-image + path: /tmp + + - name: Load image + run: docker load --input /tmp/okr-docker-image.tar + + - name: show images + run: docker image ls -a + + - name: Run docker image + run: | + docker run --network=host \ + -p 8080:8080 \ + -e SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER-URI=http://localhost:8544/realms/pitc \ + -e SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK-SET-URI=http://localhost:8544/realms/pitc/protocol/openid-connect/certs \ + -e SPRING_SECURITY_OAUTH2_RESOURCESERVER_OPAQUETOKEN_CLIENT-ID=pitc_okr_staging \ + -e SPRING_PROFILES_ACTIVE-ID=integration-test \ + -e SPRING_DATASOURCE_URL="jdbc:h2:mem:db;DB_CLOSE_DELAY=-1" \ + -e SPRING_DATASOURCE_USERNAME=user \ + -e SPRING_DATASOURCE_PASSWORD=sa \ + -e SPRING_FLYWAY_LOCATIONS="classpath:db/h2-db/database-h2-schema,classpath:db/h2-db/data-test-h2" \ + ${{ needs.update-version.outputs.okr-docker-image}} & + + - name: run keycloak docker + run: | + docker run \ + -e KEYCLOAK_ADMIN=admin \ + -e KEYCLOAK_ADMIN_PASSWORD=keycloak \ + -v ./docker/config/realm-export.json:/opt/keycloak/data/import/realm.json \ + -p 8544:8080 \ + quay.io/keycloak/keycloak:23.0.1 \ + start-dev --import-realm & + + - uses: abhi1693/setup-browser@v0.3.5 + with: + browser: chrome + version: latest + + - name: Cypress run e2e tests + uses: cypress-io/github-action@v6 + with: + build: npm i -D cypress + install: false + wait-on: 'http://localhost:8080/config, http://localhost:8544' + wait-on-timeout: 120 + browser: chrome + headed: true + working-directory: frontend + config: baseUrl=http://localhost:8080 + + - uses: actions/upload-artifact@v4 + if: always() + with: + name: cypress-screenshots + path: frontend/cypress/screenshots + + upload-to-quay: + runs-on: ubuntu-latest + needs: [e2e-docker, update-version] + steps: + - uses: actions/checkout@v4 + + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: okr-image + path: /tmp + + - name: Load image + run: docker load --input /tmp/okr-docker-image.tar + + - name: show images + run: docker image ls -a + + - name: Log in to Quay registry + uses: docker/login-action@v3 + with: + registry: ${{ secrets.QUAY_REGISTRY }} + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_TOKEN }} + + - name: Push + run: docker push ${{ needs.update-version.outputs.okr-docker-image}} + + - name: Install yq + shell: bash + env: + VERSION: v4.25.2 + BINARY: yq_linux_amd64 + run: | + wget -q https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY}.tar.gz -O - |\ + tar xz && mv ${BINARY} /usr/local/bin/yq + + - name: Update YAML file + shell: bash + env: + COMMITPREFIX: '[CTS]' + run: | + curl -s --header "PRIVATE-TOKEN: ${{secrets.GITLAB_ACCESS_TOKEN}}" "${{vars.TARGET_GITLAB_REPOSITORY}}/files/${{vars.GITLAB_FILEPATH}}?ref=${{vars.TARGET_GITLAB_REFERENCE}}" -H "Accept: application/json" -H "Content-Type: application/json" | jq -r '.content' | base64 --decode > response.yaml + yq -i "${{vars.YAML_PATH}} = \"${{needs.update-version.outputs.okr-docker-image}}\"" response.yaml + UPDATED_CONTENT=$(cat response.yaml) + curl --request PUT --header 'PRIVATE-TOKEN: ${{secrets.GITLAB_ACCESS_TOKEN}}' -F "branch=${{vars.TARGET_GITLAB_REFERENCE}}" -F "author_email=actions@gitlab.com" -F "author_name=GitLab Actions" -F "content=${UPDATED_CONTENT}" -F "commit_message=$COMMITPREFIX Automated changes to ${{vars.FILEPATH_COMMIT}}" "${{vars.TARGET_GITLAB_REPOSITORY}}/files/${{vars.GITLAB_FILEPATH}}" + + generate-and-push-sbom: + runs-on: ubuntu-latest + needs: [upload-to-quay] + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Install cdxgen + working-directory: frontend + run: npm install -g @cyclonedx/cdxgen@8.6.0 + + - name: 'Generate SBOM for maven dependencies' + working-directory: backend + run: mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom + + - name: 'Generate SBOM for npm dependencies' + working-directory: frontend + run: cdxgen -o ../sbom-npm.xml -t npm . + + - name: 'Merge frontend and backend SBOMs' + run: | + docker run --rm -v $(pwd):/data cyclonedx/cyclonedx-cli merge --input-files data/backend/target/bom.xml data/sbom-npm.xml --output-file data/sbom.xml + + - name: 'Push merged SBOM to dependency track' + env: + PROJECT_NAME: okr-demo + run: | + curl --verbose -s --location --request POST ${{ secrets.DEPENDENCY_TRACK_URL }} \ + --header "X-Api-Key: ${{ secrets.SECRET_OWASP_DT_KEY }}" \ + --header "Content-Type: multipart/form-data" \ + --form "autoCreate=true" \ + --form "projectName=${PROJECT_NAME:-$GITHUB_REPOSITORY}" \ + --form "projectVersion=latest" \ + --form "bom=@sbom.xml" + + clean-up: + needs: [generate-and-push-sbom] + runs-on: ubuntu-latest + + steps: + - name: remove dockers + run: docker ps -aq | xargs -r docker rm -f \ No newline at end of file diff --git a/backend/pom.xml b/backend/pom.xml index dc3c1368bf..2aec4d0904 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.114-SNAPSHOT + 2.0.122-SNAPSHOT backend - 2.0.114-SNAPSHOT + 2.0.122-SNAPSHOT backend Puzzle OKR Tool @@ -59,12 +59,12 @@ org.flywaydb flyway-core - 10.11.1 + 10.13.0 org.flywaydb flyway-database-postgresql - 10.11.1 + 10.13.0 runtime diff --git a/backend/src/main/resources/application-demo.properties b/backend/src/main/resources/application-demo.properties index 43741b4fae..edc02179a2 100644 --- a/backend/src/main/resources/application-demo.properties +++ b/backend/src/main/resources/application-demo.properties @@ -1,8 +1,10 @@ -# flyway fill database with demo data -spring.flyway.locations=classpath:db/migration,classpath:db/data-migration-demo,classpath:db/callback +# logging level for staging +logging.level.org.springframework=debug spring.security.oauth2.resourceserver.opaquetoken.client-id=pitc_okr_demo -okr.quarter.business.year.start=1 -okr.quarter.label.format=GJ xxxx-zz +# flyway fill database with demo data +spring.flyway.locations=classpath:db/migration,classpath:db/data-migration-demo,classpath:db/callback + okr.user.champion.usernames=peggimann +okr.clientcustomization.customstyles.okr-topbar-background-color=#fa8072 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f216829d78..d1aca78845 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -27,7 +27,7 @@ "ngx-toastr": "^18.0.0", "rxjs": "^7.8.1", "tslib": "^2.6.2", - "zone.js": "0.14.4" + "zone.js": "0.14.6" }, "devDependencies": { "@angular-devkit/build-angular": "^17.3.6", @@ -719,9 +719,10 @@ } }, "node_modules/@angular/animations": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.6.tgz", - "integrity": "sha512-ev99cnmc1S/SXYz9OwOyZQyHXHiUf+ZwQFpjYBRPoyKqZV4sOYMlyBbfjBO/GgCVrsGfMvBsCI6PtY3yquuabA==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.10.tgz", + "integrity": "sha512-9fR5snTuG4aM2K54TG/6DXcKXMDKZMovZhjQOxO8l68/oqn6fKrHs8DLzckFs0XGRZ+2OyURH8WggFm1Z828rA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -729,13 +730,14 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.3.6" + "@angular/core": "17.3.10" } }, "node_modules/@angular/cdk": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.6.tgz", - "integrity": "sha512-7eKrC61/6pmMAxllU/vYKadZRF7x7GxUYpA5G70fNaQsIUUiZvxx/SJN9AuZEoPGAtF6atKlJD8QVmFoDzv/Lw==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.10.tgz", + "integrity": "sha512-b1qktT2c1TTTe5nTji/kFAVW92fULK0YhYAvJ+BjZTPKu2FniZNe8o4qqQ0pUuvtMu+ZQxp/QqFYoidIVCjScg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -783,9 +785,10 @@ } }, "node_modules/@angular/common": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.6.tgz", - "integrity": "sha512-ufviCFzQQKWcwc2j3Zi8bHbwkvqh4QU6GDH0u0usOee8xd8KrjgcYl3vD0r1/yxlDsd53Wg9kNRvz/fY+5qQoQ==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.10.tgz", + "integrity": "sha512-6SfD21M3LujymmZsZQIxAsV8Bj5u6He6ImZ+p2rr7FAhFxpVJyKldK8LCmJcFsBD4srpQcxEZ0iDxXvg+0ihAw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -793,14 +796,15 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.3.6", + "@angular/core": "17.3.10", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.6.tgz", - "integrity": "sha512-ybx9O76RGv4J97IThiSVvvWukuGcuXu50KsBDPUd874BFT3ml0OcRGhXoMh/isz7EQipiiGgsA51cJVTLES5Zw==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.10.tgz", + "integrity": "sha512-6Ce4siHyF0fCZBDm/cz+blJByGDu1/hbPkQVGmk5HGZTmCUeKkgyjoM6bZr7ssAsyGDRwxBh2SGHO4Ce31vuPA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -808,7 +812,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.3.6" + "@angular/core": "17.3.10" }, "peerDependenciesMeta": { "@angular/core": { @@ -817,10 +821,11 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.6.tgz", - "integrity": "sha512-LaoUkY6uzcNocIEHJBvexvuU0a333IRQaG3Sj5IXhM1t864wTsfycn6yWJcQ7PhklB8BtNqiMbUQuEFtkxT8pg==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.10.tgz", + "integrity": "sha512-85SBphqRj3szac3FbeYgEZ+I6WaAlo5h7JX06BdjOLLiaoIwlFhLeAuG+jVekseV+95grFUxIsCMphWHi2e6hQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "7.23.9", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -840,14 +845,15 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/compiler": "17.3.6", + "@angular/compiler": "17.3.10", "typescript": ">=5.2 <5.5" } }, "node_modules/@angular/core": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.6.tgz", - "integrity": "sha512-8IoeZVNqyeHA+H2dR3VFfz76/TFN1BpXP0aABs2aIUNVQRYlKxALSm1UlavijX8IT0uvd/6GXwE3WgymTcg0wg==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.10.tgz", + "integrity": "sha512-ocEKu7X0yFCOvgJn1uZy76qjhsjKvULrO1k/BuIX0nwhp61DTGYTvCqKmwCBLM8/gvcKYH5vMKMHoQKtiSGE0A==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -860,9 +866,10 @@ } }, "node_modules/@angular/forms": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.6.tgz", - "integrity": "sha512-WXxWhwvgRfYLNP2dB4Qe83tavEh2LnS4H0uoiecWHXijW2R9z8304X1vEyS1EtQK7o/s8fCVDVDjeY+hxLnCLw==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.10.tgz", + "integrity": "sha512-0VZWSXDi2M3DAGJlpdV3lo73Yo/73GPRqmfTOrvIoUIenFg5Dz6oNGzvt/1aRkRn6HKccjix6iMpH91EN65pWA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -870,16 +877,17 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.3.6", - "@angular/core": "17.3.6", - "@angular/platform-browser": "17.3.6", + "@angular/common": "17.3.10", + "@angular/core": "17.3.10", + "@angular/platform-browser": "17.3.10", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.3.6.tgz", - "integrity": "sha512-sttN0JNvd2QvCCFIsxb5noiy7tgQdWrwvmrkJ+3KguHh5X84jDliA/d8N7Xgy2IBLnS/q/Hl9DdRCOiItWG1bw==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.3.10.tgz", + "integrity": "sha512-hHMQES0tQPH5JW33W+mpBPuM8ybsloDTqFPuRV8cboDjosAWfJhzAKF3ozICpNlUrs62La/2Wu/756GcQrxebg==", + "license": "MIT", "dependencies": { "@material/animation": "15.0.0-canary.7f224ddd4.0", "@material/auto-init": "15.0.0-canary.7f224ddd4.0", @@ -932,7 +940,7 @@ }, "peerDependencies": { "@angular/animations": "^17.0.0 || ^18.0.0", - "@angular/cdk": "17.3.6", + "@angular/cdk": "17.3.10", "@angular/common": "^17.0.0 || ^18.0.0", "@angular/core": "^17.0.0 || ^18.0.0", "@angular/forms": "^17.0.0 || ^18.0.0", @@ -941,22 +949,24 @@ } }, "node_modules/@angular/material-moment-adapter": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-17.3.6.tgz", - "integrity": "sha512-HLAJc4V53vIeK2FBnH0RCTPshrGxmNNhtFhcqgUYzcDwj7RVjcPoyzxs2AklWv3V5GOsST6FAxomxZ2rozB46A==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-17.3.10.tgz", + "integrity": "sha512-R68ssdGMSmVIfpOGaB9vjW5lBh6zH9GboBuaIAqizC/ZAzdEgpmT7qdr3PBCmRPTLTx8Yx9K3rhgRekO79ympw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "^17.0.0 || ^18.0.0", - "@angular/material": "17.3.6", + "@angular/material": "17.3.10", "moment": "^2.18.1" } }, "node_modules/@angular/platform-browser": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.6.tgz", - "integrity": "sha512-UikrgvMwtZIXp2pCP5AtkM7ibz2B5wBiGpnhhkYsqHKy9ndKVDA+3B5Z+/j9xeYYdsJAAtHl45zqILewyg+4iw==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.10.tgz", + "integrity": "sha512-LEhBDOKm2A7nRmZqsafVp6OinRDG1OYZBSqjnT1jZ+f0CRRFIXz6aJ0TMPoU6vq9SLRJ7vrGD9P/eBf2hW00NQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -964,9 +974,9 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/animations": "17.3.6", - "@angular/common": "17.3.6", - "@angular/core": "17.3.6" + "@angular/animations": "17.3.10", + "@angular/common": "17.3.10", + "@angular/core": "17.3.10" }, "peerDependenciesMeta": { "@angular/animations": { @@ -975,9 +985,10 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.6.tgz", - "integrity": "sha512-dI+mgEROmSll042+XqkSsvkMQe6Et6L9BBiYYe7VbIFaRR9Dz5Pw2SeBLb+Ou+gWaxXc2Wc+13n442WEYWZ7Ew==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.10.tgz", + "integrity": "sha512-TW6G4+isdHM2ssQTRTobeAKtR2516pJ25BSwRb+9+Jw/ZAEYOOi+KQyofIFYQccaUjb3+LpjRcaZbtZ9m/Ispg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -985,16 +996,17 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.3.6", - "@angular/compiler": "17.3.6", - "@angular/core": "17.3.6", - "@angular/platform-browser": "17.3.6" + "@angular/common": "17.3.10", + "@angular/compiler": "17.3.10", + "@angular/core": "17.3.10", + "@angular/platform-browser": "17.3.10" } }, "node_modules/@angular/router": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.6.tgz", - "integrity": "sha512-Gws3zukTlPO5lIGP0bmWBkmbRIRKvpPq6vs3BqQlbKsrfBh45SPvIRbx+BSv6WYUchQzfW7DFDXnQtiTEGGQNg==", + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.10.tgz", + "integrity": "sha512-HlZlR9BOLoEKGOSMjmL5EfYL7F7PeDifbFi0dYWNcrG8zFrVKFklB1cuBdJhfPZgYhDEoGms/EToD71tg5wliA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -1002,9 +1014,9 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.3.6", - "@angular/core": "17.3.6", - "@angular/platform-browser": "17.3.6", + "@angular/common": "17.3.10", + "@angular/core": "17.3.10", + "@angular/platform-browser": "17.3.10", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -11542,10 +11554,11 @@ } }, "node_modules/jest-preset-angular": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.0.3.tgz", - "integrity": "sha512-usgBL7x0rXMnMSx8iEFeOozj50W6fp+YAmQcQBUdAXhN+PAXRy4UXL6I/rfcAOU09rnnq7RKsLsmhpp/fFEuag==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.1.0.tgz", + "integrity": "sha512-UJwPtpsAMl30UtBjHW0Ai0hhoKsNURC1dXH5tSYjumUsWR7iDke+oBEykz7uXv4rN+PWgeNIqkxo4KHQjOITlw==", "dev": true, + "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", "esbuild-wasm": ">=0.15.13", @@ -11561,10 +11574,10 @@ "esbuild": ">=0.15.13" }, "peerDependencies": { - "@angular-devkit/build-angular": ">=15.0.0 <18.0.0", - "@angular/compiler-cli": ">=15.0.0 <18.0.0", - "@angular/core": ">=15.0.0 <18.0.0", - "@angular/platform-browser-dynamic": ">=15.0.0 <18.0.0", + "@angular-devkit/build-angular": ">=15.0.0 <19.0.0", + "@angular/compiler-cli": ">=15.0.0 <19.0.0", + "@angular/core": ">=15.0.0 <19.0.0", + "@angular/platform-browser-dynamic": ">=15.0.0 <19.0.0", "jest": "^29.0.0", "typescript": ">=4.8" } @@ -17689,12 +17702,10 @@ } }, "node_modules/zone.js": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.4.tgz", - "integrity": "sha512-NtTUvIlNELez7Q1DzKVIFZBzNb646boQMgpATo9z3Ftuu/gWvzxCW7jdjcUDoRGxRikrhVHB/zLXh1hxeJawvw==", - "dependencies": { - "tslib": "^2.3.0" - } + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.6.tgz", + "integrity": "sha512-vyRNFqofdaHVdWAy7v3Bzmn84a1JHWSjpuTZROT/uYn8I3p2cmo7Ro9twFmYRQDPhiYOV7QLk0hhY4JJQVqS6Q==", + "license": "MIT" } } } diff --git a/frontend/package.json b/frontend/package.json index 458d7e4db5..378772ff9f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -40,7 +40,7 @@ "ngx-toastr": "^18.0.0", "rxjs": "^7.8.1", "tslib": "^2.6.2", - "zone.js": "0.14.4" + "zone.js": "0.14.6" }, "devDependencies": { "@angular-devkit/build-angular": "^17.3.6", diff --git a/pom.xml b/pom.xml index a9d30f87ab..9a14c71eba 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.114-SNAPSHOT + 2.0.122-SNAPSHOT org.springframework.boot