mirror of
https://github.com/AlbrechtL/openwrt-docker.git
synced 2026-10-20 16:01:34 +00:00
Update zone.js 0.15 -> 0.16 and minor dependency bumps
express 4.22.3, @types/express 4.17.25, @types/node 26.6.5, @types/jasmine 5.1.15 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
49f64c3b65
commit
db8cd43068
@@ -1,345 +0,0 @@
|
||||
name: OpenWrt 24.10-SNAPSHOT build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 20 * * *'
|
||||
|
||||
env:
|
||||
OPENWRT_VERSION: 24.10-SNAPSHOT
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
registry:
|
||||
image: registry:2
|
||||
ports:
|
||||
- 5000:5000
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Set Swap Space
|
||||
uses: pierotofy/set-swap-space@master
|
||||
with:
|
||||
swap-size-gb: 10
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
driver-opts: network=host # Important to access local Docker registry
|
||||
|
||||
- name: Login into Docker Hub
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build Docker image
|
||||
uses: docker/build-push-action@v7
|
||||
env:
|
||||
DOCKER_BUILD_RECORD_UPLOAD: false
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
provenance: false
|
||||
platforms: |
|
||||
linux/x86_64
|
||||
linux/arm64
|
||||
build-args: |
|
||||
OPENWRT_VERSION=${{ env.OPENWRT_VERSION }}
|
||||
BUILDKIT_MULTI_PLATFORM=1
|
||||
tags: |
|
||||
albrechtloh/openwrt-docker:ci-openwrt-2410-snapshot
|
||||
localhost:5000/local/openwrt-docker:latest
|
||||
|
||||
- name: Inspect
|
||||
run: |
|
||||
docker buildx imagetools inspect localhost:5000/local/openwrt-docker:latest
|
||||
|
||||
- name: Build and export
|
||||
uses: docker/build-push-action@v7
|
||||
env:
|
||||
DOCKER_BUILD_SUMMARY: false
|
||||
DOCKER_BUILD_RECORD_UPLOAD: false
|
||||
with:
|
||||
tags: openwrt-docker:latest
|
||||
build-args: OPENWRT_VERSION=${{ env.OPENWRT_VERSION }}
|
||||
allow: security.insecure,network.host
|
||||
outputs: type=docker,dest=/tmp/openwrt-docker-image.tar
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: OpenWrt Docker Image
|
||||
path: /tmp/openwrt-docker-image.tar
|
||||
|
||||
- name: Login to Weidmueller wmucdev
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: wmucdev.azurecr.io
|
||||
username: ${{ secrets.WMUCDEV_USERNAME }}
|
||||
password: ${{ secrets.WMUCDEV_TOKEN }}
|
||||
|
||||
- name: Create Weidmueller u-OS app
|
||||
id: create_u-os-app
|
||||
run: |
|
||||
# uc-aom-packager accept only version that has to be greater than the previous one. Lets use the datetime to ensure that.
|
||||
DATETIME=$(date "+%Y%m%d%H%M%S")
|
||||
|
||||
# uc-aom-packager allow only decimal numbers as version number for an unkonwn reason
|
||||
# see https://github.com/weidmueller/uc-addon/blob/main/uc-manifest.schema-doc.md#version)
|
||||
# So lets convert the git hash into a decimal value
|
||||
GIT_HASH=`git rev-parse --short HEAD`
|
||||
GIT_HASH_DECIMAL=$((16#$GIT_HASH))
|
||||
|
||||
# Create app version
|
||||
#APP_VERSION=$OPENWRT_VERSION.$DATETIME-$GIT_HASH_DECIMAL
|
||||
APP_VERSION=24.10.99.$DATETIME-$GIT_HASH_DECIMAL # TODO just for SNAPSHOT
|
||||
|
||||
echo "***** Create manifest from template *****"
|
||||
mv u-os-app/manifest.json.template u-os-app/manifest.json
|
||||
sed -i 's/APPVERSION_TO_INSERT/'"$APP_VERSION"'/g' u-os-app/manifest.json
|
||||
cat u-os-app/manifest.json | grep version
|
||||
|
||||
echo "***** Run uc-aom-packager to create the u-OS app *****"
|
||||
# uc-aom-packager accepts only multiarch images. "--build-arg BUILDKIT_MULTI_PLATFORM=1" has to set to ensure that.
|
||||
# uc-aom-packager needs to Docker registry credentials in a clear text file. Because of security concerns we use a local registry without credentials here.
|
||||
|
||||
docker run --rm --network=host --pull=always \
|
||||
--mount src=$(pwd)/u-os-app,target=/tmp/u-os-app-openwrt,type=bind wmucdev.azurecr.io/u-control/uc-aom-packager:0 \
|
||||
uc-aom-packager push \
|
||||
-m /tmp/u-os-app-openwrt \
|
||||
-s /tmp/u-os-app-openwrt/source-credentials.json \
|
||||
-t /tmp/u-os-app-openwrt/target-credentials.json \
|
||||
-v
|
||||
|
||||
echo "***** Create SWU app file*****"
|
||||
docker run --rm --network=host --pull=always \
|
||||
--mount src=$(pwd)/u-os-app,target=/tmp/u-os-app-openwrt,type=bind wmucdev.azurecr.io/u-control/uc-aom-packager:0 \
|
||||
uc-aom-packager \
|
||||
export \
|
||||
-t /tmp/u-os-app-openwrt/target-credentials.json \
|
||||
--version $APP_VERSION \
|
||||
-o /tmp/u-os-app-openwrt/u-os-app-openwrt_$APP_VERSION.swu \
|
||||
-v
|
||||
|
||||
find u-os-app/
|
||||
|
||||
- name: Archive artifacts (OpenWrt u-OS app)
|
||||
if: always() && steps.create_u-os-app.outcome == 'success'
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: OpenWrt u-OS app
|
||||
path: u-os-app/u-os-app-openwrt_*.swu/linux-arm64/*.swu
|
||||
if-no-files-found: error
|
||||
|
||||
|
||||
sbom:
|
||||
name: SBOM generation
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Generate alpine SBOM
|
||||
uses: anchore/sbom-action@v0
|
||||
with:
|
||||
image: albrechtloh/openwrt-docker:ci-openwrt-2410-snapshot
|
||||
upload-artifact: false
|
||||
format: cyclonedx-json
|
||||
output-file: alpine_sbom.json
|
||||
|
||||
- name: Prepare OpenWrt rootfs
|
||||
run: |
|
||||
# Use automated generated image
|
||||
sed -i 's/image: albrechtloh\/openwrt-docker:latest/image: albrechtloh\/openwrt-docker:ci-openwrt-2410-snapshot/g' docker-compose.yml
|
||||
|
||||
# Run OpenWrt container for some time to install additional IPKs
|
||||
set +e # Enable that the next command can fail
|
||||
timeout --preserve-status 60 docker compose up
|
||||
set -e # Revert set +e
|
||||
|
||||
# Get image from volume
|
||||
sudo find /var/lib/docker/volumes/
|
||||
IMAGE=$(sudo cat /var/lib/docker/volumes/openwrt-docker_data/_data/current_version)
|
||||
echo $IMAGE
|
||||
|
||||
# Mount volume
|
||||
wget https://raw.githubusercontent.com/AlbrechtL/openwrt-docker/refs/heads/master/src/mount_openwrt_squashfs_combined.sh
|
||||
chmod +x mount_openwrt_squashfs_combined.sh
|
||||
sudo ./mount_openwrt_squashfs_combined.sh "/var/lib/docker/volumes/openwrt-docker_data/_data/${IMAGE}"
|
||||
|
||||
- name: Generate OpenWrt SBOM
|
||||
uses: anchore/sbom-action@v0
|
||||
with:
|
||||
path: /mnt
|
||||
upload-artifact: false
|
||||
format: cyclonedx-json
|
||||
output-file: openwrt_sbom.json
|
||||
|
||||
- name: Generate web-frontend SBOM
|
||||
uses: anchore/sbom-action@v0
|
||||
with:
|
||||
path: web-frontend
|
||||
upload-artifact: false
|
||||
format: cyclonedx-json
|
||||
output-file: web-frontend_sbom.json
|
||||
|
||||
- name: Generate web-backend SBOM
|
||||
uses: anchore/sbom-action@v0
|
||||
with:
|
||||
path: web-backend
|
||||
upload-artifact: false
|
||||
format: cyclonedx-json
|
||||
output-file: web-backend_sbom.json
|
||||
|
||||
- name: Archive artifacts (SBOMs)
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: Software Bill of Material (SBOM)
|
||||
path: ./*.json
|
||||
if-no-files-found: error
|
||||
|
||||
test:
|
||||
name: Test
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: OpenWrt Docker Image
|
||||
path: .
|
||||
|
||||
- name: Install VMs
|
||||
run: |
|
||||
set -x
|
||||
sudo snap install multipass # multipass >= 1.15 because of networks support
|
||||
sudo chmod a+w /var/snap/multipass/common/multipass_socket # Fix 'multipass socket access denied'
|
||||
multipass find
|
||||
|
||||
# Set up some bridges for the VMs
|
||||
sudo ip link add lannetvm type bridge
|
||||
sudo ip link add wannetvm type bridge
|
||||
sudo ip link set dev lannetvm up
|
||||
sudo ip link set dev wannetvm up
|
||||
ip addr
|
||||
|
||||
# We need to disable the firewall otherwise the tap devices are not working properly
|
||||
sudo ufw disable
|
||||
|
||||
# Start VMs
|
||||
# Multipass and the OpenWrt container are using the same MAC QUI 52:54:00 which creates error. Let's use differnet MAC addresses here
|
||||
multipass launch docker --network name=wannetvm,mac=06:00:00:11:22:33 --network name=lannetvm,mac=06:00:00:44:55:66 --name router-vm
|
||||
multipass mount $GITHUB_WORKSPACE router-vm
|
||||
|
||||
multipass launch --network wannetvm --name wan-vm
|
||||
multipass launch --network lannetvm --name lan-vm
|
||||
|
||||
- name: Show VM and and environments variables
|
||||
run: |
|
||||
export
|
||||
multipass exec router-vm -- lsb_release -a
|
||||
multipass info
|
||||
|
||||
- name: Load image
|
||||
run: |
|
||||
multipass exec router-vm -- docker load --input openwrt-docker-image.tar
|
||||
multipass exec router-vm -- docker image ls -a
|
||||
|
||||
- name: Prepare VMs
|
||||
run: |
|
||||
# By default portainer is running at port 9000. But we need port 9000
|
||||
multipass exec router-vm -- docker stop portainer
|
||||
|
||||
# Install python
|
||||
multipass exec router-vm -- sudo apt-get -y install python3-pip python-is-python3 python3-venv
|
||||
|
||||
# Install everthing for pytest
|
||||
multipass exec router-vm -- find .
|
||||
multipass exec router-vm -- bash -c 'python -m venv ~/.venv'
|
||||
multipass exec router-vm -- bash -c 'source ~/.venv/bin/activate && pip install -r test/requirements.txt'
|
||||
|
||||
echo '******** router-vm IPs ********'
|
||||
multipass exec router-vm -- ip addr
|
||||
|
||||
# Prepare WAN VM
|
||||
echo '******** wan-vm IPs ********'
|
||||
# Add IP address
|
||||
multipass exec wan-vm -- sudo ip addr add 192.168.22.1/24 dev ens4
|
||||
multipass exec wan-vm -- ip addr
|
||||
# Install DHCP server
|
||||
multipass exec wan-vm -- sudo sh -c 'apt-get update && apt-get install -y isc-dhcp-server && echo "default-lease-time 600;\nmax-lease-time 7200;\nsubnet 192.168.22.0 netmask 255.255.255.0 {\n range 192.168.22.100 192.168.22.200;\n option routers 192.168.22.1;\n option domain-name-servers 8.8.8.8, 8.8.4.4;\n option domain-name \"example.org\";\n}" > /etc/dhcp/dhcpd.conf && systemctl enable isc-dhcp-server && systemctl restart isc-dhcp-server'
|
||||
multipass exec wan-vm -- cat /etc/dhcp/dhcpd.conf
|
||||
# Enable NAT
|
||||
multipass exec wan-vm -- sudo modprobe iptable_nat
|
||||
multipass exec wan-vm -- sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
|
||||
multipass exec wan-vm -- sudo sysctl -w net.ipv4.ip_forward=1
|
||||
|
||||
# Prepare LAN VM
|
||||
echo '******** lan-vm IPs ********'
|
||||
multipass exec lan-vm -- sudo ip addr add 172.31.1.2/24 dev ens4
|
||||
multipass exec lan-vm -- sudo ip addr add 172.31.22.2/24 dev ens4
|
||||
multipass exec lan-vm -- ip addr
|
||||
|
||||
# Double check if virtual networks are working
|
||||
echo '******** host IPs ********'
|
||||
ip addr
|
||||
sudo ufw status
|
||||
|
||||
echo '******** router-vm IPs ********'
|
||||
multipass exec router-vm -- sudo ip addr add 192.168.22.99/24 dev ens4
|
||||
multipass exec router-vm -- sudo ip addr add 172.31.22.99/24 dev ens5
|
||||
multipass exec router-vm -- ip addr
|
||||
|
||||
echo '******** Test connection between router-vm, lan-vm and wan-vm ********'
|
||||
multipass exec router-vm -- ping -c 1 192.168.22.1 # to wan-vm
|
||||
multipass exec router-vm -- ping -c 1 172.31.22.2 # to lan-vm
|
||||
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
cat test/tests/docker-compose.yml.template
|
||||
# Run pytest
|
||||
multipass exec router-vm -- bash -c 'source ~/.venv/bin/activate && cd test/ && pytest -v -s --html=report.html --self-contained-html --reruns 3'
|
||||
|
||||
- name: Archive test report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: Test report
|
||||
path: test/*.html
|
||||
if-no-files-found: error
|
||||
|
||||
publish:
|
||||
name: Publish
|
||||
needs: test
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Login into Docker Hub
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Tag image at Docker Hub
|
||||
run: |
|
||||
docker buildx imagetools create \
|
||||
--tag albrechtloh/openwrt-docker:openwrt-2410-snapshot \
|
||||
albrechtloh/openwrt-docker:ci-openwrt-2410-snapshot
|
||||
Generated
+118
-59
@@ -24,7 +24,7 @@
|
||||
"express": "^4.18.2",
|
||||
"rxjs": "~7.8.0",
|
||||
"tslib": "^2.3.0",
|
||||
"zone.js": "~0.15.0"
|
||||
"zone.js": "~0.16.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/build": "^22.2.3",
|
||||
@@ -3963,16 +3963,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/express": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
|
||||
"integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
|
||||
"version": "4.17.25",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
|
||||
"integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/body-parser": "*",
|
||||
"@types/express-serve-static-core": "^4.17.33",
|
||||
"@types/qs": "*",
|
||||
"@types/serve-static": "*"
|
||||
"@types/serve-static": "^1"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/express-serve-static-core": {
|
||||
@@ -4003,9 +4003,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/jasmine": {
|
||||
"version": "5.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.5.tgz",
|
||||
"integrity": "sha512-SaCZ3kM5NjOiJqMRYwHpLbTfUC2Dyk1KS3QanNFsUYPGTk70CWVK/J9ueun6zNhw/UkgV7xl8V4ZLQZNRbfnNw==",
|
||||
"version": "5.1.15",
|
||||
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.15.tgz",
|
||||
"integrity": "sha512-ZAC8KjmV2MJxbNTrwXFN+HKeajpXQZp6KpPiR6Aa4XvaEnjP6qh23lL/Rqb7AYzlp3h/rcwDrQ7Gg7q28cQTQg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -4024,13 +4024,13 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "26.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.1.tgz",
|
||||
"integrity": "sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==",
|
||||
"version": "26.6.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz",
|
||||
"integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~8.3.0"
|
||||
"undici-types": "~8.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/qs": {
|
||||
@@ -4280,23 +4280,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser": {
|
||||
"version": "1.20.3",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
|
||||
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
|
||||
"version": "1.20.8",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.8.tgz",
|
||||
"integrity": "sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"bytes": "~3.1.2",
|
||||
"content-type": "~1.0.5",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"http-errors": "2.0.0",
|
||||
"iconv-lite": "0.4.24",
|
||||
"on-finished": "2.4.1",
|
||||
"qs": "6.13.0",
|
||||
"raw-body": "2.5.2",
|
||||
"destroy": "~1.2.0",
|
||||
"http-errors": "~2.0.1",
|
||||
"iconv-lite": "~0.4.24",
|
||||
"on-finished": "~2.4.1",
|
||||
"qs": "~6.16.0",
|
||||
"raw-body": "~2.5.3",
|
||||
"type-is": "~1.6.18",
|
||||
"unpipe": "1.0.0"
|
||||
"unpipe": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8",
|
||||
@@ -4312,12 +4312,41 @@
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser/node_modules/http-errors": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
|
||||
"integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"depd": "~2.0.0",
|
||||
"inherits": "~2.0.4",
|
||||
"setprototypeof": "~1.2.0",
|
||||
"statuses": "~2.0.2",
|
||||
"toidentifier": "~1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/express"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/body-parser/node_modules/statuses": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
|
||||
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/boolbase": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-2.0.0.tgz",
|
||||
@@ -5232,39 +5261,39 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/express": {
|
||||
"version": "4.21.2",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
|
||||
"integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
|
||||
"version": "4.22.3",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.22.3.tgz",
|
||||
"integrity": "sha512-Bdcs4+3qlpVlx2NRn6fgX2Ue2/gGRaPeawebgclM0ERSCqDpA+owF1fdPwjJUTAJWMTuAaxjDf+hzb0/4eKvvw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"accepts": "~1.3.8",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.20.3",
|
||||
"content-disposition": "0.5.4",
|
||||
"body-parser": "~1.20.5",
|
||||
"content-disposition": "~0.5.4",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.7.1",
|
||||
"cookie-signature": "1.0.6",
|
||||
"cookie": "~0.7.1",
|
||||
"cookie-signature": "~1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"encodeurl": "~2.0.0",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"finalhandler": "1.3.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"finalhandler": "~1.3.1",
|
||||
"fresh": "~0.5.2",
|
||||
"http-errors": "~2.0.0",
|
||||
"merge-descriptors": "1.0.3",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "2.4.1",
|
||||
"on-finished": "~2.4.1",
|
||||
"parseurl": "~1.3.3",
|
||||
"path-to-regexp": "0.1.12",
|
||||
"path-to-regexp": "~0.1.13",
|
||||
"proxy-addr": "~2.0.7",
|
||||
"qs": "6.13.0",
|
||||
"qs": "~6.16.0",
|
||||
"range-parser": "~1.2.1",
|
||||
"safe-buffer": "5.2.1",
|
||||
"send": "0.19.0",
|
||||
"serve-static": "1.16.2",
|
||||
"send": "~0.19.0",
|
||||
"serve-static": "~1.16.2",
|
||||
"setprototypeof": "1.2.0",
|
||||
"statuses": "2.0.1",
|
||||
"statuses": "~2.0.1",
|
||||
"type-is": "~1.6.18",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
@@ -7373,9 +7402,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "0.1.12",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
|
||||
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
|
||||
"version": "0.1.13",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
|
||||
"integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
@@ -7529,12 +7558,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.13.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
|
||||
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
|
||||
"version": "6.16.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz",
|
||||
"integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.0.6"
|
||||
"es-define-property": "^1.0.1",
|
||||
"side-channel": "^1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
@@ -7553,20 +7583,49 @@
|
||||
}
|
||||
},
|
||||
"node_modules/raw-body": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
|
||||
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
|
||||
"version": "2.5.3",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
|
||||
"integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"http-errors": "2.0.0",
|
||||
"iconv-lite": "0.4.24",
|
||||
"unpipe": "1.0.0"
|
||||
"bytes": "~3.1.2",
|
||||
"http-errors": "~2.0.1",
|
||||
"iconv-lite": "~0.4.24",
|
||||
"unpipe": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/raw-body/node_modules/http-errors": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
|
||||
"integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"depd": "~2.0.0",
|
||||
"inherits": "~2.0.4",
|
||||
"setprototypeof": "~1.2.0",
|
||||
"statuses": "~2.0.2",
|
||||
"toidentifier": "~1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/express"
|
||||
}
|
||||
},
|
||||
"node_modules/raw-body/node_modules/statuses": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
|
||||
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
|
||||
@@ -8700,9 +8759,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
|
||||
"integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
|
||||
"version": "8.9.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
|
||||
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -9090,9 +9149,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/zone.js": {
|
||||
"version": "0.15.0",
|
||||
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz",
|
||||
"integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==",
|
||||
"version": "0.16.3",
|
||||
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.16.3.tgz",
|
||||
"integrity": "sha512-ihXL9+vhYyEhXz4TDNpHeAOZN9FVrbog0Il64OIEI28UP/n5AaI6gsccRuOHBfx+206agzyoK527bYIO0Foy6A==",
|
||||
"license": "MIT"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"express": "^4.18.2",
|
||||
"rxjs": "~7.8.0",
|
||||
"tslib": "^2.3.0",
|
||||
"zone.js": "~0.15.0"
|
||||
"zone.js": "~0.16.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/build": "^22.2.3",
|
||||
@@ -45,4 +45,4 @@
|
||||
"karma-jasmine-html-reporter": "~2.1.0",
|
||||
"typescript": "~6.0.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user