diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml
index 7753740..1dc8625 100644
--- a/.github/workflows/quality.yml
+++ b/.github/workflows/quality.yml
@@ -27,7 +27,7 @@ jobs:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v7.0.1
- - uses: actions/setup-node@v7.0.0
+ - uses: actions/setup-node@v7.1.0
with:
node-version: 24.21.0
- name: Check tutorial step helper
@@ -47,7 +47,7 @@ jobs:
with:
version: 10.17.1
run_install: false
- - uses: actions/setup-node@v7.0.0
+ - uses: actions/setup-node@v7.1.0
with:
node-version: 24.21.0
cache: pnpm
@@ -85,7 +85,7 @@ jobs:
with:
version: 10.17.1
run_install: false
- - uses: actions/setup-node@v7.0.0
+ - uses: actions/setup-node@v7.1.0
with:
node-version: 24.21.0
cache: pnpm
@@ -133,7 +133,7 @@ jobs:
with:
version: 10.17.1
run_install: false
- - uses: actions/setup-node@v7.0.0
+ - uses: actions/setup-node@v7.1.0
with:
node-version: 24.21.0
cache: pnpm
@@ -153,7 +153,7 @@ jobs:
project: ${{ fromJSON(needs.changes.outputs.compose) }}
steps:
- uses: actions/checkout@v7.0.1
- - uses: actions/setup-node@v7.0.0
+ - uses: actions/setup-node@v7.1.0
with:
node-version: 24.21.0
- name: Validate Compose
@@ -189,7 +189,7 @@ jobs:
timeout-minutes: 25
steps:
- uses: actions/checkout@v7.0.1
- - uses: actions/setup-node@v7.0.0
+ - uses: actions/setup-node@v7.1.0
with:
node-version: 24.21.0
- name: Start independent stacks
diff --git a/p1-task-manager/docs/tutorials.md b/p1-task-manager/docs/tutorials.md
index 6baa691..de8b4ba 100644
--- a/p1-task-manager/docs/tutorials.md
+++ b/p1-task-manager/docs/tutorials.md
@@ -5,8 +5,8 @@ summary: Secure a task manager with Token-Based Access Control (TBAC) on the ser
order: 20
socialImage: ./assets/social-card.webp
socialImageAlt: Browser guidance and Fastify server enforcement with embedded Cedarling for task actions.
-lastVerified: 2026-10-09T13:42:36Z
-lastUpdated: 2026-10-19T17:11:47Z
+lastVerified: 2026-10-22T17:09:42Z
+lastUpdated: 2026-10-22T17:09:42Z
---
# Protect a Node.js REST API with Cedarling
@@ -18,17 +18,19 @@ tasks they neither own nor are assigned to, even across tenants. Creation,
assignment, completion, and deletion lack authorization checks, and a
task can be assigned to someone in another tenant.
-We'll enforce permissions for all six operations in the API and reflect them
-in browser controls. Alex, a contributor who can create tasks reserved for
-Mina, the owner, will be our main example. We'll block his creation request,
-preserve his assigned-task edits, and verify the other permissions too.
+We'll follow `Create` from policy to API handler: Alex, a contributor, must not
+create tasks reserved for Mina, the owner. We'll block his request, check that
+his assigned-task edits still work, and apply the remaining permissions.
+The API will protect all six operations, and browser controls will reflect
+those permissions.
If you are new to Cedarling, please read [What is Cedarling?](https://cedarling.dev/learn/what-is-cedarling) before continuing.
## The task manager we'll secure
-The app uses React, a Fastify Node.js API, and SQLite. A bundled identity
-provider (IdP), built with `oidc-provider`, handles sign-in and issues tokens.
+The app uses React, a Fastify Node.js API, and SQLite. The repository's shared
+local identity provider (IdP), built with `oidc-provider`, runs as a separate
+Node.js service and handles sign-in and tokens.
After OIDC login, the API maps the verified issuer and subject (the IdP's user
identifier) to a local user. SQLite supplies that user's current tenant, role,
and assurance level.[^1]
@@ -78,7 +80,7 @@ node ../shared/tools/step/run.mjs p1 init --source 850e38fd5dc4758848e3fcb05af40
Run the remaining commands from `p1-task-manager/`. Paths under `shared/` are
relative to the repository root.
-For the coding path, start Node.js in two terminals.[^7] In the first:
+Start the app and IdP in two terminals.[^7] In the first:
```bash
pnpm --dir ../shared/identity-provider install --frozen-lockfile
@@ -237,11 +239,18 @@ node ../shared/tools/step/run.mjs p1 policy-store
-We'll supply current user and task facts with each request.[^4] Cedar's schema
-defines the types those requests may contain: `principal` is who acts,
-`action` is the operation, `resource` is its target, and `context` holds
-additional facts. See the [schema syntax reference](https://docs.cedarpolicy.com/schema/human-readable-schema.html)
-when reading `schema.cedarschema`.
+We'll supply current user and task facts with each request.[^4] In Cedar,
+`principal` is who acts, `action` is the operation, `resource` is its target,
+and `context` holds additional facts. `schema.cedarschema` defines their types;
+the [Cedar schema reference](https://docs.cedarpolicy.com/schema/human-readable-schema.html)
+explains the syntax.
+
+For `Create`, the resource is the user's tenant. The trusted-issuer file points
+Cedarling to the local IdP so it can validate the access token intended for
+`http://localhost:17001/api`. The ID token is used during OIDC login.
+
+
+How the schema and trusted-issuer mapping fit together
The server supplies tokens instead of a principal entity. `Task::Any` satisfies
Cedar's principal-type declaration; browser requests use `Task::User`.
@@ -280,9 +289,9 @@ the issuer and how to map its tokens:
}
```
-For authorization, we use the access token intended for
-`http://localhost:17001/api`. Cedarling validates it and exposes its claims
-through `context.tokens`. The ID token is used during OIDC login.
+Cedarling exposes the validated access-token claims through `context.tokens`.
+
+
### Set the conditions for `Create`
@@ -361,8 +370,9 @@ From `p1-task-manager/`, install the integration's dependencies:
```bash
pnpm add --save-exact @janssenproject/cedarling_wasm@0.0.468 fflate@0.8.3
-pnpm add --save-exact @fastify/static@10.1.5 @fastify/swagger@9.9.0
-pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0
+pnpm add --save-exact @fastify/cookie@11.1.3 @fastify/helmet@13.2.0 @fastify/static@10.1.6 @fastify/swagger@9.9.2
+pnpm add --save-exact react@19.3.1 react-dom@19.3.1
+pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0 vitest@4.1.12
```
`cedar-wasm` checks policy and schema syntax; `cedarling_wasm` evaluates
@@ -592,6 +602,9 @@ Use **Change account** between users or separate browser profiles; ordinary
tabs share a session. Rerun the console snippet to get the signed-in user's
CSRF token. The baseline-created task may still exist.
+Switch back to Alex, open **Prepare launch brief**, change its description,
+and save. His assigned-task edit should still succeed.
+
### Show the actions each user can take
The API now denies Alex's creation request, but the browser still offers the
@@ -617,7 +630,14 @@ brief, but browser evaluation cannot give him `Create` permission.
The API sends this list with user facts, policy information, versions, and an
expiry time in an **authorization envelope**. Tokens and session IDs stay on the
-server. In `src/web/authorization-trace.ts`, `loadPolicy()` fetches the archive
+server. `loadPolicy()` fetches the browser's policy archive from the app and
+checks its hash before initializing Cedarling. The unsigned browser instance
+uses server-supplied facts; server token validation stays enabled.
+
+
+Browser policy loading
+
+In `src/web/authorization-trace.ts`, `loadPolicy()` fetches the archive
from `/policy-store/.cjar` on the app's origin, verifies its hash, and
passes the bytes to Cedarling:
@@ -647,8 +667,9 @@ async function loadPolicy(
}
```
-JWT checks are disabled in this unsigned browser instance, which receives no
-JWTs. Server token validation remains enabled.
+JWT checks are disabled in this browser instance because it receives no JWTs.
+
+
`authorizePresentation()` builds a `Task::User` principal from the server's
user facts and batches the control checks. Each item contains its action,
@@ -994,4 +1015,4 @@ The complete source is available in the
[^6]: Cedar returns an empty list of determining policies when no policy permits or forbids the request. A matched `forbid` would instead appear as a determining policy. See [How Cedar authorization works](https://docs.cedarpolicy.com/auth/authorization.html).
-[^7]: These steps were prepared on Ubuntu 24.04+. Native project checks also run in CI on macOS and Windows. If a platform-specific step fails, [open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
+[^7]: Follow these commands on Linux, macOS, or Windows with Git, Node.js, and pnpm installed. Native project checks run in CI on all three systems. If a platform-specific step fails, [open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
diff --git a/p1-task-manager/package.json b/p1-task-manager/package.json
index cffec55..50a3285 100644
--- a/p1-task-manager/package.json
+++ b/p1-task-manager/package.json
@@ -22,17 +22,17 @@
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.server.json && tsc --noEmit -p tsconfig.web.json"
},
"dependencies": {
- "@fastify/cookie": "11.1.2",
- "@fastify/helmet": "13.1.1",
- "@fastify/static": "10.1.5",
- "@fastify/swagger": "9.9.0",
+ "@fastify/cookie": "11.1.3",
+ "@fastify/helmet": "13.2.0",
+ "@fastify/static": "10.1.6",
+ "@fastify/swagger": "9.9.2",
"@janssenproject/cedarling_wasm": "0.0.468",
"better-sqlite3": "13.0.3",
"fastify": "5.12.5",
"fflate": "0.8.3",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0",
+ "react": "19.3.1",
+ "react-dom": "19.3.1",
"zod": "4.6.5"
},
"devDependencies": {
@@ -51,7 +51,7 @@
"typescript": "6.0.3",
"typescript-eslint": "8.68.0",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p1-task-manager/pnpm-lock.yaml b/p1-task-manager/pnpm-lock.yaml
index b624cc8..6290a27 100644
--- a/p1-task-manager/pnpm-lock.yaml
+++ b/p1-task-manager/pnpm-lock.yaml
@@ -9,17 +9,17 @@ importers:
.:
dependencies:
'@fastify/cookie':
- specifier: 11.1.2
- version: 11.1.2
+ specifier: 11.1.3
+ version: 11.1.3
'@fastify/helmet':
- specifier: 13.1.1
- version: 13.1.1
+ specifier: 13.2.0
+ version: 13.2.0
'@fastify/static':
- specifier: 10.1.5
- version: 10.1.5
+ specifier: 10.1.6
+ version: 10.1.6
'@fastify/swagger':
- specifier: 9.9.0
- version: 9.9.0
+ specifier: 9.9.2
+ version: 9.9.2
'@janssenproject/cedarling_wasm':
specifier: 0.0.468
version: 0.0.468
@@ -36,11 +36,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
zod:
specifier: 4.6.5
version: 4.6.5
@@ -91,8 +91,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))
packages:
@@ -363,8 +363,8 @@ packages:
'@fastify/ajv-compiler@4.0.6':
resolution: {integrity: sha512-NtuzM0SfaMJbGlnjr9LWQUN5LzgSrbB8tf/wRZNas+4E1O/Nmzl53e7ruT61HDZyRCJGC6FxIogmNZO1c5ETBA==}
- '@fastify/cookie@11.1.2':
- resolution: {integrity: sha512-Dtrpk/YOGUsbRMvP/8ZqPpwnMRv0qSqodFdoQ2B589Obc7jw4s4Qla+cV72Bsm7WsZJnqlYFX/i7uSBq0xzg6g==}
+ '@fastify/cookie@11.1.3':
+ resolution: {integrity: sha512-RBhlMNsmSG6C5KGiTkhSXBF75xIrUMSytDDBcpnVewhJ8XVYnJTu+SV6FYKXClIRsBuRjOfKbBSULvnPD3X/mg==}
'@fastify/error@4.2.0':
resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==}
@@ -375,8 +375,8 @@ packages:
'@fastify/forwarded@3.0.2':
resolution: {integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==}
- '@fastify/helmet@13.1.1':
- resolution: {integrity: sha512-bSat5DTq8geASv8G6P0KW1UbltZ+xGD/zyd9S72pT7ogAHehcsWL85GdjMRCjDsExJvaEvgEZ52qU/2HXirVCw==}
+ '@fastify/helmet@13.2.0':
+ resolution: {integrity: sha512-2u41U5hR9o1u3HUHLT3Njp7vWuWw+XXw8qCBwVY17pRQAN179YYKiU9f7/qEn1ITabgNTkq/Yk6gmrYPSraagA==}
'@fastify/merge-json-schemas@0.2.1':
resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==}
@@ -387,11 +387,11 @@ packages:
'@fastify/send@4.1.1':
resolution: {integrity: sha512-BYo+EiaKwlxH+WetGk6hAs1d39iP0y1gqB8lGF/qwkJ9ZZ/cBY1vx5NvExb9Sc3yRMFjD5X4Eyh4e4+TzRkzdw==}
- '@fastify/static@10.1.5':
- resolution: {integrity: sha512-3r0ZFXo82nKlPzySOUYhwWVfPZStfiwjmyevkX7cJWL2yXmEzl0Rpxv+L6L1R4OxqvlDGqf3g8OdBzILKgqe6w==}
+ '@fastify/static@10.1.6':
+ resolution: {integrity: sha512-f3x9XisI+y6AIhIfA/+Q3SFsuXeqNNk5HQh5htgHsPxmMLb4pLFskV6eFaLSW3IbI4azrS5np+/tkzXNH99LyQ==}
- '@fastify/swagger@9.9.0':
- resolution: {integrity: sha512-d21Im1l3KoF2kmzJHOYL50Erjhj1qUUudQsW9hzwYTE7likjvMx7AQKpClyZbdhrqGXbl+fU4dI2S7BaLpFIvw==}
+ '@fastify/swagger@9.9.2':
+ resolution: {integrity: sha512-ayxItVgf/1axBvw33lqsA5ns02YMpT1r59G/HCJraRNWWBzvLgN+oiCBPhuzTiN67TvctlCYkG0+40WLKYuusQ==}
'@humanfs/core@0.19.2':
resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==}
@@ -644,11 +644,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -658,20 +658,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
@@ -888,9 +888,6 @@ packages:
fastify@5.12.5:
resolution: {integrity: sha512-OB2k1dlxs5/NAABqeKV2FUHkSD2BbENsCak8yULVcymn3fHIPDVa9TI3SDnJSWYSllZmSYuZXy2gTnsT+Sut1A==}
- fastq@1.20.1:
- resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
-
fastq@1.20.3:
resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==}
@@ -1245,13 +1242,13 @@ packages:
quick-format-unescaped@4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
real-require@0.2.0:
@@ -1464,20 +1461,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1739,7 +1736,7 @@ snapshots:
ajv-formats: 3.0.1(ajv@8.20.0)
fast-uri: 4.1.5
- '@fastify/cookie@11.1.2':
+ '@fastify/cookie@11.1.3':
dependencies:
cookie: 2.0.1
fastify-plugin: 6.0.0
@@ -1752,7 +1749,7 @@ snapshots:
'@fastify/forwarded@3.0.2': {}
- '@fastify/helmet@13.1.1':
+ '@fastify/helmet@13.2.0':
dependencies:
fastify-plugin: 6.0.0
helmet: 8.3.0
@@ -1774,7 +1771,7 @@ snapshots:
http-errors: 2.0.1
mime: 3.0.0
- '@fastify/static@10.1.5':
+ '@fastify/static@10.1.6':
dependencies:
'@fastify/accept-negotiator': 2.1.0
'@fastify/error': 4.2.0
@@ -1784,7 +1781,7 @@ snapshots:
fastq: 1.20.3
glob: 13.0.6
- '@fastify/swagger@9.9.0':
+ '@fastify/swagger@9.9.2':
dependencies:
fastify-plugin: 6.0.0
json-schema-resolver: 3.0.0
@@ -2006,44 +2003,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -2080,7 +2077,7 @@ snapshots:
avvio@9.3.0:
dependencies:
'@fastify/error': 4.2.0
- fastq: 1.20.1
+ fastq: 1.20.3
balanced-match@4.0.4: {}
@@ -2300,10 +2297,6 @@ snapshots:
semver: 7.8.5
toad-cache: 3.7.4
- fastq@1.20.1:
- dependencies:
- reusify: 1.1.0
-
fastq@1.20.3:
dependencies:
reusify: 1.1.0
@@ -2628,12 +2621,12 @@ snapshots:
quick-format-unescaped@4.0.4: {}
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
real-require@0.2.0: {}
@@ -2792,15 +2785,15 @@ snapshots:
tsx: 4.23.12
yaml: 2.9.0
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p10-warehouse-workloads/package.json b/p10-warehouse-workloads/package.json
index 01eb5f7..45499cf 100644
--- a/p10-warehouse-workloads/package.json
+++ b/p10-warehouse-workloads/package.json
@@ -22,14 +22,14 @@
"check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build && pnpm test:e2e"
},
"dependencies": {
- "@fastify/helmet": "13.1.1",
- "@fastify/static": "10.1.5",
+ "@fastify/helmet": "13.2.0",
+ "@fastify/static": "10.1.6",
"better-sqlite3": "13.0.3",
"fastify": "5.12.5",
"jose": "6.2.2",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0"
+ "react": "19.3.1",
+ "react-dom": "19.3.1"
},
"devDependencies": {
"@biomejs/biome": "2.5.14",
@@ -41,7 +41,7 @@
"@vitejs/plugin-react": "6.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p10-warehouse-workloads/pnpm-lock.yaml b/p10-warehouse-workloads/pnpm-lock.yaml
index 0f01d64..b4c896e 100644
--- a/p10-warehouse-workloads/pnpm-lock.yaml
+++ b/p10-warehouse-workloads/pnpm-lock.yaml
@@ -9,11 +9,11 @@ importers:
.:
dependencies:
'@fastify/helmet':
- specifier: 13.1.1
- version: 13.1.1
+ specifier: 13.2.0
+ version: 13.2.0
'@fastify/static':
- specifier: 10.1.5
- version: 10.1.5
+ specifier: 10.1.6
+ version: 10.1.6
better-sqlite3:
specifier: 13.0.3
version: 13.0.3
@@ -27,11 +27,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
devDependencies:
'@biomejs/biome':
specifier: 2.5.14
@@ -61,8 +61,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -191,8 +191,8 @@ packages:
'@fastify/forwarded@3.0.2':
resolution: {integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==}
- '@fastify/helmet@13.1.1':
- resolution: {integrity: sha512-bSat5DTq8geASv8G6P0KW1UbltZ+xGD/zyd9S72pT7ogAHehcsWL85GdjMRCjDsExJvaEvgEZ52qU/2HXirVCw==}
+ '@fastify/helmet@13.2.0':
+ resolution: {integrity: sha512-2u41U5hR9o1u3HUHLT3Njp7vWuWw+XXw8qCBwVY17pRQAN179YYKiU9f7/qEn1ITabgNTkq/Yk6gmrYPSraagA==}
'@fastify/merge-json-schemas@0.2.1':
resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==}
@@ -203,8 +203,8 @@ packages:
'@fastify/send@4.1.1':
resolution: {integrity: sha512-BYo+EiaKwlxH+WetGk6hAs1d39iP0y1gqB8lGF/qwkJ9ZZ/cBY1vx5NvExb9Sc3yRMFjD5X4Eyh4e4+TzRkzdw==}
- '@fastify/static@10.1.5':
- resolution: {integrity: sha512-3r0ZFXo82nKlPzySOUYhwWVfPZStfiwjmyevkX7cJWL2yXmEzl0Rpxv+L6L1R4OxqvlDGqf3g8OdBzILKgqe6w==}
+ '@fastify/static@10.1.6':
+ resolution: {integrity: sha512-f3x9XisI+y6AIhIfA/+Q3SFsuXeqNNk5HQh5htgHsPxmMLb4pLFskV6eFaLSW3IbI4azrS5np+/tkzXNH99LyQ==}
'@jridgewell/sourcemap-codec@1.6.0':
resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
@@ -359,11 +359,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -373,20 +373,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
@@ -751,13 +751,13 @@ packages:
quick-format-unescaped@4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
real-require@0.2.0:
@@ -940,20 +940,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1121,7 +1121,7 @@ snapshots:
'@fastify/forwarded@3.0.2': {}
- '@fastify/helmet@13.1.1':
+ '@fastify/helmet@13.2.0':
dependencies:
fastify-plugin: 6.0.0
helmet: 8.3.0
@@ -1143,7 +1143,7 @@ snapshots:
http-errors: 2.0.1
mime: 3.0.0
- '@fastify/static@10.1.5':
+ '@fastify/static@10.1.6':
dependencies:
'@fastify/accept-negotiator': 2.1.0
'@fastify/error': 4.2.0
@@ -1244,44 +1244,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1637,12 +1637,12 @@ snapshots:
quick-format-unescaped@4.0.4: {}
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
real-require@0.2.0: {}
@@ -1772,15 +1772,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p11-saas-workspace/package.json b/p11-saas-workspace/package.json
index b3005a6..43c1431 100644
--- a/p11-saas-workspace/package.json
+++ b/p11-saas-workspace/package.json
@@ -29,8 +29,8 @@
"express": "5.2.1",
"openid-client": "6.8.8",
"pg": "8.23.0",
- "react": "19.3.0",
- "react-dom": "19.3.0",
+ "react": "19.3.1",
+ "react-dom": "19.3.1",
"react-router": "8.4.0"
},
"devDependencies": {
@@ -44,6 +44,6 @@
"@types/react-dom": "19.3.0",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
}
}
diff --git a/p11-saas-workspace/pnpm-lock.yaml b/p11-saas-workspace/pnpm-lock.yaml
index cf4cb99..5b8ef31 100644
--- a/p11-saas-workspace/pnpm-lock.yaml
+++ b/p11-saas-workspace/pnpm-lock.yaml
@@ -10,10 +10,10 @@ importers:
dependencies:
'@react-router/express':
specifier: 8.4.0
- version: 8.4.0(express@5.2.1)(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)
+ version: 8.4.0(express@5.2.1)(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)
'@react-router/node':
specifier: 8.4.0
- version: 8.4.0(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)
+ version: 8.4.0(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)
express:
specifier: 5.2.1
version: 5.2.1
@@ -24,14 +24,14 @@ importers:
specifier: 8.23.0
version: 8.23.0
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
react-router:
specifier: 8.4.0
- version: 8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ version: 8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1)
devDependencies:
'@biomejs/biome':
specifier: 2.5.11
@@ -41,7 +41,7 @@ importers:
version: 1.63.0
'@react-router/dev':
specifier: 8.4.0
- version: 8.4.0(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)(vite@8.2.4(@types/node@24.19.0))
+ version: 8.4.0(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)(vite@8.2.4(@types/node@24.19.0))
'@types/express':
specifier: 5.0.6
version: 5.0.6
@@ -64,8 +64,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -467,11 +467,11 @@ packages:
'@types/serve-static@2.2.0':
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -481,20 +481,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
@@ -1038,10 +1038,10 @@ packages:
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
engines: {node: '>= 0.10'}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
react-refresh@0.18.0:
resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
@@ -1057,8 +1057,8 @@ packages:
react-dom:
optional: true
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
readdirp@5.1.1:
@@ -1263,20 +1263,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1563,14 +1563,14 @@ snapshots:
dependencies:
playwright: 1.63.0
- '@react-router/dev@8.4.0(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)(vite@8.2.4(@types/node@24.19.0))':
+ '@react-router/dev@8.4.0(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)(vite@8.2.4(@types/node@24.19.0))':
dependencies:
'@babel/core': 7.29.7
'@babel/generator': 7.29.8
'@babel/parser': 7.29.8
'@babel/traverse': 7.29.8
'@babel/types': 7.29.8
- '@react-router/node': 8.4.0(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)
+ '@react-router/node': 8.4.0(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)
'@remix-run/node-fetch-server': 0.14.1
babel-dead-code-elimination: 1.0.12
chokidar: 5.0.0
@@ -1585,7 +1585,7 @@ snapshots:
picocolors: 1.1.1
pkg-types: 2.3.3
react-refresh: 0.18.0
- react-router: 8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-router: 8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1)
semver: 7.8.5
tinyglobby: 0.2.17
valibot: 1.5.0(typescript@6.0.3)
@@ -1596,18 +1596,18 @@ snapshots:
- babel-plugin-macros
- supports-color
- '@react-router/express@8.4.0(express@5.2.1)(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)':
+ '@react-router/express@8.4.0(express@5.2.1)(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)':
dependencies:
- '@react-router/node': 8.4.0(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)
+ '@react-router/node': 8.4.0(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)
express: 5.2.1
- react-router: 8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-router: 8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1)
optionalDependencies:
typescript: 6.0.3
- '@react-router/node@8.4.0(react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(typescript@6.0.3)':
+ '@react-router/node@8.4.0(react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(typescript@6.0.3)':
dependencies:
'@remix-run/node-fetch-server': 0.14.1
- react-router: 8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-router: 8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1)
optionalDependencies:
typescript: 6.0.3
@@ -1728,44 +1728,44 @@ snapshots:
'@types/http-errors': 2.0.5
'@types/node': 24.19.0
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -2278,22 +2278,22 @@ snapshots:
iconv-lite: 0.7.3
unpipe: 1.0.0
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
react-refresh@0.18.0: {}
- react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
+ react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1):
dependencies:
'@remix-run/route-pattern': 0.22.1
cookie-es: 3.1.1
- react: 19.3.0
+ react: 19.3.1
optionalDependencies:
- react-dom: 19.3.0(react@19.3.0)
+ react-dom: 19.3.1(react@19.3.1)
- react@19.3.0: {}
+ react@19.3.1: {}
readdirp@5.1.1: {}
@@ -2483,15 +2483,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p12-hr-access-governance/package.json b/p12-hr-access-governance/package.json
index 2cd4a3c..7e88761 100644
--- a/p12-hr-access-governance/package.json
+++ b/p12-hr-access-governance/package.json
@@ -27,8 +27,8 @@
"cookie": "2.0.1",
"express": "5.2.1",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0",
+ "react": "19.3.1",
+ "react-dom": "19.3.1",
"react-router": "8.4.0"
},
"devDependencies": {
@@ -41,7 +41,7 @@
"jsdom": "30.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p12-hr-access-governance/pnpm-lock.yaml b/p12-hr-access-governance/pnpm-lock.yaml
index e8648fa..2cdf1a6 100644
--- a/p12-hr-access-governance/pnpm-lock.yaml
+++ b/p12-hr-access-governance/pnpm-lock.yaml
@@ -24,14 +24,14 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
react-router:
specifier: 8.4.0
- version: 8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ version: 8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1)
devDependencies:
'@biomejs/biome':
specifier: 2.5.11
@@ -61,8 +61,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -331,11 +331,11 @@ packages:
'@types/serve-static@2.2.0':
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -345,20 +345,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
@@ -771,10 +771,10 @@ packages:
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
engines: {node: '>= 0.10'}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
react-router@8.4.0:
resolution: {integrity: sha512-JtydAkBvU9UTEe5qNC+POhu+ZBNM7rlKY2IegwXc7Idj7xfRG16x5RZrw3mju+XlqBxfvb2ky9P3jUp9WyWC1g==}
@@ -786,8 +786,8 @@ packages:
react-dom:
optional: true
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
@@ -958,20 +958,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1233,44 +1233,44 @@ snapshots:
'@types/http-errors': 2.0.5
'@types/node': 24.19.0
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1664,20 +1664,20 @@ snapshots:
iconv-lite: 0.7.3
unpipe: 1.0.0
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
+ react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1):
dependencies:
'@remix-run/route-pattern': 0.22.1
cookie-es: 3.1.1
- react: 19.3.0
+ react: 19.3.1
optionalDependencies:
- react-dom: 19.3.0(react@19.3.0)
+ react-dom: 19.3.1(react@19.3.1)
- react@19.3.0: {}
+ react@19.3.1: {}
require-from-string@2.0.2: {}
@@ -1839,15 +1839,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p13-student-records/package.json b/p13-student-records/package.json
index 3678548..f7dd0f8 100644
--- a/p13-student-records/package.json
+++ b/p13-student-records/package.json
@@ -28,8 +28,8 @@
"cookie": "2.0.1",
"express": "5.2.1",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0",
+ "react": "19.3.1",
+ "react-dom": "19.3.1",
"react-router": "8.4.0"
},
"devDependencies": {
@@ -42,7 +42,7 @@
"jsdom": "30.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p13-student-records/pnpm-lock.yaml b/p13-student-records/pnpm-lock.yaml
index 98b67e5..cf85c28 100644
--- a/p13-student-records/pnpm-lock.yaml
+++ b/p13-student-records/pnpm-lock.yaml
@@ -21,14 +21,14 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
react-router:
specifier: 8.4.0
- version: 8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ version: 8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1)
devDependencies:
'@biomejs/biome':
specifier: 2.5.11
@@ -58,8 +58,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -328,11 +328,11 @@ packages:
'@types/serve-static@2.2.0':
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -342,20 +342,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
@@ -768,10 +768,10 @@ packages:
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
engines: {node: '>= 0.10'}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
react-router@8.4.0:
resolution: {integrity: sha512-JtydAkBvU9UTEe5qNC+POhu+ZBNM7rlKY2IegwXc7Idj7xfRG16x5RZrw3mju+XlqBxfvb2ky9P3jUp9WyWC1g==}
@@ -783,8 +783,8 @@ packages:
react-dom:
optional: true
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
@@ -955,20 +955,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1230,44 +1230,44 @@ snapshots:
'@types/http-errors': 2.0.5
'@types/node': 24.19.0
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1661,20 +1661,20 @@ snapshots:
iconv-lite: 0.7.3
unpipe: 1.0.0
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
+ react-router@8.4.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1):
dependencies:
'@remix-run/route-pattern': 0.22.1
cookie-es: 3.1.1
- react: 19.3.0
+ react: 19.3.1
optionalDependencies:
- react-dom: 19.3.0(react@19.3.0)
+ react-dom: 19.3.1(react@19.3.1)
- react@19.3.0: {}
+ react@19.3.1: {}
require-from-string@2.0.2: {}
@@ -1836,15 +1836,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p14-capital-district/package.json b/p14-capital-district/package.json
index 8e3a27e..d27db2d 100644
--- a/p14-capital-district/package.json
+++ b/p14-capital-district/package.json
@@ -42,7 +42,7 @@
"@vitejs/plugin-react": "6.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"onlyBuiltDependencies": [
diff --git a/p14-capital-district/pnpm-lock.yaml b/p14-capital-district/pnpm-lock.yaml
index 5182812..c37b3a5 100644
--- a/p14-capital-district/pnpm-lock.yaml
+++ b/p14-capital-district/pnpm-lock.yaml
@@ -61,8 +61,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -308,11 +308,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -322,20 +322,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
@@ -809,20 +809,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1038,44 +1038,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.3.0
tinyrainbow: 3.2.0
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.2.0
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.2.0
@@ -1459,15 +1459,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p15-marketplace/package.json b/p15-marketplace/package.json
index 9052e59..8778737 100644
--- a/p15-marketplace/package.json
+++ b/p15-marketplace/package.json
@@ -27,8 +27,8 @@
"cookie": "2.0.1",
"express": "5.2.1",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0"
+ "react": "19.3.1",
+ "react-dom": "19.3.1"
},
"devDependencies": {
"@biomejs/biome": "2.5.11",
@@ -41,7 +41,7 @@
"jsdom": "30.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p15-marketplace/pnpm-lock.yaml b/p15-marketplace/pnpm-lock.yaml
index a2a0c50..10feb6b 100644
--- a/p15-marketplace/pnpm-lock.yaml
+++ b/p15-marketplace/pnpm-lock.yaml
@@ -21,11 +21,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
devDependencies:
'@biomejs/biome':
specifier: 2.5.11
@@ -58,8 +58,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -330,11 +330,11 @@ packages:
'@types/serve-static@2.2.0':
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -344,20 +344,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
@@ -777,13 +777,13 @@ packages:
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
engines: {node: '>= 0.10'}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
@@ -954,20 +954,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1231,44 +1231,44 @@ snapshots:
'@types/http-errors': 2.0.5
'@types/node': 24.19.0
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1666,12 +1666,12 @@ snapshots:
iconv-lite: 0.7.3
unpipe: 1.0.0
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
require-from-string@2.0.2: {}
@@ -1833,15 +1833,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p2-tenantrag/docs/tutorials.md b/p2-tenantrag/docs/tutorials.md
index b42fec3..04c08a4 100644
--- a/p2-tenantrag/docs/tutorials.md
+++ b/p2-tenantrag/docs/tutorials.md
@@ -6,7 +6,7 @@ order: 30
socialImage: ./assets/social-card.webp
socialImageAlt: A Fastify RAG service checks corpus and documents with Cedarling before sending retrieved evidence to the answer model.
lastVerified: 2026-10-09T10:23:54Z
-lastUpdated: 2026-10-09T17:29:36Z
+lastUpdated: 2026-10-22T17:09:42Z
---
# Prevent Cross-Tenant RAG Leaks with Cedarling
@@ -69,7 +69,8 @@ Postman or curl, using an access token from the tutorial's sign-in flow.
- **Mallory** belongs to Tenant B and must not retrieve Tenant A's documents.
"Public" means public within that tenant, not available to every caller.
-The bundled Node.js `oidc-provider` handles sign-in and issues access tokens.
+The repository's shared local identity provider (IdP) runs as a separate Node.js service using
+`oidc-provider`. It handles sign-in and issues access tokens.
The API verifies a token, then looks up the caller's tenant in its repository;
the document metadata lists who may read confidential content.
@@ -408,7 +409,7 @@ Install the pinned dependencies from the project directory:
```bash
pnpm add --save-exact @janssenproject/cedarling_wasm@0.0.468 fflate@0.8.3
-pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0
+pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0 vitest@4.1.12
```
We'll use a shared builder to validate the policy files and package them for Cedarling.
@@ -898,8 +899,9 @@ fixture-based permissions, provider data handling, and logging. Cedarling
controls document access; it does not guarantee answer accuracy or prevent
prompt injection. An allowed document can still contain instructions.
-Optional components include Jans Auth for identity, Agama Lab Policy Designer
-for policy authoring, and Lock Server for decision logs. See
+Optional components include Jans Auth for identity, Agama Lab Cedar Policy
+Designer for policy authoring, and Lock Server for policy-store distribution
+and decision-log collection. This tutorial loads a local archive. See
[Cedarling production solutions](https://cedarling.dev/solutions).
@@ -926,4 +928,4 @@ operations that let an assistant read information and change incident state.
[^3]: Cedar reports determining policies, not a list of conditions that failed. With these permit-only rules, a denied request has no determining policy. A matched `forbid` would instead be reported. See [How Cedar authorization works](https://docs.cedarpolicy.com/auth/authorization.html).
-[^4]: These steps were prepared on Ubuntu 24.04+. Native project checks also run in CI on macOS and Windows. If a platform-specific step fails, [open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
+[^4]: Follow these commands on Linux, macOS, or Windows with the listed prerequisites installed. Native project checks run in CI on all three systems. If a platform-specific step fails, [open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
diff --git a/p2-tenantrag/package.json b/p2-tenantrag/package.json
index d0a7581..c94667b 100644
--- a/p2-tenantrag/package.json
+++ b/p2-tenantrag/package.json
@@ -41,6 +41,6 @@
"typescript": "6.0.3",
"typescript-eslint": "8.68.0",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
}
}
diff --git a/p2-tenantrag/pnpm-lock.yaml b/p2-tenantrag/pnpm-lock.yaml
index fdc8e28..a835a27 100644
--- a/p2-tenantrag/pnpm-lock.yaml
+++ b/p2-tenantrag/pnpm-lock.yaml
@@ -58,8 +58,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12))
packages:
@@ -574,11 +574,11 @@ packages:
resolution: {integrity: sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -588,20 +588,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
@@ -1225,20 +1225,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1677,44 +1677,44 @@ snapshots:
'@typescript-eslint/types': 8.68.0
eslint-visitor-keys: 5.0.1
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -2298,15 +2298,15 @@ snapshots:
fsevents: 2.3.3
tsx: 4.23.12
- vitest@4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)):
+ vitest@4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p3-mcp-capability-governance/docs/tutorials.md b/p3-mcp-capability-governance/docs/tutorials.md
index 82979db..514f941 100644
--- a/p3-mcp-capability-governance/docs/tutorials.md
+++ b/p3-mcp-capability-governance/docs/tutorials.md
@@ -6,7 +6,7 @@ order: 40
socialImage: ./assets/social-card.webp
socialImageAlt: An MCP server checks incident capabilities with a private Cedarling sidecar before protected effects.
lastVerified: 2026-10-09T11:47:10Z
-lastUpdated: 2026-10-09T17:29:36Z
+lastUpdated: 2026-10-22T17:09:42Z
---
# Govern MCP Capabilities with Cedarling
@@ -45,8 +45,9 @@ and changes we'll need.
- New to Cedarling? [Read the short introduction](https://cedarling.dev/learn/what-is-cedarling) when you need it.
- Keep the [Cedar policy syntax](https://docs.cedarpolicy.com/policies/syntax-policy.html) and [Cedar schema syntax](https://docs.cedarpolicy.com/schema/human-readable-schema.html) references handy while editing policies.
-These steps were prepared on Ubuntu 24.04+. Native project checks also run in CI
-on macOS and Windows. If a platform-specific step fails,
+Follow these commands on Linux, macOS, or Windows with the listed prerequisites
+installed. Native project checks run in CI on all three systems; the sidecar
+checks run on Linux. If a platform-specific step fails,
[open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
@@ -72,8 +73,9 @@ use Cedarling to protect MCP tools, resources, and prompts.
unassigned audit incident in the mitigated state. Amir should not resolve the
second incident just because the model selected its update tool.
-The bundled Node.js `oidc-provider` authenticates these users and issues their
-access tokens. Cedarling uses Token-Based Access Control (TBAC): policies evaluate
+The repository's shared local IdP runs as a separate Node.js service using
+`oidc-provider`. It authenticates these users and issues their access tokens.
+Cedarling uses Token-Based Access Control (TBAC): policies evaluate
signed tokens from trusted issuers together with the request's facts.[^6]
In P3, the token identifies the caller. The MCP server looks up roles in its
account map and assignments in the incident repository.
@@ -398,7 +400,7 @@ From P3, install the build dependencies and update the MCP client to match the c
```bash
pnpm add --save-exact @modelcontextprotocol/client@2.3.0 @modelcontextprotocol/express@2.0.2 @modelcontextprotocol/server@2.3.0 hono@4.13.11
-pnpm add --save-dev --save-exact fflate@0.8.3 @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0
+pnpm add --save-dev --save-exact fflate@0.8.3 @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0 vitest@4.1.12
node ../shared/policy-store.mjs
```
@@ -820,8 +822,9 @@ Adapting it requires a separate review of local HTTP and the development IdP,
fixed account permissions, in-memory incidents, sidecar access, provider data
handling, and audit logging.
-Optional components include Jans Auth for identity, Agama Lab Policy Designer
-for policy authoring, and Lock Server for decision logs. See
+Optional components include Jans Auth for identity, Agama Lab Cedar Policy
+Designer for policy authoring, and Lock Server for policy-store distribution
+and decision-log collection. This tutorial loads a local archive. See
[Cedarling production solutions](https://cedarling.dev/solutions).
@@ -849,7 +852,7 @@ permission changes.
[^3]: The [OpenID AuthZEN Authorization API](https://openid.net/specs/authorization-api-1_0-final.html) defines the decision request's subject, action, resource, and context and the response's decision. P3 uses the Cedarling sidecar's own endpoint and token/entity mapping fields to implement this pattern.
-[^4]: Here `JSON.stringify()` creates the JSON body for an HTTP POST to the Cedarling sidecar. P3 uses the sidecar's AuthZen endpoint, not the `cedarling_wasm` JavaScript authorization method.
+[^4]: Here `JSON.stringify()` creates the JSON body for an HTTP POST to the Cedarling sidecar's AuthZEN endpoint.
[^5]: [Mutual TLS (mTLS)](https://istio.io/latest/docs/concepts/security/#mutual-tls-authentication) authenticates both ends of a service connection. A service mesh can manage that transport between application and policy decision service; the local tutorial uses a private shared network namespace instead.
diff --git a/p3-mcp-capability-governance/package.json b/p3-mcp-capability-governance/package.json
index 3107fe2..c97cf02 100644
--- a/p3-mcp-capability-governance/package.json
+++ b/p3-mcp-capability-governance/package.json
@@ -43,6 +43,6 @@
"typescript": "6.0.3",
"typescript-eslint": "8.68.0",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
}
}
diff --git a/p3-mcp-capability-governance/pnpm-lock.yaml b/p3-mcp-capability-governance/pnpm-lock.yaml
index ee15d65..969bdde 100644
--- a/p3-mcp-capability-governance/pnpm-lock.yaml
+++ b/p3-mcp-capability-governance/pnpm-lock.yaml
@@ -67,8 +67,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3))
packages:
@@ -546,11 +546,11 @@ packages:
resolution: {integrity: sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -560,20 +560,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
@@ -1319,20 +1319,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1775,44 +1775,44 @@ snapshots:
'@typescript-eslint/types': 8.68.0
eslint-visitor-keys: 5.0.1
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -2552,15 +2552,15 @@ snapshots:
tsx: 4.23.12
yaml: 2.8.3
- vitest@4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3)):
+ vitest@4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.8.3))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p4-editorial-publishing/docs/tutorials.md b/p4-editorial-publishing/docs/tutorials.md
index a6ffac9..1eb6198 100644
--- a/p4-editorial-publishing/docs/tutorials.md
+++ b/p4-editorial-publishing/docs/tutorials.md
@@ -6,7 +6,7 @@ order: 50
socialImage: ./assets/social-card.webp
socialImageAlt: Next.js Server Actions check current editorial facts with Cedarling before protected publishing effects.
lastVerified: 2026-10-09T12:21:40Z
-lastUpdated: 2026-10-09T17:29:36Z
+lastUpdated: 2026-10-22T17:09:42Z
---
# Secure Editorial Publishing with Cedarling
@@ -43,7 +43,7 @@ and changes we'll need.
- Familiarity with TypeScript, Next.js Server Actions, sessions, and basic HTTP requests.
- New to Cedarling? [Read the short introduction](https://cedarling.dev/learn/what-is-cedarling) when you need it.
- Keep the [Cedar policy syntax](https://docs.cedarpolicy.com/policies/syntax-policy.html) and [Cedar schema syntax](https://docs.cedarpolicy.com/schema/human-readable-schema.html) references handy while editing policies.
-- These steps were prepared on Ubuntu 24.04+. The repository also has native CI checks for macOS and Windows. If a platform-specific step fails, [open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
+- Follow these commands on Linux, macOS, or Windows with the listed prerequisites installed. Native project checks run in CI on all three systems. If a platform-specific step fails, [open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
@@ -66,9 +66,10 @@ reviewing fixed versions of their content, and publishing approved work.
All three can create articles in their tenant. Writing, reviewing, and publishing
require separate permissions. Editors cannot approve their own content.
-Cedarling runs on the server using `authorizeUnsigned()`. The bundled Node.js
-`oidc-provider` authenticates the user first. The server then loads the current
-user, revision, and authority records from SQLite for Cedarling to evaluate.
+Cedarling runs on the server using `authorizeUnsigned()`. The shared local IdP
+runs as a separate Node.js service using `oidc-provider` and authenticates the
+user first. The server then loads the current user, revision, and authority
+records from SQLite for Cedarling to evaluate.
"Unsigned" describes this authorization request; it does not skip sign-in.
The browser uses the server's decisions to enable or disable controls.
@@ -384,7 +385,7 @@ validate our policy store, along with the Next.js security update:
```bash
pnpm add --save-exact @janssenproject/cedarling_wasm@0.0.468 fflate@0.8.3 next@16.3.8
-pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0
+pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0 vitest@4.1.12
```
We'll use a shared builder to validate the policy files and package them for Cedarling.
@@ -806,8 +807,9 @@ A production application needs HTTPS and a production OIDC provider in place
of the local HTTP/IdP setup, plus a review of permission administration,
session and storage controls, and durable audit logging.
-For those components, consider Agama Lab Policy Designer for policy authoring,
-Jans Auth for identity, and Lock Server for centralized decision logs:
+For those components, consider Agama Lab Cedar Policy Designer for policy
+authoring, Jans Auth for identity, and Lock Server for policy-store distribution
+and decision-log collection. This tutorial loads a local archive. See
[Cedarling production solutions](https://cedarling.dev/solutions).
diff --git a/p4-editorial-publishing/package.json b/p4-editorial-publishing/package.json
index af2e3e0..c82a1f5 100644
--- a/p4-editorial-publishing/package.json
+++ b/p4-editorial-publishing/package.json
@@ -42,7 +42,7 @@
"@types/react-dom": "19.3.0",
"typescript": "6.0.3",
"vite": "8.3.3",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p4-editorial-publishing/pnpm-lock.yaml b/p4-editorial-publishing/pnpm-lock.yaml
index acf2590..552f0b2 100644
--- a/p4-editorial-publishing/pnpm-lock.yaml
+++ b/p4-editorial-publishing/pnpm-lock.yaml
@@ -61,8 +61,8 @@ importers:
specifier: 8.3.3
version: 8.3.3(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(vite@8.3.3(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(vite@8.3.3(@types/node@24.19.0))
packages:
@@ -459,11 +459,11 @@ packages:
'@types/react@19.3.0':
resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -473,20 +473,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
@@ -818,20 +818,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1132,44 +1132,44 @@ snapshots:
dependencies:
csstype: 3.2.3
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.3.3(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.3.3(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.3.3(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1436,15 +1436,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(vite@8.3.3(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(vite@8.3.3(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.3.3(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.3.3(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p5-dataguard/docs/tutorials.md b/p5-dataguard/docs/tutorials.md
index 45ecf9d..7da79a5 100644
--- a/p5-dataguard/docs/tutorials.md
+++ b/p5-dataguard/docs/tutorials.md
@@ -6,7 +6,7 @@ order: 60
socialImage: ./assets/social-card.webp
socialImageAlt: A Hono API checks query plans with embedded Cedarling before releasing rows, aggregates, or CSV exports.
lastVerified: 2026-10-07T19:56:00Z
-lastUpdated: 2026-10-09T17:29:36Z
+lastUpdated: 2026-10-22T17:09:42Z
---
# Protect Sensitive Data Exports with Cedarling
@@ -44,6 +44,11 @@ and changes we'll need.
- New to Cedarling? [Read the short introduction](https://cedarling.dev/learn/what-is-cedarling) when you need it.
- Keep the [Cedar policy syntax](https://docs.cedarpolicy.com/policies/syntax-policy.html) and [Cedar schema syntax](https://docs.cedarpolicy.com/schema/human-readable-schema.html) references handy while editing policies.
+Follow these commands on Linux, macOS, or Windows with the listed prerequisites
+installed. Native project checks run in CI on all three systems. If a
+platform-specific step fails,
+[open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
+
Run the commands from `p5-dataguard/`. Paths under `shared/` are relative to
@@ -70,9 +75,10 @@ such as a count of employees by department.[^1]
An aggregate must include at least five records in every returned group.
This minimum applies even when the purpose and role are allowed.
-Cedarling runs only on the server, using `authorizeUnsigned()`. The bundled
-Node.js `oidc-provider` authenticates the user first; SQLite supplies the
-current analyst's role and tenant. "Unsigned" describes the authorization
+Cedarling runs only on the server, using `authorizeUnsigned()`. The shared local
+IdP runs as a separate Node.js service using `oidc-provider`. It authenticates
+the user first; SQLite supplies the current analyst's role and tenant.
+"Unsigned" describes the authorization
request built from those facts. The browser cannot supply its own identity or
permissions.
@@ -361,7 +367,8 @@ From P5, install Cedarling and match the completed app's dependencies:
```bash
pnpm add --save-exact @janssenproject/cedarling_wasm@0.0.468 fflate@0.8.3 hono@4.13.11
-pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0
+pnpm add --save-exact react@19.3.1 react-dom@19.3.1
+pnpm add --save-dev --save-exact @cedar-policy/cedar-wasm@4.12.0 @types/node@24.19.0 vitest@4.1.12
```
We'll use a shared builder to validate the policy files and package them for Cedarling.
@@ -937,12 +944,9 @@ minimum is a teaching rule; it does not prevent sensitive facts from being
inferred across repeated queries.
For components to consider, see [Cedarling production solutions](https://cedarling.dev/solutions):
-Agama Lab Policy Designer for policy authoring, Jans Auth for identity, and
-Lock Server for centralized decision logs.
-
-These steps were prepared on Ubuntu 24.04+. Native project checks also run in CI
-on macOS and Windows. If a platform-specific step fails,
-[open an issue](https://github.com/GluuFederation/cedarling-tutorials/issues).
+Agama Lab Cedar Policy Designer for policy authoring, Jans Auth for identity,
+and Lock Server for policy-store distribution and decision-log collection.
+This tutorial loads a local archive.
diff --git a/p5-dataguard/package.json b/p5-dataguard/package.json
index dc47fc1..6e8c2ae 100644
--- a/p5-dataguard/package.json
+++ b/p5-dataguard/package.json
@@ -28,8 +28,8 @@
"better-sqlite3": "13.0.3",
"hono": "4.13.11",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0",
+ "react": "19.3.1",
+ "react-dom": "19.3.1",
"zod": "4.6.5"
},
"devDependencies": {
@@ -43,7 +43,7 @@
"@vitejs/plugin-react": "6.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p5-dataguard/pnpm-lock.yaml b/p5-dataguard/pnpm-lock.yaml
index 0130de5..e1a01bc 100644
--- a/p5-dataguard/pnpm-lock.yaml
+++ b/p5-dataguard/pnpm-lock.yaml
@@ -27,11 +27,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
zod:
specifier: 4.6.5
version: 4.6.5
@@ -67,8 +67,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -284,11 +284,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -298,20 +298,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
@@ -485,13 +485,13 @@ packages:
resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==}
engines: {node: ^10 || ^12 || >=14}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
rolldown@1.2.6:
@@ -581,20 +581,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -762,44 +762,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -922,12 +922,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.2
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
rolldown@1.2.6:
dependencies:
@@ -986,15 +986,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p6-field-inspection/package.json b/p6-field-inspection/package.json
index 73bab37..58f0e9a 100644
--- a/p6-field-inspection/package.json
+++ b/p6-field-inspection/package.json
@@ -22,14 +22,14 @@
"check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build && pnpm test:e2e"
},
"dependencies": {
- "@fastify/cookie": "11.1.2",
- "@fastify/helmet": "13.1.1",
- "@fastify/static": "10.1.5",
+ "@fastify/cookie": "11.1.3",
+ "@fastify/helmet": "13.2.0",
+ "@fastify/static": "10.1.6",
"better-sqlite3": "13.0.3",
"fastify": "5.12.5",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0"
+ "react": "19.3.1",
+ "react-dom": "19.3.1"
},
"devDependencies": {
"@biomejs/biome": "2.5.14",
@@ -41,7 +41,7 @@
"@vitejs/plugin-react": "6.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p6-field-inspection/pnpm-lock.yaml b/p6-field-inspection/pnpm-lock.yaml
index 0b6a2b9..95aaa2b 100644
--- a/p6-field-inspection/pnpm-lock.yaml
+++ b/p6-field-inspection/pnpm-lock.yaml
@@ -9,14 +9,14 @@ importers:
.:
dependencies:
'@fastify/cookie':
- specifier: 11.1.2
- version: 11.1.2
+ specifier: 11.1.3
+ version: 11.1.3
'@fastify/helmet':
- specifier: 13.1.1
- version: 13.1.1
+ specifier: 13.2.0
+ version: 13.2.0
'@fastify/static':
- specifier: 10.1.5
- version: 10.1.5
+ specifier: 10.1.6
+ version: 10.1.6
better-sqlite3:
specifier: 13.0.3
version: 13.0.3
@@ -27,11 +27,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
devDependencies:
'@biomejs/biome':
specifier: 2.5.14
@@ -61,8 +61,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -182,8 +182,8 @@ packages:
'@fastify/ajv-compiler@4.0.6':
resolution: {integrity: sha512-NtuzM0SfaMJbGlnjr9LWQUN5LzgSrbB8tf/wRZNas+4E1O/Nmzl53e7ruT61HDZyRCJGC6FxIogmNZO1c5ETBA==}
- '@fastify/cookie@11.1.2':
- resolution: {integrity: sha512-Dtrpk/YOGUsbRMvP/8ZqPpwnMRv0qSqodFdoQ2B589Obc7jw4s4Qla+cV72Bsm7WsZJnqlYFX/i7uSBq0xzg6g==}
+ '@fastify/cookie@11.1.3':
+ resolution: {integrity: sha512-RBhlMNsmSG6C5KGiTkhSXBF75xIrUMSytDDBcpnVewhJ8XVYnJTu+SV6FYKXClIRsBuRjOfKbBSULvnPD3X/mg==}
'@fastify/error@4.2.0':
resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==}
@@ -194,8 +194,8 @@ packages:
'@fastify/forwarded@3.0.2':
resolution: {integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==}
- '@fastify/helmet@13.1.1':
- resolution: {integrity: sha512-bSat5DTq8geASv8G6P0KW1UbltZ+xGD/zyd9S72pT7ogAHehcsWL85GdjMRCjDsExJvaEvgEZ52qU/2HXirVCw==}
+ '@fastify/helmet@13.2.0':
+ resolution: {integrity: sha512-2u41U5hR9o1u3HUHLT3Njp7vWuWw+XXw8qCBwVY17pRQAN179YYKiU9f7/qEn1ITabgNTkq/Yk6gmrYPSraagA==}
'@fastify/merge-json-schemas@0.2.1':
resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==}
@@ -206,8 +206,8 @@ packages:
'@fastify/send@4.1.1':
resolution: {integrity: sha512-BYo+EiaKwlxH+WetGk6hAs1d39iP0y1gqB8lGF/qwkJ9ZZ/cBY1vx5NvExb9Sc3yRMFjD5X4Eyh4e4+TzRkzdw==}
- '@fastify/static@10.1.5':
- resolution: {integrity: sha512-3r0ZFXo82nKlPzySOUYhwWVfPZStfiwjmyevkX7cJWL2yXmEzl0Rpxv+L6L1R4OxqvlDGqf3g8OdBzILKgqe6w==}
+ '@fastify/static@10.1.6':
+ resolution: {integrity: sha512-f3x9XisI+y6AIhIfA/+Q3SFsuXeqNNk5HQh5htgHsPxmMLb4pLFskV6eFaLSW3IbI4azrS5np+/tkzXNH99LyQ==}
'@jridgewell/sourcemap-codec@1.6.0':
resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
@@ -362,11 +362,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -376,20 +376,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
@@ -755,13 +755,13 @@ packages:
quick-format-unescaped@4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
real-require@0.2.0:
@@ -944,20 +944,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1117,7 +1117,7 @@ snapshots:
ajv-formats: 3.0.1(ajv@8.20.0)
fast-uri: 4.1.5
- '@fastify/cookie@11.1.2':
+ '@fastify/cookie@11.1.3':
dependencies:
cookie: 2.0.1
fastify-plugin: 6.0.0
@@ -1130,7 +1130,7 @@ snapshots:
'@fastify/forwarded@3.0.2': {}
- '@fastify/helmet@13.1.1':
+ '@fastify/helmet@13.2.0':
dependencies:
fastify-plugin: 6.0.0
helmet: 8.3.0
@@ -1152,7 +1152,7 @@ snapshots:
http-errors: 2.0.1
mime: 3.0.0
- '@fastify/static@10.1.5':
+ '@fastify/static@10.1.6':
dependencies:
'@fastify/accept-negotiator': 2.1.0
'@fastify/error': 4.2.0
@@ -1253,44 +1253,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1646,12 +1646,12 @@ snapshots:
quick-format-unescaped@4.0.4: {}
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
real-require@0.2.0: {}
@@ -1781,15 +1781,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.0.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p7-collaborative-docs/package.json b/p7-collaborative-docs/package.json
index 3231878..ace7287 100644
--- a/p7-collaborative-docs/package.json
+++ b/p7-collaborative-docs/package.json
@@ -22,14 +22,14 @@
"check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build && pnpm test:e2e"
},
"dependencies": {
- "@fastify/cookie": "11.1.2",
- "@fastify/helmet": "13.1.1",
- "@fastify/static": "10.1.5",
+ "@fastify/cookie": "11.1.3",
+ "@fastify/helmet": "13.2.0",
+ "@fastify/static": "10.1.6",
"better-sqlite3": "13.0.3",
"fastify": "5.12.5",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0"
+ "react": "19.3.1",
+ "react-dom": "19.3.1"
},
"devDependencies": {
"@biomejs/biome": "2.5.14",
@@ -41,7 +41,7 @@
"@vitejs/plugin-react": "6.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p7-collaborative-docs/pnpm-lock.yaml b/p7-collaborative-docs/pnpm-lock.yaml
index 3d2637e..4eff895 100644
--- a/p7-collaborative-docs/pnpm-lock.yaml
+++ b/p7-collaborative-docs/pnpm-lock.yaml
@@ -9,14 +9,14 @@ importers:
.:
dependencies:
'@fastify/cookie':
- specifier: 11.1.2
- version: 11.1.2
+ specifier: 11.1.3
+ version: 11.1.3
'@fastify/helmet':
- specifier: 13.1.1
- version: 13.1.1
+ specifier: 13.2.0
+ version: 13.2.0
'@fastify/static':
- specifier: 10.1.5
- version: 10.1.5
+ specifier: 10.1.6
+ version: 10.1.6
better-sqlite3:
specifier: 13.0.3
version: 13.0.3
@@ -27,11 +27,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
devDependencies:
'@biomejs/biome':
specifier: 2.5.14
@@ -61,8 +61,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)(esbuild@0.28.1)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1))
packages:
@@ -281,8 +281,8 @@ packages:
'@fastify/ajv-compiler@4.0.6':
resolution: {integrity: sha512-NtuzM0SfaMJbGlnjr9LWQUN5LzgSrbB8tf/wRZNas+4E1O/Nmzl53e7ruT61HDZyRCJGC6FxIogmNZO1c5ETBA==}
- '@fastify/cookie@11.1.2':
- resolution: {integrity: sha512-Dtrpk/YOGUsbRMvP/8ZqPpwnMRv0qSqodFdoQ2B589Obc7jw4s4Qla+cV72Bsm7WsZJnqlYFX/i7uSBq0xzg6g==}
+ '@fastify/cookie@11.1.3':
+ resolution: {integrity: sha512-RBhlMNsmSG6C5KGiTkhSXBF75xIrUMSytDDBcpnVewhJ8XVYnJTu+SV6FYKXClIRsBuRjOfKbBSULvnPD3X/mg==}
'@fastify/error@4.2.0':
resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==}
@@ -293,8 +293,8 @@ packages:
'@fastify/forwarded@3.0.2':
resolution: {integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==}
- '@fastify/helmet@13.1.1':
- resolution: {integrity: sha512-bSat5DTq8geASv8G6P0KW1UbltZ+xGD/zyd9S72pT7ogAHehcsWL85GdjMRCjDsExJvaEvgEZ52qU/2HXirVCw==}
+ '@fastify/helmet@13.2.0':
+ resolution: {integrity: sha512-2u41U5hR9o1u3HUHLT3Njp7vWuWw+XXw8qCBwVY17pRQAN179YYKiU9f7/qEn1ITabgNTkq/Yk6gmrYPSraagA==}
'@fastify/merge-json-schemas@0.2.1':
resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==}
@@ -305,8 +305,8 @@ packages:
'@fastify/send@4.1.1':
resolution: {integrity: sha512-BYo+EiaKwlxH+WetGk6hAs1d39iP0y1gqB8lGF/qwkJ9ZZ/cBY1vx5NvExb9Sc3yRMFjD5X4Eyh4e4+TzRkzdw==}
- '@fastify/static@10.1.5':
- resolution: {integrity: sha512-3r0ZFXo82nKlPzySOUYhwWVfPZStfiwjmyevkX7cJWL2yXmEzl0Rpxv+L6L1R4OxqvlDGqf3g8OdBzILKgqe6w==}
+ '@fastify/static@10.1.6':
+ resolution: {integrity: sha512-f3x9XisI+y6AIhIfA/+Q3SFsuXeqNNk5HQh5htgHsPxmMLb4pLFskV6eFaLSW3IbI4azrS5np+/tkzXNH99LyQ==}
'@jridgewell/sourcemap-codec@1.6.0':
resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
@@ -461,11 +461,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -475,20 +475,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
@@ -815,13 +815,13 @@ packages:
quick-format-unescaped@4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
real-require@0.2.0:
@@ -978,20 +978,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1147,7 +1147,7 @@ snapshots:
ajv-formats: 3.0.1(ajv@8.20.0)
fast-uri: 4.1.5
- '@fastify/cookie@11.1.2':
+ '@fastify/cookie@11.1.3':
dependencies:
cookie: 2.0.1
fastify-plugin: 6.0.0
@@ -1160,7 +1160,7 @@ snapshots:
'@fastify/forwarded@3.0.2': {}
- '@fastify/helmet@13.1.1':
+ '@fastify/helmet@13.2.0':
dependencies:
fastify-plugin: 6.0.0
helmet: 8.3.0
@@ -1182,7 +1182,7 @@ snapshots:
http-errors: 2.0.1
mime: 3.0.0
- '@fastify/static@10.1.5':
+ '@fastify/static@10.1.6':
dependencies:
'@fastify/accept-negotiator': 2.1.0
'@fastify/error': 4.2.0
@@ -1283,44 +1283,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)(esbuild@0.28.1)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)(esbuild@0.28.1)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1633,12 +1633,12 @@ snapshots:
quick-format-unescaped@4.0.4: {}
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
real-require@0.2.0: {}
@@ -1740,15 +1740,15 @@ snapshots:
esbuild: 0.28.1
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1)):
+ vitest@4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0)(esbuild@0.28.1))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p8-cedarfile/package.json b/p8-cedarfile/package.json
index 9ebcc27..1f9040c 100644
--- a/p8-cedarfile/package.json
+++ b/p8-cedarfile/package.json
@@ -28,8 +28,8 @@
"file-type": "22.0.2",
"helmet": "8.3.0",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0",
+ "react": "19.3.1",
+ "react-dom": "19.3.1",
"zod": "4.6.5"
},
"devDependencies": {
@@ -43,7 +43,7 @@
"jsdom": "30.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p8-cedarfile/pnpm-lock.yaml b/p8-cedarfile/pnpm-lock.yaml
index 2c3b05d..e5b88ac 100644
--- a/p8-cedarfile/pnpm-lock.yaml
+++ b/p8-cedarfile/pnpm-lock.yaml
@@ -30,11 +30,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
zod:
specifier: 4.6.5
version: 4.6.5
@@ -70,8 +70,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -363,11 +363,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -377,20 +377,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
@@ -811,13 +811,13 @@ packages:
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
engines: {node: '>= 0.10'}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
@@ -1000,20 +1000,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1292,44 +1292,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1734,12 +1734,12 @@ snapshots:
iconv-lite: 0.7.3
unpipe: 1.0.0
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
require-from-string@2.0.2: {}
@@ -1913,15 +1913,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/p9-cedarrealtime/package.json b/p9-cedarrealtime/package.json
index ee5a790..8bb2393 100644
--- a/p9-cedarrealtime/package.json
+++ b/p9-cedarrealtime/package.json
@@ -26,8 +26,8 @@
"cookie": "2.0.1",
"express": "5.2.1",
"openid-client": "6.8.8",
- "react": "19.3.0",
- "react-dom": "19.3.0",
+ "react": "19.3.1",
+ "react-dom": "19.3.1",
"socket.io": "4.8.3",
"socket.io-client": "4.8.3"
},
@@ -42,7 +42,7 @@
"jsdom": "30.1.1",
"typescript": "6.0.3",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
},
"pnpm": {
"ignoredBuiltDependencies": [
diff --git a/p9-cedarrealtime/pnpm-lock.yaml b/p9-cedarrealtime/pnpm-lock.yaml
index 2f90726..5651324 100644
--- a/p9-cedarrealtime/pnpm-lock.yaml
+++ b/p9-cedarrealtime/pnpm-lock.yaml
@@ -21,11 +21,11 @@ importers:
specifier: 6.8.8
version: 6.8.8
react:
- specifier: 19.3.0
- version: 19.3.0
+ specifier: 19.3.1
+ version: 19.3.1
react-dom:
- specifier: 19.3.0
- version: 19.3.0(react@19.3.0)
+ specifier: 19.3.1
+ version: 19.3.1(react@19.3.1)
socket.io:
specifier: 4.8.3
version: 4.8.3
@@ -64,8 +64,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0))
packages:
@@ -356,11 +356,11 @@ packages:
oxc-transform-react:
optional: true
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -370,20 +370,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
@@ -832,13 +832,13 @@ packages:
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
engines: {node: '>= 0.10'}
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
+ react-dom@19.3.1:
+ resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==}
peerDependencies:
- react: ^19.3.0
+ react: ^19.3.1
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
+ react@19.3.1:
+ resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==}
engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
@@ -1024,20 +1024,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1328,44 +1328,44 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -1809,12 +1809,12 @@ snapshots:
iconv-lite: 0.7.3
unpipe: 1.0.0
- react-dom@19.3.0(react@19.3.0):
+ react-dom@19.3.1(react@19.3.1):
dependencies:
- react: 19.3.0
+ react: 19.3.1
scheduler: 0.28.0
- react@19.3.0: {}
+ react@19.3.1: {}
require-from-string@2.0.2: {}
@@ -2017,15 +2017,15 @@ snapshots:
'@types/node': 24.19.0
fsevents: 2.3.3
- vitest@4.1.11(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
+ vitest@4.1.12(@types/node@24.19.0)(jsdom@30.1.1)(vite@8.2.4(@types/node@24.19.0)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
diff --git a/shared/identity-provider/package.json b/shared/identity-provider/package.json
index 3f2c383..ba82321 100644
--- a/shared/identity-provider/package.json
+++ b/shared/identity-provider/package.json
@@ -35,6 +35,6 @@
"typescript": "6.0.3",
"typescript-eslint": "8.68.0",
"vite": "8.2.4",
- "vitest": "4.1.11"
+ "vitest": "4.1.12"
}
}
diff --git a/shared/identity-provider/pnpm-lock.yaml b/shared/identity-provider/pnpm-lock.yaml
index b2110eb..cc72d8b 100644
--- a/shared/identity-provider/pnpm-lock.yaml
+++ b/shared/identity-provider/pnpm-lock.yaml
@@ -55,8 +55,8 @@ importers:
specifier: 8.2.4
version: 8.2.4(@types/node@24.19.0)(tsx@4.20.6)
vitest:
- specifier: 4.1.11
- version: 4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6))
+ specifier: 4.1.12
+ version: 4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6))
packages:
@@ -539,11 +539,11 @@ packages:
resolution: {integrity: sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@vitest/expect@4.1.11':
- resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
+ '@vitest/expect@4.1.12':
+ resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
- '@vitest/mocker@4.1.11':
- resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
+ '@vitest/mocker@4.1.12':
+ resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -553,20 +553,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.11':
- resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
+ '@vitest/pretty-format@4.1.12':
+ resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
- '@vitest/runner@4.1.11':
- resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
+ '@vitest/runner@4.1.12':
+ resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
- '@vitest/snapshot@4.1.11':
- resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
+ '@vitest/snapshot@4.1.12':
+ resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
- '@vitest/spy@4.1.11':
- resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
+ '@vitest/spy@4.1.12':
+ resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
- '@vitest/utils@4.1.11':
- resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@vitest/utils@4.1.12':
+ resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
@@ -1422,20 +1422,20 @@ packages:
yaml:
optional: true
- vitest@4.1.11:
- resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
+ vitest@4.1.12:
+ resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.1.11
- '@vitest/browser-preview': 4.1.11
- '@vitest/browser-webdriverio': 4.1.11
- '@vitest/coverage-istanbul': 4.1.11
- '@vitest/coverage-v8': 4.1.11
- '@vitest/ui': 4.1.11
+ '@vitest/browser-playwright': 4.1.12
+ '@vitest/browser-preview': 4.1.12
+ '@vitest/browser-webdriverio': ^4.1.11
+ '@vitest/coverage-istanbul': 4.1.12
+ '@vitest/coverage-v8': 4.1.12
+ '@vitest/ui': 4.1.12
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1892,44 +1892,44 @@ snapshots:
'@typescript-eslint/types': 8.68.0
eslint-visitor-keys: 5.0.1
- '@vitest/expect@4.1.11':
+ '@vitest/expect@4.1.12':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6))':
+ '@vitest/mocker@4.1.12(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6))':
dependencies:
- '@vitest/spy': 4.1.11
+ '@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.4(@types/node@24.19.0)(tsx@4.20.6)
- '@vitest/pretty-format@4.1.11':
+ '@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
- '@vitest/runner@4.1.11':
+ '@vitest/runner@4.1.12':
dependencies:
- '@vitest/utils': 4.1.11
+ '@vitest/utils': 4.1.12
pathe: 2.0.3
- '@vitest/snapshot@4.1.11':
+ '@vitest/snapshot@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/utils': 4.1.12
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.1.11': {}
+ '@vitest/spy@4.1.12': {}
- '@vitest/utils@4.1.11':
+ '@vitest/utils@4.1.12':
dependencies:
- '@vitest/pretty-format': 4.1.11
+ '@vitest/pretty-format': 4.1.12
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
@@ -2809,15 +2809,15 @@ snapshots:
fsevents: 2.3.3
tsx: 4.20.6
- vitest@4.1.11(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6)):
+ vitest@4.1.12(@types/node@24.19.0)(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6)):
dependencies:
- '@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6))
- '@vitest/pretty-format': 4.1.11
- '@vitest/runner': 4.1.11
- '@vitest/snapshot': 4.1.11
- '@vitest/spy': 4.1.11
- '@vitest/utils': 4.1.11
+ '@vitest/expect': 4.1.12
+ '@vitest/mocker': 4.1.12(vite@8.2.4(@types/node@24.19.0)(tsx@4.20.6))
+ '@vitest/pretty-format': 4.1.12
+ '@vitest/runner': 4.1.12
+ '@vitest/snapshot': 4.1.12
+ '@vitest/spy': 4.1.12
+ '@vitest/utils': 4.1.12
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21