Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a48715ea8 | |||
| 9d34f5f7c5 | |||
| 5b4bb6b33a | |||
| e16b492257 | |||
| 265e02119a | |||
| 82d454ade4 | |||
| a9b300d711 | |||
| fded3a04d4 | |||
| 0d897f17b5 | |||
| 216f6f83fe | |||
| c023bdccae | |||
| 78f3ad8fcc | |||
| 2e7a52ed15 | |||
| 221b3533e5 | |||
| 578dccd0cf | |||
| 0ecad475ef | |||
| d5789b79a6 | |||
| 45ce90f3cc | |||
| 3a817625c5 | |||
| d5abea48b3 | |||
| 1da69ac272 | |||
| bd2092a3ea | |||
| afb6fb8ac7 | |||
| 414e9f4c33 | |||
| 10035221fb | |||
| 52a6f4368c | |||
| e774dbc301 | |||
| 5bf582f3ad |
@@ -0,0 +1,92 @@
|
|||||||
|
name: PR
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: https://git.keligrubb.com/actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: https://git.keligrubb.com/actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: "24"
|
||||||
|
cache: "npm"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Run lint
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: https://git.keligrubb.com/actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: https://git.keligrubb.com/actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: "24"
|
||||||
|
cache: "npm"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm run test
|
||||||
|
|
||||||
|
e2e:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: mcr.microsoft.com/playwright:v1.59.1-noble
|
||||||
|
steps:
|
||||||
|
- uses: https://git.keligrubb.com/actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: https://git.keligrubb.com/actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: "24"
|
||||||
|
cache: "npm"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Generate dev cert
|
||||||
|
run: ./scripts/gen-dev-cert.sh
|
||||||
|
|
||||||
|
- name: Run e2e tests
|
||||||
|
run: npm run test:e2e
|
||||||
|
env:
|
||||||
|
NODE_TLS_REJECT_UNAUTHORIZED: "0"
|
||||||
|
|
||||||
|
docker-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: https://git.keligrubb.com/actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Set Docker image tag
|
||||||
|
id: image
|
||||||
|
run: |
|
||||||
|
REGISTRY="${GITHUB_SERVER_URL#https://}"
|
||||||
|
REGISTRY="${REGISTRY#http://}"
|
||||||
|
echo "tag=${REGISTRY}/${{ github.repository }}:latest" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: https://git.keligrubb.com/actions/docker-setup-buildx-action@v4
|
||||||
|
|
||||||
|
- name: Build (dry run)
|
||||||
|
uses: https://git.keligrubb.com/actions/docker-build-push-action@v7
|
||||||
|
env:
|
||||||
|
# Keeps GITHUB_OUTPUT small; Gitea act-runner can choke on multiline
|
||||||
|
# outputs when PR webhook payloads (e.g. Renovate bodies) are huge.
|
||||||
|
DOCKER_BUILD_SUMMARY: "false"
|
||||||
|
DOCKER_BUILD_RECORD_UPLOAD: "false"
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: false
|
||||||
|
provenance: false
|
||||||
|
sbom: false
|
||||||
|
tags: ${{ steps.image.outputs.tag }}
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
name: Push
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: https://git.keligrubb.com/actions/checkout@v6
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.KESTRELOS_REPO_TOKEN }}
|
||||||
|
|
||||||
|
- name: Get PR description for changelog
|
||||||
|
env:
|
||||||
|
GITEA_REPO_TOKEN: ${{ secrets.KESTRELOS_REPO_TOKEN }}
|
||||||
|
run: |
|
||||||
|
sudo rm -f /etc/apt/sources.list.d/microsoft*.list /etc/apt/sources.list.d/azure*.list 2>/dev/null || true
|
||||||
|
sudo apt-get update -qq && sudo apt-get install -y -qq jq
|
||||||
|
RESP=$(curl -sf -H "Authorization: token $GITEA_REPO_TOKEN" \
|
||||||
|
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/commits/${{ github.sha }}/pull") || true
|
||||||
|
if [ -n "$RESP" ]; then
|
||||||
|
echo "$RESP" | jq -r '.body // empty' > .ci_pr_body 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Release (bump, tag, push, create release)
|
||||||
|
env:
|
||||||
|
CI_REPO_OWNER: ${{ github.actor }}
|
||||||
|
CI_REPO_NAME: ${{ github.event.repository.name }}
|
||||||
|
CI_FORGE_URL: ${{ github.server_url }}
|
||||||
|
CI_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
|
||||||
|
GITEA_REPO_TOKEN: ${{ secrets.KESTRELOS_REPO_TOKEN }}
|
||||||
|
run: |
|
||||||
|
sudo rm -f /etc/apt/sources.list.d/microsoft*.list /etc/apt/sources.list.d/azure*.list 2>/dev/null || true
|
||||||
|
sudo apt-get update -qq && sudo apt-get install -y -qq git wget
|
||||||
|
./scripts/release.sh
|
||||||
|
|
||||||
|
publish:
|
||||||
|
needs: release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: https://git.keligrubb.com/actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
token: ${{ secrets.KESTRELOS_REPO_TOKEN }}
|
||||||
|
|
||||||
|
- name: Log in to container registry
|
||||||
|
uses: https://git.keligrubb.com/actions/docker-login-action@v4
|
||||||
|
with:
|
||||||
|
registry: git.keligrubb.com
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.KESTRELOS_REPO_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: https://git.keligrubb.com/actions/docker-setup-buildx-action@v4
|
||||||
|
|
||||||
|
- name: Build Docker image
|
||||||
|
uses: https://git.keligrubb.com/actions/docker-build-push-action@v7
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
load: true
|
||||||
|
tags: kestrelos:built
|
||||||
|
|
||||||
|
- name: Push Docker image (version + latest)
|
||||||
|
run: |
|
||||||
|
VERSION=$(awk '/"version"/ { match($0, /[0-9]+\.[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH); exit }' package.json)
|
||||||
|
case "$VERSION" in
|
||||||
|
[0-9]*.[0-9]*.[0-9]*) ;;
|
||||||
|
*) echo "error: package.json version must be x.y.z (got: $VERSION)"; exit 1 ;;
|
||||||
|
esac
|
||||||
|
REGISTRY="git.keligrubb.com"
|
||||||
|
IMAGE="$REGISTRY/${{ github.repository }}"
|
||||||
|
for tag in "$VERSION" latest; do
|
||||||
|
docker tag kestrelos:built "$IMAGE:$tag"
|
||||||
|
docker push "$IMAGE:$tag"
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Set up Helm
|
||||||
|
uses: https://git.keligrubb.com/actions/setup-helm@v5
|
||||||
|
|
||||||
|
- name: Package and push Helm chart
|
||||||
|
env:
|
||||||
|
GITEA_REPO_TOKEN: ${{ secrets.KESTRELOS_REPO_TOKEN }}
|
||||||
|
run: |
|
||||||
|
helm package helm/kestrelos
|
||||||
|
for f in kestrelos-*.tgz; do
|
||||||
|
curl -sf -u "${{ github.actor }}:$GITEA_REPO_TOKEN" -X POST --upload-file "$f" \
|
||||||
|
"${{ github.server_url }}/api/packages/${{ github.actor }}/helm/api/charts"
|
||||||
|
done
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
when:
|
|
||||||
- event: pull_request
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: install
|
|
||||||
image: node:24-slim
|
|
||||||
depends_on: []
|
|
||||||
commands:
|
|
||||||
- npm ci
|
|
||||||
|
|
||||||
- name: lint
|
|
||||||
image: node:24-slim
|
|
||||||
depends_on: [install]
|
|
||||||
commands:
|
|
||||||
- npm run lint
|
|
||||||
|
|
||||||
- name: test
|
|
||||||
image: node:24-slim
|
|
||||||
depends_on: [install]
|
|
||||||
commands:
|
|
||||||
- npm run test
|
|
||||||
|
|
||||||
- name: e2e
|
|
||||||
image: mcr.microsoft.com/playwright:v1.58.2-noble
|
|
||||||
depends_on: [install]
|
|
||||||
commands:
|
|
||||||
- ./scripts/gen-dev-cert.sh
|
|
||||||
- npm run test:e2e
|
|
||||||
environment:
|
|
||||||
NODE_TLS_REJECT_UNAUTHORIZED: "0"
|
|
||||||
|
|
||||||
- name: docker-build
|
|
||||||
image: woodpeckerci/plugin-kaniko
|
|
||||||
depends_on: []
|
|
||||||
settings:
|
|
||||||
repo: ${CI_REPO_OWNER}/${CI_REPO_NAME}
|
|
||||||
registry: git.keligrubb.com
|
|
||||||
tags: latest
|
|
||||||
dry-run: true
|
|
||||||
single-snapshot: true
|
|
||||||
cleanup: true
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
when:
|
|
||||||
- event: push
|
|
||||||
branch: main
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: release
|
|
||||||
image: alpine
|
|
||||||
commands:
|
|
||||||
- apk add --no-cache git
|
|
||||||
- ./scripts/release.sh
|
|
||||||
environment:
|
|
||||||
GITEA_REPO_TOKEN:
|
|
||||||
from_secret: gitea_repo_token
|
|
||||||
|
|
||||||
- name: docker
|
|
||||||
image: woodpeckerci/plugin-kaniko
|
|
||||||
depends_on: [release]
|
|
||||||
settings:
|
|
||||||
repo: ${CI_REPO_OWNER}/${CI_REPO_NAME}
|
|
||||||
registry: git.keligrubb.com
|
|
||||||
username: ${CI_REPO_OWNER}
|
|
||||||
password:
|
|
||||||
from_secret: gitea_registry_token
|
|
||||||
single-snapshot: true
|
|
||||||
cleanup: true
|
|
||||||
|
|
||||||
- name: helm
|
|
||||||
image: alpine/helm
|
|
||||||
depends_on: [release]
|
|
||||||
environment:
|
|
||||||
GITEA_REGISTRY_TOKEN:
|
|
||||||
from_secret: gitea_registry_token
|
|
||||||
commands:
|
|
||||||
- apk add --no-cache curl
|
|
||||||
- helm package helm/kestrelos
|
|
||||||
- curl -sf -u $CI_REPO_OWNER:$GITEA_REGISTRY_TOKEN -X POST --upload-file kestrelos-*.tgz https://git.keligrubb.com/api/packages/$CI_REPO_OWNER/helm/api/charts
|
|
||||||
+518
@@ -1,3 +1,521 @@
|
|||||||
|
## [1.1.4] - 2026-04-29
|
||||||
|
### Changed
|
||||||
|
- update all non-major dependencies (#31)
|
||||||
|
|
||||||
|
This PR contains the following updates:
|
||||||
|
|
||||||
|
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|
||||||
|
|---|---|---|---|
|
||||||
|
| [@vitest/coverage-v8](https://vitest.dev/guide/coverage) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)) | [`4.1.4` → `4.1.5`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-v8/4.1.4/4.1.5) |  |  |
|
||||||
|
| [@vue/test-utils](https://github.com/vuejs/test-utils) | [`2.4.6` → `2.4.8`](https://renovatebot.com/diffs/npm/@vue%2ftest-utils/2.4.6/2.4.8) |  |  |
|
||||||
|
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.2.0` → `10.2.1`](https://renovatebot.com/diffs/npm/eslint/10.2.0/10.2.1) |  |  |
|
||||||
|
| [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | [`5.6.0` → `5.7.2`](https://renovatebot.com/diffs/npm/fast-xml-parser/5.6.0/5.7.2) |  |  |
|
||||||
|
| [mediasoup](https://mediasoup.org) ([source](https://github.com/versatica/mediasoup)) | [`3.19.19` → `3.19.21`](https://renovatebot.com/diffs/npm/mediasoup/3.19.19/3.19.21) |  |  |
|
||||||
|
| [mediasoup-client](https://mediasoup.org) ([source](https://github.com/versatica/mediasoup-client)) | [`3.18.8` → `3.19.0`](https://renovatebot.com/diffs/npm/mediasoup-client/3.18.8/3.19.0) |  |  |
|
||||||
|
| [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`4.1.4` → `4.1.5`](https://renovatebot.com/diffs/npm/vitest/4.1.4/4.1.5) |  |  |
|
||||||
|
| [vue](https://vuejs.org/) ([source](https://github.com/vuejs/core)) | [`3.5.32` → `3.5.33`](https://renovatebot.com/diffs/npm/vue/3.5.32/3.5.33) |  |  |
|
||||||
|
| [vue-router](https://router.vuejs.org) ([source](https://github.com/vuejs/router)) | [`5.0.4` → `5.0.6`](https://renovatebot.com/diffs/npm/vue-router/5.0.4/5.0.6) |  |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Release Notes
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>vitest-dev/vitest (@​vitest/coverage-v8)</summary>
|
||||||
|
|
||||||
|
### [`v4.1.5`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.5)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5)
|
||||||
|
|
||||||
|
##### 🚀 Experimental Features
|
||||||
|
|
||||||
|
- **coverage**: Istanbul to support `instrumenter` option - by [@​BartWaardenburg](https://github.com/BartWaardenburg) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10119](https://github.com/vitest-dev/vitest/issues/10119) [<samp>(0e0ff)</samp>](https://github.com/vitest-dev/vitest/commit/0e0ff41c7)
|
||||||
|
|
||||||
|
##### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- \--project negation excludes browser instances - by [@​felamaslen](https://github.com/felamaslen) in [#​10131](https://github.com/vitest-dev/vitest/issues/10131) [<samp>(9423d)</samp>](https://github.com/vitest-dev/vitest/commit/9423dc084)
|
||||||
|
- Project color label on html reporter - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10142](https://github.com/vitest-dev/vitest/issues/10142) [<samp>(596f7)</samp>](https://github.com/vitest-dev/vitest/commit/596f73986)
|
||||||
|
- Fix `vi.defineHelper` called as object method - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10163](https://github.com/vitest-dev/vitest/issues/10163) [<samp>(122c2)</samp>](https://github.com/vitest-dev/vitest/commit/122c25b5b)
|
||||||
|
- Alias `agent` reporter to `minimal` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​10157](https://github.com/vitest-dev/vitest/issues/10157) [<samp>(663b9)</samp>](https://github.com/vitest-dev/vitest/commit/663b99fe3)
|
||||||
|
- Respect diff config options in soft assertions - by [@​Copilot](https://github.com/Copilot), **sheremet-va** and [@​sheremet-va](https://github.com/sheremet-va) in [#​8696](https://github.com/vitest-dev/vitest/issues/8696) [<samp>(9787d)</samp>](https://github.com/vitest-dev/vitest/commit/9787dedad)
|
||||||
|
- Respect diff config options in soft assertions " - by [@​sheremet-va](https://github.com/sheremet-va) in [#​8696](https://github.com/vitest-dev/vitest/issues/8696) [<samp>(7dc6d)</samp>](https://github.com/vitest-dev/vitest/commit/7dc6d54fd)
|
||||||
|
- **ast-collect**: Recognize \_*vi\_import* prefix in static test discovery - by [@​Yejneshwar](https://github.com/Yejneshwar) in [#​10129](https://github.com/vitest-dev/vitest/issues/10129) [<samp>(32546)</samp>](https://github.com/vitest-dev/vitest/commit/325463ab2)
|
||||||
|
- **coverage**: Descriptive error message when reports directory is removed during test run - by [@​DaveT1991](https://github.com/DaveT1991) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10117](https://github.com/vitest-dev/vitest/issues/10117) [<samp>(14133)</samp>](https://github.com/vitest-dev/vitest/commit/1413382e1)
|
||||||
|
- **snapshot**: Increase default snapshot max output length - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Codex** in [#​10150](https://github.com/vitest-dev/vitest/issues/10150) [<samp>(21e66)</samp>](https://github.com/vitest-dev/vitest/commit/21e66ff63)
|
||||||
|
- **ui**: Fix jsx/tsx syntax highlight - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10152](https://github.com/vitest-dev/vitest/issues/10152) [<samp>(f1b1f)</samp>](https://github.com/vitest-dev/vitest/commit/f1b1f6c7b)
|
||||||
|
- **web-worker**: Support MessagePort objects referenced inside postMessage data - by [@​whitphx](https://github.com/whitphx) and **Claude Opus 4.6 (1M context)** in [#​9927](https://github.com/vitest-dev/vitest/issues/9927) and [#​10124](https://github.com/vitest-dev/vitest/issues/10124) [<samp>(7ad7d)</samp>](https://github.com/vitest-dev/vitest/commit/7ad7d39af)
|
||||||
|
- **api**: Make test-specification options writable - by [@​sheremet-va](https://github.com/sheremet-va) in [#​10154](https://github.com/vitest-dev/vitest/issues/10154) [<samp>(6abd5)</samp>](https://github.com/vitest-dev/vitest/commit/6abd557b7)
|
||||||
|
|
||||||
|
##### [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>vuejs/test-utils (@​vue/test-utils)</summary>
|
||||||
|
|
||||||
|
### [`v2.4.8`](https://github.com/vuejs/test-utils/releases/tag/v2.4.8)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/vuejs/test-utils/compare/v2.4.7...v2.4.8)
|
||||||
|
|
||||||
|
[compare changes](https://github.com/vuejs/test-utils/compare/v2.4.7...v2.4.8)
|
||||||
|
|
||||||
|
##### 🩹 Fixes
|
||||||
|
|
||||||
|
- Correct declaration entrypoint ([#​2826](https://github.com/vuejs/test-utils/pull/2826))
|
||||||
|
|
||||||
|
##### 🤖 CI
|
||||||
|
|
||||||
|
- Enable pkg.pr.new ([#​2827](https://github.com/vuejs/test-utils/pull/2827))
|
||||||
|
|
||||||
|
##### ❤️ Contributors
|
||||||
|
|
||||||
|
- Cédric Exbrayat ([@​cexbrayat](https://github.com/cexbrayat))
|
||||||
|
- Daniel Roe ([@​danielroe](https://github.com/danielroe))
|
||||||
|
|
||||||
|
### [`v2.4.7`](https://github.com/vuejs/test-utils/releases/tag/v2.4.7)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/vuejs/test-utils/compare/v2.4.6...v2.4.7)
|
||||||
|
|
||||||
|
[compare changes](https://github.com/vuejs/test-utils/compare/v2.4.6...v2.4.7)
|
||||||
|
|
||||||
|
##### 🚀 Enhancements
|
||||||
|
|
||||||
|
- Add Chinese docs translation ([#​2552](https://github.com/vuejs/test-utils/pull/2552))
|
||||||
|
- SetData()/shallowMount with initialData for components using the Composition API / <script setup> ([#​2655](https://github.com/vuejs/test-utils/pull/2655))
|
||||||
|
|
||||||
|
##### 🩹 Fixes
|
||||||
|
|
||||||
|
- Preserve code from keyboard events ([#​2434](https://github.com/vuejs/test-utils/pull/2434))
|
||||||
|
- Switch browser and require exports definitions ([#​2501](https://github.com/vuejs/test-utils/pull/2501))
|
||||||
|
- Re-add peer dependencies but with wider range ([#​2511](https://github.com/vuejs/test-utils/pull/2511))
|
||||||
|
- Resolve warnings in docs:dev ([30b7491](https://github.com/vuejs/test-utils/commit/30b7491))
|
||||||
|
- Resolve TypeScript type errors in .vitepress/config ([#​2549](https://github.com/vuejs/test-utils/pull/2549))
|
||||||
|
- Accept FunctionalComponent<any> as selector ([0bb947f](https://github.com/vuejs/test-utils/commit/0bb947f))
|
||||||
|
- Text() misses content for array functional component ([#​2579](https://github.com/vuejs/test-utils/pull/2579))
|
||||||
|
- Use await in test ([c5482b4](https://github.com/vuejs/test-utils/commit/c5482b4))
|
||||||
|
- **deps:** Update dependency vue-component-type-helpers to v3 ([#​2683](https://github.com/vuejs/test-utils/pull/2683))
|
||||||
|
- Remove wrapper div when unmount ([#​2700](https://github.com/vuejs/test-utils/pull/2700))
|
||||||
|
- Make mount options slots compatible with noUncheckedIndexedAccess true ([#​2713](https://github.com/vuejs/test-utils/pull/2713))
|
||||||
|
- Add missing peerDependency [@​vue/compiler-dom](https://github.com/vue/compiler-dom) ([75801ba](https://github.com/vuejs/test-utils/commit/75801ba))
|
||||||
|
- **docs:** Declare css module for vitepress typecheck ([ddaca97](https://github.com/vuejs/test-utils/commit/ddaca97))
|
||||||
|
|
||||||
|
##### 💅 Refactors
|
||||||
|
|
||||||
|
- Enforce consistent usage of type imports ([#​2734](https://github.com/vuejs/test-utils/pull/2734))
|
||||||
|
|
||||||
|
##### 📖 Documentation
|
||||||
|
|
||||||
|
- Clarify findComponent vs getComponent ([#​2435](https://github.com/vuejs/test-utils/pull/2435))
|
||||||
|
- Update fr docs ([67064ef](https://github.com/vuejs/test-utils/commit/67064ef))
|
||||||
|
- Add note about partial transition stub support ([#​2431](https://github.com/vuejs/test-utils/pull/2431))
|
||||||
|
- Fix missing data at passing data section essentials guide ([dda205e](https://github.com/vuejs/test-utils/commit/dda205e))
|
||||||
|
- Fix missing data at passing data section essentials guide fr ([ae2c72c](https://github.com/vuejs/test-utils/commit/ae2c72c))
|
||||||
|
- Fix plugin TS declaration example ([#​2466](https://github.com/vuejs/test-utils/pull/2466))
|
||||||
|
- Fixed incorrect checkbox value check ([#​2495](https://github.com/vuejs/test-utils/pull/2495))
|
||||||
|
- Capital letter in sentence fix ([#​2499](https://github.com/vuejs/test-utils/pull/2499))
|
||||||
|
- Import missing DOMWrapper on Implementation of the plugin section ([#​2519](https://github.com/vuejs/test-utils/pull/2519))
|
||||||
|
- Add migration step for deprecated ref syntax in findAllComponents ([#​2498](https://github.com/vuejs/test-utils/pull/2498))
|
||||||
|
- Correct anchor hash links and fix typo ([#​2551](https://github.com/vuejs/test-utils/pull/2551))
|
||||||
|
- Center logo on home ([#​2559](https://github.com/vuejs/test-utils/pull/2559))
|
||||||
|
- **zh-cn:** Review a-crash-course ([#​2563](https://github.com/vuejs/test-utils/pull/2563))
|
||||||
|
- Use code-group for install commands ([#​2571](https://github.com/vuejs/test-utils/pull/2571))
|
||||||
|
- **zh-cn:** Review event-handing.md ([#​2572](https://github.com/vuejs/test-utils/pull/2572))
|
||||||
|
- **zh-cn:** Enhance conditional-rendering.md ([#​2562](https://github.com/vuejs/test-utils/pull/2562))
|
||||||
|
- **zh-cn:** Review easy-to-test ([#​2567](https://github.com/vuejs/test-utils/pull/2567))
|
||||||
|
- **zh-cn:** Review passing-data.md ([#​2575](https://github.com/vuejs/test-utils/pull/2575))
|
||||||
|
- **zh-cn:** Review async-suspense.md ([#​2576](https://github.com/vuejs/test-utils/pull/2576))
|
||||||
|
- **zh:** 优化 API 文档格式和内容 ([#​2569](https://github.com/vuejs/test-utils/pull/2569))
|
||||||
|
- **zh:** 更新 Vitest 模拟日期和计时器的说明 ([#​2578](https://github.com/vuejs/test-utils/pull/2578))
|
||||||
|
- **zh-cn:** Review http-requests.md ([#​2580](https://github.com/vuejs/test-utils/pull/2580))
|
||||||
|
- **zh-cn:** Review forms ([#​2582](https://github.com/vuejs/test-utils/pull/2582))
|
||||||
|
- **zh-cn:** Guide/advanced/slots.md ([#​2565](https://github.com/vuejs/test-utils/pull/2565))
|
||||||
|
- **zh:** Review extending-vtu ([#​2583](https://github.com/vuejs/test-utils/pull/2583))
|
||||||
|
- **zh:** Review index ([#​2584](https://github.com/vuejs/test-utils/pull/2584))
|
||||||
|
- Fix modelValue test example ([85bfdf4](https://github.com/vuejs/test-utils/commit/85bfdf4))
|
||||||
|
- Removes broken link from plugins.md ([69bc1ce](https://github.com/vuejs/test-utils/commit/69bc1ce))
|
||||||
|
- **zh:** Review transitions, component-instance, and reusability-composition ([#​2616](https://github.com/vuejs/test-utils/pull/2616))
|
||||||
|
- **zh:** Review v-model and vuex ([#​2617](https://github.com/vuejs/test-utils/pull/2617))
|
||||||
|
- **zh:** Review all the rest advanced guide ([#​2619](https://github.com/vuejs/test-utils/pull/2619))
|
||||||
|
- **zh:** Review migration ([#​2623](https://github.com/vuejs/test-utils/pull/2623))
|
||||||
|
- Fix a typo in transitions.md ([#​2635](https://github.com/vuejs/test-utils/pull/2635))
|
||||||
|
- Update crash-course to script setup ([c81aa79](https://github.com/vuejs/test-utils/commit/c81aa79))
|
||||||
|
- Update Essentials section to setup (composition api) ([#​2647](https://github.com/vuejs/test-utils/pull/2647))
|
||||||
|
- Typos in examples ([#​2678](https://github.com/vuejs/test-utils/pull/2678))
|
||||||
|
- Typo in easy-to-test.md ([#​2710](https://github.com/vuejs/test-utils/pull/2710))
|
||||||
|
- Add note about mocking requestAnimationFrame for transitions ([2324c65](https://github.com/vuejs/test-utils/commit/2324c65))
|
||||||
|
- Updated example TodoApp to script setup ([#​2727](https://github.com/vuejs/test-utils/pull/2727))
|
||||||
|
- Remove "Using data" section from "Conditional Rendering" guide and fix passing data test example ([#​2743](https://github.com/vuejs/test-utils/pull/2743))
|
||||||
|
- Follow-up fixes for the conditional rendering guide ([#​2744](https://github.com/vuejs/test-utils/pull/2744))
|
||||||
|
- Mention shallowMount stub name changes in migration guide ([80e051a](https://github.com/vuejs/test-utils/commit/80e051a))
|
||||||
|
- Update conditional rendering documentation to clarify isVisible() usage with attachTo ([#​2799](https://github.com/vuejs/test-utils/pull/2799))
|
||||||
|
- Restore Options API component for data() mounting example ([#​2804](https://github.com/vuejs/test-utils/pull/2804))
|
||||||
|
- Promote Vitest as recommended test runner ([#​2805](https://github.com/vuejs/test-utils/pull/2805))
|
||||||
|
- **api:** Note that setValue does not accept objects on `<select>` ([#​2819](https://github.com/vuejs/test-utils/pull/2819))
|
||||||
|
|
||||||
|
##### 🏡 Chore
|
||||||
|
|
||||||
|
- Add api/index.md to docs:translation:compare ([6b8681c](https://github.com/vuejs/test-utils/commit/6b8681c))
|
||||||
|
- Remove unnecessary generic arguments ([cfd70c6](https://github.com/vuejs/test-utils/commit/cfd70c6))
|
||||||
|
- Ignore TS error in config object ([9d0a618](https://github.com/vuejs/test-utils/commit/9d0a618))
|
||||||
|
- Simplify eslint packages ([c1d0ffd](https://github.com/vuejs/test-utils/commit/c1d0ffd))
|
||||||
|
- Use eslint v9 with flat config ([2f19fdf](https://github.com/vuejs/test-utils/commit/2f19fdf))
|
||||||
|
- Expose Stubs type publicly ([#​2492](https://github.com/vuejs/test-utils/pull/2492))
|
||||||
|
- Update documentation file path ([9c96594](https://github.com/vuejs/test-utils/commit/9c96594))
|
||||||
|
- Use pnpm v10 ([e4c2cb3](https://github.com/vuejs/test-utils/commit/e4c2cb3))
|
||||||
|
- Pnpm approve build ([81c54e9](https://github.com/vuejs/test-utils/commit/81c54e9))
|
||||||
|
- Use github issue forms ([#​2673](https://github.com/vuejs/test-utils/pull/2673))
|
||||||
|
- Exclude class components from test type-checking ([0899008](https://github.com/vuejs/test-utils/commit/0899008))
|
||||||
|
- Add explicit coverage include for vitest v4 ([51672b9](https://github.com/vuejs/test-utils/commit/51672b9))
|
||||||
|
- Update to prettier v3.7 ([fed9e7c](https://github.com/vuejs/test-utils/commit/fed9e7c))
|
||||||
|
- Migrate to oxfmt ([81c1de9](https://github.com/vuejs/test-utils/commit/81c1de9))
|
||||||
|
- Migrate to oxlint ([a361908](https://github.com/vuejs/test-utils/commit/a361908))
|
||||||
|
- Prepare TypeScript 6 migration settings ([55e1262](https://github.com/vuejs/test-utils/commit/55e1262))
|
||||||
|
- Adjust tsd config for TypeScript 6 ([7d23eb5](https://github.com/vuejs/test-utils/commit/7d23eb5))
|
||||||
|
- Avoid TypeScript 6 target deprecation warning ([81d063c](https://github.com/vuejs/test-utils/commit/81d063c))
|
||||||
|
|
||||||
|
##### 🤖 CI
|
||||||
|
|
||||||
|
- Remove node v22 build ([7ebf58d](https://github.com/vuejs/test-utils/commit/7ebf58d))
|
||||||
|
- Add node v22 build ([57540ee](https://github.com/vuejs/test-utils/commit/57540ee))
|
||||||
|
- Use "pool: threads" instead of vmThreads ([d0cbb54](https://github.com/vuejs/test-utils/commit/d0cbb54))
|
||||||
|
- Remove node v18 and add v24 ([fd9cf95](https://github.com/vuejs/test-utils/commit/fd9cf95))
|
||||||
|
- Add trusted publishing release workflow ([#​2825](https://github.com/vuejs/test-utils/pull/2825))
|
||||||
|
|
||||||
|
##### ❤️ Contributors
|
||||||
|
|
||||||
|
- Lachlan Miller ([@​lmiller1990](https://github.com/lmiller1990))
|
||||||
|
- cexbrayat ([@​cexbrayat](https://github.com/cexbrayat))
|
||||||
|
- Nicolas Bonamy ([@​nbonamy](https://github.com/nbonamy))
|
||||||
|
- KatWorkGit ([@​KatWorkGit](https://github.com/KatWorkGit))
|
||||||
|
- Wouter Kroes ([@​wouterkroes](https://github.com/wouterkroes))
|
||||||
|
- Rama Muhammad Murshal ([@​ramammurshal](https://github.com/ramammurshal))
|
||||||
|
- Evan You ([@​yyx990803](https://github.com/yyx990803))
|
||||||
|
- Vlad Starkovsky ([@​starkovsky](https://github.com/starkovsky))
|
||||||
|
- Joe ([@​joaoprp](https://github.com/joaoprp))
|
||||||
|
- Priyadarshi Kumar ([@​Psingh132](https://github.com/Psingh132))
|
||||||
|
- Sébastien Ronveaux ([@​sronveaux](https://github.com/sronveaux))
|
||||||
|
- Gilliam ([@​Gi11i4m](https://github.com/Gi11i4m))
|
||||||
|
- Baranov Dmytro ([@​dimas7001](https://github.com/dimas7001))
|
||||||
|
- BrendonHenrique ([@​BrendonHenrique](https://github.com/BrendonHenrique))
|
||||||
|
- Lorenz van Herwaarden ([@​lorenzvanherwaarden](https://github.com/lorenzvanherwaarden))
|
||||||
|
- wuzhiqing ([@​DDDDD12138](https://github.com/DDDDD12138))
|
||||||
|
- 阿菜 Cai ([@​RSS1102](https://github.com/RSS1102))
|
||||||
|
- Jinjiang ([@​Jinjiang](https://github.com/Jinjiang))
|
||||||
|
- Kylin ([@​lxKylin](https://github.com/lxKylin))
|
||||||
|
- Qianhe Chen ([@​chenqianhe](https://github.com/chenqianhe))
|
||||||
|
- 时瑶 ([@​KiritaniAyaka](https://github.com/KiritaniAyaka))
|
||||||
|
- h7ml ([@​h7ml](https://github.com/h7ml))
|
||||||
|
- Nicander ([@​Nicander93](https://github.com/Nicander93))
|
||||||
|
- Take-John ([@​takejohn](https://github.com/takejohn))
|
||||||
|
- ilyasherstoboev ([@​ilyasherstoboev](https://github.com/ilyasherstoboev))
|
||||||
|
- aimerie ([@​aimerie](https://github.com/aimerie))
|
||||||
|
- Miguel Rincon ([@​miguelrincon](https://github.com/miguelrincon))
|
||||||
|
- bcastlel ([@​bcastlel](https://github.com/bcastlel))
|
||||||
|
- Claudiu ([@​sofuxro](https://github.com/sofuxro))
|
||||||
|
- Artem Dragunov ([@​dragunovartem99](https://github.com/dragunovartem99))
|
||||||
|
- Robin ([@​OrbisK](https://github.com/OrbisK))
|
||||||
|
- Koen Mertens ([@​KCMertens](https://github.com/KCMertens))
|
||||||
|
- meomking ([@​CaptainWang98](https://github.com/CaptainWang98))
|
||||||
|
- Pepijn Olivier ([@​pepijnolivier](https://github.com/pepijnolivier))
|
||||||
|
- Tomina ([@​Thomaash](https://github.com/Thomaash))
|
||||||
|
- Gareth Jones ([@​G-Rath](https://github.com/G-Rath))
|
||||||
|
- Jerry Hogan ([@​hdJerry](https://github.com/hdJerry))
|
||||||
|
- Marco Pasqualetti ([@​marcalexiei](https://github.com/marcalexiei))
|
||||||
|
- guoxk ([@​guoxk-me](https://github.com/guoxk-me))
|
||||||
|
- kimulaco ([@​kimulaco](https://github.com/kimulaco))
|
||||||
|
- Erwan IQUEL ([@​Olympus5](https://github.com/Olympus5))
|
||||||
|
- Matt Van Horn ([@​mvanhorn](https://github.com/mvanhorn))
|
||||||
|
- Daniel Roe ([@​danielroe](https://github.com/danielroe))
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>eslint/eslint (eslint)</summary>
|
||||||
|
|
||||||
|
### [`v10.2.1`](https://github.com/eslint/eslint/releases/tag/v10.2.1)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/eslint/eslint/compare/v10.2.0...v10.2.1)
|
||||||
|
|
||||||
|
#### Bug Fixes
|
||||||
|
|
||||||
|
- [`14be92b`](https://github.com/eslint/eslint/commit/14be92b6d1fa0923b8923830f2208e5e2705b002) fix: model generator yield resumption paths in code path analysis ([#​20665](https://github.com/eslint/eslint/issues/20665)) (sethamus)
|
||||||
|
- [`84a19d2`](https://github.com/eslint/eslint/commit/84a19d2c32255db6b9cfc08644a607aae6d5cb62) fix: no-async-promise-executor false positives for shadowed Promise ([#​20740](https://github.com/eslint/eslint/issues/20740)) (xbinaryx)
|
||||||
|
- [`af764af`](https://github.com/eslint/eslint/commit/af764af0ec38225755fbf8a6f207f0c77b595a8d) fix: clarify language and processor validation errors ([#​20729](https://github.com/eslint/eslint/issues/20729)) (Pixel998)
|
||||||
|
- [`e251b89`](https://github.com/eslint/eslint/commit/e251b89a38280973e468a4a9386c138f4f55d10d) fix: update eslint ([#​20715](https://github.com/eslint/eslint/issues/20715)) (renovate\[bot])
|
||||||
|
|
||||||
|
#### Documentation
|
||||||
|
|
||||||
|
- [`ca92ca0`](https://github.com/eslint/eslint/commit/ca92ca0fb4599e8de1e2fb914e695fe7397cbe63) docs: reuse markdown-it instance for markdown filter ([#​20768](https://github.com/eslint/eslint/issues/20768)) (Amaresh S M)
|
||||||
|
- [`57d2ee2`](https://github.com/eslint/eslint/commit/57d2ee213305cee0cb55ef08e0480b57396269a9) docs: Enable Eleventy incremental mode for watch ([#​20767](https://github.com/eslint/eslint/issues/20767)) (Amaresh S M)
|
||||||
|
- [`c1621b9`](https://github.com/eslint/eslint/commit/c1621b915742276e5f4b25efe790ca62296330dc) docs: fix typos in code-path-analyzer.js ([#​20700](https://github.com/eslint/eslint/issues/20700)) (Ayush Shukla)
|
||||||
|
- [`1418d52`](https://github.com/eslint/eslint/commit/1418d522d10bde1960f4942afb548bc7160ec49e) docs: Update README (GitHub Actions Bot)
|
||||||
|
- [`39771e6`](https://github.com/eslint/eslint/commit/39771e6e600f0b0617fdeafff6dd07e4211ffde6) docs: Update README (GitHub Actions Bot)
|
||||||
|
- [`71e0469`](https://github.com/eslint/eslint/commit/71e04693def2df57268f08f3072a2749df6bf438) docs: fix incomplete JSDoc param description in no-shadow rule ([#​20728](https://github.com/eslint/eslint/issues/20728)) (kuldeep kumar)
|
||||||
|
- [`22119ce`](https://github.com/eslint/eslint/commit/22119ceb93e28f62262fc1d98ff1b1442d6e2dbf) docs: clarify scope of for-direction rule with dead code examples ([#​20723](https://github.com/eslint/eslint/issues/20723)) (Amaresh S M)
|
||||||
|
- [`8f3fb77`](https://github.com/eslint/eslint/commit/8f3fb77f122a5641d1833cad5d93f3f54fa3be0b) docs: document `meta.docs.dialects` ([#​20718](https://github.com/eslint/eslint/issues/20718)) (Pixel998)
|
||||||
|
|
||||||
|
#### Chores
|
||||||
|
|
||||||
|
- [`7ddfea9`](https://github.com/eslint/eslint/commit/7ddfea9c4f62add1588c5c0b0da568c299246383) chore: update dependency prettier to v3.8.2 ([#​20770](https://github.com/eslint/eslint/issues/20770)) (renovate\[bot])
|
||||||
|
- [`fac40e1`](https://github.com/eslint/eslint/commit/fac40e1de2ba7646cc7cd2d3f93fbdd1f8819001) ci: bump pnpm/action-setup from 5.0.0 to 6.0.0 ([#​20763](https://github.com/eslint/eslint/issues/20763)) (dependabot\[bot])
|
||||||
|
- [`7246f92`](https://github.com/eslint/eslint/commit/7246f923332522d8b3d46b6ee646fce88535f3fb) test: add tests for SuppressionsService.load() error handling ([#​20734](https://github.com/eslint/eslint/issues/20734)) (kuldeep kumar)
|
||||||
|
- [`4f34b1e`](https://github.com/eslint/eslint/commit/4f34b1e592b0f63d766d9903998e8e36eb49d3aa) chore: update pnpm/action-setup action to v5 ([#​20762](https://github.com/eslint/eslint/issues/20762)) (renovate\[bot])
|
||||||
|
- [`51080eb`](https://github.com/eslint/eslint/commit/51080eb5c98d619434e4835dbe9f1c6654aca3b8) test: processor service ([#​20731](https://github.com/eslint/eslint/issues/20731)) (kuldeep kumar)
|
||||||
|
- [`e7e1889`](https://github.com/eslint/eslint/commit/e7e1889fca9b6044e08f41b38df20a1ce45808c8) chore: remove stale babel-eslint10 fixture and test ([#​20727](https://github.com/eslint/eslint/issues/20727)) (kuldeep kumar)
|
||||||
|
- [`4e1a87c`](https://github.com/eslint/eslint/commit/4e1a87cb8fb90e309524bc36bc5f31b9f9cfaa76) test: remove redundant async/await in flat config array tests ([#​20722](https://github.com/eslint/eslint/issues/20722)) (Pixel998)
|
||||||
|
- [`066eabb`](https://github.com/eslint/eslint/commit/066eabb3643b12931f991594969bcc0028f71a5f) test: add rule metadata coverage for `languages` and `docs.dialects` ([#​20717](https://github.com/eslint/eslint/issues/20717)) (Pixel998)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>NaturalIntelligence/fast-xml-parser (fast-xml-parser)</summary>
|
||||||
|
|
||||||
|
### [`v5.7.2`](https://github.com/NaturalIntelligence/fast-xml-parser/releases/tag/v5.7.2): backward compatibility for numerical external entity, fix #​705, #​817
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.7.1...v5.7.2)
|
||||||
|
|
||||||
|
- allow numerical external entity for backward compatibility
|
||||||
|
- fix [#​705](https://github.com/NaturalIntelligence/fast-xml-parser/issues/705): attributesGroupName working with preserveOrder
|
||||||
|
- fix [#​817](https://github.com/NaturalIntelligence/fast-xml-parser/issues/817): stackoverflow when tag expression is very long
|
||||||
|
|
||||||
|
### [`v5.7.1`](https://github.com/NaturalIntelligence/fast-xml-parser/releases/tag/v5.7.1): upgrade @​nodable/entities and FXB
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.7.0...v5.7.1)
|
||||||
|
|
||||||
|
- Use `@nodable/entities` v2.1.0
|
||||||
|
- breaking changes
|
||||||
|
- single entity scan. You're not allowed to use entity value to form another entity name.
|
||||||
|
- you cant add numeric external entity
|
||||||
|
- entity error message when expantion limit is crossed might change
|
||||||
|
- typings are updated for new options related to process entity
|
||||||
|
- please follow documentation of `@nodable/entities` for more detail.
|
||||||
|
- performance
|
||||||
|
- if processEntities is false, then there should not be impact on performance.
|
||||||
|
- if processEntities is true, but you dont pass entity decoder separately then performance may degrade by approx 8-10%
|
||||||
|
- if processEntities is true, and you pass entity decoder separately
|
||||||
|
- if no entity then performance should be same as before
|
||||||
|
- if there are entities then performance should be increased from past versions
|
||||||
|
- ignoreAttributes is not required to be set to set xml version for NCR entity value
|
||||||
|
- update 'fast-xml-builder' to sanitize malicious CDATA and comment's content
|
||||||
|
|
||||||
|
### [`v5.7.0`](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.6.0...v5.7.0)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.6.0...v5.7.0)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>versatica/mediasoup (mediasoup)</summary>
|
||||||
|
|
||||||
|
### [`v3.19.21`](https://github.com/versatica/mediasoup/blob/HEAD/CHANGELOG.md#31921)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/versatica/mediasoup/compare/3.19.20...3.19.21)
|
||||||
|
|
||||||
|
- Worker: Fix regression in `DirectTransport` when closing a `DataProducer` or `DataConsumer` ([PR #​1780](https://github.com/versatica/mediasoup/pull/1780)).
|
||||||
|
|
||||||
|
### [`v3.19.20`](https://github.com/versatica/mediasoup/blob/HEAD/CHANGELOG.md#31920)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/versatica/mediasoup/compare/3.19.19...3.19.20)
|
||||||
|
|
||||||
|
- Worker: Add `useBuiltInSctpStack` setting (defaults to `false`) to enable mediasoup built-in SCTP stack ([PR #​1777](https://github.com/versatica/mediasoup/pull/1777)).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>versatica/mediasoup-client (mediasoup-client)</summary>
|
||||||
|
|
||||||
|
### [`v3.19.0`](https://github.com/versatica/mediasoup-client/compare/3.18.8...3.19.0)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/versatica/mediasoup-client/compare/3.18.8...3.19.0)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>vuejs/core (vue)</summary>
|
||||||
|
|
||||||
|
### [`v3.5.33`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3533-2026-04-22)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/vuejs/core/compare/v3.5.32...v3.5.33)
|
||||||
|
|
||||||
|
##### Bug Fixes
|
||||||
|
|
||||||
|
- **compiler-sfc:** handle nested :deep in selector pseudos ([#​14725](https://github.com/vuejs/core/issues/14725)) ([bb9d265](https://github.com/vuejs/core/commit/bb9d265d8dcdde2af824fc01b24f9a7b3169f5fa)), closes [#​14724](https://github.com/vuejs/core/issues/14724)
|
||||||
|
- **reactivity:** unlink effect scopes on out-of-order off ([#​14734](https://github.com/vuejs/core/issues/14734)) ([e7659be](https://github.com/vuejs/core/commit/e7659beafc5407e892fa70f3f4ade80263b0905d)), closes [#​14733](https://github.com/vuejs/core/issues/14733)
|
||||||
|
- **runtime-dom:** preserve textarea resize dimensions ([#​14747](https://github.com/vuejs/core/issues/14747)) ([11fb2fd](https://github.com/vuejs/core/commit/11fb2fd4a246e40f6f350701dfea73ec525b4f59)), closes [#​14741](https://github.com/vuejs/core/issues/14741)
|
||||||
|
- **teleport:** don't move teleport children if not mounted ([#​14702](https://github.com/vuejs/core/issues/14702)) ([6a61f44](https://github.com/vuejs/core/commit/6a61f4452ba1a31fc929cadf8abe3337ac4d3a46)), closes [#​14701](https://github.com/vuejs/core/issues/14701)
|
||||||
|
- **transition:** preserve placeholder for conditional explicit default slots ([#​14748](https://github.com/vuejs/core/issues/14748)) ([45990ce](https://github.com/vuejs/core/commit/45990cecf4604b2f39c571ab6aefa49d362af36a)), closes [#​14727](https://github.com/vuejs/core/issues/14727)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>vuejs/router (vue-router)</summary>
|
||||||
|
|
||||||
|
### [`v5.0.6`](https://github.com/vuejs/router/releases/tag/v5.0.6)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/vuejs/router/compare/v5.0.5...v5.0.6)
|
||||||
|
|
||||||
|
##### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Missing closing quote in generated import - by [@​zjy040525](https://github.com/zjy040525) and [@​posva](https://github.com/posva) in [#​2688](https://github.com/vuejs/router/issues/2688) [<samp>(32f78)</samp>](https://github.com/vuejs/router/commit/32f78c77)
|
||||||
|
|
||||||
|
##### [View changes on GitHub](https://github.com/vuejs/router/compare/v5.0.5...v5.0.6)
|
||||||
|
|
||||||
|
### [`v5.0.5`](https://github.com/vuejs/router/releases/tag/v5.0.5)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/vuejs/router/compare/v5.0.4...v5.0.5)
|
||||||
|
|
||||||
|
##### 🚀 Features
|
||||||
|
|
||||||
|
- Enable standard schema param parsers - by [@​posva](https://github.com/posva) [<samp>(ea8e3)</samp>](https://github.com/vuejs/router/commit/ea8e3e21)
|
||||||
|
- Normalize param parsers once - by [@​posva](https://github.com/posva) [<samp>(48087)</samp>](https://github.com/vuejs/router/commit/480877cc)
|
||||||
|
|
||||||
|
##### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Track definePage imports per-file to fix named view race condition - by [@​posva](https://github.com/posva) [<samp>(11191)</samp>](https://github.com/vuejs/router/commit/11191bca)
|
||||||
|
- Avoid double decoding hash on string location - by [@​posva](https://github.com/posva) [<samp>(1578c)</samp>](https://github.com/vuejs/router/commit/1578c9e9)
|
||||||
|
|
||||||
|
##### [View changes on GitHub](https://github.com/vuejs/router/compare/v5.0.4...v5.0.5)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
|
||||||
|
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzIuMyIsInVwZGF0ZWRJblZlciI6IjQzLjE1MC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
|
||||||
|
|
||||||
|
## [1.1.3] - 2026-04-19
|
||||||
|
### Changed
|
||||||
|
- update dependency mediasoup-client to v3.18.8 (#30)
|
||||||
|
|
||||||
|
This PR contains the following updates:
|
||||||
|
|
||||||
|
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|
||||||
|
|---|---|---|---|
|
||||||
|
| [mediasoup-client](https://mediasoup.org) ([source](https://github.com/versatica/mediasoup-client)) | [`3.18.7` → `3.18.8`](https://renovatebot.com/diffs/npm/mediasoup-client/3.18.7/3.18.8) |  |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Release Notes
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>versatica/mediasoup-client (mediasoup-client)</summary>
|
||||||
|
|
||||||
|
### [`v3.18.8`](https://github.com/versatica/mediasoup-client/compare/3.18.7...3.18.8)
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/versatica/mediasoup-client/compare/3.18.7...3.18.8)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
|
||||||
|
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjEyOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
|
||||||
|
|
||||||
|
## [1.1.2] - 2026-04-15
|
||||||
|
### Changed
|
||||||
|
- Update dependency fast-xml-parser to v5.6.0 (#28)
|
||||||
|
|
||||||
|
This PR contains the following updates:
|
||||||
|
|
||||||
|
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|
||||||
|
|---|---|---|---|
|
||||||
|
| [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | [`5.5.12` → `5.6.0`](https://renovatebot.com/diffs/npm/fast-xml-parser/5.5.12/5.6.0) |  |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Release Notes
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>NaturalIntelligence/fast-xml-parser (fast-xml-parser)</summary>
|
||||||
|
|
||||||
|
### [`v5.6.0`](https://github.com/NaturalIntelligence/fast-xml-parser/releases/tag/v5.6.0): use @​nodable/entities to replace entities
|
||||||
|
|
||||||
|
[Compare Source](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.12...v5.6.0)
|
||||||
|
|
||||||
|
- No API change
|
||||||
|
- No change in performance for basic usage
|
||||||
|
- No typing change
|
||||||
|
- No config change
|
||||||
|
- new dependency
|
||||||
|
- breaking: error messages for entities might have been changed.
|
||||||
|
-
|
||||||
|
|
||||||
|
**Full Changelog**: <https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.12...v5.6.0>
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
📅 **Schedule**: (UTC)
|
||||||
|
|
||||||
|
- Branch creation
|
||||||
|
- At any time (no schedule defined)
|
||||||
|
- Automerge
|
||||||
|
- At any time (no schedule defined)
|
||||||
|
|
||||||
|
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
|
||||||
|
|
||||||
|
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
|
||||||
|
|
||||||
|
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
|
||||||
|
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEyMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
|
||||||
|
|
||||||
|
## [1.1.1] - 2026-04-15
|
||||||
|
### Changed
|
||||||
|
- split push release/publish and harden workflows (#27)
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* Separate release from Docker/Helm publish
|
||||||
|
* enrich releases with PRbodies when available
|
||||||
|
* tighten release.sh validation and idempotency
|
||||||
|
* trim PR docker-build metadata for act-runner stability
|
||||||
|
|
||||||
|
## [1.1.0] - 2026-04-15
|
||||||
|
### Changed
|
||||||
|
- Update all non-major dependencies (#25)
|
||||||
|
|
||||||
|
## [1.0.10] - 2026-04-15
|
||||||
|
### Changed
|
||||||
|
- Remove npm overrides for tar (#26)
|
||||||
|
|
||||||
|
## [1.0.9] - 2026-03-24
|
||||||
|
### Changed
|
||||||
|
- update https://git.keligrubb.com/actions/setup-helm action to v5 (#23)
|
||||||
|
|
||||||
|
## [1.0.8] - 2026-03-12
|
||||||
|
### Changed
|
||||||
|
- fix release file (#22)
|
||||||
|
|
||||||
|
## [1.0.7] - 2026-03-06
|
||||||
|
### Changed
|
||||||
|
- chore(deps): update docker/build-push-action action to v7 (#19)
|
||||||
|
|
||||||
|
## [1.0.6] - 2026-03-05
|
||||||
|
### Changed
|
||||||
|
- fix docker login during push stage (#18)
|
||||||
|
|
||||||
|
## [1.0.5] - 2026-03-05
|
||||||
|
### Changed
|
||||||
|
- fix deploy pipeline stages for token registry uploads (#17)
|
||||||
|
|
||||||
|
## [1.0.4] - 2026-03-04
|
||||||
|
### Changed
|
||||||
|
- fix deploy pipeline (#15)
|
||||||
|
|
||||||
|
## [1.0.3] - 2026-02-23
|
||||||
|
### Changed
|
||||||
|
- fix(deps): update dependency vue-router to v5 (#12)
|
||||||
|
|
||||||
## [1.0.2] - 2026-02-22
|
## [1.0.2] - 2026-02-22
|
||||||
### Changed
|
### Changed
|
||||||
- chore(deps): update dependency eslint to v10 (#10)
|
- chore(deps): update dependency eslint to v10 (#10)
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ apiVersion: v2
|
|||||||
name: kestrelos
|
name: kestrelos
|
||||||
description: KestrelOS TOC for OSINT feeds - map, camera feeds, offline tiles
|
description: KestrelOS TOC for OSINT feeds - map, camera feeds, offline tiles
|
||||||
type: application
|
type: application
|
||||||
version: 1.0.2
|
version: 1.1.4
|
||||||
appVersion: "1.0.2"
|
appVersion: "1.1.4"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ replicaCount: 1
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: git.keligrubb.com/keligrubb/kestrelos
|
repository: git.keligrubb.com/keligrubb/kestrelos
|
||||||
tag: 1.0.2
|
tag: 1.1.4
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
service:
|
service:
|
||||||
|
|||||||
Generated
+2750
-3938
File diff suppressed because it is too large
Load Diff
+2
-6
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "kestrelos",
|
"name": "kestrelos",
|
||||||
"version": "1.0.2",
|
"version": "1.1.4",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -31,9 +31,8 @@
|
|||||||
"nuxt": "^4.0.0",
|
"nuxt": "^4.0.0",
|
||||||
"openid-client": "^6.8.2",
|
"openid-client": "^6.8.2",
|
||||||
"qrcode": "^1.5.4",
|
"qrcode": "^1.5.4",
|
||||||
"sqlite3": "^5.1.7",
|
|
||||||
"vue": "^3.4.0",
|
"vue": "^3.4.0",
|
||||||
"vue-router": "^4.4.0",
|
"vue-router": "^5.0.0",
|
||||||
"ws": "^8.18.0"
|
"ws": "^8.18.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -46,8 +45,5 @@
|
|||||||
"eslint": "^10.0.0",
|
"eslint": "^10.0.0",
|
||||||
"happy-dom": "^20.6.1",
|
"happy-dom": "^20.6.1",
|
||||||
"vitest": "^4.0.0"
|
"vitest": "^4.0.0"
|
||||||
},
|
|
||||||
"overrides": {
|
|
||||||
"tar": "^7.5.7"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+42
-9
@@ -3,18 +3,51 @@ set -e
|
|||||||
|
|
||||||
# version
|
# version
|
||||||
msg="${CI_COMMIT_MESSAGE:-}"
|
msg="${CI_COMMIT_MESSAGE:-}"
|
||||||
|
# optional PR body (written by workflow from Gitea API when this commit is a merged PR)
|
||||||
|
if [ -f .ci_pr_body ]; then
|
||||||
|
CI_PR_DESCRIPTION=$(cat .ci_pr_body); rm -f .ci_pr_body
|
||||||
|
else
|
||||||
|
CI_PR_DESCRIPTION=""
|
||||||
|
fi
|
||||||
|
export CI_PR_DESCRIPTION
|
||||||
bump=patch
|
bump=patch
|
||||||
echo "$msg" | grep -qi minor: && bump=minor
|
# Conventional commits: chore/fix => patch, feat => minor
|
||||||
|
echo "$msg" | grep -Eqi '(^|[[:space:]])(fix|chore)(\([^)]*\))?:' && bump=patch
|
||||||
|
echo "$msg" | grep -Eqi '(^|[[:space:]])feat(\([^)]*\))?:' && bump=minor
|
||||||
|
# Conventional commits breaking change: type!:
|
||||||
|
echo "$msg" | grep -Eqi '(^|[[:space:]])[a-zA-Z]+(\([^)]*\))?!:' && bump=major
|
||||||
|
# Explicit bump prefixes still supported (but never downgrade a major bump)
|
||||||
|
echo "$msg" | grep -qi minor: && [ "$bump" != "major" ] && bump=minor
|
||||||
echo "$msg" | grep -qi major: && bump=major
|
echo "$msg" | grep -qi major: && bump=major
|
||||||
cur=$(awk '/"version"/ { match($0, /[0-9]+\.[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH); exit }' package.json)
|
cur=$(awk '/"version"/ { match($0, /[0-9]+\.[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH); exit }' package.json)
|
||||||
|
case "$cur" in
|
||||||
|
[0-9]*.[0-9]*.[0-9]*) ;;
|
||||||
|
*) echo "error: package.json version must be x.y.z (got: $cur)"; exit 1 ;;
|
||||||
|
esac
|
||||||
major=$(echo "$cur" | cut -d. -f1); minor=$(echo "$cur" | cut -d. -f2); patch=$(echo "$cur" | cut -d. -f3)
|
major=$(echo "$cur" | cut -d. -f1); minor=$(echo "$cur" | cut -d. -f2); patch=$(echo "$cur" | cut -d. -f3)
|
||||||
case "$bump" in major) major=$((major+1)); minor=0; patch=0 ;; minor) minor=$((minor+1)); patch=0 ;; patch) patch=$((patch+1)) ;; esac
|
case "$bump" in major) major=$((major+1)); minor=0; patch=0 ;; minor) minor=$((minor+1)); patch=0 ;; patch) patch=$((patch+1)) ;; esac
|
||||||
newVersion="$major.$minor.$patch"
|
newVersion="$major.$minor.$patch"
|
||||||
[ -z "$cur" ] && { echo "error: could not read version from package.json"; exit 1; }
|
|
||||||
|
|
||||||
# changelog entry (strip prefix from first line)
|
url="https://${CI_REPO_OWNER}:${GITEA_REPO_TOKEN}@${CI_FORGE_URL#https://}/${CI_REPO_OWNER}/${CI_REPO_NAME}.git"
|
||||||
changelogEntry=$(echo "$msg" | head -1 | awk '{sub(/^[mM]ajor:[ \t]*/,""); sub(/^[mM]inor:[ \t]*/,""); sub(/^[pP]atch:[ \t]*/,""); print}')
|
if [ -n "$(git ls-remote "$url" "refs/tags/v$newVersion" 2>/dev/null)" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# changelog entry (strip explicit bump prefixes & any conventional-commit type(scope):); optional PR description enriches it
|
||||||
|
changelogEntry=$(
|
||||||
|
echo "$msg" \
|
||||||
|
| head -1 \
|
||||||
|
| sed -E 's/^[[:space:]]*[mM]ajor:[[:space:]]*//; s/^[[:space:]]*[mM]inor:[[:space:]]*//; s/^[[:space:]]*[pP]atch:[[:space:]]*//' \
|
||||||
|
| sed -E 's/^[[:space:]]*[a-zA-Z]+(\([^)]*\))?:[[:space:]]*//'
|
||||||
|
)
|
||||||
[ -z "$changelogEntry" ] && changelogEntry="Release v$newVersion"
|
[ -z "$changelogEntry" ] && changelogEntry="Release v$newVersion"
|
||||||
|
if [ -n "$CI_PR_DESCRIPTION" ]; then
|
||||||
|
changelogFull="- $changelogEntry
|
||||||
|
|
||||||
|
$CI_PR_DESCRIPTION"
|
||||||
|
else
|
||||||
|
changelogFull="- $changelogEntry"
|
||||||
|
fi
|
||||||
|
|
||||||
# bump files
|
# bump files
|
||||||
awk -v v="$newVersion" '/"version"/ { sub(/[0-9]+\.[0-9]+\.[0-9]+/, v) } { print }' package.json > package.json.tmp && mv package.json.tmp package.json
|
awk -v v="$newVersion" '/"version"/ { sub(/[0-9]+\.[0-9]+\.[0-9]+/, v) } { print }' package.json > package.json.tmp && mv package.json.tmp package.json
|
||||||
@@ -24,18 +57,18 @@ awk -v v="$newVersion" '/^ tag:/ { $0 = " tag: " v }; { print }' helm/kestrelo
|
|||||||
# changelog
|
# changelog
|
||||||
new="## [$newVersion] - $(date +%Y-%m-%d)
|
new="## [$newVersion] - $(date +%Y-%m-%d)
|
||||||
### Changed
|
### Changed
|
||||||
- $changelogEntry
|
$changelogFull
|
||||||
|
|
||||||
"
|
"
|
||||||
{ [ ! -f CHANGELOG.md ] && printf '# Changelog\n\n'; printf '%s' "$new"; [ -f CHANGELOG.md ] && cat CHANGELOG.md; } > CHANGELOG.md.tmp && mv CHANGELOG.md.tmp CHANGELOG.md
|
# Create CHANGELOG.md if missing (first release); otherwise prepend new entry to existing content.
|
||||||
|
{ [ ! -f CHANGELOG.md ] && printf '# Changelog\n\n'; printf '%s' "$new"; [ -f CHANGELOG.md ] && cat CHANGELOG.md || true; } > CHANGELOG.md.tmp && mv CHANGELOG.md.tmp CHANGELOG.md
|
||||||
|
|
||||||
# git
|
# git
|
||||||
git config user.email "ci@kestrelos" && git config user.name "CI"
|
git config user.email "ci@kestrelos" && git config user.name "CI"
|
||||||
git add package.json helm/kestrelos/Chart.yaml helm/kestrelos/values.yaml CHANGELOG.md
|
git add package.json helm/kestrelos/Chart.yaml helm/kestrelos/values.yaml CHANGELOG.md
|
||||||
git commit -m "release v$newVersion [skip ci]"
|
git commit -m "release v$newVersion [skip ci]"
|
||||||
url="https://${CI_REPO_OWNER}:${GITEA_REPO_TOKEN}@${CI_FORGE_URL#https://}/${CI_REPO_OWNER}/${CI_REPO_NAME}.git"
|
|
||||||
git tag "v$newVersion"
|
git tag "v$newVersion"
|
||||||
# artifact for kaniko (tag list)
|
# artifact for docker (tag list)
|
||||||
printf '%s\n%s\n' "$newVersion" "latest" > .tags
|
printf '%s\n%s\n' "$newVersion" "latest" > .tags
|
||||||
retry() { n=0; while ! "$@"; do n=$((n+1)); [ $n -ge 3 ] && return 1; sleep 2; done; }
|
retry() { n=0; while ! "$@"; do n=$((n+1)); [ $n -ge 3 ] && return 1; sleep 2; done; }
|
||||||
retry git push "$url" HEAD:main "v$newVersion"
|
retry git push "$url" HEAD:main "v$newVersion"
|
||||||
@@ -43,7 +76,7 @@ retry git push "$url" HEAD:main "v$newVersion"
|
|||||||
# gitea release
|
# gitea release
|
||||||
body="## Changelog
|
body="## Changelog
|
||||||
### Changed
|
### Changed
|
||||||
- $changelogEntry
|
$changelogFull
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
- [Docker image](${CI_FORGE_URL}/${CI_REPO_OWNER}/-/packages/container/${CI_REPO_NAME})
|
- [Docker image](${CI_FORGE_URL}/${CI_REPO_OWNER}/-/packages/container/${CI_REPO_NAME})
|
||||||
|
|||||||
+86
-24
@@ -1,14 +1,12 @@
|
|||||||
import { join, dirname } from 'node:path'
|
import { join, dirname } from 'node:path'
|
||||||
import { mkdirSync, existsSync } from 'node:fs'
|
import { mkdirSync, existsSync } from 'node:fs'
|
||||||
|
import { randomBytes, randomUUID } from 'node:crypto'
|
||||||
import { createRequire } from 'node:module'
|
import { createRequire } from 'node:module'
|
||||||
import { promisify } from 'node:util'
|
|
||||||
import { randomBytes } from 'node:crypto'
|
|
||||||
import { hashPassword } from './password.js'
|
import { hashPassword } from './password.js'
|
||||||
import { registerCleanup } from './shutdown.js'
|
import { registerCleanup } from './shutdown.js'
|
||||||
|
|
||||||
// Resolve from project root so bundled server (e.g. .output) finds node_modules/sqlite3
|
|
||||||
const requireFromRoot = createRequire(join(process.cwd(), 'package.json'))
|
const requireFromRoot = createRequire(join(process.cwd(), 'package.json'))
|
||||||
const sqlite3 = requireFromRoot('sqlite3')
|
const { DatabaseSync } = requireFromRoot('node:sqlite')
|
||||||
|
|
||||||
const SCHEMA_VERSION = 4
|
const SCHEMA_VERSION = 4
|
||||||
const DB_BUSY_TIMEOUT_MS = 5000
|
const DB_BUSY_TIMEOUT_MS = 5000
|
||||||
@@ -144,7 +142,6 @@ const initDb = async (db, run, all, get) => {
|
|||||||
catch {
|
catch {
|
||||||
// WAL not supported (e.g., network filesystem)
|
// WAL not supported (e.g., network filesystem)
|
||||||
}
|
}
|
||||||
db.configure('busyTimeout', DB_BUSY_TIMEOUT_MS)
|
|
||||||
|
|
||||||
await run(SCHEMA.schema_version)
|
await run(SCHEMA.schema_version)
|
||||||
await run(SCHEMA.users)
|
await run(SCHEMA.users)
|
||||||
@@ -168,7 +165,7 @@ const initDb = async (db, run, all, get) => {
|
|||||||
|
|
||||||
await run(
|
await run(
|
||||||
'INSERT INTO users (id, identifier, password_hash, role, created_at, auth_provider, oidc_issuer, oidc_sub) VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
|
'INSERT INTO users (id, identifier, password_hash, role, created_at, auth_provider, oidc_issuer, oidc_sub) VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
|
||||||
[crypto.randomUUID(), identifier, hashPassword(plainPassword), 'admin', new Date().toISOString(), 'local', null, null],
|
[randomUUID(), identifier, hashPassword(plainPassword), 'admin', new Date().toISOString(), 'local', null, null],
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!email || !password) {
|
if (!email || !password) {
|
||||||
@@ -181,37 +178,104 @@ const initDb = async (db, run, all, get) => {
|
|||||||
export async function getDb() {
|
export async function getDb() {
|
||||||
if (dbInstance) return dbInstance
|
if (dbInstance) return dbInstance
|
||||||
|
|
||||||
const db = new sqlite3.Database(getDbPath(), (err) => {
|
const sqliteDb = (() => {
|
||||||
if (err) {
|
try {
|
||||||
|
return new DatabaseSync(getDbPath(), { timeout: DB_BUSY_TIMEOUT_MS })
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
console.error('[db] Failed to open database:', err.message)
|
console.error('[db] Failed to open database:', err.message)
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
})
|
})()
|
||||||
|
|
||||||
const run = promisify(db.run.bind(db))
|
const run = (sql, params = []) =>
|
||||||
const all = promisify(db.all.bind(db))
|
new Promise((resolve, reject) => {
|
||||||
const get = promisify(db.get.bind(db))
|
const stmt = sqliteDb.prepare(sql)
|
||||||
|
try {
|
||||||
|
stmt.run(...params)
|
||||||
|
resolve()
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
reject(error)
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
try {
|
||||||
|
stmt.finalize()
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
// ignore finalize errors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const all = (sql, params = []) =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
const stmt = sqliteDb.prepare(sql)
|
||||||
|
try {
|
||||||
|
const rows = stmt.all(...params)
|
||||||
|
resolve(rows)
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
reject(error)
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
try {
|
||||||
|
stmt.finalize()
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
// ignore finalize errors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const get = (sql, params = []) =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
const stmt = sqliteDb.prepare(sql)
|
||||||
|
try {
|
||||||
|
const row = stmt.get(...params)
|
||||||
|
resolve(row)
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
reject(error)
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
try {
|
||||||
|
stmt.finalize()
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
// ignore finalize errors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const wrappedDb = {
|
||||||
|
close(callback) {
|
||||||
|
try {
|
||||||
|
sqliteDb.close()
|
||||||
|
if (typeof callback === 'function') callback(null)
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
if (typeof callback === 'function') callback(error)
|
||||||
|
else throw error
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await initDb(db, run, all, get)
|
await initDb(wrappedDb, run, all, get)
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
db.close()
|
wrappedDb.close()
|
||||||
console.error('[db] Database initialization failed:', error.message)
|
console.error('[db] Database initialization failed:', error.message)
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
|
|
||||||
dbInstance = { db, run, all, get }
|
dbInstance = { db: wrappedDb, run, all, get }
|
||||||
|
|
||||||
registerCleanup(async () => {
|
registerCleanup(async () => {
|
||||||
if (dbInstance) {
|
if (dbInstance) {
|
||||||
try {
|
try {
|
||||||
await new Promise((resolve, reject) => {
|
dbInstance.db.close()
|
||||||
dbInstance.db.close((err) => {
|
|
||||||
if (err) reject(err)
|
|
||||||
else resolve()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
console.error('[db] Error closing database during shutdown:', error?.message)
|
console.error('[db] Error closing database during shutdown:', error?.message)
|
||||||
@@ -290,9 +354,7 @@ export async function withTransaction(db, callback) {
|
|||||||
export function closeDb() {
|
export function closeDb() {
|
||||||
if (!dbInstance) return
|
if (!dbInstance) return
|
||||||
try {
|
try {
|
||||||
dbInstance.db.close((err) => {
|
dbInstance.db.close()
|
||||||
if (err) console.error('[db] Error closing database:', err.message)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
console.error('[db] Error closing database:', error.message)
|
console.error('[db] Error closing database:', error.message)
|
||||||
|
|||||||
Reference in New Issue
Block a user