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