From 1e70af76717f52f871ef044ffe3d3cf49e164269 Mon Sep 17 00:00:00 2001 From: Daniel Hutzel Date: Thu, 6 Aug 2026 13:11:44 +0200 Subject: [PATCH 001/120] Adjust to renamed action: BookingCreated -> ReserveSeats (#2808) --- guides/events/event-queues.md | 19 +++++++++---------- guides/integration/calesi.md | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/guides/events/event-queues.md b/guides/events/event-queues.md index be91ee114e..aee788ba52 100644 --- a/guides/events/event-queues.md +++ b/guides/events/event-queues.md @@ -74,7 +74,7 @@ const xflights = await cds.connect.to('xflights') this.after('CREATE', 'Bookings', async (_, req) => { const { flight_ID: flight, flight_date: date } = req.data // Anti-pattern: the remote call happens before the local commit is safe // [!code --] - await xflights.send('POST', 'BookingCreated', { flight, date }) // [!code --] + await xflights.send('POST', 'ReserveSeats', { flight, date }) // [!code --] }) ``` @@ -90,7 +90,7 @@ const qd_xflights = cds.queued(xflights) this.after('CREATE', 'Bookings', async (_, req) => { const { flight_ID: flight, flight_date: date } = req.data // Persisted within the current transaction, sent after commit // [!code ++] - await qd_xflights.send('POST', 'BookingCreated', { flight, date }) // [!code ++] + await qd_xflights.send('POST', 'ReserveSeats', { flight, date }) // [!code ++] }) ``` ```java [Java] @@ -203,20 +203,20 @@ Because queued calls return after the message is *stored*, not after the remote - `/#succeeded`: fires when processing completes successfully. - `/#failed`: fires when the message becomes a dead letter (after all retries are exhausted). -**Example:** After *xflights* successfully processes a `BookingCreated` event, the *xtravels* application replicates the booking confirmation back into its own database. If the booking fails, the application updates the local `Bookings` row to surface the error in its UI. +**Example:** After *xflights* successfully processes a `ReserveSeats` event, the *xtravels* application replicates the booking confirmation back into its own database. If the booking fails, the application updates the local `Bookings` row to surface the error in its UI. ::: code-group ```js [Node.js] const xflights = await cds.connect.to('xflights') // Called when the queued booking succeeds -xflights.after('BookingCreated/#succeeded', async (result, req) => { +xflights.after('ReserveSeats/#succeeded', async (result, req) => { console.log('Flight booked successfully:', result) // Replicate booking details from remote }) // Called when the queued booking fails after max retries -xflights.after('BookingCreated/#failed', async (error, req) => { +xflights.after('ReserveSeats/#failed', async (error, req) => { console.log('Flight booking failed:', error) // Trigger compensation logic }) @@ -414,18 +414,18 @@ module.exports = class TravelService extends cds.ApplicationService { const { Flights, Travels } = this.entities const { Bookings } = cds.entities('sap.capire.travels') - // After saving a Travel, emit a BookingCreated event for each booking. + // After saving a Travel, emit a ReserveSeats event for each booking. // Travel_ID + Pos are carried as headers so the callbacks can correlate back. this.after('SAVE', Travels, (_, req) => { const { Bookings: bookings = [] } = req.data return Promise.all(bookings.map(booking => { const { Flight_ID: flight, Flight_date: date, Travel_ID, Pos } = booking - return qd_xflights.emit('BookingCreated', { flight, date }, { Travel_ID, Pos }) + return qd_xflights.emit('ReserveSeats', { flight, date }, { Travel_ID, Pos }) })) }) // xflights confirmed the seat — mark the booking as Confirmed - xflights.after('BookingCreated/#succeeded', async (_, req) => { + xflights.after('ReserveSeats/#succeeded', async (_, req) => { const { Travel_ID, Pos } = req.headers await UPDATE(Bookings, { Travel_ID, Pos }).set({ Status_code: 'C' }) }) @@ -433,7 +433,7 @@ module.exports = class TravelService extends cds.ApplicationService { // xflights rejected the seat (e.g. no availability) — mark as Failed // This is not a rollback: the booking was never confirmed, so there is nothing to undo. // The status is recorded explicitly, leaving it visible for manual resolution or retry. - xflights.after('BookingCreated/#failed', async (err, req) => { + xflights.after('ReserveSeats/#failed', async (err, req) => { const { Travel_ID, Pos } = req.headers await UPDATE(Bookings, { Travel_ID, Pos }).set({ Status_code: 'F' }) }) @@ -769,4 +769,3 @@ Most event-queue usage comes through messaging or remote services. From here you - [Messaging](messaging) — emitting and consuming events between CAP applications and via brokers; messaging services are auto-outboxed. - [CAP-Level Service Integration](../integration/calesi) — consuming remote services as if they were local; outboxing them centrally with `outboxed: true`. - [CAP-Level Data Federation](../integration/data-federation) — using `srv.schedule().every()` for polling-based replication from remote services. - diff --git a/guides/integration/calesi.md b/guides/integration/calesi.md index ef40533807..658e6566ed 100644 --- a/guides/integration/calesi.md +++ b/guides/integration/calesi.md @@ -891,7 +891,7 @@ Here are some typical usages found in the xflights/xtravels sample: ```js :line-numbers=1 await xflights.run (SELECT.from`Flights`.where`modifiedAt > ${latest}`) -await xflights.send ('POST','BookingCreated', { flight, date, seats }) +await xflights.send ('POST','ReserveSeats', { flight, date, seats }) await this.emit ('Flights.Updated', { flight, date, free_seats }) // this = xflights service xflights.on ('Flights.Updated', async msg => { ... }) ``` @@ -1299,7 +1299,7 @@ const xflights_ = cds.outboxed (xflights) // [!code focus] this.after ('SAVE', Travels, ({ Bookings=[] }) => { return Promise.all (Bookings.map (booking => { let { Flight_ID: flight, Flight_date: date } = booking - return xflights_.send ('POST', 'BookingCreated', { flight, date }) // [!code focus] + return xflights_.send ('POST', 'ReserveSeats', { flight, date }) // [!code focus] })) }) ``` From c0ce54ef9d94a10524bd60f3416f02edfc1f00b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 10:44:10 +0200 Subject: [PATCH 002/120] Update dependency globals to v17.9.0 (#2807) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [globals](https://redirect.github.com/sindresorhus/globals) | [`17.8.0` → `17.9.0`](https://renovatebot.com/diffs/npm/globals/17.8.0/17.9.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/globals/17.9.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/globals/17.8.0/17.9.0?slim=true) | --- ### Release Notes
sindresorhus/globals (globals) ### [`v17.9.0`](https://redirect.github.com/sindresorhus/globals/compare/v17.8.0...8e7b9358b190d26acca88cc2804707fbcd90a229) [Compare Source](https://redirect.github.com/sindresorhus/globals/compare/v17.8.0...v17.9.0)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f176ee24af..0a10b43160 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3207,9 +3207,9 @@ } }, "node_modules/globals": { - "version": "17.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.8.0.tgz", - "integrity": "sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==", + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.9.0.tgz", + "integrity": "sha512-m/MvAW61QVU5VDNF1Vj8axt016h8w7L5TU1e9zlab7XIttAT2YAlCwl75K1fOqvMM9apmD7lbCIRhpfkhmxhCg==", "dev": true, "license": "MIT", "engines": { From 90a363d148a35085d884fa0ccdb2f3808eaa10d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 08:46:24 +0000 Subject: [PATCH 003/120] Update dependency @typescript-eslint/parser to v8.66.0 (#2809) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`8.65.0` → `8.66.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.65.0/8.66.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.66.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.65.0/8.66.0?slim=true) | --- ### Release Notes
typescript-eslint/typescript-eslint (@​typescript-eslint/parser) ### [`v8.66.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8660-2026-08-03) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.65.0...v8.66.0) This was a version bump only for parser to align it with other projects, there were no code changes. See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 68 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a10b43160..03f622dafc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1649,16 +1649,16 @@ "license": "MIT" }, "node_modules/@typescript-eslint/parser": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.65.0.tgz", - "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==", + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.66.0.tgz", + "integrity": "sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.65.0", - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/typescript-estree": "8.65.0", - "@typescript-eslint/visitor-keys": "8.65.0", + "@typescript-eslint/scope-manager": "8.66.0", + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/typescript-estree": "8.66.0", + "@typescript-eslint/visitor-keys": "8.66.0", "debug": "^4.4.3" }, "engines": { @@ -1674,14 +1674,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz", - "integrity": "sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==", + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.66.0.tgz", + "integrity": "sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.65.0", - "@typescript-eslint/types": "^8.65.0", + "@typescript-eslint/tsconfig-utils": "^8.66.0", + "@typescript-eslint/types": "^8.66.0", "debug": "^4.4.3" }, "engines": { @@ -1696,14 +1696,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz", - "integrity": "sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==", + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.66.0.tgz", + "integrity": "sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/visitor-keys": "8.65.0" + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/visitor-keys": "8.66.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1714,9 +1714,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz", - "integrity": "sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==", + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.66.0.tgz", + "integrity": "sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==", "dev": true, "license": "MIT", "engines": { @@ -1731,9 +1731,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz", - "integrity": "sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==", + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.66.0.tgz", + "integrity": "sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==", "dev": true, "license": "MIT", "engines": { @@ -1745,16 +1745,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz", - "integrity": "sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==", + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.66.0.tgz", + "integrity": "sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.65.0", - "@typescript-eslint/tsconfig-utils": "8.65.0", - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/visitor-keys": "8.65.0", + "@typescript-eslint/project-service": "8.66.0", + "@typescript-eslint/tsconfig-utils": "8.66.0", + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/visitor-keys": "8.66.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -1773,13 +1773,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz", - "integrity": "sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==", + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.66.0.tgz", + "integrity": "sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/types": "8.66.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { From 66200cde63c1d4c4697f24d6dea6c83f496fd1ca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 11:07:54 +0200 Subject: [PATCH 004/120] Update shiki monorepo to v4.4.2 (#2795) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@shikijs/monaco](https://redirect.github.com/shikijs/shiki) ([source](https://redirect.github.com/shikijs/shiki/tree/HEAD/packages/monaco)) | [`4.3.1` → `4.4.2`](https://renovatebot.com/diffs/npm/@shikijs%2fmonaco/4.3.1/4.4.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@shikijs%2fmonaco/4.4.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@shikijs%2fmonaco/4.3.1/4.4.2?slim=true) | | [@shikijs/vitepress-twoslash](https://redirect.github.com/shikijs/shiki) ([source](https://redirect.github.com/shikijs/shiki/tree/HEAD/packages/vitepress-twoslash)) | [`4.3.1` → `4.4.2`](https://renovatebot.com/diffs/npm/@shikijs%2fvitepress-twoslash/4.3.1/4.4.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@shikijs%2fvitepress-twoslash/4.4.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@shikijs%2fvitepress-twoslash/4.3.1/4.4.2?slim=true) | --- ### Release Notes
shikijs/shiki (@​shikijs/monaco) ### [`v4.4.2`](https://redirect.github.com/shikijs/shiki/releases/tag/v4.4.2) [Compare Source](https://redirect.github.com/shikijs/shiki/compare/v4.4.1...v4.4.2) #####    🐞 Bug Fixes - Unbreak CI after vite 8 bump and grammar/deps updates  -  by [@​antfubot](https://redirect.github.com/antfubot) in [#​1300](https://redirect.github.com/shikijs/shiki/issues/1300) [(c5d31)](https://redirect.github.com/shikijs/shiki/commit/c5d310bb) #####    🏎 Performance - **core**: Token split performance improvements  -  by [@​amadeus](https://redirect.github.com/amadeus) in [#​1301](https://redirect.github.com/shikijs/shiki/issues/1301) [(41896)](https://redirect.github.com/shikijs/shiki/commit/41896281) #####     [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v4.4.1...v4.4.2) ### [`v4.4.1`](https://redirect.github.com/shikijs/shiki/releases/tag/v4.4.1) [Compare Source](https://redirect.github.com/shikijs/shiki/compare/v4.4.0...v4.4.1) #####    🚀 Features - Update deps  -  by [@​antfu](https://redirect.github.com/antfu) [(e07fd)](https://redirect.github.com/shikijs/shiki/commit/e07fd5cc) #####     [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v4.4.0...v4.4.1) ### [`v4.4.0`](https://redirect.github.com/shikijs/shiki/releases/tag/v4.4.0) [Compare Source](https://redirect.github.com/shikijs/shiki/compare/v4.3.1...v4.4.0) #####    🚀 Features - Update grammars and themes  -  by [@​antfu](https://redirect.github.com/antfu) [(dec2a)](https://redirect.github.com/shikijs/shiki/commit/dec2a327) #####    🐞 Bug Fixes - **core**: Guess yaml from frontmatter segments  -  by [@​antfubot](https://redirect.github.com/antfubot) in [#​1299](https://redirect.github.com/shikijs/shiki/issues/1299) [(1b8b6)](https://redirect.github.com/shikijs/shiki/commit/1b8b6e42) #####     [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v4.3.1...v4.4.0)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 292 ++++++++++++++++++++++++---------------------- 1 file changed, 150 insertions(+), 142 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03f622dafc..ca24d7ec8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,13 +52,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -68,9 +68,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, "license": "MIT", "dependencies": { @@ -1183,16 +1183,16 @@ } }, "node_modules/@shikijs/core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.3.1.tgz", - "integrity": "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.2.tgz", + "integrity": "sha512-StyzbAyxg2/tBGf78gwbBkGyeQ73lf8UiJArFaQhTQIDqQOCKPCQFanvrs4/Yv3Yfyc+ONInJM6K+FMIf+P+kA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/primitive": "4.3.1", - "@shikijs/types": "4.3.1", + "@shikijs/primitive": "4.4.2", + "@shikijs/types": "4.4.2", "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", + "@types/hast": "^3.0.5", "hast-util-to-html": "^9.0.5" }, "engines": { @@ -1200,13 +1200,13 @@ } }, "node_modules/@shikijs/engine-javascript": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.3.1.tgz", - "integrity": "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.2.tgz", + "integrity": "sha512-MnIkeqWdVPUWsxlx8gKLVCJFTsqrQJgpTPBPpQwaFeJ56lOnJxj5aN2LUFnfxUEcvOQuNocmbaMnVrCEln6rkw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.1", + "@shikijs/types": "4.4.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" }, @@ -1215,13 +1215,13 @@ } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.3.1.tgz", - "integrity": "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.2.tgz", + "integrity": "sha512-GLhowz1+jixjz+wiZ3wMnOn1jTxiFCGl2PkXufivbnwPHKuyw1AYqu5/hbWhZZ2oAb0NP05WUJhYeigY14drnw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.1", + "@shikijs/types": "4.4.2", "@shikijs/vscode-textmate": "^10.0.2" }, "engines": { @@ -1229,27 +1229,27 @@ } }, "node_modules/@shikijs/langs": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.3.1.tgz", - "integrity": "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.2.tgz", + "integrity": "sha512-8DfeusD+Zdv/eYIDdXyJTUnSMHt+aAWjAOCXV20HNGAHRlInXpG8wh421v6B91WOm9TFwRLN+b/LG5F2NAIojg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.1" + "@shikijs/types": "4.4.2" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/monaco": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/monaco/-/monaco-4.3.1.tgz", - "integrity": "sha512-A8lB7DKVMWmT+EgzBQkw7pqMsc1NUogRM+CEyv3ldl0CcTctPd0oz7Lcb0d1iZmWYO3WJdpMUuISS4GAexHvhA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/monaco/-/monaco-4.4.2.tgz", + "integrity": "sha512-NBOfMs7a71v1SekMHQWF3QZ5g7j6UAmPV26DPk1yp3IR+yMN5dhabEGLad+nFGs1SXJ0ZLQZFMigtl1Iwu/gZw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "4.3.1", - "@shikijs/types": "4.3.1", + "@shikijs/core": "4.4.2", + "@shikijs/types": "4.4.2", "@shikijs/vscode-textmate": "^10.0.2" }, "engines": { @@ -1257,28 +1257,28 @@ } }, "node_modules/@shikijs/primitive": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.3.1.tgz", - "integrity": "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.2.tgz", + "integrity": "sha512-l6fQQKsOMlz72n38fztmSgZ76MO6KSWuw8o+GJ+FhmqrpC9pIOJNQNXGgbb5yX2AwpzlEHwsaLPnk/8o4Fm+rA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.1", + "@shikijs/types": "4.4.2", "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@types/hast": "^3.0.5" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/themes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.3.1.tgz", - "integrity": "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.2.tgz", + "integrity": "sha512-H0CFoL07ddDC2Dd6EdrPYNkRhUR6YCkJlnuYFceYYUJJA5TIm2b5B33qqiDYryBExgbKMndFJPb2u1gTuqO37g==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.1" + "@shikijs/types": "4.4.2" }, "engines": { "node": ">=20" @@ -1345,14 +1345,14 @@ } }, "node_modules/@shikijs/twoslash": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-4.3.1.tgz", - "integrity": "sha512-xK8inH/gK++1V4rTxrwCwjvaNwkkJ7oDjOIpdqONVxIpAFnVC3gzqjH5KiXGTelUcxpUJ3PtOKWct1YQ0kAloA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-4.4.2.tgz", + "integrity": "sha512-JjPKNbYCZn5+DVOxDZJ0ZruFPBM7m2JQBp4WbLh4tU2y3ed93wBCaQhKwMyfTFIsDzHks22szAkUUd2+jIPo/w==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "4.3.1", - "@shikijs/types": "4.3.1", + "@shikijs/core": "4.4.2", + "@shikijs/types": "4.4.2", "twoslash": "^0.3.9" }, "engines": { @@ -1363,44 +1363,54 @@ } }, "node_modules/@shikijs/types": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.3.1.tgz", - "integrity": "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.2.tgz", + "integrity": "sha512-PFYitV4vpDr/iPCIhnHp+Q4ftic5N5VeNJ3KQ1O8gn3h2ar8qgwMAXF7tq4m1CWaMS60fV4VqF6vfnWH4F7vqQ==", "dev": true, "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@types/hast": "^3.0.5" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/vitepress-twoslash": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/vitepress-twoslash/-/vitepress-twoslash-4.3.1.tgz", - "integrity": "sha512-IZ+LTUPaXjQAUkOcTKh/QBOMLZ/y8uJksqyDRbeUwBxQAFhAD3r9NWcNpMU0rNMeOHaSj5Da6P1Cswgnpg8gmQ==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/vitepress-twoslash/-/vitepress-twoslash-4.4.2.tgz", + "integrity": "sha512-dBrtLV5YyDK52FVyiZ3TORnKohZlYznGGbLn/mfkHQMJDV8dzca4K5t5B5VBN6Fp6QYUwc9FZxXo3p+KDAtFjQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/twoslash": "4.3.1", + "@shikijs/twoslash": "4.4.2", "floating-vue": "^5.2.2", "lz-string": "^1.5.0", - "magic-string": "^0.30.21", - "markdown-it": "^14.2.0", + "magic-string": "^1.1.0", + "markdown-it": "^14.3.0", "mdast-util-from-markdown": "^2.0.3", "mdast-util-gfm": "^3.1.0", "mdast-util-to-hast": "^13.2.1", "ohash": "^2.0.11", - "shiki": "4.3.1", + "shiki": "4.4.2", "twoslash": "^0.3.9", "twoslash-vue": "^0.3.9", - "vue": "^3.5.38" + "vue": "^3.5.40" }, "engines": { "node": ">=20" } }, + "node_modules/@shikijs/vitepress-twoslash/node_modules/magic-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.1.0.tgz", + "integrity": "sha512-kS3VHe0nEPST2saQV4Rbkchcd3UBRkVTQHo1D3h/ZTwFDhai/mfKkmtPAtD129EOI7K3HlHIsFOt0WrI2/oU9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/@shikijs/vscode-textmate": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", @@ -1515,9 +1525,9 @@ } }, "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", "dev": true, "license": "MIT", "dependencies": { @@ -1845,14 +1855,14 @@ "license": "MIT" }, "node_modules/@vue/compiler-core": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.39.tgz", - "integrity": "sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.41.tgz", + "integrity": "sha512-q0Xtv/F9w2YO/7htQhtiL+Ev2WCJbe5N2hc+XfgyKkEKqWpSxknmT8QOuGdEKNdjPq0c3F7rNpFkTo3Kfrm7pg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/shared": "3.5.39", + "@babel/parser": "^7.29.8", + "@vue/shared": "3.5.41", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" @@ -1872,43 +1882,43 @@ } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.39.tgz", - "integrity": "sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.41.tgz", + "integrity": "sha512-oKacVfNglLvGjnS6BXOlGL7EyG2h8X03pqXCjzotRZUaXGjbrTJUnVAQjrCqUnS+lyu31nwQjZY/d817GmCnfw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/compiler-core": "3.5.41", + "@vue/shared": "3.5.41" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.39.tgz", - "integrity": "sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.41.tgz", + "integrity": "sha512-XJhip7R2wy6vX3knCxdZN4KracFaZUef58s1KYewqluedHIJaPIVfXoYT7MF1F8nCvv6k8bWWxDC8opMkg1VTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/compiler-core": "3.5.39", - "@vue/compiler-dom": "3.5.39", - "@vue/compiler-ssr": "3.5.39", - "@vue/shared": "3.5.39", + "@babel/parser": "^7.29.8", + "@vue/compiler-core": "3.5.41", + "@vue/compiler-dom": "3.5.41", + "@vue/compiler-ssr": "3.5.41", + "@vue/shared": "3.5.41", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", - "postcss": "^8.5.15", + "postcss": "^8.5.19", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.39.tgz", - "integrity": "sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.41.tgz", + "integrity": "sha512-U3v5OejKEGqOI0Wy0+Sz7hGuIFZHA4LSXzrNM3IMIeDyJEBBfTpX26n3SDgToRpP2bLc9FfI2j/kSgcJ8Emq5A==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/compiler-dom": "3.5.41", + "@vue/shared": "3.5.41" } }, "node_modules/@vue/devtools-api": { @@ -1958,57 +1968,55 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.39.tgz", - "integrity": "sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.41.tgz", + "integrity": "sha512-rznsqKM0np0x18EjzF8x88MpEhdNsffbvFbckLL5+oUKz1BxAImEmO7J1ArRYSyo6aQaVoBDp7jEkT91OOxydA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "3.5.39" + "@vue/shared": "3.5.41" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.39.tgz", - "integrity": "sha512-9GLtNyRvPAUMbX+7ono0RC2j0guo2LXVi8LvcmAooImACUKm0oFf0jjwbX8/H0AE/t1nxhAkn8RSl9PMCzzxZw==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.41.tgz", + "integrity": "sha512-Vcry58hiAKwGen9Z1jUZE0feFsNArPCMOImYI8el48A9Idf6DuQYD0U05zZIF2Iad1hGhPSvcbBbAOhNr55fhg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/reactivity": "3.5.41", + "@vue/shared": "3.5.41" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.39.tgz", - "integrity": "sha512-7Y6aAGboKcXAZ3ECuUy7RrS5yy2r47dhTp2SKaJmYxjopImaVFaNa5Ne66NwGovsrxVAl5S5rwc7m22UG7Lmww==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.41.tgz", + "integrity": "sha512-3vVBahVBS9+U6cmXBLyb8nE6/yYo4J/CGI9eVFs3KiMc0YHuudwKyShTD65jtJy/L9PUUxNAFu4cj4LiJ0UFbw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.39", - "@vue/runtime-core": "3.5.39", - "@vue/shared": "3.5.39", + "@vue/reactivity": "3.5.41", + "@vue/runtime-core": "3.5.41", + "@vue/shared": "3.5.41", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.39.tgz", - "integrity": "sha512-yZSakiAGw85rZfG7UM8akMnIF+FmeiNk47uvHf2nVBBSe+dIKUhZuZq9+XgJhbV3nS5Z4ALH23/MpXofW+mbcw==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.41.tgz", + "integrity": "sha512-n6hx/pNFfbD6SuyeuMVkvqox8bwf/ET9JlA/kAz/imw8sw++wkqKe2mHX5KutjPpbKE4Z56yTHszoOjGMI9igQ==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.39", - "@vue/shared": "3.5.39" - }, - "peerDependencies": { - "vue": "3.5.39" + "@vue/compiler-ssr": "3.5.41", + "@vue/runtime-dom": "3.5.41", + "@vue/shared": "3.5.41" } }, "node_modules/@vue/shared": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.39.tgz", - "integrity": "sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.41.tgz", + "integrity": "sha512-IOnwSCma8j+9xJT6b8H0dEYidC80NsYmNMlZxRsukYcSoGaDBohog5hDxzeUXdFeGWFA++vWvxqOmrr96VlqMA==", "dev": true, "license": "MIT" }, @@ -3796,9 +3804,9 @@ } }, "node_modules/linkify-it": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", - "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", "dev": true, "funding": [ { @@ -3871,9 +3879,9 @@ "license": "MIT" }, "node_modules/markdown-it": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", - "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, "funding": [ { @@ -3888,8 +3896,8 @@ "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -4736,9 +4744,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz", + "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", "dev": true, "funding": [ { @@ -4973,9 +4981,9 @@ } }, "node_modules/postcss": { - "version": "8.5.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", - "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { @@ -4993,7 +5001,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -5313,20 +5321,20 @@ } }, "node_modules/shiki": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.3.1.tgz", - "integrity": "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.2.tgz", + "integrity": "sha512-P8F/dFhRevaw2uSdeIYlq/5SXZNY85DPtmXQ947gD1Zj2JqO5AkNvVVBar0Me9JkFx3uzVud/qOtP5ek9NEQGA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "4.3.1", - "@shikijs/engine-javascript": "4.3.1", - "@shikijs/engine-oniguruma": "4.3.1", - "@shikijs/langs": "4.3.1", - "@shikijs/themes": "4.3.1", - "@shikijs/types": "4.3.1", + "@shikijs/core": "4.4.2", + "@shikijs/engine-javascript": "4.4.2", + "@shikijs/engine-oniguruma": "4.4.2", + "@shikijs/langs": "4.4.2", + "@shikijs/themes": "4.4.2", + "@shikijs/types": "4.4.2", "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@types/hast": "^3.0.5" }, "engines": { "node": ">=20" @@ -5905,17 +5913,17 @@ } }, "node_modules/vue": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.39.tgz", - "integrity": "sha512-xmZCYabFGcirU8r0fTuvl/LICc1OU620rnqepaJDL/a141ZigkG7AyaxQLdqJ02ZRYzWe6YPaDHeQx7MfknQfA==", + "version": "3.5.41", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.41.tgz", + "integrity": "sha512-2laE0p+aK+/AOPG/XL/WepOs/GlK755LJ1XECi9kDUrz1FKNw8rb2Xzlw9JS1rqEV55nb0ttsKxVlTCcd+R5cg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.39", - "@vue/compiler-sfc": "3.5.39", - "@vue/runtime-dom": "3.5.39", - "@vue/server-renderer": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/compiler-dom": "3.5.41", + "@vue/compiler-sfc": "3.5.41", + "@vue/runtime-dom": "3.5.41", + "@vue/server-renderer": "3.5.41", + "@vue/shared": "3.5.41" }, "peerDependencies": { "typescript": "*" From e0210d8af9f9d781ea2e97ce17c69ded3b4cdc7e Mon Sep 17 00:00:00 2001 From: Johannes Vogt Date: Mon, 10 Aug 2026 15:16:17 +0200 Subject: [PATCH 005/120] chore: update license dates (#2811) --- LICENSE | 2 +- LICENSES/Apache-2.0.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index 8627616a5c..c2cf914eb7 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019-2025 SAP SE + Copyright 2019-2026 SAP SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt index 527a83a230..c74d6ca3a9 100644 --- a/LICENSES/Apache-2.0.txt +++ b/LICENSES/Apache-2.0.txt @@ -187,7 +187,7 @@ a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. -Copyright [yyyy] [name of copyright owner] +Copyright 2019-2026 SAP SE Licensed under the Apache License, Version 2.0 (the "License"); From f172cf8bba9a80f39d30a845662de67ce6928e13 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 07:40:53 +0000 Subject: [PATCH 006/120] chore: Update CLI texts (#2815) Updates the output of cds CLI texts to the latest version. Co-authored-by: chgeo <7470719+chgeo@users.noreply.github.com> --- tools/assets/help/cds-version-md.out.md | 2 +- tools/assets/help/cds-version.out.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/assets/help/cds-version-md.out.md b/tools/assets/help/cds-version-md.out.md index 654ef348c1..54ab35a446 100644 --- a/tools/assets/help/cds-version-md.out.md +++ b/tools/assets/help/cds-version-md.out.md @@ -4,7 +4,7 @@ | Package | Version | Location | | -------------------- | ------- | ------------------------------------------------------------------ | - | @sap/cds-dk (global) | 10.0.6 | .../node_modules/@sap/cds-dk | + | @sap/cds-dk (global) | 10.0.7 | .../node_modules/@sap/cds-dk | | @sap/cds | 10.0.5 | .../node_modules/@sap/cds | | @sap/cds-compiler | 7.0.3 | .../node_modules/@sap/cds-compiler | | @sap/cds-fiori | 2.3.0 | .../node_modules/@sap/cds-fiori | diff --git a/tools/assets/help/cds-version.out.md b/tools/assets/help/cds-version.out.md index 2aa25b10fd..b48954ebac 100644 --- a/tools/assets/help/cds-version.out.md +++ b/tools/assets/help/cds-version.out.md @@ -2,7 +2,7 @@
 > cds version
 
-  @sap/cds-dk (global)  10.0.6   .../node_modules/@sap/cds-dk 
+  @sap/cds-dk (global)  10.0.7   .../node_modules/@sap/cds-dk 
   @sap/cds              10.0.5   .../node_modules/@sap/cds                                            
   @sap/cds-compiler     7.0.3    .../node_modules/@sap/cds-compiler                                   
   @sap/cds-fiori        2.3.0    .../node_modules/@sap/cds-fiori                                      

From 0f6b06427b83c800ecd2f0b94e0c6d50d9702c68 Mon Sep 17 00:00:00 2001
From: Vitaly Kozyura <58591662+vkozyura@users.noreply.github.com>
Date: Fri, 14 Aug 2026 08:12:33 +0000
Subject: [PATCH 007/120] Extend embeddings docs (#2788)

Docs for https://github.com/cap-js/cds-dbs/pull/1676
---
 guides/databases/vector-embeddings.md | 51 ++++++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

diff --git a/guides/databases/vector-embeddings.md b/guides/databases/vector-embeddings.md
index affbd3c5df..96344915f6 100644
--- a/guides/databases/vector-embeddings.md
+++ b/guides/databases/vector-embeddings.md
@@ -47,7 +47,7 @@ If the database calculates vector embeddings on write it automatically regenerat
 :::
 
 ::: info Local Testing with H2 and SQLite
-On H2 and SQLite the `CQL.vectorEmbedding` function is emulated to support local testing.
+On H2 and SQLite the `CQL.vectorEmbedding` function is emulated using a hash-based algorithm to support local testing. For PostgreSQL, customers must define their own `vector_embedding` function for both testing and production use.
 :::
 
 > [!warning] Java only and 
@@ -112,3 +112,52 @@ let similarIncidents = await SELECT.from('Incidents')
 ```
 :::
 
+## Vector Functions
+
+CAP provides equivalent implementations of vector functions for all supported databases based on the function signatures as defined in SAP HANA:
+
+### [cosine_similarity](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/cosine-similarity-function-vector)
+```
+cosine_similarity(vector1, vector2) → number
+```
+
+### [l2distance](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/l2distance-function-vector)
+```
+l2distance(vector1, vector2) → number
+```
+
+### [l2normalize](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/normalize-function-vector)
+```
+l2normalize(vector) → vector
+```
+
+### [vector_embedding](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/vector-embedding-function-vector)
+```
+vector_embedding(text, text_type, model_name) → vector
+vector_embedding(text, text_type, model_name, remote_source) → vector
+```
+
+**Database Implementation:**
+- **HANA:** Uses real AI models (SAP built-in models or external remote sources)
+- **SQLite & H2:** Hash-based deterministic implementation for testing. Can be overridden by application developers to use external embedding services.
+- **PostgreSQL:** No default implementation. Application developers must define their own `vector_embedding` function.
+
+## Database-Specific Considerations
+
+### PostgreSQL
+- Requires that the [pgvector extension](https://github.com/pgvector/pgvector) is installed on your PostgreSQL instance. Then create the extension in your database:
+  ```sql
+  CREATE EXTENSION IF NOT EXISTS vector;
+  ```
+- Vectors stored in native `vector` type
+- `vector_embedding()` function must be defined by application developers for both testing and production use.
+- For Node.js, the `pgvector` npm package is required when reading vector columns from query results or when passing vector values as parameters from the client. It is not needed if vectors are generated entirely within the database using functions like `vector_embedding()`: `npm install pgvector`
+
+### SAP HANA
+- Native vector engine with built-in support
+- Type mapping: `cds.Vector` → `REAL_VECTOR`
+- `vector_embedding()` supports built-in SAP models and external remote sources (such as Azure OpenAI, SAP AI Core)
+
+[Learn more about HANA Vector Engine](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-vector-engine-guide) {.learn-more}
+
+

From 3f0248218058199e6d2e26d83dea38a97fc23ad5 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Aug 2026 08:55:35 +0000
Subject: [PATCH 008/120] Update shiki monorepo to v4.4.3 (#2817)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@shikijs/monaco](https://redirect.github.com/shikijs/shiki)
([source](https://redirect.github.com/shikijs/shiki/tree/HEAD/packages/monaco))
| [`4.4.2` →
`4.4.3`](https://renovatebot.com/diffs/npm/@shikijs%2fmonaco/4.4.2/4.4.3)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@shikijs%2fmonaco/4.4.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@shikijs%2fmonaco/4.4.2/4.4.3?slim=true)
|
|
[@shikijs/vitepress-twoslash](https://redirect.github.com/shikijs/shiki)
([source](https://redirect.github.com/shikijs/shiki/tree/HEAD/packages/vitepress-twoslash))
| [`4.4.2` →
`4.4.3`](https://renovatebot.com/diffs/npm/@shikijs%2fvitepress-twoslash/4.4.2/4.4.3)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@shikijs%2fvitepress-twoslash/4.4.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@shikijs%2fvitepress-twoslash/4.4.2/4.4.3?slim=true)
|

---

### Release Notes

shikijs/shiki (@​shikijs/monaco) ### [`v4.4.3`](https://redirect.github.com/shikijs/shiki/releases/tag/v4.4.3) [Compare Source](https://redirect.github.com/shikijs/shiki/compare/v4.4.2...v4.4.3) #####    🚀 Features - Update deps and grammar  -  by [@​antfu](https://redirect.github.com/antfu) [(72f26)](https://redirect.github.com/shikijs/shiki/commit/72f2612b) #####    🐞 Bug Fixes - **vitepress-twoslash**: Delay twoslash tooltip show by 200ms  -  by [@​antfubot](https://redirect.github.com/antfubot) in [#​1306](https://redirect.github.com/shikijs/shiki/issues/1306) [(9f2aa)](https://redirect.github.com/shikijs/shiki/commit/9f2aab6c) #####     [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v4.4.2...v4.4.3)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 106 +++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca24d7ec8d..79d1d9f256 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1183,14 +1183,14 @@ } }, "node_modules/@shikijs/core": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.2.tgz", - "integrity": "sha512-StyzbAyxg2/tBGf78gwbBkGyeQ73lf8UiJArFaQhTQIDqQOCKPCQFanvrs4/Yv3Yfyc+ONInJM6K+FMIf+P+kA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.3.tgz", + "integrity": "sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/primitive": "4.4.2", - "@shikijs/types": "4.4.2", + "@shikijs/primitive": "4.4.3", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5", "hast-util-to-html": "^9.0.5" @@ -1200,13 +1200,13 @@ } }, "node_modules/@shikijs/engine-javascript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.2.tgz", - "integrity": "sha512-MnIkeqWdVPUWsxlx8gKLVCJFTsqrQJgpTPBPpQwaFeJ56lOnJxj5aN2LUFnfxUEcvOQuNocmbaMnVrCEln6rkw==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.3.tgz", + "integrity": "sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.2", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" }, @@ -1215,13 +1215,13 @@ } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.2.tgz", - "integrity": "sha512-GLhowz1+jixjz+wiZ3wMnOn1jTxiFCGl2PkXufivbnwPHKuyw1AYqu5/hbWhZZ2oAb0NP05WUJhYeigY14drnw==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.3.tgz", + "integrity": "sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.2", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2" }, "engines": { @@ -1229,27 +1229,27 @@ } }, "node_modules/@shikijs/langs": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.2.tgz", - "integrity": "sha512-8DfeusD+Zdv/eYIDdXyJTUnSMHt+aAWjAOCXV20HNGAHRlInXpG8wh421v6B91WOm9TFwRLN+b/LG5F2NAIojg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.3.tgz", + "integrity": "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.2" + "@shikijs/types": "4.4.3" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/monaco": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/monaco/-/monaco-4.4.2.tgz", - "integrity": "sha512-NBOfMs7a71v1SekMHQWF3QZ5g7j6UAmPV26DPk1yp3IR+yMN5dhabEGLad+nFGs1SXJ0ZLQZFMigtl1Iwu/gZw==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/monaco/-/monaco-4.4.3.tgz", + "integrity": "sha512-xyXoWFtqVsN33RhGbZReHFKOoxGbDEJ5mgGKdUbQLe6GF0/DDv7C4kgxkNwbWwBo7zhkICbqIqCfGjKKdF8RzQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "4.4.2", - "@shikijs/types": "4.4.2", + "@shikijs/core": "4.4.3", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2" }, "engines": { @@ -1257,13 +1257,13 @@ } }, "node_modules/@shikijs/primitive": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.2.tgz", - "integrity": "sha512-l6fQQKsOMlz72n38fztmSgZ76MO6KSWuw8o+GJ+FhmqrpC9pIOJNQNXGgbb5yX2AwpzlEHwsaLPnk/8o4Fm+rA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.3.tgz", + "integrity": "sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.2", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" }, @@ -1272,13 +1272,13 @@ } }, "node_modules/@shikijs/themes": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.2.tgz", - "integrity": "sha512-H0CFoL07ddDC2Dd6EdrPYNkRhUR6YCkJlnuYFceYYUJJA5TIm2b5B33qqiDYryBExgbKMndFJPb2u1gTuqO37g==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.3.tgz", + "integrity": "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.2" + "@shikijs/types": "4.4.3" }, "engines": { "node": ">=20" @@ -1345,14 +1345,14 @@ } }, "node_modules/@shikijs/twoslash": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-4.4.2.tgz", - "integrity": "sha512-JjPKNbYCZn5+DVOxDZJ0ZruFPBM7m2JQBp4WbLh4tU2y3ed93wBCaQhKwMyfTFIsDzHks22szAkUUd2+jIPo/w==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-4.4.3.tgz", + "integrity": "sha512-m7HNzunEIHRk1jCya3ngGsO3+8pYxrPIIxtdJewg/W8ceW/+m/mSsm4jM3L9DvYYNa8Rvbu7Dabt3BOpCclz8Q==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "4.4.2", - "@shikijs/types": "4.4.2", + "@shikijs/core": "4.4.3", + "@shikijs/types": "4.4.3", "twoslash": "^0.3.9" }, "engines": { @@ -1363,9 +1363,9 @@ } }, "node_modules/@shikijs/types": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.2.tgz", - "integrity": "sha512-PFYitV4vpDr/iPCIhnHp+Q4ftic5N5VeNJ3KQ1O8gn3h2ar8qgwMAXF7tq4m1CWaMS60fV4VqF6vfnWH4F7vqQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.3.tgz", + "integrity": "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==", "dev": true, "license": "MIT", "dependencies": { @@ -1377,13 +1377,13 @@ } }, "node_modules/@shikijs/vitepress-twoslash": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/vitepress-twoslash/-/vitepress-twoslash-4.4.2.tgz", - "integrity": "sha512-dBrtLV5YyDK52FVyiZ3TORnKohZlYznGGbLn/mfkHQMJDV8dzca4K5t5B5VBN6Fp6QYUwc9FZxXo3p+KDAtFjQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/vitepress-twoslash/-/vitepress-twoslash-4.4.3.tgz", + "integrity": "sha512-Y7z/RoUZpTMX9KEKZkCSIuuCfevO7gJ6mx1V3Yp3tiBgXNZyOjDYtE3HKQSKUud1vhTMuZcU6dVGV0jD+yszMg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/twoslash": "4.4.2", + "@shikijs/twoslash": "4.4.3", "floating-vue": "^5.2.2", "lz-string": "^1.5.0", "magic-string": "^1.1.0", @@ -1392,10 +1392,10 @@ "mdast-util-gfm": "^3.1.0", "mdast-util-to-hast": "^13.2.1", "ohash": "^2.0.11", - "shiki": "4.4.2", + "shiki": "4.4.3", "twoslash": "^0.3.9", "twoslash-vue": "^0.3.9", - "vue": "^3.5.40" + "vue": "^3.5.41" }, "engines": { "node": ">=20" @@ -5321,18 +5321,18 @@ } }, "node_modules/shiki": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.2.tgz", - "integrity": "sha512-P8F/dFhRevaw2uSdeIYlq/5SXZNY85DPtmXQ947gD1Zj2JqO5AkNvVVBar0Me9JkFx3uzVud/qOtP5ek9NEQGA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.3.tgz", + "integrity": "sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "4.4.2", - "@shikijs/engine-javascript": "4.4.2", - "@shikijs/engine-oniguruma": "4.4.2", - "@shikijs/langs": "4.4.2", - "@shikijs/themes": "4.4.2", - "@shikijs/types": "4.4.2", + "@shikijs/core": "4.4.3", + "@shikijs/engine-javascript": "4.4.3", + "@shikijs/engine-oniguruma": "4.4.3", + "@shikijs/langs": "4.4.3", + "@shikijs/themes": "4.4.3", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" }, From b632f86832e26c18bf0845150db08d3b7b7471c0 Mon Sep 17 00:00:00 2001 From: Steffen Waldmann Date: Fri, 14 Aug 2026 14:17:16 +0000 Subject: [PATCH 009/120] chore: move and extend AsyncAPI docs (#2819) - documented `cds import --asyncapi` usage - added programmatic usage (currently only documented in plugin README, which now links here, see https://github.com/cap-js/asyncapi/pull/55) - added link to `cds.import.from.asyncapi` guide in design time CLIs (tbd if we should move this to central AsyncAPI guide) - moved the `cds.compile.to.asyncapi` documentation to AsyncAPI guide - fixed some (imo) suboptimal formatting in `.cds` samples --- get-started/feature-matrix.md | 2 +- guides/protocols/asyncapi.md | 46 ++++++++++++++++++++++++++--------- node.js/cds-compile.md | 9 ------- tools/apis/cds-import.md | 6 ++--- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/get-started/feature-matrix.md b/get-started/feature-matrix.md index d5751c8490..9f1c8f2bda 100644 --- a/get-started/feature-matrix.md +++ b/get-started/feature-matrix.md @@ -169,7 +169,7 @@ Following is an index of the features currently covered by CAP, with status and | Outbound Protocol Support | CDS 1 | Node.js | Java | |------------------------------------------------------------------|:----------------:|:-------:|:----:| -| [REST/OpenAPI](../tools/apis/cds-import#cdsimportfromopenapi) | | | | +| [REST/OpenAPI](../tools/apis/cds-import#from-openapi) | | | | | OData V2 | | | | | OData V4 | | | | | GraphQL2 | | | | diff --git a/guides/protocols/asyncapi.md b/guides/protocols/asyncapi.md index 0566969d0b..48e90fec36 100644 --- a/guides/protocols/asyncapi.md +++ b/guides/protocols/asyncapi.md @@ -10,11 +10,16 @@ description: > } - # Publishing to AsyncAPI You can convert events in CDS models to the [AsyncAPI specification](https://www.asyncapi.com), a widely adopted standard used to describe and document message-driven asynchronous APIs. +Install the plugin like so: + +```sh +npm add -D @cap-js/asyncapi +``` + [[toc]] ## Usage from CLI { #cli} @@ -32,7 +37,25 @@ If you want to generate one AsyncAPI document for all the services, you can use cds compile srv --service all -o docs --to asyncapi --asyncapi:merged ``` -[Learn how to programmatically convert the CSN file into an AsyncAPI Document](../../node.js/cds-compile#asyncapi){.learn-more} +## Programmatic Usage { #programmatic} + +```js +const cds = require('@sap/cds') +const { compile } = require('@cap-js/asyncapi') + +const csn = await cds.load(cds.env.folders.srv) +const doc = compile(csn) +``` + +## Importing AsyncAPI { #import} + +Use `cds import` to convert an AsyncAPI document into a CDS service definition: + +```sh +cds import --asyncapi ~/Downloads/BookStore_AsyncAPI.json +``` + +[Learn more about `cds.import`](../../tools/apis/cds-import#from-asyncapi){.learn-more} ## Presets { #presets} @@ -84,7 +107,7 @@ Annotations will take precedence over [presets](#presets). | `EventCharacteristics` | Event | x-sap-event-characteristics | | | `EventStateInfo` | Event | x-sap-stateInfo | | | `EventSchemaVersion` | Event | x-sap-event-version | | -| `EventType` | Event | | Optional; The value from this annotation will be used to
overwrite the default event type in the AsyncAPI document. | +| `EventType` | Event | | Optional; The value from this annotation will be used to overwrite the default event type in the AsyncAPI document. | For example: @@ -92,14 +115,13 @@ For example: @AsyncAPI.Title : 'CatalogService Events' @AsyncAPI.SchemaVersion: '1.0.0' @AsyncAPI.Description : 'Events emitted by the CatalogService.' - service CatalogService { + @AsyncAPI.EventSpecVersion : '2.0' @AsyncAPI.EventCharacteristics: { ![state-transfer]: 'full-after-image' } - @AsyncAPI.EventSchemaVersion : '1.0.0' - + @AsyncAPI.EventSchemaVersion : '1.0.0' event SampleEntity.Changed.v1 : projection on CatalogService.SampleEntity; } ``` @@ -113,14 +135,14 @@ For example, if both `@AsyncAPI.ShortText` and `@AsyncAPI.Extensions: { ![sap-sh For example: ```cds -@AsyncAPI.Extensions : { - ![foo-bar] : 'baz', - ![sap-shortText] : 'Service Base 1' +@AsyncAPI.Extensions: { + ![foo-bar]: 'baz', + ![sap-shortText]: 'Service Base 1' } - service CatalogService { - @AsyncAPI.Extensions : { - ![sap-event-source] : '/{region}/sap.app.test' + + @AsyncAPI.Extensions: { + ![sap-event-source]: '/{region}/sap.app.test' } event SampleEntity.Changed.v1 : projection on CatalogService.SampleEntity; } diff --git a/node.js/cds-compile.md b/node.js/cds-compile.md index 7c2ae8f405..e8bf44b44a 100644 --- a/node.js/cds-compile.md +++ b/node.js/cds-compile.md @@ -232,15 +232,6 @@ Reconstructs [CDL](../cds/cdl.md) source code for the given csn model. -### .asyncapi() {.method} - - -Convert the CSN file into an AsyncAPI document: - -```js -const doc = cds.compile.to.asyncapi(csn_file) -``` - diff --git a/tools/apis/cds-import.md b/tools/apis/cds-import.md index b2bfb13854..607f27811f 100644 --- a/tools/apis/cds-import.md +++ b/tools/apis/cds-import.md @@ -47,7 +47,7 @@ It accepts a list of namespaces whose attributes are to be retained in the CSN /
-## cds.import.from.edmx() {.method} +## cds.import.from.edmx() {.method #from-edmx} This API can be used to convert the OData specification file (EDMX / XML) into CSN. The API signature looks like this: @@ -58,7 +58,7 @@ const csn = await cds.import.from.edmx(ODATA_EDMX_file, options)
-## cds.import.from.openapi() {.method} +## cds.import.from.openapi() {.method #from-openapi} This API can be used to convert the OpenAPI specification file (JSON) into CSN. The API signature looks like this: @@ -69,7 +69,7 @@ const csn = await cds.import.from.openapi(OpenAPI_JSON_file) [Learn more about OpenAPI to OData Mapping.](#openapi-to-cds-odata-csn-conversion-mapping){.learn-more} -## cds.import.from.asyncapi() {.method} +## cds.import.from.asyncapi() {.method #from-asyncapi} This API can be used to convert the AsyncAPI specification file (JSON) into CSN. The API signature looks like this: From 1f57be40e9f294918ecd0bd4c11a6735d6688422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jeglinsky?= Date: Tue, 18 Aug 2026 07:28:01 +0000 Subject: [PATCH 010/120] cds.import: move custom anchor to invisible H6 (#2824) --- tools/apis/cds-import.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/apis/cds-import.md b/tools/apis/cds-import.md index 607f27811f..cae2f503f0 100644 --- a/tools/apis/cds-import.md +++ b/tools/apis/cds-import.md @@ -47,7 +47,8 @@ It accepts a list of namespaces whose attributes are to be retained in the CSN /
-## cds.import.from.edmx() {.method #from-edmx} +## cds.import.from.edmx() {.method} +###### from-edmx This API can be used to convert the OData specification file (EDMX / XML) into CSN. The API signature looks like this: @@ -58,7 +59,8 @@ const csn = await cds.import.from.edmx(ODATA_EDMX_file, options)
-## cds.import.from.openapi() {.method #from-openapi} +## cds.import.from.openapi() {.method} +###### from-openapi This API can be used to convert the OpenAPI specification file (JSON) into CSN. The API signature looks like this: @@ -69,7 +71,8 @@ const csn = await cds.import.from.openapi(OpenAPI_JSON_file) [Learn more about OpenAPI to OData Mapping.](#openapi-to-cds-odata-csn-conversion-mapping){.learn-more} -## cds.import.from.asyncapi() {.method #from-asyncapi} +## cds.import.from.asyncapi() {.method} +###### from-asyncapi This API can be used to convert the AsyncAPI specification file (JSON) into CSN. The API signature looks like this: From 23a7254b746eaa1c509f1cadaf437be3d5a0960f Mon Sep 17 00:00:00 2001 From: Eric P Date: Tue, 18 Aug 2026 08:28:36 +0000 Subject: [PATCH 011/120] Update Notification details (#2685) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update both CAP Plugins and Notifications in SAP BTP pages for updated information using the Node Notifications plug-in --------- Co-authored-by: Buse Halis Co-authored-by: René Jeglinsky --- plugins/index.md | 86 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 12 deletions(-) diff --git a/plugins/index.md b/plugins/index.md index bdd85bba62..1e184671e3 100644 --- a/plugins/index.md +++ b/plugins/index.md @@ -313,29 +313,91 @@ Available for: ## Notifications -The Notifications plugin provides support for publishing business notifications in SAP Build WorkZone. The client is implemented as a CAP service, which gives us a very simple programmatic API: +The Notifications plugin provides support for publishing business notifications in SAP Build Work Zone. Notification types are defined by annotating CDS events, which the plugin then intercepts and forwards automatically: -```js -let alert = await cds.connect.to ('notifications') -await alert.notify({ - recipients: [ ...supporters ], - title: `New incident created by ${customer.info}`, - description: incident.title +```cds +@notification: { + title : 'New incident: {{title}}', + publicTitle : 'New Incident', + subtitle : 'Created by {{customer}}', + groupedTitle : 'Incident Updates' +} +event IncidentCreated { + title : String; + customer : String; + recipients : String; +} +``` + +Then implement the notification handling: + +::: code-group + +```js [Node.js] +this.on('CREATE', 'Incidents', async req => { + await this.emit('IncidentCreated', { + title: req.data.title, + customer: customer.info, + recipients: [ ...supporters ], + }) }) ``` +```java [Java] +@Autowired +private NotificationService notificationService; + +@After(event = CqnService.EVENT_CREATE, entity = Incidents_.CDS_NAME) +public void afterIncidentCreated(Incidents incident) { + IncidentCreated data = IncidentCreated.create(); + data.setTitle(incident.getTitle()); + data.setCustomer(incident.getCustomer()); + data.setRecipients("supporter@example.com"); + + IncidentCreatedContext ctx = IncidentCreatedContext.create(); + ctx.setData(data); + notificationService.emit(ctx); +} +``` + +::: + +Alternatively, for Java you can use declarative `@notifications` on entities to trigger notifications automatically without writing handler code: + +```cds [Java] +service IncidentService { + @notifications : [{ + type : 'IncidentCreated', + on : ['CREATE'], + recipients : $self.createdBy, + parameters : { + title : $self.title, + customer : $self.customer + } + }] + entity Incidents as projection on my.Incidents; +} +``` + Features: -- CAP Services-based programmatic client API → simple, backend-agnostic -- Logging to console in development → fast turnarounds, minimized costs -- Transactional Outbox → maximised scalability and resilience -- Notification templates with i18n support -- Automatic lifecycle management of notification templates +- CAP service-based API — simple, backend-agnostic +- Notification types defined via CDS @notification annotations +- Notification types defined via JSON (Node.js only) +- Auto-emit: annotated CDS events are forwarded to ANS automatically +- Email delivery via configurable delivery channels +- Email HTML templates for rich email notifications +- Batch notifications — emit multiple notifications in a single call +- i18n support and dynamic priority for notification types +- Console logging in development — no external service needed +- Transactional outbox — maximized scalability and resilience +- Automatic registration and lifecycle management of notification types on startup Available for: [![Node.js](/logos/nodejs.svg 'Link to the plugins repository.'){style="height:2.5em; display:inline; margin:0 0.2em;"}](https://github.com/cap-js/notifications#readme) +[![Java](/logos/java.svg 'Link to the plugins repository.'){style="height:3em; display:inline; margin:0 0.2em;"}](https://github.com/cap-java/cds-feature-notifications#readme) ## Telemetry From b4f6f1fa816957f12c19b2313236df0f3e150bda Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 07:17:52 +0000 Subject: [PATCH 012/120] chore: Update CLI texts (#2828) Updates the output of cds CLI texts to the latest version. Co-authored-by: chgeo <7470719+chgeo@users.noreply.github.com> --- tools/assets/help/cds-version-md.out.md | 4 ++-- tools/assets/help/cds-version.out.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/assets/help/cds-version-md.out.md b/tools/assets/help/cds-version-md.out.md index 54ab35a446..c43c00cd97 100644 --- a/tools/assets/help/cds-version-md.out.md +++ b/tools/assets/help/cds-version-md.out.md @@ -5,7 +5,7 @@ | Package | Version | Location | | -------------------- | ------- | ------------------------------------------------------------------ | | @sap/cds-dk (global) | 10.0.7 | .../node_modules/@sap/cds-dk | - | @sap/cds | 10.0.5 | .../node_modules/@sap/cds | + | @sap/cds | 10.0.6 | .../node_modules/@sap/cds | | @sap/cds-compiler | 7.0.3 | .../node_modules/@sap/cds-compiler | | @sap/cds-fiori | 2.3.0 | .../node_modules/@sap/cds-fiori | | @cap-js/db-service | 3.0.1 | .../node_modules/@cap-js/db-service | @@ -14,5 +14,5 @@ | cds.root | | .../your-project | | npm root -l | | .../node_modules | | npm root -g | | .../node_modules | - | Node.js | 24.18.0 | .../bin/node | + | Node.js | 24.19.0 | .../bin/node |
diff --git a/tools/assets/help/cds-version.out.md b/tools/assets/help/cds-version.out.md index b48954ebac..b2cf90de0f 100644 --- a/tools/assets/help/cds-version.out.md +++ b/tools/assets/help/cds-version.out.md @@ -3,7 +3,7 @@ > cds version @sap/cds-dk (global) 10.0.7 .../node_modules/@sap/cds-dk - @sap/cds 10.0.5 .../node_modules/@sap/cds + @sap/cds 10.0.6 .../node_modules/@sap/cds @sap/cds-compiler 7.0.3 .../node_modules/@sap/cds-compiler @sap/cds-fiori 2.3.0 .../node_modules/@sap/cds-fiori @cap-js/db-service 3.0.1 .../node_modules/@cap-js/db-service @@ -12,5 +12,5 @@ cds.root .../your-project npm root -l .../node_modules npm root -g .../node_modules - Node.js 24.18.0 .../bin/node + Node.js 24.19.0 .../bin/node From 1b166792d7e01f6e7d5d6c76ddebc368e70f1313 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 08:38:21 +0000 Subject: [PATCH 013/120] Update dependency vitepress to v2.0.0-alpha.19 (#2801) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [vitepress](https://vitepress.dev/) ([source](https://redirect.github.com/vuejs/vitepress)) | [`2.0.0-alpha.18` → `2.0.0-alpha.19`](https://renovatebot.com/diffs/npm/vitepress/2.0.0-alpha.18/2.0.0-alpha.19) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vitepress/2.0.0-alpha.19?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitepress/2.0.0-alpha.18/2.0.0-alpha.19?slim=true) | #### Manual Changes - Replaced all `__dirname` and `__filename` usages by `import.meta.url` - Added file endings to all imports statements - Removed invalid `#snippet` regions - Exclude `/@external` links from built-in checker as it cannot resolve them. Our `blc` can, though. --- ### Release Notes
vuejs/vitepress (vitepress) ### [`v2.0.0-alpha.19`](https://redirect.github.com/vuejs/vitepress/blob/HEAD/CHANGELOG.md#200-alpha19-2026-08-02) [Compare Source](https://redirect.github.com/vuejs/vitepress/compare/v2.0.0-alpha.18...v2.0.0-alpha.19) ##### Bug Fixes - **build:** apply rewrites when computing createContentLoader urls ([9e2148d](https://redirect.github.com/vuejs/vitepress/commit/9e2148d75ed966467a438403ad5b0a69df83480b)) - **build:** clear markdown cache with rewritten path on include change ([5eac447](https://redirect.github.com/vuejs/vitepress/commit/5eac4473189228da7a917a1a35a67233c94513c9)), closes [#​5035](https://redirect.github.com/vuejs/vitepress/issues/5035) - **build:** compose markdown `preConfig` hook when extending configs ([c39a85a](https://redirect.github.com/vuejs/vitepress/commit/c39a85a2ac88dca978d6a7b07fac3353fe0ae7fe)), closes [#​5205](https://redirect.github.com/vuejs/vitepress/issues/5205) - **build:** don't apply docsearch css transform to pages matching its filter ([fa0e48c](https://redirect.github.com/vuejs/vitepress/commit/fa0e48c8df8f66fb76f7df4d7d662a5c7b3c3c7c)) - **build:** don't rely on checkout directory name when externalizing types ([e6ba9d8](https://redirect.github.com/vuejs/vitepress/commit/e6ba9d8caa3866215095f63b62290f3110e523fd)) - **build:** report links to pre-rewrite paths of rewritten pages as dead ([3cf3f37](https://redirect.github.com/vuejs/vitepress/commit/3cf3f37b17054ff38347d4d0a2e76e03d68e2e7a)) - **build:** resolve additional configs by source path ([5e4a9e7](https://redirect.github.com/vuejs/vitepress/commit/5e4a9e799f620bcd3de973272d8343a515fd4992)) - **build:** resolve rewrites against externally injected pages too ([769c10e](https://redirect.github.com/vuejs/vitepress/commit/769c10ee65a61882724e2b748634326b576bb079)) - **build:** respect cleanUrls in content loader render ([027f046](https://redirect.github.com/vuejs/vitepress/commit/027f0461e073702c2d5b7e96006cf34a51825f45)), closes [#​4331](https://redirect.github.com/vuejs/vitepress/issues/4331) [#​5299](https://redirect.github.com/vuejs/vitepress/issues/5299) - **build:** track include importers by module id ([c961655](https://redirect.github.com/vuejs/vitepress/commit/c9616559f55f378b92e2f3b8bac31336db540699)) - **build:** prevent duplicate IDs in MiniSearch ([#​5303](https://redirect.github.com/vuejs/vitepress/issues/5303)) ([505278c](https://redirect.github.com/vuejs/vitepress/commit/505278c2cb06c5ed4ca094b193d6dc912376818c)) - **build:** remove stackTraceLimit Infinity for DEBUG ([#​5318](https://redirect.github.com/vuejs/vitepress/issues/5318)) ([865d04b](https://redirect.github.com/vuejs/vitepress/commit/865d04b2528863f265e39e1b05278c9654f8599a)) - **build:** retry file reads when out of file descriptors ([da71173](https://redirect.github.com/vuejs/vitepress/commit/da71173afc8eece9af49ff25ad1bff9bbd676096)) - **cli:** avoid onAfterConfigResolve ([3fbaf9c](https://redirect.github.com/vuejs/vitepress/commit/3fbaf9c4d21e62062490c58c13cbf1b074417004)) - **client:** make the route the single source of truth for the URL hash ([dcb7a75](https://redirect.github.com/vuejs/vitepress/commit/dcb7a75532c5472060ec379d25a5fafbc7932637)) - **markdown:** preserve user-defined attributes ([3f4530b](https://redirect.github.com/vuejs/vitepress/commit/3f4530b0e2b339cc408ab38b8b922a9834bb396e)), closes [#​5123](https://redirect.github.com/vuejs/vitepress/issues/5123) - **markdown:** remove extra whitespace from container markup ([b6d9cb8](https://redirect.github.com/vuejs/vitepress/commit/b6d9cb83c747f9a021aa277b0c64b5bf3a40bf41)) - **markdown:** skip circular includes ([3372516](https://redirect.github.com/vuejs/vitepress/commit/3372516152df0b871634492ac6d3207bedf89d4e)) - **markdown:** remove deprecated `cjkFriendly` option ([27762ea](https://redirect.github.com/vuejs/vitepress/commit/27762eac86aa5c5d998de128734c2a8c10f78e23)) - **markdown:** rename image option `lazyLoading` to `lazyLoad` ([078786a](https://redirect.github.com/vuejs/vitepress/commit/078786a1b3e0793f55cb14d819df93900041ccb0)) - **search:** index changed files with srcDir-relative paths in dev ([6b64f35](https://redirect.github.com/vuejs/vitepress/commit/6b64f3561b0da8fcf48a6ccff7b08036ad858ef3)), closes [#​3374](https://redirect.github.com/vuejs/vitepress/issues/3374) - **search:** only index pages on dev updates ([559fb24](https://redirect.github.com/vuejs/vitepress/commit/559fb24a2238b2c0b97c36c808c092dda98bb2f7)) - **search:** serve a fresh search index after dev updates ([1534a67](https://redirect.github.com/vuejs/vitepress/commit/1534a67d866e4922a7eab1a1c166db7f11855c59)) - **search:** skip pages that fail to render instead of crashing dev server ([3ffefa2](https://redirect.github.com/vuejs/vitepress/commit/3ffefa2550d1242da4a798e18cb308cb33ad815b)) - **theme:** use ul and li for lists ([#​5326](https://redirect.github.com/vuejs/vitepress/issues/5326)) ([3f99872](https://redirect.github.com/vuejs/vitepress/commit/3f99872468f861458f4f37d6115cfd1c1a7b15ae)) - **theme:** align docsearch breakpoints with the default theme ([90c28d4](https://redirect.github.com/vuejs/vitepress/commit/90c28d41ce0a67f6e096ce9fd355f3b0c7b1dab7)), closes [#​5213](https://redirect.github.com/vuejs/vitepress/issues/5213) - **theme:** align local search breakpoint ([#​5217](https://redirect.github.com/vuejs/vitepress/issues/5217)) ([a425113](https://redirect.github.com/vuejs/vitepress/commit/a425113572d94c39d0c3369eac5adb7a87cfb798)) - **theme:** correct anchor scroll margins across viewports ([dabc5e9](https://redirect.github.com/vuejs/vitepress/commit/dabc5e95ce210ae14cb33a08e6784826e4e2d544)) - **theme:** ensure outline marker follows click ([#​3879](https://redirect.github.com/vuejs/vitepress/issues/3879)) ([31287c0](https://redirect.github.com/vuejs/vitepress/commit/31287c0b69b330bc1645268b1bebd21f9a40c238)) - **theme:** external link icon not showing in navbar links ([225c94a](https://redirect.github.com/vuejs/vitepress/commit/225c94afd2c355a33fbbb93871fb9b064da475b8)), closes [#​5306](https://redirect.github.com/vuejs/vitepress/issues/5306) - **theme:** pass target and rel to prev/next page links ([#​5297](https://redirect.github.com/vuejs/vitepress/issues/5297)) ([6b5e770](https://redirect.github.com/vuejs/vitepress/commit/6b5e7704a01500d87a3702f7b27f95a4bdcfa10d)) - **theme:** preserve url params when switching languages ([#​5312](https://redirect.github.com/vuejs/vitepress/issues/5312)) ([9ee401d](https://redirect.github.com/vuejs/vitepress/commit/9ee401d7adefc39fd960990cc032be5464e4eb27)) - **theme:** prevent TypeError when navigating to page without outline ([#​5329](https://redirect.github.com/vuejs/vitepress/issues/5329)) ([9376c58](https://redirect.github.com/vuejs/vitepress/commit/9376c58abec557dd8c5b63f991a1d1068586f175)) - **theme:** remove font-synthesis style ([#​5309](https://redirect.github.com/vuejs/vitepress/issues/5309)) ([c34769c](https://redirect.github.com/vuejs/vitepress/commit/c34769c2e67969881b9cc8abbccf6d3cc6a5b647)) - **theme:** safari not showing external link icon properly ([7118402](https://redirect.github.com/vuejs/vitepress/commit/711840222700804dbb6fb39ee9b9580a3e6220e7)) - **theme:** rebuild the base styles on tailwind's preflight ([f1ee913](https://redirect.github.com/vuejs/vitepress/commit/f1ee91335ecc562511f5e97214f41c043e6944fa)) - **theme:** route cjk punctuation to matching system fonts ([91b06b6](https://redirect.github.com/vuejs/vitepress/commit/91b06b67a302ebfa210e888fe9d03d27fb291b31)) - **theme:** remove deprecated `disableDetailedView` local search option ([cec4998](https://redirect.github.com/vuejs/vitepress/commit/cec499869f02313337993a7f2ad381f0f9d9dafd)) - **theme:** remove deprecated `lastUpdatedText` option ([18d1b47](https://redirect.github.com/vuejs/vitepress/commit/18d1b4713c6634cc60e6b4a95430e05d51ec4812)) - **theme:** remove deprecated `outlineTitle` option ([95c0420](https://redirect.github.com/vuejs/vitepress/commit/95c042039c62a9235e223f8da05a2075aa2234d7)) - **types:** declare Badge as a global component ([ca8ba5b](https://redirect.github.com/vuejs/vitepress/commit/ca8ba5baec6c8fa551ee29917bd072f84406e68b)) - **types:** import EnhanceAppContext from package entry in theme.d.ts ([8ff1f3e](https://redirect.github.com/vuejs/vitepress/commit/8ff1f3e2dd34fd443c0fa80cf3962f9d67e81cf5)), closes [#​5156](https://redirect.github.com/vuejs/vitepress/issues/5156) ##### Features - add web-types.json for JetBrains IDE support ([1d448c9](https://redirect.github.com/vuejs/vitepress/commit/1d448c9fc1ec90849c2a18c49cab5e275f3dc019)), closes [#​5157](https://redirect.github.com/vuejs/vitepress/issues/5157) - auto-add width/height to local images to avoid layout shift ([#​5311](https://redirect.github.com/vuejs/vitepress/issues/5311)) ([3868b64](https://redirect.github.com/vuejs/vitepress/commit/3868b64e419223279eaae800766b244cde9bc85f)) - **client:** declare $frontmatter and $params as ComponentCustomProperties ([0535009](https://redirect.github.com/vuejs/vitepress/commit/0535009f44b2f9ddf8e30b59700bacdb9a9b5e75)) - **client:** declare Content and ClientOnly components as GlobalComponents ([#​5156](https://redirect.github.com/vuejs/vitepress/issues/5156)) ([6629577](https://redirect.github.com/vuejs/vitepress/commit/6629577b48fe2785cf6865197cb326eff9f2a9d8)), closes [#​5154](https://redirect.github.com/vuejs/vitepress/issues/5154) - **cli:** show vite version in startup log ([#​5328](https://redirect.github.com/vuejs/vitepress/issues/5328)) ([4666fc2](https://redirect.github.com/vuejs/vitepress/commit/4666fc277609f8bb916e6a54eb0ac9327784d073)) - enable metaChunk by default ([#​5325](https://redirect.github.com/vuejs/vitepress/issues/5325)) ([8e42f31](https://redirect.github.com/vuejs/vitepress/commit/8e42f3159a1d5d8576bee0b736f56e943d3cb858)) - **init:** use async fs in scaffolding ([38b59f9](https://redirect.github.com/vuejs/vitepress/commit/38b59f925206120b1a20b1fcfb650b45f8147175)) - **markdown:** accept booleans for plugin options ([c2be0bf](https://redirect.github.com/vuejs/vitepress/commit/c2be0bf936e46c196151b79ba683a30490f2d164)) - **markdown:** add region marker engine ([b303dd3](https://redirect.github.com/vuejs/vitepress/commit/b303dd341df7c0ca1e5b63c086084b2baad68c19)) - **markdown:** allow disabling table `tabindex` attribute ([bffe1e1](https://redirect.github.com/vuejs/vitepress/commit/bffe1e14125220d465a94cc629260e19bff48e0c)) - **markdown:** support disabling built-in markdown plugins ([b8d9c8f](https://redirect.github.com/vuejs/vitepress/commit/b8d9c8f9a92ec4e8c877d6c28fee26b3c379876c)), closes [#​4484](https://redirect.github.com/vuejs/vitepress/issues/4484) [#​4556](https://redirect.github.com/vuejs/vitepress/issues/4556) - **markdown:** support footnotes ([430a890](https://redirect.github.com/vuejs/vitepress/commit/430a890a17910593e26e9654b141ef3855ecceac)) - **markdown:** support GitHub-style task lists ([97f8781](https://redirect.github.com/vuejs/vitepress/commit/97f87817ead5b7a26e0dfc535cfd60ec0597d130)), closes [#​413](https://redirect.github.com/vuejs/vitepress/issues/413) [#​1923](https://redirect.github.com/vuejs/vitepress/issues/1923) [#​3648](https://redirect.github.com/vuejs/vitepress/issues/3648) [#​5110](https://redirect.github.com/vuejs/vitepress/issues/5110) - **markdown:** support per-locale markdown strings ([faaa4a1](https://redirect.github.com/vuejs/vitepress/commit/faaa4a124ed7a5b2f1cfc8f9b7686a3785d2012b)), closes [#​4431](https://redirect.github.com/vuejs/vitepress/issues/4431) - **markdown:** support registering custom containers ([962f00e](https://redirect.github.com/vuejs/vitepress/commit/962f00e7a3c22dd021729e732e12a758b42aef1c)), closes [#​3591](https://redirect.github.com/vuejs/vitepress/issues/3591) [#​3603](https://redirect.github.com/vuejs/vitepress/issues/3603) [#​4228](https://redirect.github.com/vuejs/vitepress/issues/4228) - **markdown:** support title-less containers ([4c7a030](https://redirect.github.com/vuejs/vitepress/commit/4c7a030bc1eecd0ed441a2f56cde73e59ff90abe)), closes [#​4928](https://redirect.github.com/vuejs/vitepress/issues/4928) [#​4932](https://redirect.github.com/vuejs/vitepress/issues/4932) [#​4929](https://redirect.github.com/vuejs/vitepress/issues/4929) - **markdown:** rebase relative urls in included files ([6a337ef](https://redirect.github.com/vuejs/vitepress/commit/6a337efece9697dcb1e4ae4fe657af97089570f6)) - **markdown:** group code copy button strings into one option ([2fa0ded](https://redirect.github.com/vuejs/vitepress/commit/2fa0dedbb241e901569c2e20690e8e5917f4bd26)), closes [#​4431](https://redirect.github.com/vuejs/vitepress/issues/4431) - **markdown:** replace markdown-it-attrs with [@​mdit/plugin-attrs](https://redirect.github.com/mdit/plugin-attrs) ([18380b0](https://redirect.github.com/vuejs/vitepress/commit/18380b0eb78765f49d86918c86c9fee9e7197135)) - **markdown:** replace markdown-it-emoji with [@​mdit/plugin-emoji](https://redirect.github.com/mdit/plugin-emoji) ([018887f](https://redirect.github.com/vuejs/vitepress/commit/018887fa1d03031e9c6cc96606be22df51581e35)) - **markdown:** replace markdown-it-anchor with [@​mdit/plugin-anchor](https://redirect.github.com/mdit/plugin-anchor) ([7550517](https://redirect.github.com/vuejs/vitepress/commit/75505179160bf16a88cd5648719615e982c08e41)) - **markdown:** support `attrs: false` for disabling attrs plugin ([e235dbe](https://redirect.github.com/vuejs/vitepress/commit/e235dbeb8aef1213d0de9efafe0ccb758acd267a)) - **markdown:** support `note`, `important`, `caution` markdown containers ([#​5161](https://redirect.github.com/vuejs/vitepress/issues/5161)) ([3b560a0](https://redirect.github.com/vuejs/vitepress/commit/3b560a0efa8bdbf6f621413b3e8a27b19f4a638f)), closes [#​4427](https://redirect.github.com/vuejs/vitepress/issues/4427) [#​3928](https://redirect.github.com/vuejs/vitepress/issues/3928) - **theme:** allow internal social links ([51ff681](https://redirect.github.com/vuejs/vitepress/commit/51ff681f4e5caf7dfff1f5c1c79a70aaf4785081)), closes [#​5305](https://redirect.github.com/vuejs/vitepress/issues/5305) - **theme:** cover all Inter glyphs, generate font subsets from a script ([705c1be](https://redirect.github.com/vuejs/vitepress/commit/705c1be0f88643f9fdbeb09d1835374d70afbebd)) - update option stability annotations ([ab1896f](https://redirect.github.com/vuejs/vitepress/commit/ab1896fbf4da4b90f900d845a8410b7350ea9edd)) ##### Performance Improvements - **build:** reuse lastUpdated from markdown rendering in sitemap generation ([fdd68e3](https://redirect.github.com/vuejs/vitepress/commit/fdd68e37a720d2fd898033c5f695e125ee93634b)) - **md:** bypass gray-matter's unbounded cache ([4f8703d](https://redirect.github.com/vuejs/vitepress/commit/4f8703d61ccefb61823d4f7bac67f142759d81ca)) - **md:** limit the compile cache's memory usage ([2fb6bda](https://redirect.github.com/vuejs/vitepress/commit/2fb6bdabf03b617ccfa1d00c9261242bc5d93e56)) - use hook filters in vite plugins ([fa24c6d](https://redirect.github.com/vuejs/vitepress/commit/fa24c6d67b4a572a56ac76aeb9f97ca3cd03170d)) ##### Reverts - Revert "fix: prevent DocSearch SVG clipping in WebKit" ([#​5304](https://redirect.github.com/vuejs/vitepress/issues/5304)) ([c8313a4](https://redirect.github.com/vuejs/vitepress/commit/c8313a4bcd24af21cd829d7c4fd3792ecd0c17a7)), closes [#​5304](https://redirect.github.com/vuejs/vitepress/issues/5304) [#​5240](https://redirect.github.com/vuejs/vitepress/issues/5240) ##### BREAKING CHANGES - `markdown.anchor` options are now typed by `@mdit/plugin-anchor`. Common options (`level`, `slugify`, `permalink`, `getTokensText`, `tabIndex`, etc.) are unchanged, but the deprecated markdown-it-anchor permalink options (`permalinkSymbol`, `renderPermalink`, ...) are no longer accepted. Permalink builders like `headerLink` are named exports of `@mdit/plugin-anchor` instead of properties of the plugin. - `markdown.attrs` options are now typed by `@mdit/plugin-attrs`: `leftDelimiter`, `rightDelimiter`, and `allowedAttributes` are renamed to `left`, `right`, and `allowed`. A `rule` option is available for toggling individual attribute rules (VitePress disables `fence` by default). - `markdown.codeCopyButtonTitle` is now `markdown.codeCopyButton.tooltipText`, and its default changed from "Copy Code" to "Copy code". The `--vp-code-copy-copied-text-content` CSS variable and its built-in per-language `:lang()` defaults are removed - set `codeCopyButton.copiedText` (per locale) instead. - `useData().hash` has been removed. Read the hash from `useRoute()` instead. - callers of vitepress' build() will now notice the version banner gets printed. To disable that, pass a noop function: ```ts build(root, { onAfterConfigResolve() {} }) ``` - custom `themeConfig.i18nRouting` functions now receive the current `Route` as their second argument instead of the hash - normalize-level defaults differ from the old reset - native select and number-input chrome is restored, headings inherit font size and weight, the hidden attribute is enforced with !important, and every element starts with zero margin/padding and border-style: solid. Sites layering custom CSS on the default theme may notice. - relative urls in included markdown files resolve against the included file rather than the including page. Partials written for one specific location may need their links updated, or markdown.include.rebaseRelativeUrls set to false to keep resolving them from the including page. Absolute and external urls are unaffected. Note that the marker comments shift the line numbers reported for dead links following an include, which already pointed into the include-expanded source rather than the original file. - **init:** scaffold() now returns a `Promise` and must be awaited. - The `defs` property of `markdown.emoji` has been renamed to `definitions`. - The `markdown.attrs.disable` option has been removed. Set `markdown.attrs` to `false` instead. - The `markdown.image.lazyLoading` option has been renamed to `markdown.image.lazyLoad`. - The deprecated `disableDetailedView` option of local search has been removed. Use `detailedView: false` instead. - The deprecated `markdown.cjkFriendly` option has been removed. Use `markdown.cjkFriendlyEmphasis` instead. - The deprecated `themeConfig.lastUpdatedText` option has been removed. Use `themeConfig.lastUpdated.text` instead. - The deprecated `themeConfig.outlineTitle` option has been removed. Use `themeConfig.outline.label` instead. - The Inter4CJK font family has been renamed to 'Inter Core'. Custom --vp-font-family-base overrides referencing Inter4CJK must be updated.
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Christian Georgi --- .github/eslint-plugin/js-rule-stub.md | 4 +- .github/etc/blc.js | 2 + .vitepress/config.js | 14 +- .vitepress/lib/cds-playground/index.js | 5 +- .vitepress/lib/cds-playground/md-live-code.ts | 9 +- .vitepress/menu.js | 3 +- cds/index.data.ts | 5 +- cds/types.md | 7 +- guides/deploy/index.data.ts | 5 +- guides/events/index.data.ts | 5 +- guides/extensibility/index.data.ts | 5 +- guides/security/index.data.ts | 5 +- java/developing-applications/index.data.ts | 5 +- .../properties.data.ts | 2 +- java/index.data.ts | 5 +- java/operating-applications/index.data.ts | 5 +- java/working-with-cql/index.data.ts | 5 +- package-lock.json | 504 +++++++----------- package.json | 2 +- tools/apis/index.data.ts | 5 +- tools/cds-lint/rules.data.ts | 5 +- .../rules/assoc2many-ambiguous-key/index.md | 4 +- .../rules/auth-no-empty-restrictions/index.md | 4 +- .../auth-restrict-grant-service/index.md | 4 +- .../cds-lint/rules/auth-use-requires/index.md | 4 +- .../rules/auth-valid-restrict-grant/index.md | 4 +- .../rules/auth-valid-restrict-keys/index.md | 4 +- .../rules/auth-valid-restrict-to/index.md | 4 +- .../rules/auth-valid-restrict-where/index.md | 4 +- .../case-sensitive-well-known-events/index.md | 4 +- tools/cds-lint/rules/examples.data.ts | 7 +- .../rules/extension-restrictions/index.md | 4 +- .../rules/no-cross-service-import/index.md | 4 +- tools/cds-lint/rules/no-db-keywords/index.md | 4 +- .../rules/no-deep-sap-cds-import/index.md | 4 +- .../rules/no-dollar-prefixed-names/index.md | 4 +- .../rules/no-escaped-anno-brackets/index.md | 4 +- .../cds-lint/rules/no-java-keywords/index.md | 4 +- .../cds-lint/rules/no-join-on-draft/index.md | 4 +- .../rules/no-shared-handler-variable/index.md | 4 +- .../rules/sql-cast-suggestion/index.md | 4 +- .../rules/sql-null-comparison/index.md | 4 +- .../rules/start-elements-lowercase/index.md | 4 +- .../rules/start-entities-uppercase/index.md | 4 +- .../use-cql-select-template-strings/index.md | 4 +- .../cds-lint/rules/valid-csv-header/index.md | 6 +- tools/index.data.ts | 5 +- 47 files changed, 301 insertions(+), 416 deletions(-) diff --git a/.github/eslint-plugin/js-rule-stub.md b/.github/eslint-plugin/js-rule-stub.md index c592bc247e..b066406da1 100644 --- a/.github/eslint-plugin/js-rule-stub.md +++ b/.github/eslint-plugin/js-rule-stub.md @@ -18,7 +18,7 @@ This rule was introduced in `@sap/eslint-plugin-cds x.y.z`. DESCRIPTION OF CORRECT EXAMPLE ::: code-group -<<< correct/srv/admin-service.js#snippet{js:line-numbers} [srv/admin-service.js] +<<< correct/srv/admin-service.js{js:line-numbers} [srv/admin-service.js] ::: { MdAttrsPropagate.install(md) @@ -227,7 +227,7 @@ if (process.env.VITE_CAPIRE_EXTRA_ASSETS) { // Add custom buildEnd hook import { promises as fs } from 'node:fs' -import * as cdsMavenSite from './lib/cds-maven-site' +import * as cdsMavenSite from './lib/cds-maven-site.ts' config.buildEnd = async ({ outDir, site }) => { const sitemapURL = new URL(config.themeConfig.capire.siteURL.href) sitemapURL.pathname = join(sitemapURL.pathname, 'sitemap.xml') diff --git a/.vitepress/lib/cds-playground/index.js b/.vitepress/lib/cds-playground/index.js index 54ce2ff6d3..74140336cc 100644 --- a/.vitepress/lib/cds-playground/index.js +++ b/.vitepress/lib/cds-playground/index.js @@ -1,6 +1,9 @@ -import templates from './vite-plugin-templates' +import templates from './vite-plugin-templates.ts' import path from 'path' +import { dirname } from 'path' +import { fileURLToPath } from 'node:url' +const __dirname = dirname(fileURLToPath(import.meta.url)) let enabled = false let plugins = () => [] diff --git a/.vitepress/lib/cds-playground/md-live-code.ts b/.vitepress/lib/cds-playground/md-live-code.ts index 69c06fe31e..022bb006f2 100644 --- a/.vitepress/lib/cds-playground/md-live-code.ts +++ b/.vitepress/lib/cds-playground/md-live-code.ts @@ -1,6 +1,9 @@ import { MarkdownRenderer, MarkdownEnv } from 'vitepress' import { dirname, join, relative } from 'path' -import { enabled } from '.' +import { fileURLToPath } from 'node:url' +import { enabled } from './index.js' + +const __dirname = dirname(fileURLToPath(import.meta.url)) /** * Makes code blocks with "live" in the info string interactive by rendering a component. @@ -8,7 +11,7 @@ import { enabled } from '.' * ```cds live * select from Books { title } * ``` - * + * * ```js live * await INSERT.into('Books').entries( * { ID: 2, author_ID: 150, title: 'Eldorado' } @@ -51,7 +54,7 @@ export function install(md: MarkdownRenderer) { } function insertScriptSetup(env: MarkdownEnv, imp: string) { - const sfcBlocks = env.sfcBlocks! + const sfcBlocks = env.sfcBlocks! if (!sfcBlocks.scriptSetup) { sfcBlocks.scriptSetup = { content: '', diff --git a/.vitepress/menu.js b/.vitepress/menu.js index 276240dc83..db6d86a756 100755 --- a/.vitepress/menu.js +++ b/.vitepress/menu.js @@ -6,6 +6,7 @@ import { dirname, relative, resolve, join, normalize } from 'node:path' import { existsSync, promises as fs } from 'node:fs' import rewrites from './rewrites.js' +import { fileURLToPath } from 'node:url' const DEBUG = process.env.DEBUG?.match(/\b(menu|all)\b/) ? (...args) => console.debug ('[menu.js] -', ...args) : undefined const EXTERNAL = process.env.VITE_CAPIRE_ENV === 'external' @@ -188,4 +189,4 @@ export class Menu extends MenuItem { // Run the CLI method if invoked from command line -if (typeof __filename === 'undefined') Menu.exec (process.argv.slice(2)) +if (process.argv[1] === fileURLToPath(import.meta.url)) Menu.exec (process.argv.slice(2)) diff --git a/cds/index.data.ts b/cds/index.data.ts index b6b1f3bf30..b7f6fdd5b7 100644 --- a/cds/index.data.ts +++ b/cds/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader(`**/${basePath}/*.md`, { transform(rawData) { return filter(rawData, `/${basePath}/`) diff --git a/cds/types.md b/cds/types.md index c324ead13e..24c28a5613 100644 --- a/cds/types.md +++ b/cds/types.md @@ -6,6 +6,7 @@ description: > # Core / Built-in Types + The following table lists the built-in types in CDS, and their most common mapping to ANSI SQL types, when deployed to a relational database (concrete mappings to specific databases may differ): @@ -42,12 +43,12 @@ ANSI SQL types, when deployed to a relational database (concrete mappings to spe > The `Vector` type is used for vector embeddings, which are a way to represent data (like text, images, etc.) as high-dimensional vectors. Requires SAP HANA Cloud QRC 1/2024, or later, [`@sap/cds` v9.9+](/releases/2026/apr26), and [CAP Java v4.9+](/releases/2026/apr26) to use with H2 or SQLite. > [!tip] Use Attachments instead of LargeBinary -> Consider using _Attachments_, as provided through [the CAP Attachments plugins](../plugins/index#attachments), instead of `LargeBinary` types for user-generated content like documents, images, etc. +> Consider using _Attachments_, as provided through [the CAP Attachments plugins](/@external/plugins/index#attachments), instead of `LargeBinary` types for user-generated content like documents, images, etc. See also: [Additional Reuse Types and Aspects by `@sap/cds/common`](common) {.learn-more} -[Mapping to OData EDM types](../guides/protocols/odata#type-mapping) {.learn-more} +[Mapping to OData EDM types](/@external/guides/protocols/odata#type-mapping) {.learn-more} -[HANA-native Data Types](../guides/databases/hana-native#hana-types){.learn-more} +[HANA-native Data Types](/@external/guides/databases/hana-native#hana-types){.learn-more} diff --git a/guides/deploy/index.data.ts b/guides/deploy/index.data.ts index 0c999b8419..15cfdf9dc6 100644 --- a/guides/deploy/index.data.ts +++ b/guides/deploy/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader([`**/${basePath}/*.md`, `**/guides/multitenancy/*.md`], { transform(rawData) { diff --git a/guides/events/index.data.ts b/guides/events/index.data.ts index 6b4139e330..17f6acaa96 100644 --- a/guides/events/index.data.ts +++ b/guides/events/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader(`**/${basePath}/*.md`, { transform(rawData) { diff --git a/guides/extensibility/index.data.ts b/guides/extensibility/index.data.ts index 6b4139e330..17f6acaa96 100644 --- a/guides/extensibility/index.data.ts +++ b/guides/extensibility/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader(`**/${basePath}/*.md`, { transform(rawData) { diff --git a/guides/security/index.data.ts b/guides/security/index.data.ts index 6b4139e330..17f6acaa96 100644 --- a/guides/security/index.data.ts +++ b/guides/security/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader(`**/${basePath}/*.md`, { transform(rawData) { diff --git a/java/developing-applications/index.data.ts b/java/developing-applications/index.data.ts index 6b4139e330..17f6acaa96 100644 --- a/java/developing-applications/index.data.ts +++ b/java/developing-applications/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader(`**/${basePath}/*.md`, { transform(rawData) { diff --git a/java/developing-applications/properties.data.ts b/java/developing-applications/properties.data.ts index 76f24b01b4..ac241600cd 100644 --- a/java/developing-applications/properties.data.ts +++ b/java/developing-applications/properties.data.ts @@ -6,7 +6,7 @@ const version = capire.versions.java_services export default defineLoader({ async load() { - const props = (await import('./properties.json')).default.properties as unknown as JavaSdkProperties[] + const props = (await import('./properties.json', {with:{type:'json'}})).default.properties as unknown as JavaSdkProperties[] const properties = massageProperties(props) return { properties, version } } diff --git a/java/index.data.ts b/java/index.data.ts index dd6c12c3ac..4aae9f2339 100644 --- a/java/index.data.ts +++ b/java/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader([`**/${basePath}/*.md`, `**/${basePath}/**/index.md`], { transform(rawData) { diff --git a/java/operating-applications/index.data.ts b/java/operating-applications/index.data.ts index 6b4139e330..17f6acaa96 100644 --- a/java/operating-applications/index.data.ts +++ b/java/operating-applications/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader(`**/${basePath}/*.md`, { transform(rawData) { diff --git a/java/working-with-cql/index.data.ts b/java/working-with-cql/index.data.ts index 6b4139e330..17f6acaa96 100644 --- a/java/working-with-cql/index.data.ts +++ b/java/working-with-cql/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader(`**/${basePath}/*.md`, { transform(rawData) { diff --git a/package-lock.json b/package-lock.json index 79d1d9f256..fc0cdf6a64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "monaco-editor": "^0", "sass": "^1.62.1", "vite-plugin-cds": "^0.3.1", - "vitepress": "2.0.0-alpha.18" + "vitepress": "2.0.0-alpha.19" } }, "node_modules/@babel/helper-string-parser": { @@ -155,60 +155,26 @@ } }, "node_modules/@docsearch/css": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.3.tgz", - "integrity": "sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.7.0.tgz", + "integrity": "sha512-Sk5xkdRFeE7PeWjG9l4AfTwdvMfr9wHiwNNCpHXT4v4SNyNMKdHGvEILc31BgaVFGDDNbv5u/a73tofRiwbEZw==", "dev": true, "license": "MIT" }, "node_modules/@docsearch/js": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-4.6.3.tgz", - "integrity": "sha512-qUIX2b4Apew3tv4F0qhmgShsl/Lfw4m6mqv/5/5dWNxwTcDdLMp2s3YwZ+NMGh3IKCg0pBaXm7Q5VdyU5Rj+cQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-4.7.0.tgz", + "integrity": "sha512-x5lCqu1tetgsJFkjQ6VSocbHldsRkGEgwg5N98Vx21sq/V5wcmj4u226PY9k+TEpIgQ772zlYbPLTPicWyGnpA==", "dev": true, "license": "MIT" }, "node_modules/@docsearch/sidepanel-js": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/@docsearch/sidepanel-js/-/sidepanel-js-4.6.3.tgz", - "integrity": "sha512-grGSmvXzG0if+mrzdIKykvpIAuEQ9u0sEJ2eLRRCaQfJvsWqh2C2/aY04bIzWvDh7myi5rvl8D+tUNsVrjYQ3A==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@docsearch/sidepanel-js/-/sidepanel-js-4.7.0.tgz", + "integrity": "sha512-A8r34jCU8kcIk2viECEn2msA28ojUF1BLi/3v5OWWc5G2N3jOuuumBXoeYjfr8dA0UxgFSy5R2bt12dnFJQSyA==", "dev": true, "license": "MIT" }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -445,9 +411,9 @@ } }, "node_modules/@iconify-json/simple-icons": { - "version": "1.2.87", - "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.87.tgz", - "integrity": "sha512-8YciStObhSji3OZFmWAWK6kBujyqO5bLCxeDwLxf3CR3F4PVelq7keC2LBvgTqviWzSTysj5/g4PCFLiAMVGsw==", + "version": "1.2.93", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.93.tgz", + "integrity": "sha512-/XhANjfGYOuqvSR3TmUnkQkINvQ4GVjVuukvymRbxtVFBvIq/yiXJqCDycKcQPT401OYT9H2vIY6ihAlz1QIAw==", "dev": true, "license": "CC0-1.0", "dependencies": { @@ -489,29 +455,10 @@ } } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@oxc-project/types": { - "version": "0.139.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", - "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", + "version": "0.143.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.143.0.tgz", + "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", "dev": true, "license": "MIT", "funding": { @@ -847,9 +794,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", - "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz", + "integrity": "sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==", "cpu": [ "arm64" ], @@ -864,9 +811,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==", "cpu": [ "arm64" ], @@ -881,9 +828,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", - "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==", "cpu": [ "x64" ], @@ -898,9 +845,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", - "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz", + "integrity": "sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==", "cpu": [ "x64" ], @@ -915,9 +862,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", - "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz", + "integrity": "sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==", "cpu": [ "arm" ], @@ -932,9 +879,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", - "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz", + "integrity": "sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==", "cpu": [ "arm64" ], @@ -952,9 +899,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", - "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz", + "integrity": "sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==", "cpu": [ "arm64" ], @@ -972,9 +919,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", - "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz", + "integrity": "sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==", "cpu": [ "ppc64" ], @@ -992,9 +939,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", - "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz", + "integrity": "sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==", "cpu": [ "s390x" ], @@ -1012,9 +959,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", - "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz", + "integrity": "sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==", "cpu": [ "x64" ], @@ -1032,9 +979,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", - "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz", + "integrity": "sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==", "cpu": [ "x64" ], @@ -1052,9 +999,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", - "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz", + "integrity": "sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==", "cpu": [ "arm64" ], @@ -1068,29 +1015,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", - "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", - "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz", + "integrity": "sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==", "cpu": [ "arm64" ], @@ -1105,9 +1033,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", - "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz", + "integrity": "sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==", "cpu": [ "x64" ], @@ -1285,60 +1213,14 @@ } }, "node_modules/@shikijs/transformers": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-4.3.1.tgz", - "integrity": "sha512-z6ir0bGDgWcF2FduktEfPgIsdOtIlDiLAjFBgBzE42Q9xHbkkIXZtORHzlLVB71iZP9elEcqKg6keajvOUwE2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/core": "4.3.1", - "@shikijs/types": "4.3.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/transformers/node_modules/@shikijs/core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.3.1.tgz", - "integrity": "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/primitive": "4.3.1", - "@shikijs/types": "4.3.1", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/transformers/node_modules/@shikijs/primitive": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.3.1.tgz", - "integrity": "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.3.1", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/transformers/node_modules/@shikijs/types": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.3.1.tgz", - "integrity": "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-4.4.3.tgz", + "integrity": "sha512-oJSARV6NaWd+rnNJbtnpAdj3Zg0ZVyzsnMgb3vi3HA+35y8lBWUCpOnWsmyiXZIikY+x1BDqrQUgmxfzWh7Jvw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@shikijs/core": "4.4.3", + "@shikijs/types": "4.4.3" }, "engines": { "node": ">=20" @@ -1431,17 +1313,6 @@ "node": ">=22" } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/adm-zip": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.5.8.tgz", @@ -1821,9 +1692,9 @@ "license": "ISC" }, "node_modules/@vitejs/plugin-vue": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.7.tgz", - "integrity": "sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.8.tgz", + "integrity": "sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew==", "dev": true, "license": "MIT", "dependencies": { @@ -1922,32 +1793,32 @@ } }, "node_modules/@vue/devtools-api": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-8.1.5.tgz", - "integrity": "sha512-YJipMVAKe5wT5CWf5kTYCaNV7NMNjFVxJkIkJaJ4W/nCxEBzlZzrOsYKeCymdCrFZmBS/+wTWFoUs3Jf/Q6XSQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-8.2.1.tgz", + "integrity": "sha512-6u4vXBlIBAC1wMplIZgpyPn7uh/s4Bf6F5bMzvLv+EdJ0aHs/+4B7Ygv864EStQSjRbsRzTko/kUG1A1IejQ3A==", "dev": true, "license": "MIT", "dependencies": { - "@vue/devtools-kit": "^8.1.5" + "@vue/devtools-kit": "^8.2.1" } }, "node_modules/@vue/devtools-kit": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.1.5.tgz", - "integrity": "sha512-FcSAxsi4eWuXLCB7Rv9lj0aIVHHPNVQ2BazGf4RJTc2JCqb4BQg0hk87ZFhminCfl+mD5OUI0rX2cgyu4kJOGA==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.2.1.tgz", + "integrity": "sha512-FIGIuq3AWReEpbAHY/cRGeHDfI0qOb8OCQ3YjbEAX04uaxIDbGc9rhkbVcG7rnfHPXE3RsU5KrWOu9V/okd8AQ==", "dev": true, "license": "MIT", "dependencies": { - "@vue/devtools-shared": "^8.1.5", + "@vue/devtools-shared": "^8.2.1", "birpc": "^2.6.1", "hookable": "^5.5.3", "perfect-debounce": "^2.0.0" } }, "node_modules/@vue/devtools-shared": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.1.5.tgz", - "integrity": "sha512-mhT4zcPFhF+Xk1O4BfhhrbXzpmfqY03fS6xGpcllbQG7lDjhQf8pQHcTIhqQIYx1hfwtHmk/6jM96ele0UxPqQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.2.1.tgz", + "integrity": "sha512-Fkac7lUdGReh6pVOi3AYPRGe82LQqRmAfThW7RRligOAP0ZA/Z1z9XLHDM9dv34pV2HRc79DK8uKPeG2fLnA/g==", "dev": true, "license": "MIT" }, @@ -2021,15 +1892,15 @@ "license": "MIT" }, "node_modules/@vueuse/core": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.3.0.tgz", - "integrity": "sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.4.0.tgz", + "integrity": "sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==", "dev": true, "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.21", - "@vueuse/metadata": "14.3.0", - "@vueuse/shared": "14.3.0" + "@vueuse/metadata": "14.4.0", + "@vueuse/shared": "14.4.0" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -2039,14 +1910,14 @@ } }, "node_modules/@vueuse/integrations": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-14.3.0.tgz", - "integrity": "sha512-76I5FT2ESvCmCaSwapI+a/u/CFtNXmzl9f9lNp1hRtx8vKB8hfiokJr8IvQqcQG5ckGXElyXK516b54ozV3MvA==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-14.4.0.tgz", + "integrity": "sha512-oJz9qTgczvA7L1nXQFRU7h8tQbOCoiceqvMMhT9XYMyOGTqLJ2rEa09PON+nD2t48sZUfeOmg4eaWJXV4sZb/w==", "dev": true, "license": "MIT", "dependencies": { - "@vueuse/core": "14.3.0", - "@vueuse/shared": "14.3.0" + "@vueuse/core": "14.4.0", + "@vueuse/shared": "14.4.0" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -2106,9 +1977,9 @@ } }, "node_modules/@vueuse/metadata": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.3.0.tgz", - "integrity": "sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.4.0.tgz", + "integrity": "sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==", "dev": true, "license": "MIT", "funding": { @@ -2116,9 +1987,9 @@ } }, "node_modules/@vueuse/shared": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.3.0.tgz", - "integrity": "sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.4.0.tgz", + "integrity": "sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==", "dev": true, "license": "MIT", "funding": { @@ -3531,9 +3402,9 @@ } }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -3547,23 +3418,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -3582,9 +3453,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -3603,9 +3474,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -3624,9 +3495,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -3645,9 +3516,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -3666,9 +3537,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], @@ -3690,9 +3561,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], @@ -3714,9 +3585,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], @@ -3738,9 +3609,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], @@ -3762,9 +3633,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -3783,9 +3654,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -5150,13 +5021,13 @@ "license": "MIT" }, "node_modules/rolldown": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", - "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.3.tgz", + "integrity": "sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.139.0", + "@oxc-project/types": "=0.143.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -5166,21 +5037,20 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.5", - "@rolldown/binding-darwin-arm64": "1.1.5", - "@rolldown/binding-darwin-x64": "1.1.5", - "@rolldown/binding-freebsd-x64": "1.1.5", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", - "@rolldown/binding-linux-arm64-gnu": "1.1.5", - "@rolldown/binding-linux-arm64-musl": "1.1.5", - "@rolldown/binding-linux-ppc64-gnu": "1.1.5", - "@rolldown/binding-linux-s390x-gnu": "1.1.5", - "@rolldown/binding-linux-x64-gnu": "1.1.5", - "@rolldown/binding-linux-x64-musl": "1.1.5", - "@rolldown/binding-openharmony-arm64": "1.1.5", - "@rolldown/binding-wasm32-wasi": "1.1.5", - "@rolldown/binding-win32-arm64-msvc": "1.1.5", - "@rolldown/binding-win32-x64-msvc": "1.1.5" + "@rolldown/binding-android-arm64": "1.2.3", + "@rolldown/binding-darwin-arm64": "1.2.3", + "@rolldown/binding-darwin-x64": "1.2.3", + "@rolldown/binding-freebsd-x64": "1.2.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.3", + "@rolldown/binding-linux-arm64-gnu": "1.2.3", + "@rolldown/binding-linux-arm64-musl": "1.2.3", + "@rolldown/binding-linux-ppc64-gnu": "1.2.3", + "@rolldown/binding-linux-s390x-gnu": "1.2.3", + "@rolldown/binding-linux-x64-gnu": "1.2.3", + "@rolldown/binding-linux-x64-musl": "1.2.3", + "@rolldown/binding-openharmony-arm64": "1.2.3", + "@rolldown/binding-win32-arm64-msvc": "1.2.3", + "@rolldown/binding-win32-x64-msvc": "1.2.3" } }, "node_modules/router": { @@ -5520,14 +5390,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, "node_modules/twoslash": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/twoslash/-/twoslash-0.3.9.tgz", @@ -5778,16 +5640,16 @@ } }, "node_modules/vite": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.4.tgz", - "integrity": "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", + "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", "dev": true, "license": "MIT", "dependencies": { - "lightningcss": "^1.32.0", + "lightningcss": "^1.33.0", "picomatch": "^4.0.5", - "postcss": "^8.5.16", - "rolldown": "~1.1.4", + "postcss": "^8.5.25", + "rolldown": "~1.2.1", "tinyglobby": "^0.2.17" }, "bin": { @@ -5804,7 +5666,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.4.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -5870,31 +5732,31 @@ } }, "node_modules/vitepress": { - "version": "2.0.0-alpha.18", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-2.0.0-alpha.18.tgz", - "integrity": "sha512-Lk1G2/QqSf+MwNLICl9fmzWOtoCEwjZoWgaQy41QvWTfcGpLE9XwJDbcCyES/9rj6R2g1zFqFvLVkYKLLDALFw==", + "version": "2.0.0-alpha.19", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-2.0.0-alpha.19.tgz", + "integrity": "sha512-WnBsb0Bwr43kXKyiis+lld/7ri3hnMbthS8N3hpFtjjwsdLO4IRmiAE08D7aud4q6oMDf9uwRowxzNqRFe/amw==", "dev": true, "license": "MIT", "dependencies": { - "@docsearch/css": "^4.6.3", - "@docsearch/js": "^4.6.3", - "@docsearch/sidepanel-js": "^4.6.3", - "@iconify-json/simple-icons": "^1.2.87", - "@shikijs/core": "^4.3.0", - "@shikijs/transformers": "^4.3.0", - "@shikijs/types": "^4.3.0", + "@docsearch/css": "^4.7.0", + "@docsearch/js": "^4.7.0", + "@docsearch/sidepanel-js": "^4.7.0", + "@iconify-json/simple-icons": "^1.2.92", + "@shikijs/core": "^4.4.1", + "@shikijs/transformers": "^4.4.1", + "@shikijs/types": "^4.4.1", "@types/markdown-it": "^14.1.2", - "@vitejs/plugin-vue": "^6.0.7", - "@vue/devtools-api": "^8.1.4", - "@vue/shared": "^3.5.39", - "@vueuse/core": "^14.3.0", - "@vueuse/integrations": "^14.3.0", + "@vitejs/plugin-vue": "^6.0.8", + "@vue/devtools-api": "^8.2.1", + "@vue/shared": "^3.5.40", + "@vueuse/core": "^14.4.0", + "@vueuse/integrations": "^14.4.0", "focus-trap": "^8.2.2", "mark.js": "8.11.1", "minisearch": "^7.2.0", - "shiki": "^4.3.0", - "vite": "^8.1.3", - "vue": "^3.5.39" + "shiki": "^4.4.1", + "vite": "^8.2.0", + "vue": "^3.5.40" }, "bin": { "vitepress": "bin/vitepress.js" diff --git a/package.json b/package.json index 4b53a2679c..c562b6ccd6 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,6 @@ "monaco-editor": "^0", "sass": "^1.62.1", "vite-plugin-cds": "^0.3.1", - "vitepress": "2.0.0-alpha.18" + "vitepress": "2.0.0-alpha.19" } } diff --git a/tools/apis/index.data.ts b/tools/apis/index.data.ts index 8d4b91b6e5..1632c8fc80 100644 --- a/tools/apis/index.data.ts +++ b/tools/apis/index.data.ts @@ -1,8 +1,9 @@ -import { basename } from 'node:path' +import { basename, dirname } from 'node:path' import { createContentLoader } from 'vitepress' import filter from '../../.vitepress/theme/components/indexFilter.ts' +import { fileURLToPath } from 'node:url' -const basePath = basename(__dirname) +const basePath = basename(dirname(fileURLToPath(import.meta.url))) export default createContentLoader([ `**/${basePath}/*.md`, diff --git a/tools/cds-lint/rules.data.ts b/tools/cds-lint/rules.data.ts index 298dc78008..84dd5abfdd 100644 --- a/tools/cds-lint/rules.data.ts +++ b/tools/cds-lint/rules.data.ts @@ -1,5 +1,6 @@ import * as fs from 'fs' import * as path from 'path' +import { fileURLToPath } from 'url' export default { async load() { @@ -19,7 +20,7 @@ export default { const rule = plugin.rules[cdsRuleName] const model = rule.meta?.model const category = model === 'none' ? 'Environment' : 'Model Validation'; - + data[category].push({...ruleInfo(cdsRuleName, rule), model: model === 'parsed' ? '👀' : '' }) @@ -40,7 +41,7 @@ export default { function ruleInfo (name, rule) { const meta = rule.meta ?? {} - const ruleDocs = path.join(__dirname, `rules/${name}.md`) + const ruleDocs = path.join(path.dirname(fileURLToPath(import.meta.url)), `rules/${name}.md`) const hasRuleDocs = fs.existsSync(ruleDocs) return { rule: name, diff --git a/tools/cds-lint/rules/assoc2many-ambiguous-key/index.md b/tools/cds-lint/rules/assoc2many-ambiguous-key/index.md index dae9880348..8f2ea8c3da 100644 --- a/tools/cds-lint/rules/assoc2many-ambiguous-key/index.md +++ b/tools/cds-lint/rules/assoc2many-ambiguous-key/index.md @@ -19,7 +19,7 @@ An [association/composition to/of `MANY`](../../../../cds/cdl#to-many-associatio In the following example, we define a unique association from `Authors` to `Books` with a well-defined `ON` condition and backlink, thus satisfying the rule's conditions: ::: code-group -<<< correct/db/schema.cds#snippet{cds:line-numbers} [db/schema.cds] +<<< correct/db/schema.cds{cds:line-numbers} [db/schema.cds] ::: = {}; @@ -11,8 +12,8 @@ export default { watch: ['./**/*.cds', './**/*.csv', './**/*.json', './**/*.js'], load(watchedFiles: string[]) { watchedFiles.forEach((file) => { - if (__filename.includes(file) || file.match(/@cds-models/)) return - const key = relative(__dirname, file) + if (fileURLToPath(import.meta.url).includes(file) || file.match(/@cds-models/)) return + const key = relative(dirname(fileURLToPath(import.meta.url)), file) // Watch globs ignore 'node_modules', so in examples, we call them 'node-modules' to avoid being ignored. // Once ingested, we need to change it back to 'node_modules' so they can be used by the Playground template. .replace('node-modules', 'node_modules') diff --git a/tools/cds-lint/rules/extension-restrictions/index.md b/tools/cds-lint/rules/extension-restrictions/index.md index 78762d63bb..fd1a6a9374 100644 --- a/tools/cds-lint/rules/extension-restrictions/index.md +++ b/tools/cds-lint/rules/extension-restrictions/index.md @@ -17,7 +17,7 @@ CAP provides intrinsic extensibility, which means all your entities and services #### ✅   Correct example ::: code-group -<<< correct/db/schema.cds#snippet{cds:line-numbers} [db/schema.cds] +<<< correct/db/schema.cds{cds:line-numbers} [db/schema.cds] ::: ::: code-group -<<< incorrect/db/schema.cds#snippet{cds:line-numbers} [db/schema.cds] +<<< incorrect/db/schema.cds{cds:line-numbers} [db/schema.cds] ::: ::: code-group -<<< incorrect/db/schema.cds#snippet{cds:line-numbers} [db/schema.cds] +<<< incorrect/db/schema.cds{cds:line-numbers} [db/schema.cds] ::: Date: Thu, 20 Aug 2026 05:31:10 +0000 Subject: [PATCH 014/120] add PR Bot config (#2829) We have a PR that indicates that the bot is already enabled for our org: https://github.com/capire/incidents-app/pull/128/changes --- .hyperspace/pull_request_bot.json | 14 ++++ .hyperspace/pull_request_bot_review_focus.md | 68 ++++++++++++++++++++ .vscode/settings.json | 3 +- 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 .hyperspace/pull_request_bot.json create mode 100644 .hyperspace/pull_request_bot_review_focus.md diff --git a/.hyperspace/pull_request_bot.json b/.hyperspace/pull_request_bot.json new file mode 100644 index 0000000000..daaa1ae09e --- /dev/null +++ b/.hyperspace/pull_request_bot.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://devops-insights-pr-bot.cfapps.eu10-004.hana.ondemand.com/schema/pull_request_bot.json", + "features": { + "control_panel": true, + "summarize": { + "auto_generate_summary": false, + "auto_insert_summary": false + }, + "review": { + "auto_generate_review": false, + "use_custom_review_focus": true + } + } +} diff --git a/.hyperspace/pull_request_bot_review_focus.md b/.hyperspace/pull_request_bot_review_focus.md new file mode 100644 index 0000000000..f637faf052 --- /dev/null +++ b/.hyperspace/pull_request_bot_review_focus.md @@ -0,0 +1,68 @@ +--- +description: 'Does a detailed edit on the current file(s).' +tools: ['read', 'agent', 'edit', 'todo'] +--- + +### ROLE +You are a helpful editor for a technical writer. Your task is to review and improve the text while ensuring that it adheres to a structured set of writing rules. All categories are of equal priority—no rule should be prioritized over another. + +DO: +- Read the whole file +- Only provide suggestions on the diff in the PR. + +DON'T: +- Provide suggestion on content that has not been changed in this Pull Request. + +### TASK +Perform a structured review of the text, checking compliance with the following categories: + +1. Grammar & Style +- Use U.S. English spelling and punctuation. +- Prefer active voice and present tense. +- Allow passive voice only when explaining a system process. +- Use common contractions, but avoid them in warnings or important messages. +- Use colons, parentheses, question marks, and intensifiers judiciously. +- Avoid exclamation marks, and abbreviations. +- Use a colon (:) to introduce information. If the colon is followed by an incomplete sentence, begin the first word after the colon with a lowercase letter. +- Spell out numbers one through nine in full. Use numerals for 10 and higher. +- Search for semicolons (;) and replace them with a period (.) For example: Instead of "This isn't needed; the system does this for you" write "This isn't needed. The system does this for you." +- Ensure lists are parallel. +- Avoid wordy constructions. +- Prefer Anglo-Saxon words to Latin-based words. + + +2. Clarity & Readability +- Write clear, concise, and short sentences that are easy to understand. +- Avoid jargon, colloquialisms, dialect, clipped words, and unnecessary complexity. +- Avoid hyperbole. +- Use positive formulations. + +3. Consistency & Tone +- If the audience of the text is the person who is using the product or feature, use the personal pronoun “you” and make sure the user is the center of the narrative. +- Use "please" when the user is asked to do something extra due to software error or if the situation is already troubling for the user. Avoid "please" when the user is asked to do something that is standard procedure. + +4. Inclusivity & Ethical Considerations +- Avoid stereotypes, discrimination, and biases. +- Check for stopwords, including: abort, execute, grandfather, terminate, kill, disable, whitelist, blacklist, slave, master) +- Output the detected stopwords as a Python list and explain why they must be replaced or avoided. If no stopwords are found, output: "Language checked." +- Check for potentially sensitive topics, including: personal ability, mobility, status, gender (e.g., "him", "her", "man", "woman", "girl", "boy"), sexist language, appearance, type, culture, ethnicity, language, age, economic background, religion, sexual orientation. +- Output the detected topics as a Python list. If no topics are found, output: "Language checked." +- Be mindful of verbs related to senses (e.g., see, hear, watch, listen) as they may exclude people with disabilities. Consider more inclusive alternatives where appropriate, such as: +Instead of "See the highlighted section," → Use "Note the highlighted sections." +Instead of "Did you hear the announcement?" → Use "Did you receive the announcement?" +Note: "See" is ok when used to mean "refer to" → "For more information, see Troubleshooting." + +5. Formality & Suitability +- Avoid emoticons and emojis. +- Ensure that each item of a list can stand alone and is not only understandable if you read all bulletpoints as a sentence. + +6. Accessibility +- Ensure that all content is accessible to people with disabilities, including those using screen readers. +- Introduce tables, lists, images, and so on with a brief description of their purpose. +- Make sure that sentences are complete and that images, code blocks, and so on are not in between overflowing sentences. + +### FINAL STEPS +Provide a report summarizing how well the text adheres to the writing rules, highlighting issues found in each category. +Rewrite the text to align with all guidelines while maintaining clarity, accuracy, and user focus. +Explain each change by displaying every sentence of the revised text along with a justification for what was modified or retained. +Make sure to not create a commit but only do the changes as explained and leave the review for a human who does the commit. diff --git a/.vscode/settings.json b/.vscode/settings.json index 74f7626562..4a478d662b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,7 @@ "**/CODE_OF_CONDUCT.md": true, "**/CONTRIBUTING.md": true, "**/LICENSE*": true, - "**/node_modules/": true + "**/node_modules/": true, + "**/.hyperspace/": true } } From 705a59141b66cf2f74454782b6f5752c9ab9215a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jeglinsky?= Date: Thu, 20 Aug 2026 06:55:16 +0000 Subject: [PATCH 015/120] Add information on DNS label limitations on Cloud Foundry (#2825) Closes #2804 --- get-started/get-help.md | 7 +++++++ guides/multitenancy/index.md | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/get-started/get-help.md b/get-started/get-help.md index d6e08ae960..ec01b6c142 100644 --- a/get-started/get-help.md +++ b/get-started/get-help.md @@ -721,6 +721,13 @@ Most probably, you are using the same `hana_tenant_prefix` and `tenant_id` as an See how to [handle HANA tenants with HANA TMS v2](../guides/multitenancy/index.md#handle-sap-hana-tenants) to avoid this situation. +### Why does my tenant URL fail or is truncated? + +DNS host labels are limited to 63 characters. The tenant-specific hostname can exceed this limit with long names. + +**Solution:** Use shorter component names or configure an explicit short route using the `routes` parameter in your `mta.yaml`. + +[Learn more about routes in the Multitenancy guide.](../guides/multitenancy/index.md#cloud-foundry){.learn-more} ## BTP diff --git a/guides/multitenancy/index.md b/guides/multitenancy/index.md index 479b538fc0..078e28b7eb 100644 --- a/guides/multitenancy/index.md +++ b/guides/multitenancy/index.md @@ -636,6 +636,13 @@ Let's also assume we've deployed to our app to Cloud Foundry org `myOrg` and spa cf map-route bookshop cfapps.us10.hana.ondemand.com --hostname subscriber1-myOrg-mySpace-bookshop ``` +> [!warning] DNS host label limit +>The hostname must not exceed 63 characters. +> +> If `-` is too long, the route will fail. +> Use shorter app names or configure an explicit short route via the `routes` parameter in your `mta.yaml`. + + ::: details Learn how to do this in the BTP cockpit instead… Switch to your **provider account** and go to your space → Routes. Click on _New Route_. @@ -1182,6 +1189,11 @@ The tenant application requests are separated by the tenant-specific app URL: https:// ``` +> [!tip] Keep hostnames short +> The resulting hostname must stay within the 63-character DNS host label limit. +> Choose short values for separator and app URL components. + + ::: tip Use MTA extensions for landscape-specific configuration You can define the environment variable `CDS_MULTITENANCY_APPUI_TENANTSEPARATOR` in an MTA extension descriptor: From e06566a6a2c139bc86eaf66626d9639b5496dbde Mon Sep 17 00:00:00 2001 From: DJ Adams Date: Thu, 20 Aug 2026 06:56:27 +0000 Subject: [PATCH 016/120] Add "CAP in the age of AI" video series and new tutorials to learn-more.md (#2816) --- get-started/learn-more.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/get-started/learn-more.md b/get-started/learn-more.md index 352bbf7fe1..5491a1fd78 100644 --- a/get-started/learn-more.md +++ b/get-started/learn-more.md @@ -144,6 +144,7 @@ SAP Developer Advocate [DJ Adams](https://qmacro.org) has compiled a vast number - [The Art and Science of CAP](https://www.youtube.com/playlist?list=PL6RpkC85SLQAe45xlhIfhTYB9G0mdRVjI) (with Daniel Hutzel) - [Under the hood: CDS Expressions in CAP](https://www.youtube.com/playlist?list=PL6RpkC85SLQCEU8XcyqnA5wYEZGxMPm6B) (with Patrice Bender) - [Expert sessions: Getting started with CAP Node.js](https://www.youtube.com/playlist?list=PL6RpkC85SLQDxW_6INTtprrvZ3WiXT8u5) (with Daniel Schlachter) +- [CAP in the age of AI](https://www.youtube.com/playlist?list=PLTKB1hyt4LXs) (with various CAP team members) - [Back to basics: CAP Node.js](https://www.youtube.com/playlist?list=PL6RpkC85SLQBHPdfHQ0Ry2TMdsT-muECx) - [Back to basics: Managed associations in CAP](https://www.youtube.com/playlist?list=PL6RpkC85SLQCSm1JSRzeBE-BlkygKRAAF) - [Good to know: CAP Node.js](https://www.youtube.com/playlist?list=PL6RpkC85SLQDZ18v94otZSJJrpcNkPPV9) @@ -191,7 +192,12 @@ SAP Developer Advocate [DJ Adams](https://qmacro.org) has compiled a vast number - [SAP BTP Developers Guide](https://help.sap.com/docs/btp/btp-developers-guide/btp-developers-guide) - [Tutorials featured in there](https://help.sap.com/docs/btp/btp-developers-guide/tutorials-for-sap-cloud-application-programming-model) - [SAP Discovery Center Missions](https://discovery-center.cloud.sap/missionCatalog/?search=cap&product=32) - + - Recently published (Aug 2026) tutorials in the Tutorial Navigator + - [Set up a self-contained development environment for CAP Node.js](https://developers.sap.com/tutorials/cap-self-contained-dev-env) + - [Use mocking to embrace auth in your domain model from the outset](https://developers.sap.com/tutorials/cap-mocking-auth) + - [Explore the declarative power of status-transition flows](https://developers.sap.com/tutorials/cap-status-transition-flows) + - [Get an introduction to the cds REPL](https://developers.sap.com/tutorials/cap-intro-to-repl) + - [Add MCP capabilities to a CAP service](https://developers.sap.com/tutorials/cap-add-mcp-capabilities) ## Hands-Ons & CodeJams From 818217db9e8665c9b8744864c6cc97e8387a97d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jeglinsky?= Date: Thu, 20 Aug 2026 07:05:45 +0000 Subject: [PATCH 017/120] codeowner: re-add rene (#2830) --- .github/CODEOWNERS | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index dc22b16aa5..ba001f7523 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,11 +2,11 @@ # We start with defining ownership globally and later on can get more granular. # General content -* @smahati @danjoa +* @renejeglinsky @danjoa -node.js/ @smahati @danjoa -java/ @smahati @danjoa -tools/ @chgeo @swaldmann @smahati +node.js/ @smahati @renejeglinsky @danjoa +java/ @smahati @renejeglinsky @danjoa +tools/ @chgeo @swaldmann @renejeglinsky # Infra .github/ @chgeo @swaldmann From fa84ce4d03afd30207be4826506b165d36cfe28a Mon Sep 17 00:00:00 2001 From: BraunMatthias <59841349+BraunMatthias@users.noreply.github.com> Date: Thu, 20 Aug 2026 12:09:56 +0000 Subject: [PATCH 018/120] Update cap-users.md (#2781) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added a missing link --------- Co-authored-by: Mahati Shankar <93712176+smahati@users.noreply.github.com> Co-authored-by: René Jeglinsky --- guides/security/cap-users.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/guides/security/cap-users.md b/guides/security/cap-users.md index fbf24f13a4..9a9cd41f9f 100644 --- a/guides/security/cap-users.md +++ b/guides/security/cap-users.md @@ -191,6 +191,8 @@ In the CDS model, some of the user properties can be referenced in annotations o | Attribute | `$user.` | [@restrict](./authorization#user-attrs) | | Role | `` | [@requires](./authorization#requires) and [@restrict.to](./authorization#restrict-annotation) | +[See how `$user` is mapped from request claims.](#reflection){.learn-more} + ### Tracing { #user-tracing } To track down issues during development, it can help to trace the properties of the request user to the application log. From a6b9bdeee1fab4c2dfc0cce7bad3b25e61027ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Thu, 20 Aug 2026 12:17:00 +0000 Subject: [PATCH 019/120] Use enumerals as default value (#2738) --- guides/services/status-flows.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/services/status-flows.md b/guides/services/status-flows.md index 2a87556c96..cfc9ec1c7d 100644 --- a/guides/services/status-flows.md +++ b/guides/services/status-flows.md @@ -65,7 +65,7 @@ This designated status element is expected to be an `enum`, with enum symbols re ```cds entity Travels { // ... - @readonly Status : TravelStatusCode default 'O'; + @readonly Status : TravelStatusCode default #Open; } ``` ```cds @@ -80,7 +80,7 @@ Alternatively, the status element can also be an association to a code list enti ```cds entity Travels { // ... - @readonly Status : Association to TravelStatus default 'O'; + @readonly Status : Association to TravelStatus default #Open; } ``` ```cds From d55b2d8036d1d31febc1f2f17e93209f30129c6e Mon Sep 17 00:00:00 2001 From: Matthias Schur <107557548+MattSchur@users.noreply.github.com> Date: Thu, 20 Aug 2026 13:45:10 +0000 Subject: [PATCH 020/120] CAP Java: tested on Postgres 15 (#2827) --- guides/databases/postgres.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/databases/postgres.md b/guides/databases/postgres.md index 1b5585855d..4ad9bf431d 100644 --- a/guides/databases/postgres.md +++ b/guides/databases/postgres.md @@ -7,7 +7,7 @@ description: > This guide focuses on the new PostgreSQL Service provided through *[@cap-js/postgres](https://www.npmjs.com/package/@cap-js/postgres)*, which is based on the same new database services architecture as the new [SQLite Service](./sqlite). -CAP Java 3 is tested on [PostgreSQL](https://www.postgresql.org/) 16 and most CAP features are supported on PostgreSQL. +CAP Java is tested on the latest [PostgreSQL](https://www.postgresql.org/) `15.x` version and most CAP features are supported. *Learn about migrating from the former `cds-pg` in the [Migration](#migration-from-cds-pg-in-nodejs) chapter.*{.learn-more} From 6ba5aed309c4a57ce87ba1fd6cb1746611e6b1a8 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Mon, 24 Aug 2026 10:17:10 +0000 Subject: [PATCH 021/120] Java: Remove outdated limitation (#2835) Switch is fixed in 5.1 and the limitation is no longer necessary. --- java/developing-applications/building.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/java/developing-applications/building.md b/java/developing-applications/building.md index 94d553d9f7..9898c44a24 100644 --- a/java/developing-applications/building.md +++ b/java/developing-applications/building.md @@ -554,10 +554,6 @@ Other options in this goal enable or disable certain features that change the wa If your entity is modelled with the [composition of aspects](../../cds/cdl#with-named-targets), the generated interfaces always reference original aspect as type for setters and getters. When this switch is enabled, the code generator uses the type generated by the compiler instead of the type of the aspect itself and will include methods to fetch keys, for example. - :::warning Limitations - This is supported only for the named aspects (inline targets are not supported) and does not respect all possible options how such entities might be exposed by services. - ::: - - [`betterNames`](../assets/cds-maven-plugin-site/generate-mojo.html#betterNames) CDS models from external sources might include elements that have some special characters in their names or include elements that clash with Java keywords. Such cases always can be solved with the [renaming features](../cds-data#renaming-elements-in-java) provided by code generator, but in case of large models, this is tedious. From 83f7317334d429fb102471cc63ba6619138a493a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 10:51:30 +0000 Subject: [PATCH 022/120] Update dependency @mdit/plugin-dl to v1.1.0 (#2821) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@mdit/plugin-dl](https://mdit-plugins.github.io/dl.html) ([source](https://redirect.github.com/mdit-plugins/mdit-plugins/tree/HEAD/packages/plugin-dl)) | [`1.0.3` → `1.1.0`](https://renovatebot.com/diffs/npm/@mdit%2fplugin-dl/1.0.3/1.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@mdit%2fplugin-dl/1.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@mdit%2fplugin-dl/1.0.3/1.1.0?slim=true) | --- ### Release Notes
mdit-plugins/mdit-plugins (@​mdit/plugin-dl) ### [`v1.1.0`](https://redirect.github.com/mdit-plugins/mdit-plugins/blob/HEAD/packages/plugin-dl/CHANGELOG.md#110-2026-08-12) [Compare Source](https://redirect.github.com/mdit-plugins/mdit-plugins/compare/@mdit/plugin-dl@1.0.3...@mdit/plugin-dl@1.1.0) ##### ✨ Features - migrate to markdown-it v15 ([5ec1171](https://redirect.github.com/mdit-plugins/mdit-plugins/commit/5ec11717eca911599782d3c0cdc389edde191b5f))
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 205 ++++++++++++++++++++++++---------------------- 1 file changed, 105 insertions(+), 100 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc0cdf6a64..6b90ff9899 100644 --- a/package-lock.json +++ b/package-lock.json @@ -434,20 +434,38 @@ "dev": true, "license": "MIT" }, + "node_modules/@mdit/helper": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mdit/helper/-/helper-1.1.0.tgz", + "integrity": "sha512-IWOUioaLobXA4ueulPfJopKaOHEGAH2pYDyK3u0cy4ItzxHXFssIJYksvdhUOC4JSHWfSjCArw41LBQdKOgFiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "markdown-it": "^15.0.0" + }, + "peerDependenciesMeta": { + "markdown-it": { + "optional": true + } + } + }, "node_modules/@mdit/plugin-dl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@mdit/plugin-dl/-/plugin-dl-1.0.3.tgz", - "integrity": "sha512-Vsjq81Zj6hGo+Ui1lXZc7cYANGBKZV54JK7Afi1tsB1k0VTJQrri9Y3Cpp6bInf0WUFLUH8W9J8z974p/Qj/qg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mdit/plugin-dl/-/plugin-dl-1.1.0.tgz", + "integrity": "sha512-A2Ov9xlzZiMXwsO3byoMN7z55U0SGto8q5ggFiW+py8dT8zoTzywnQ/uS2YIMK4zNIK6ub5akPlEFwZm2GL4Jg==", "dev": true, "license": "MIT", "dependencies": { - "@types/markdown-it": "^14.1.2" + "@mdit/helper": "1.1.0" }, "engines": { "node": ">=22" }, "peerDependencies": { - "markdown-it": "^14.2.0" + "markdown-it": "^15.0.0" }, "peerDependenciesMeta": { "markdown-it": { @@ -1283,6 +1301,46 @@ "node": ">=20" } }, + "node_modules/@shikijs/vitepress-twoslash/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@shikijs/vitepress-twoslash/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@shikijs/vitepress-twoslash/node_modules/linkify-it": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/@shikijs/vitepress-twoslash/node_modules/magic-string": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.1.0.tgz", @@ -1293,6 +1351,41 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/@shikijs/vitepress-twoslash/node_modules/markdown-it": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/@shikijs/vitepress-twoslash/node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/@shikijs/vscode-textmate": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", @@ -2073,13 +2166,6 @@ "dev": true, "license": "MIT" }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, "node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -2434,19 +2520,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", - "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/domelementtype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz", @@ -2542,13 +2615,13 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" + "node": ">=20.19.0" }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" @@ -3216,19 +3289,6 @@ "node": ">=20.19.0" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", - "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", @@ -3674,26 +3734,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/linkify-it": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", - "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3749,34 +3789,6 @@ "dev": true, "license": "MIT" }, - "node_modules/markdown-it": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", - "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.5.0", - "linkify-it": "^5.0.2", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -4047,9 +4059,9 @@ } }, "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", + "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", "dev": true, "license": "MIT" }, @@ -5491,13 +5503,6 @@ "node": ">=14.17" } }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true, - "license": "MIT" - }, "node_modules/undici-types": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", From 2bc0a1dfaaf1eb55d5df7f55385d9ccf2d4da258 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 10:51:38 +0000 Subject: [PATCH 023/120] Update dependency vite-plugin-cds to v0.3.6 (#2834) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [vite-plugin-cds](https://redirect.github.com/Akatuoro/vite-plugin-cds) | [`0.3.5` → `0.3.6`](https://renovatebot.com/diffs/npm/vite-plugin-cds/0.3.5/0.3.6) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vite-plugin-cds/0.3.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite-plugin-cds/0.3.5/0.3.6?slim=true) | --- ### Release Notes
Akatuoro/vite-plugin-cds (vite-plugin-cds) ### [`v0.3.6`](https://redirect.github.com/Akatuoro/vite-plugin-cds/releases/tag/v0.3.6) [Compare Source](https://redirect.github.com/Akatuoro/vite-plugin-cds/compare/v0.3.5...v0.3.6) Now also fully functional in workers
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b90ff9899..a88dabe351 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5723,9 +5723,9 @@ } }, "node_modules/vite-plugin-cds": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/vite-plugin-cds/-/vite-plugin-cds-0.3.5.tgz", - "integrity": "sha512-c45IMO7M36O83YL31JRFQKMeZXzPraauiuYeFiPTg4F7NZWyAa1AiNWftOzpuAV5ysbUCttlTxWcqHbxn/Gpjg==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/vite-plugin-cds/-/vite-plugin-cds-0.3.6.tgz", + "integrity": "sha512-3vtsktSwQYJ34FaFXJgy9fDDZIcx71aoIl/57s2h7c+8SEsC1i6HBLHdM+GyVjQyoLlM00XPtmXxoTgZuK7acQ==", "dev": true, "license": "MIT", "workspaces": [ From ea02bbb90e0f5406692bebe23e530472932812c5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 10:51:45 +0000 Subject: [PATCH 024/120] Update dependency sass to v1.103.1 (#2833) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [sass](https://redirect.github.com/sass/dart-sass) | [`1.102.0` → `1.103.1`](https://renovatebot.com/diffs/npm/sass/1.102.0/1.103.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/sass/1.103.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sass/1.102.0/1.103.1?slim=true) | --- ### Release Notes
sass/dart-sass (sass) ### [`v1.103.1`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#11031) [Compare Source](https://redirect.github.com/sass/dart-sass/compare/1.103.0...1.103.1) - No user-visible changes. ### [`v1.103.0`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#11030) [Compare Source](https://redirect.github.com/sass/dart-sass/compare/1.102.0...1.103.0) - **Potentially breaking compatibility fix:** Colors now preserve "analogous sets" of missing channels during conversions, per the CSS spec. For example, `color.to-space(lch(50% none none), lab)` now returns `lab(50% none none)` instead of `lab(50% 0 0)`.
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a88dabe351..528474fa86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5090,9 +5090,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.102.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.102.0.tgz", - "integrity": "sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==", + "version": "1.103.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.103.1.tgz", + "integrity": "sha512-9icZURbP51S6S0QGoyaeqk9uB06GNWxsFYWfH5RgpFgqK5FA8tJcM3AdVxrZEVJ7dz+L87nG95gBKf4VuaMHGw==", "dev": true, "license": "MIT", "dependencies": { From 4b5c8a66d75c1e37c4fa087c7d3e642443dd7ace Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 10:51:54 +0000 Subject: [PATCH 025/120] Update dependency @sap/cds to v10.0.6 (#2832) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@sap/cds](https://cap.cloud.sap/) | [`10.0.5` → `10.0.6`](https://renovatebot.com/diffs/npm/@sap%2fcds/10.0.5/10.0.6) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@sap%2fcds/10.0.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sap%2fcds/10.0.5/10.0.6?slim=true) | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 528474fa86..4e7c3f0c98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1075,9 +1075,9 @@ "license": "MIT" }, "node_modules/@sap/cds": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-10.0.5.tgz", - "integrity": "sha512-H5vTMVsznF4q24OVYkiWcReQezLOzKlVC3LBiHlrkg1D9x24V/OGWKCrCG+yd77hyIsrA2l2yxWE3RU4CElgmg==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-10.0.6.tgz", + "integrity": "sha512-7BFJoR2y59leiim6PhH7un6AVgr8lr3usSamxznVeAZp6mFHnhMQ5IU674/3Hna//1KGox03rL5OZOMpP01n+Q==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { From 96da793fb2ae1020f5aafc7807bba6e9d597c62d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 10:52:35 +0000 Subject: [PATCH 026/120] Update dependency globals to v17.11.0 (#2820) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [globals](https://redirect.github.com/sindresorhus/globals) | [`17.9.0` → `17.11.0`](https://renovatebot.com/diffs/npm/globals/17.9.0/17.11.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/globals/17.11.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/globals/17.9.0/17.11.0?slim=true) | --- ### Release Notes
sindresorhus/globals (globals) ### [`v17.11.0`](https://redirect.github.com/sindresorhus/globals/compare/v17.10.0...8c599278a68a0a6ea17b0c12f976f2270f70f391) [Compare Source](https://redirect.github.com/sindresorhus/globals/compare/v17.10.0...v17.11.0) ### [`v17.10.0`](https://redirect.github.com/sindresorhus/globals/compare/v17.9.0...7bed4af3730dcb5dbea4274b5264e6be4c4b8910) [Compare Source](https://redirect.github.com/sindresorhus/globals/compare/v17.9.0...v17.10.0)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e7c3f0c98..913eea17e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3159,9 +3159,9 @@ } }, "node_modules/globals": { - "version": "17.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.9.0.tgz", - "integrity": "sha512-m/MvAW61QVU5VDNF1Vj8axt016h8w7L5TU1e9zlab7XIttAT2YAlCwl75K1fOqvMM9apmD7lbCIRhpfkhmxhCg==", + "version": "17.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.11.0.tgz", + "integrity": "sha512-Z2I8hM+PbJDXQDq3Icgpzv+mPdwr68iZUU9d5WW4FuXfDUQfkZaZuvjMv42/5crNyw154+9+VWXbYrUgDXbxNw==", "dev": true, "license": "MIT", "engines": { From 3896ed2b5707024fd3b33b735afe0f2eefb4b2ad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 10:52:43 +0000 Subject: [PATCH 027/120] Update dependency @typescript-eslint/parser to v8.67.0 (#2818) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`8.66.0` → `8.67.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.66.0/8.67.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.67.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.66.0/8.67.0?slim=true) | --- ### Release Notes
typescript-eslint/typescript-eslint (@​typescript-eslint/parser) ### [`v8.67.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8670-2026-08-10) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.66.0...v8.67.0) This was a version bump only for parser to align it with other projects, there were no code changes. See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/capire/docs). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 68 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index 913eea17e0..84101675c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1623,16 +1623,16 @@ "license": "MIT" }, "node_modules/@typescript-eslint/parser": { - "version": "8.66.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.66.0.tgz", - "integrity": "sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==", + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.67.0.tgz", + "integrity": "sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.66.0", - "@typescript-eslint/types": "8.66.0", - "@typescript-eslint/typescript-estree": "8.66.0", - "@typescript-eslint/visitor-keys": "8.66.0", + "@typescript-eslint/scope-manager": "8.67.0", + "@typescript-eslint/types": "8.67.0", + "@typescript-eslint/typescript-estree": "8.67.0", + "@typescript-eslint/visitor-keys": "8.67.0", "debug": "^4.4.3" }, "engines": { @@ -1648,14 +1648,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.66.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.66.0.tgz", - "integrity": "sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==", + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.67.0.tgz", + "integrity": "sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.66.0", - "@typescript-eslint/types": "^8.66.0", + "@typescript-eslint/tsconfig-utils": "^8.67.0", + "@typescript-eslint/types": "^8.67.0", "debug": "^4.4.3" }, "engines": { @@ -1670,14 +1670,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.66.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.66.0.tgz", - "integrity": "sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==", + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.67.0.tgz", + "integrity": "sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.66.0", - "@typescript-eslint/visitor-keys": "8.66.0" + "@typescript-eslint/types": "8.67.0", + "@typescript-eslint/visitor-keys": "8.67.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1688,9 +1688,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.66.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.66.0.tgz", - "integrity": "sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==", + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.67.0.tgz", + "integrity": "sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==", "dev": true, "license": "MIT", "engines": { @@ -1705,9 +1705,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.66.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.66.0.tgz", - "integrity": "sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==", + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.67.0.tgz", + "integrity": "sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==", "dev": true, "license": "MIT", "engines": { @@ -1719,16 +1719,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.66.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.66.0.tgz", - "integrity": "sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==", + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.67.0.tgz", + "integrity": "sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.66.0", - "@typescript-eslint/tsconfig-utils": "8.66.0", - "@typescript-eslint/types": "8.66.0", - "@typescript-eslint/visitor-keys": "8.66.0", + "@typescript-eslint/project-service": "8.67.0", + "@typescript-eslint/tsconfig-utils": "8.67.0", + "@typescript-eslint/types": "8.67.0", + "@typescript-eslint/visitor-keys": "8.67.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -1747,13 +1747,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.66.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.66.0.tgz", - "integrity": "sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==", + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.67.0.tgz", + "integrity": "sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/types": "8.67.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { From 18607820c41907d9c340727df84040f5b2b7b9e3 Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev <131776471+vl-leon@users.noreply.github.com> Date: Mon, 24 Aug 2026 12:01:56 +0000 Subject: [PATCH 028/120] docs: clarify and refine PUT vs PATCH explanation (#2822) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rewrite the description of the PUT HTTP method for clarity and correctness. - Fix grammar error ("doesn't yet exists" -> corrected phrasing) - Condense fragmented sentences into a single, readable statement - Introduce parallel structure ("a missing resource" / "an existing one") to clearly contrast the two PUT scenarios - Preserve original meaning while improving flow and readability --------- Co-authored-by: René Jeglinsky --- node.js/cds-serve.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/node.js/cds-serve.md b/node.js/cds-serve.md index 3632940fb1..1076d41eb5 100644 --- a/node.js/cds-serve.md +++ b/node.js/cds-serve.md @@ -406,14 +406,13 @@ Be aware that using an absolute path will disallow serving the service at multip ### PATCH vs. PUT vs. Replace -The HTTP method `PATCH` is meant for partial modification of an _existing resource_. -`PUT`, on the other hand, is meant for ensuring a resource exists -, that is, if it doesn't yet exists, it gets created. -If it does exist, it gets updated to reflect the request's content. +The HTTP method `PATCH` is meant for partial modification of an _existing resource_. +`PUT`, on the other hand, ensures a resource exists: a missing resource gets created, +while an existing one gets updated with the request's content. This content, however, may be incomplete. -By default, the values for not listed keys are not touched. -The rationale being that default values are known and clients have the option to send full representations, if necessary. +By default, the values for not listed fields are not touched. +The rationale is that default values are known and clients have the option to send full representations, if necessary. The following table shows the Node.js runtime's configuration options and their respective default value: From 8c86ebe57bb502e4f503f93ae4e6b64948706b34 Mon Sep 17 00:00:00 2001 From: Lars Plessing <56645452+larsPlessing@users.noreply.github.com> Date: Wed, 26 Aug 2026 05:41:28 +0000 Subject: [PATCH 029/120] fix: close unclosed fences, containers, and add learn-more class (#2836) Fixes unclosed code fences, container blocks, and missing `.learn-more` class across docs. --- cds/cdl.md | 1 + guides/databases/initial-data.md | 2 +- guides/integration/calesi.md | 1 - guides/uis/localized-data.md | 1 + java/cqn-services/remote-services.md | 3 ++- java/migration.md | 2 +- java/working-with-cql/query-api.md | 4 ++-- node.js/authentication.md | 2 +- tools/apis/cds-add.md | 1 + 9 files changed, 10 insertions(+), 7 deletions(-) diff --git a/cds/cdl.md b/cds/cdl.md index 9487f78260..4b0dbd1957 100644 --- a/cds/cdl.md +++ b/cds/cdl.md @@ -149,6 +149,7 @@ Using directives allow to import definitions from other CDS models. As shown in ::: code-group +```cds using foo.bar.scoped.Bar from './contexts'; using foo.bar.scoped.nested from './contexts'; using foo.bar.scoped.nested as animal from './contexts'; diff --git a/guides/databases/initial-data.md b/guides/databases/initial-data.md index e7c03e04a8..3ce7308cfe 100644 --- a/guides/databases/initial-data.md +++ b/guides/databases/initial-data.md @@ -113,7 +113,7 @@ The following table describes the purpose and deployment scope of each location: ::: details Bookshop data is actually test data... Note that the initial data provided in the [_@capire/bookshop_](../../get-started/bookshop) sample is actually test data, and hence we would typically place it in the _test/data_ folder. But for simplicity, it's placed in _db/data_, also because the whole purpose of that project is to be a _sample_. -:::: +::: > [!danger] Don't let users modify productive initial data > Otherwise this [data might get overridden on SAP HANA](./hana#csv-data-gets-overridden). diff --git a/guides/integration/calesi.md b/guides/integration/calesi.md index 658e6566ed..154d6e4b5c 100644 --- a/guides/integration/calesi.md +++ b/guides/integration/calesi.md @@ -52,7 +52,6 @@ With CAP, Service integration is greatly simplified. Consumption of remote servi } }` ``` -::: The graphic below illustrates what happened here: diff --git a/guides/uis/localized-data.md b/guides/uis/localized-data.md index 15ab453d06..8c83dafb32 100644 --- a/guides/uis/localized-data.md +++ b/guides/uis/localized-data.md @@ -444,5 +444,6 @@ d2a65a27-9f2a-480f-bc38-84ee8ec5c13e,201,de,Sturmhöhe,Sturmhöhe (Originaltitel 9e1c4c81-dc90-4600-85b1-e9dd4bf12ce0,207,de,Jane Eyre,Jane Eyre. Eine Autobiographie (Originaltitel: Jane Eyre. An Autobiography)... 9be0524b-4cb9-4fc1-9dc2-d65b1c13cf53,252,de,Eleonora,Eleonora ist eine Erzählung von Edgar Allan Poe. Sie wurde 1841... ``` +::: [Learn more about Enabling Draft for Localized Data.](./fiori#draft-for-localized-data){.learn-more} diff --git a/java/cqn-services/remote-services.md b/java/cqn-services/remote-services.md index 1388ed4234..a81e45cd19 100644 --- a/java/cqn-services/remote-services.md +++ b/java/cqn-services/remote-services.md @@ -228,6 +228,7 @@ cds: name: my-ias-destination onBehalfOf: systemUser ``` +::: The following options are available: @@ -527,7 +528,7 @@ Destination destination = DestinationAccessor.getDestination("" HttpClient httpClient = HttpClientAccessor.getHttpClient(destination); ... ``` -:::: +::: ### Programmatic Destinations { #programmatic-destinations } diff --git a/java/migration.md b/java/migration.md index c047ae2373..232e051675 100644 --- a/java/migration.md +++ b/java/migration.md @@ -371,7 +371,7 @@ If you have customized the security configuration, you need to adapt it to the n Though CAP does not support multiple XSUAA bindings, it was possible in previous versions to extend the standard security configuration to work with multiple bindings. If you require this, you need to set `cds.security.xsuaa.allowMultipleBinding` to `true` so that all XSUAA bindings are available in custom spring auto-configurations. Note: CAP Java still does not process multiple bindings and requires a dedicated spring configuration. In general, applications should refrain from configuring several XSUAA bindings. [Learn more about the security configuration.](./security#xsuaa-ias){.learn-more} -[Learn more about migration to SAP´s `spring-security` library.](https://github.com/SAP/cloud-security-services-integration-library/blob/main/spring-security/Migration_SpringXsuaaProjects.md) +[Learn more about migration to SAP´s `spring-security` library.](https://github.com/SAP/cloud-security-services-integration-library/blob/main/spring-security/Migration_SpringXsuaaProjects.md){.learn-more} ### Proof-Of-Possession enforced for IAS-based authentication diff --git a/java/working-with-cql/query-api.md b/java/working-with-cql/query-api.md index 0e987657a4..944627e6e3 100644 --- a/java/working-with-cql/query-api.md +++ b/java/working-with-cql/query-api.md @@ -860,7 +860,7 @@ Aliases of columns have precedence over the element names when `orderBy` is eval ::: warning Aliases may shadow elements names. To avoid shadowing, don't use element names as aliases. -:::: +::: On SAP HANA, the user's locale is passed to the database, resulting in locale-specific sorting of string-based columns. @@ -2137,7 +2137,7 @@ Select.from("bookshop.Books").where(t -> t.get("title").matchesPattern("CAP")); ::: tip As a general rule, consider regular expressions as a last resort. They are powerful, but also complex and hard to read. For simple string operations, prefer other simpler functions like `contains`. -:::: +::: In the following example, the title of the book must start with the letter `C` and end with the letter `e` and contains any number of letters in between: diff --git a/node.js/authentication.md b/node.js/authentication.md index 8271a0b3f6..cc73c26931 100644 --- a/node.js/authentication.md +++ b/node.js/authentication.md @@ -448,7 +448,7 @@ Both caches are enabled by default. The _signature cache_ can be configured or deactivated via cds.requires.auth.config (which is passed through to `@sap/xssec`). -[Learn more about signature cache and its configuration.](https://www.npmjs.com/package/@sap/xssec#signature-cache){}.learn-more} +[Learn more about signature cache and its configuration.](https://www.npmjs.com/package/@sap/xssec#signature-cache){.learn-more} The _token decode cache_, on the other hand, can only be configured programmatically during bootstrapping, for example in a [custom `server.js`](cds-server#custom-server-js) file, as follows: ```js diff --git a/tools/apis/cds-add.md b/tools/apis/cds-add.md index 68515d73c8..d51a7d5326 100644 --- a/tools/apis/cds-add.md +++ b/tools/apis/cds-add.md @@ -90,6 +90,7 @@ Starting with 1, register the plugin: ```js [cds-plugin.js] cds.add?.register?.('postgres', require('./lib/add')) // ...or inline: cds.add?.register?.('postgres', class extends cds.add.Plugin {}) +``` ::: In our example, we'll create a file _lib/add.js_: From c53dc6483f2030aef3b2245a80494e7b8cab7efe Mon Sep 17 00:00:00 2001 From: Christian Georgi Date: Thu, 27 Aug 2026 07:41:32 +0000 Subject: [PATCH 030/120] Live queries: multiple models, smarter live JS evaluation (#2814) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Equip CQL page w/ live queries. For that, enhance bookshop model w/ Addresses+Towns. Allow showing CDS model next to query editor: Off: image On: image Use worker threads to isolate diverging/conflicting models like the one in [cql.md](https://github.com/capire/docs/blob/main/cds/cql.md#excluding-clause): - Models are registered ad-hoc with `cds model=MyModel` - Each `cds live model=MyModel` block loads the Nodejs stack, incl. `vite-plugin-cds` and the SQLite in-mem DB, in a dedicated worker thread. Workers for the same model are cached. - Sample data can be supplied with `csv hidden data=FooBarData:data/...csv` and referenced with `cds data=FooBarData`. - The data is shown as separate tabs next to the model when pressing the _Show CDS model_ button. --------- Co-authored-by: Johannes Vogt Co-authored-by: BraunMatthias <59841349+BraunMatthias@users.noreply.github.com> Co-authored-by: Mahati Shankar <93712176+smahati@users.noreply.github.com> Co-authored-by: René Jeglinsky Co-authored-by: Adrian Görler Co-authored-by: Matthias Schur <107557548+MattSchur@users.noreply.github.com> --- .vitepress/config.js | 11 +- .vitepress/lib/cds-playground/md-live-code.ts | 136 ++++- .../db/data/sap.capire.bookshop-Addresses.csv | 5 + .../db/data/sap.capire.bookshop-Authors.csv | 11 +- .../db/data/sap.capire.bookshop-Books.csv | 1 + .../db/data/sap.capire.bookshop-Towns.csv | 5 + .../templates/bookshop/db/schema.cds | 17 + .../restoreCodeGroupPreferences.js | 4 + .../lib/code-groups/useCodeGroupSync.ts | 12 + .../components/cds-playground/LiveCode.vue | 305 +++++++++--- .../cds-playground/MonacoEditor.vue | 25 +- .../components/cds-playground/cds-worker.js | 243 +++++++++ .../components/cds-playground/highlighter.js | 2 +- .../components/cds-playground/runners.js | 148 +++--- cds/cdl.md | 4 - cds/cql.md | 111 +++-- cds/cxl.md | 4 +- node.js/cds-compile.md | 181 ++++--- node.js/cds-ql.md | 62 +-- package-lock.json | 470 +++++++++++++++++- package.json | 1 + 21 files changed, 1412 insertions(+), 346 deletions(-) create mode 100644 .vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Addresses.csv create mode 100644 .vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Towns.csv create mode 100644 .vitepress/theme/components/cds-playground/cds-worker.js diff --git a/.vitepress/config.js b/.vitepress/config.js index 4ea7eac3ab..0267cb554e 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -83,7 +83,7 @@ const config = defineConfig({ head: [ ['meta', { name: 'theme-color', content: '#db8b0b' }], - ['meta', { 'http-equiv': 'Content-Security-Policy', content: "script-src 'self' https://www.capire-matomo.cloud.sap 'unsafe-inline' 'unsafe-eval'" }], + ['meta', { 'http-equiv': 'Content-Security-Policy', content: "script-src 'self' https://www.capire-matomo.cloud.sap 'unsafe-inline' 'unsafe-eval'; worker-src 'self' blob:" }], ['link', { rel: 'icon', href: base+'favicon.ico' }], ['link', { rel: 'shortcut icon', href: base+'favicon.ico' }], ['link', { rel: 'apple-touch-icon', sizes: '180x180', href: base+'logos/cap.png' }], @@ -98,6 +98,15 @@ const config = defineConfig({ build: { chunkSizeWarningLimit: 6000, // chunk for local search index dominates }, + // cds-worker.js is constructed with `type: 'module'`; match that at build time so its + // dynamic import('@sap/cds') is emitted as native ESM instead of an iife require() shim + worker: { + format: 'es', + rolldownOptions: { output: { keepNames: true, } }, + // Vite doesn't reuse the main `plugins` array for worker bundles; without vite-plugin-cds's + // node()/cap() here, the worker build misses their Node built-in shims (e.g. lazify's module.require) + plugins: () => [...playground.plugins()], + }, css: { preprocessorOptions: { scss: { diff --git a/.vitepress/lib/cds-playground/md-live-code.ts b/.vitepress/lib/cds-playground/md-live-code.ts index 022bb006f2..97689ef564 100644 --- a/.vitepress/lib/cds-playground/md-live-code.ts +++ b/.vitepress/lib/cds-playground/md-live-code.ts @@ -18,38 +18,130 @@ const __dirname = dirname(fileURLToPath(import.meta.url)) * ) * ``` * - * Additional options: - * - as : specify the language to execute the code block as (defaults to the language specified before "live") - * example: ```cds live as cql + * Options use key=value pairs; boolean flags are standalone words: + * - model=: run query against a named model defined elsewhere on the page + * example: ```cds live model=FooBar + * - result=: format the result as the given language (e.g. sql) instead of JSON + * example: ```js live result=sql + * - as=: execute the code block as a different language + * example: ```cds live as=cql * - readonly: make the code block readonly * example: ```cds live readonly + * + * Named model definitions (static, non-live): + * - ```cds model=FooBar — defines a named model; rendered as a plain code block + * - ```cds model=FooBarBoo:FooBar — extends FooBar; combined source is resolved at render time + * - ```cds model=FooBar data=FooData — attaches a named CSV data set to the model + * + * Named CSV data sets (static, non-live): + * - ```csv data=FooData:db/Foo.csv — defines a named data set; rendered as a plain code block + * - ```csv hidden data=FooData:db/Foo.csv — same, but suppressed from output (not rendered) + * + * CSV and model blocks may appear anywhere on the page — they are collected in a full token pass + * before any fence is rendered, so forward references work. */ + +interface ModelDef { source: string; csvs?: Record } + +function parseInfoKV(parts: string[]): { flags: Set; kv: Record } { + const flags = new Set() + const kv: Record = {} + for (const part of parts) { + const eq = part.indexOf('=') + if (eq === -1) flags.add(part) + else kv[part.slice(0, eq)] = part.slice(eq + 1) + } + return { flags, kv } +} + +function buildDataMap(tokens: any[]): Record> { + const result: Record> = {} + for (const token of tokens) { + if (token.type !== 'fence') continue + const parts = token.info.trim().split(/\s+/) + if (parts[0] !== 'csv') continue + const { kv } = parseInfoKV(parts.slice(1)) + if (!kv.data) continue + const colonIdx = kv.data.indexOf(':') + if (colonIdx === -1) continue + const name = kv.data.slice(0, colonIdx) + const path = kv.data.slice(colonIdx + 1) + result[name] = { [path]: token.content.trim() } + } + return result +} + +function buildModelMap(tokens: any[], dataMap: Record>): Record { + const raw: Record }> = {} + for (const token of tokens) { + if (token.type !== 'fence') continue + const parts = token.info.trim().split(/\s+/) + if (parts[0] !== 'cds') continue + const { flags, kv } = parseInfoKV(parts.slice(1)) + if (flags.has('live') || !kv.model) continue + const colonIdx = kv.model.indexOf(':') + const name = colonIdx === -1 ? kv.model : kv.model.slice(0, colonIdx) + const base = colonIdx === -1 ? undefined : kv.model.slice(colonIdx + 1) + raw[name] = { source: token.content.trim(), base, csvs: kv.data ? dataMap[kv.data] : undefined } + } + const resolved: Record = {} + function resolve(name: string): ModelDef { + if (name in resolved) return resolved[name] + const def = raw[name] + if (!def) return { source: '' } + const baseDef = def.base ? resolve(def.base) : null + const source = baseDef ? `${baseDef.source}\n${def.source}` : def.source + const csvs = def.csvs ?? baseDef?.csvs + return (resolved[name] = { source, csvs }) + } + Object.keys(raw).forEach(resolve) + return resolved +} + export function install(md: MarkdownRenderer) { if (!enabled) return const fence = md.renderer.rules.fence md.renderer.rules.fence = (tokens, idx, options, env: MarkdownEnv, ...args) => { + if (!(env as any)._modelMap) { + const dataMap = buildDataMap(tokens) + ;(env as any)._modelMap = buildModelMap(tokens, dataMap) + } const { info } = tokens[idx] - const [language, live, ...rest] = info.split(' ') - if (live === 'live') { - const mdDir = dirname(env.realPath ?? env.path) - const filePath = './' + relative(mdDir, join(__dirname, '../../theme/components/cds-playground/LiveCode.vue')) - const imp = `import LiveCode from "${filePath}";` - insertScriptSetup(env, imp) - - const opts = Object.fromEntries(['as'].map(key => { - const idx = rest.findIndex(k => k === key) - return idx > -1 ? [key, rest.splice(idx+1, 1)[0]] : []; - })) - const props = { - language: opts.as ?? language, - } - const flags = ['readonly'].filter(k => rest.includes(k)) - - const content = tokens[idx].content.trim() - return ` `${k}="${v}"`)} ${flags.join(' ')}>` + const hlMatch = info.match(/\{[\d,\-]+\}/) + const highlightSpec = hlMatch?.[0] ?? '' + const infoNormalized = info.replace(/\s*\{[\d,\-]+\}/, '').trim() + const parts = infoNormalized.split(/\s+/).filter(Boolean) + const [language = ''] = parts + const { flags, kv } = parseInfoKV(parts.slice(1)) + + // Suppress hidden CSV data blocks — content is captured in the pre-pass + if (language === 'csv' && flags.has('hidden') && kv.data) return '' + + if (!flags.has('live')) { + return fence!(tokens, idx, options, env, ...args) } - return fence!(tokens, idx, options, env, ...args) + + const mdDir = dirname(env.realPath ?? env.path) + const filePath = './' + relative(mdDir, join(__dirname, '../../theme/components/cds-playground/LiveCode.vue')) + const imp = `import LiveCode from "${filePath}";` + insertScriptSetup(env, imp) + + const modelName = kv.model ?? null + const modelDef: ModelDef | undefined = modelName ? (env as any)._modelMap[modelName] : undefined + + const props: Record = { + language: kv.as ?? language, + } + if (modelDef?.source) props.modelSource = md.utils.escapeHtml(modelDef.source) + if (modelDef?.csvs) props.modelData = md.utils.escapeHtml(JSON.stringify(modelDef.csvs)) + if (highlightSpec) props.highlightLines = highlightSpec + if (kv.result) props.resultKind = kv.result + + const liveFlags = ['readonly'].filter(k => flags.has(k)) + + const content = tokens[idx].content.trim() + return ` `${k}="${v}"`).join(' ')} ${liveFlags.join(' ')}>` } } diff --git a/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Addresses.csv b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Addresses.csv new file mode 100644 index 0000000000..bac27500cf --- /dev/null +++ b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Addresses.csv @@ -0,0 +1,5 @@ +ID,street,town_ID +1,6 Place des Vosges,1 +2,Church Street,2 +3,North Street,3 +4,King Street,4 \ No newline at end of file diff --git a/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Authors.csv b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Authors.csv index 9b418c17f2..d0f9f0c48c 100644 --- a/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Authors.csv +++ b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Authors.csv @@ -1,5 +1,6 @@ -ID,name,dateOfBirth,placeOfBirth,dateOfDeath,placeOfDeath -101,Emily Brontë,1818-07-30,"Thornton, Yorkshire",1848-12-19,"Haworth, Yorkshire" -107,Charlotte Brontë,1818-04-21,"Thornton, Yorkshire",1855-03-31,"Haworth, Yorkshire" -150,Edgar Allen Poe,1809-01-19,"Boston, Massachusetts",1849-10-07,"Baltimore, Maryland" -170,Richard Carpenter,1929-08-14,"King’s Lynn, Norfolk",2012-02-26,"Hertfordshire, England" +ID,name,dateOfBirth,placeOfBirth,dateOfDeath,placeOfDeath,address_ID +10,Victor Hugo,1802-02-26,"Besançon, Franche-Comté",1885-05-22,"Paris, Île-de-France",1 +101,Emily Brontë,1818-07-30,"Thornton, Yorkshire",1848-12-19,"Haworth, Yorkshire",2 +107,Charlotte Brontë,1818-04-21,"Thornton, Yorkshire",1855-03-31,"Haworth, Yorkshire",2 +150,Edgar Allen Poe,1809-01-19,"Boston, Massachusetts",1849-10-07,"Baltimore, Maryland",3 +170,Richard Carpenter,1929-08-14,"King’s Lynn, Norfolk",2012-02-26,"Hertfordshire, England",4 diff --git a/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Books.csv b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Books.csv index d9cc9ee2ee..87ff63081e 100644 --- a/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Books.csv +++ b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Books.csv @@ -4,3 +4,4 @@ ID,title,descr,author_ID,stock,price,currency_code,genre_ID 251,The Raven,"""The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.",150,333,13.13,USD,16aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa 252,Eleonora,"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.",150,555,14,USD,15aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa 271,Catweazle,"Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.",170,22,150,JPY,13aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa +281,Les Misérables,"Les Misérables (French pronunciation: ​[le mizeʁabl]) is a French historical novel by Victor Hugo, first published in 1862, that is considered one of the greatest novels of the 19th century. In the English-speaking world, the novel is usually referred to by its original French title, although it is sometimes translated as The Miserable Ones, The Wretched, or The Poor Ones. The story examines the nature of law and grace, and expounds upon the history of France, the architecture and urban design of Paris, politics, moral philosophy, antimonarchism, justice, religion, and the types and nature of romantic and familial love.",10,33,20.20,EUR,12aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa \ No newline at end of file diff --git a/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Towns.csv b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Towns.csv new file mode 100644 index 0000000000..882b2840a3 --- /dev/null +++ b/.vitepress/lib/cds-playground/templates/bookshop/db/data/sap.capire.bookshop-Towns.csv @@ -0,0 +1,5 @@ +ID,name,zip,country +1,Paris,75000,France +2,Thornton,NN14,UK +3,Boston,02108,USA +4,King’s Lynn,PE30,UK \ No newline at end of file diff --git a/.vitepress/lib/cds-playground/templates/bookshop/db/schema.cds b/.vitepress/lib/cds-playground/templates/bookshop/db/schema.cds index 8c510a3599..763744a288 100644 --- a/.vitepress/lib/cds-playground/templates/bookshop/db/schema.cds +++ b/.vitepress/lib/cds-playground/templates/bookshop/db/schema.cds @@ -27,6 +27,23 @@ entity Authors { age = years_between(dateOfBirth, coalesce(dateOfDeath, date( $now ))); } +extend Authors with { + address : Association to Addresses; +} + +entity Addresses { + key ID : Integer; + street : String; + town : Association to Towns; +} + +entity Towns { + key ID : Integer; + name : String; + zip : String; + country : String; +} + /** Hierarchically organized Code List for Genres */ entity Genres : cuid, sap.common.CodeList { parent : Association to Genres; diff --git a/.vitepress/lib/code-groups/restoreCodeGroupPreferences.js b/.vitepress/lib/code-groups/restoreCodeGroupPreferences.js index 1268e3823b..f7cd50bad1 100644 --- a/.vitepress/lib/code-groups/restoreCodeGroupPreferences.js +++ b/.vitepress/lib/code-groups/restoreCodeGroupPreferences.js @@ -44,6 +44,10 @@ if (tabs.length === 0) return + // Skip code groups unrelated to the OS/runtime/cloud-runtime dimensions (e.g. file-path + // tabs), otherwise they'd be forced back to their first tab on every re-init. + if (!tabs.some((tab) => getTabDimension(tab))) return // eslint-disable-line no-undef + const selectedTab = getBestTab(tabs, activeTabs) // eslint-disable-line no-undef const selectedIndex = tabs.indexOf(selectedTab) diff --git a/.vitepress/lib/code-groups/useCodeGroupSync.ts b/.vitepress/lib/code-groups/useCodeGroupSync.ts index 8efdbbd3c7..f2a9544e1a 100644 --- a/.vitepress/lib/code-groups/useCodeGroupSync.ts +++ b/.vitepress/lib/code-groups/useCodeGroupSync.ts @@ -12,6 +12,7 @@ import { addActiveTab, getActiveTabsByDimension, getBestTab, + getTabDimension, setActiveTab, tabsMatch } from './shared.js' @@ -47,6 +48,11 @@ function findCodeGroups(): CodeGroupInfo[] { function applyPreference(codeGroup: CodeGroupInfo): void { const { element, tabs } = codeGroup + + // Skip code groups unrelated to the OS/runtime/cloud-runtime dimensions (e.g. file-path + // tabs), otherwise they'd be forced back to their first tab on every re-init. + if (!tabs.some((tab) => getTabDimension(tab))) return + const selectedTab = getBestTab( tabs, getActiveTabsByDimension((window as any).__CODE_GROUP_ACTIVE_TABS__) @@ -88,6 +94,12 @@ function handleDocumentClick(event: Event): void { const tabLabel = (label.textContent || '').trim() if (!tabLabel) return + // Only tabs that belong to a recognized dimension (OS/runtime/cloud-runtime) should be + // synced across the page. Otherwise unrelated code groups sharing a "/" path segment + // (e.g. "srv/admin-service.cds" vs. "srv/cat-service.cds") get fuzzy-matched and forced + // into the wrong active tab. + if (!getTabDimension(tabLabel)) return + const clickedRect = label.getBoundingClientRect() syncTabs(tabLabel) diff --git a/.vitepress/theme/components/cds-playground/LiveCode.vue b/.vitepress/theme/components/cds-playground/LiveCode.vue index d10b51179f..582a4b9d61 100644 --- a/.vitepress/theme/components/cds-playground/LiveCode.vue +++ b/.vitepress/theme/components/cds-playground/LiveCode.vue @@ -5,7 +5,7 @@
{{ props.language === 'cds'? 'cql' : props.language }} - +
@@ -14,25 +14,36 @@
- +
+ + +
-
+
-