From 21b9a29f93ca508e3ceb57b9fcee0faec0272da7 Mon Sep 17 00:00:00 2001 From: Johannes Vogel <31311694+johannes-vogel@users.noreply.github.com> Date: Tue, 10 Feb 2026 15:56:08 +0100 Subject: [PATCH 01/78] fix: AMS documentation link in cap-users.md (#2367) @BraunMatthias Please double check whether this is the right link. The current link is broken. --------- Co-authored-by: BraunMatthias <59841349+BraunMatthias@users.noreply.github.com> --- guides/security/cap-users.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/security/cap-users.md b/guides/security/cap-users.md index f6d567da81..52d111fd41 100644 --- a/guides/security/cap-users.md +++ b/guides/security/cap-users.md @@ -257,7 +257,7 @@ Refrain from activating user tracing in productive systems. ## Role Assignment with AMS { #roles-assignment-ams } -CAP applications that use the [Identity Authentication Service (IAS)](https://help.sap.com/docs/identity-authentication) for authentication can leverage the [Authorization Management Service (AMS)](https://help.sap.com/docs/cloud-identity-services/authorization-management-service) to provide comprehensive authorization. Similar to IAS, AMS is part of the [SAP Cloud Identity Services (SCI)](https://help.sap.com/docs/cloud-identity-services). +CAP applications that use the [Identity Authentication Service (IAS)](https://help.sap.com/docs/identity-authentication) for authentication can leverage the [Authorization Management Service (AMS)](https://sap.github.io/cloud-identity-developer-guide/Authorization/GettingStarted.html) to provide comprehensive authorization. Similar to IAS, AMS is part of the [SAP Cloud Identity Services (SCI)](https://help.sap.com/docs/cloud-identity-services). Why is AMS required? Unlike tokens issued by XSUAA, IAS tokens only contain static user information and cannot directly provide CAP roles. AMS acts as a central service to define access policies that include CAP roles and additional filter criteria for instance-based authorizations in CAP applications. From 2461b3f6bf65039f6ecfc976da50f81412fb29ec Mon Sep 17 00:00:00 2001 From: ecklie <52252271+ecklie@users.noreply.github.com> Date: Wed, 11 Feb 2026 14:38:25 +0100 Subject: [PATCH 02/78] tenant-specific deployment parameters (#2379) Co-authored-by: Steffen Waldmann --- guides/multitenancy/mtxs.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/guides/multitenancy/mtxs.md b/guides/multitenancy/mtxs.md index 63894855db..ce5efd6c78 100644 --- a/guides/multitenancy/mtxs.md +++ b/guides/multitenancy/mtxs.md @@ -1296,6 +1296,12 @@ The _SaasProvisioningService_ is a façade for the _DeploymentService_ to adapt Requests are implicitly asynchronous when `status_callback` is set. ::: +##### Passing tenant-specific deployment parameters + +Using the `"_"` section of the payload, you can pass deployment parameters for an individual tenant. The syntax is identical with the [static deployment configuration of `cds.xt.DeploymentService`](#deployment-config). + +In most cases, the requests are received from a third party, so the deployment parameters need to be added in [a handler implementation](#adding-custom-lifecycle-event-handlers) for `cds.xt.SaasProvisioningService`. + ##### Example Usage
@@ -1436,7 +1442,12 @@ Content-Type: application/json { "subscribedTenantId": "t1", "subscribedSubdomain": "subdomain1", - "eventType": "CREATE" + "eventType": "CREATE", + "_": { + "hdi": { + ... + } + } } ``` From 5cf619b74f6909a18bde20612add7a20074419b5 Mon Sep 17 00:00:00 2001 From: Daniel Hutzel Date: Wed, 11 Feb 2026 14:41:22 +0100 Subject: [PATCH 03/78] fixed colors --- cds/assets/cxl/expr.drawio.svg | 817 +----------------- cds/assets/cxl/function.drawio.svg | 317 ++++--- cds/assets/cxl/infix-filter.drawio.svg | 139 +-- cds/assets/cxl/operators.drawio.svg | 613 +------------ cds/assets/cxl/ref.drawio.svg | 188 +--- .../assets/bookshop/cds-compile.drawio.svg | 253 +----- .../assets/concepts/key-concepts.drawio.svg | 2 +- 7 files changed, 196 insertions(+), 2133 deletions(-) diff --git a/cds/assets/cxl/expr.drawio.svg b/cds/assets/cxl/expr.drawio.svg index 6db3767ac2..ec58b9777e 100644 --- a/cds/assets/cxl/expr.drawio.svg +++ b/cds/assets/cxl/expr.drawio.svg @@ -1,813 +1,4 @@ - - - - - - - - - - - - - - - - - -
-
-
- path expression -
-
-
-
- - path expression - -
-
-
- - - - - - - - - - - - - - - - - -
-
-
- literal value -
-
-
-
- - literal value - -
-
-
- - - - - - - - - - - - - - - - - - - -
-
-
- infix operator -
-
-
-
- - infix operator - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - -
-
-
- function call -
-
-
-
- - function call - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - ( - -
-
-
-
- - ( - -
-
-
- - - - - - - -
-
-
- - ) - -
-
-
-
- - ) - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - -
-
-
- - , - -
-
-
-
- - , - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - -
-
-
- BETWEEN -
-
-
-
- - BETWEEN - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - -
-
-
- NOT -
-
-
-
- - NOT - -
-
-
- - - - - - - - - - - -
-
-
- AND -
-
-
-
- - AND - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - -
-
-
- THEN -
-
-
-
- - THEN - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - -
-
-
- END -
-
-
-
- - END - -
-
-
- - - - - - - - - - - -
-
-
- WHEN -
-
-
-
- - WHEN - -
-
-
- - - - - - - - - - - -
-
-
- CASE -
-
-
-
- - CASE - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- ELSE -
-
-
-
- - ELSE - -
-
-
- - - - - - - - - - - -
-
-
- prefix operator -
-
-
-
- - prefix operator - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - -
-
-
- postfix operator -
-
-
-
- - postfix operator - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - -
- - - - - Text is not SVG - cannot display - - - -
\ No newline at end of file + + + +
path expression
path expression
literal value
literal value
infix operator
infix operator
expr
expr
expr
expr
function call
function call
(
(
)
)
expr
expr
,
,
expr
expr
BETWEEN
BETWEEN
expr
expr
NOT
NOT
AND
AND
expr
expr
expr
expr
THEN
THEN
expr
expr
expr
expr
END
END
WHEN
WHEN
CASE
CASE
expr
expr
ELSE
ELSE
prefix operator
prefix operator
expr
expr
postfix operator
postfix operator
expr
expr
Text is not SVG - cannot display
\ No newline at end of file diff --git a/cds/assets/cxl/function.drawio.svg b/cds/assets/cxl/function.drawio.svg index 00d8cc1ba8..3b02ed0bdc 100644 --- a/cds/assets/cxl/function.drawio.svg +++ b/cds/assets/cxl/function.drawio.svg @@ -1,149 +1,182 @@ - + + - - - - - - - - - - - - - - - - - -
-
-
- - ( - -
-
-
-
- - ( - -
-
-
- - - - - - - -
-
-
- - ) - -
-
-
-
- - ) - -
-
-
- - - - - - - - - - - -
-
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + ( + +
+
+
+
+ + ( + +
+
+
+
+ + + + + + + + +
+
+
+ + ) + +
+
+
+
+ + ) + +
+
+
+
+ + + + + + + + + + + + + + +
+
+
+ expr +
+
+
+
+ expr -
-
-
-
- - expr - -
-
-
- - - - - - - -
-
-
- - , - -
-
-
-
- - , - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
+ + + + + + + + + + + + + +
+
+
+ + , + +
+
+
+
+ + , + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ function name +
+
+
+
+ function name -
-
-
-
- - function name - -
+ + +
+
+
diff --git a/cds/assets/cxl/infix-filter.drawio.svg b/cds/assets/cxl/infix-filter.drawio.svg index 0bebdbcdd9..97e1ca4524 100644 --- a/cds/assets/cxl/infix-filter.drawio.svg +++ b/cds/assets/cxl/infix-filter.drawio.svg @@ -1,135 +1,4 @@ - - - - - - - - - - - - - - - - - - - - -
-
-
- - [ - -
-
-
-
- - [ - -
-
-
- - - - - - - -
-
-
- - ] - -
-
-
-
- - ] - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - -
-
-
- - - where - - -
-
-
-
- - where - -
-
-
- - - - - - - - -
- - - - - Text is not SVG - cannot display - - - -
\ No newline at end of file + + + +
[
[
]
]
expr
expr
where
where
Text is not SVG - cannot display
\ No newline at end of file diff --git a/cds/assets/cxl/operators.drawio.svg b/cds/assets/cxl/operators.drawio.svg index 9fd85bb38b..4b7de24ac5 100644 --- a/cds/assets/cxl/operators.drawio.svg +++ b/cds/assets/cxl/operators.drawio.svg @@ -1,609 +1,4 @@ - - - - - - - - - - - - - - - - - - - - -
-
-
- infix operator -
-
-
-
- - infix operator - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - -
-
-
- BETWEEN -
-
-
-
- - BETWEEN - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - -
-
-
- NOT -
-
-
-
- - NOT - -
-
-
- - - - - - - - - - - -
-
-
- AND -
-
-
-
- - AND - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - -
-
-
- THEN -
-
-
-
- - THEN - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - -
-
-
- END -
-
-
-
- - END - -
-
-
- - - - - - - - - - - -
-
-
- WHEN -
-
-
-
- - WHEN - -
-
-
- - - - - - - - - - - -
-
-
- CASE -
-
-
-
- - CASE - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- ELSE -
-
-
-
- - ELSE - -
-
-
- - - - - - - - - - - -
-
-
- prefix operator -
-
-
-
- - prefix operator - -
-
-
- - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - - - - - - - - -
-
-
- postfix operator -
-
-
-
- - postfix operator - -
-
-
- - - - - - - - - - - -
-
-
- expr -
-
-
-
- - expr - -
-
-
- - - - - - - - -
- - - - - Text is not SVG - cannot display - - - -
\ No newline at end of file + + + +
infix operator
infix operator
expr
expr
expr
expr
expr
expr
BETWEEN
BETWEEN
expr
expr
NOT
NOT
AND
AND
expr
expr
expr
expr
THEN
THEN
expr
expr
expr
expr
END
END
WHEN
WHEN
CASE
CASE
expr
expr
ELSE
ELSE
prefix operator
prefix operator
expr
expr
postfix operator
postfix operator
expr
expr
Text is not SVG - cannot display
\ No newline at end of file diff --git a/cds/assets/cxl/ref.drawio.svg b/cds/assets/cxl/ref.drawio.svg index bcf926dae6..c67f582c61 100644 --- a/cds/assets/cxl/ref.drawio.svg +++ b/cds/assets/cxl/ref.drawio.svg @@ -1,184 +1,4 @@ - - - - - - - - - - - - - - -
-
-
- leaf element -
-
-
-
- - leaf element - -
-
-
- - - - - - - - - - - - - - - - - - -
-
-
- struct -
-
-
-
- - struct - -
-
-
- - - - - - - - - - - -
-
-
- association -
-
-
-
- - association - -
-
-
- - - - - - - - - - - - - - - -
-
-
- infix filter -
-
-
-
- - infix filter - -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - . - -
-
-
-
- - . - -
-
-
-
- - - - - Text is not SVG - cannot display - - - -
\ No newline at end of file + + + +
leaf element
leaf element
struct
struct
association
association
infix filter
infix filter
.
.
Text is not SVG - cannot display
\ No newline at end of file diff --git a/get-started/assets/bookshop/cds-compile.drawio.svg b/get-started/assets/bookshop/cds-compile.drawio.svg index fc3af27ff0..739d6f5547 100644 --- a/get-started/assets/bookshop/cds-compile.drawio.svg +++ b/get-started/assets/bookshop/cds-compile.drawio.svg @@ -1,249 +1,4 @@ - - - - - - - - - - -
-
-
- CDL -
-
-
-
- - CDL - -
-
-
- - - - - - - -
-
-
- human-friendly -
-
-
-
- - human-fr... - -
-
-
- - - - - - - -
-
-
- CSN -
-
-
-
- - CSN - -
-
-
- - - - - - - -
-
-
- machine-readable -
-
-
-
- - machine-... - -
-
-
- - - - - - - - -
-
-
- compile -
-
-
-
- - compile - -
-
-
- - - - - - - - -
-
-
- --to -
-
-
-
- - --to - -
-
-
- - - - - - - - - -
-
-
- YAML -
-
-
-
- - YAML - -
-
-
- - - - - - - - - -
-
-
- JSON -
-
-
-
- - JSON - -
-
-
- - - - - - - - - -
-
-
- SQL -
-
-
-
- - SQL - -
-
-
- - - - - - - - - - - - - - - - - -
-
-
-

- - ••• - -

-
-
-
-
- - ••• - -
-
-
- - - - -
- - - - - Text is not SVG - cannot display - - - -
\ No newline at end of file + + + +
CDL
CDL
human-friendly
human-fr...
CSN
CSN
machine-readable
machine-...
compile
compile
--to
--to
YAML
YAML
JSON
JSON
SQL
SQL

•••

•••
Text is not SVG - cannot display
\ No newline at end of file diff --git a/get-started/assets/concepts/key-concepts.drawio.svg b/get-started/assets/concepts/key-concepts.drawio.svg index ecd488741c..915d1b2503 100644 --- a/get-started/assets/concepts/key-concepts.drawio.svg +++ b/get-started/assets/concepts/key-concepts.drawio.svg @@ -1,4 +1,4 @@ -
declare
declare
act as
act as
implemented in
implemented in
Services
Services
Service
Models
Service...
published as 
published as 
consumed by
consumed by
Service
Interfaces
Service...
as views on 
as views on 
Facades
Facades
 are inferred to 
 are inferred to 
Domain
Models
Domain...
Service
Providers
Service...
 read / write 
 read / write 
APIs
APIs
Clients
Clients
declare
declare
declare
declare
Data
Data
declare
declare
Event
Handlers
Event...
through
through
Events
Events
declare
declare
react on
react on
handle
handle
send
send
Requests
Requests
trigger
trigger
Text is not SVG - cannot display
\ No newline at end of file +
declare
declare
act as
act as
implemented in
implemented in
Services
Services
Service
Models
Service...
published as 
published as 
consumed by
consumed by
Service
Interfaces
Service...
as views on 
as views on 
Facades
Facades
 are inferred to 
 are inferred to 
Domain
Models
Domain...
Service
Providers
Service...
 read / write 
 read / write 
APIs
APIs
Clients
Clients
declare
declare
declare
declare
Data
Data
declare
declare
Event
Handlers
Event...
through
through
Events
Events
declare
declare
react on
react on
handle
handle
send
send
Requests
Requests
trigger
trigger
Text is not SVG - cannot display
\ No newline at end of file From d7645ec25d15bd60db036edc4cf5480989d320d2 Mon Sep 17 00:00:00 2001 From: mariayord Date: Wed, 11 Feb 2026 14:41:59 +0100 Subject: [PATCH 04/78] added troubleshooting for 431 (#2373) Fixes: https://github.tools.sap/cap/cdsnode/issues/2588 --------- Co-authored-by: Johannes Vogel <31311694+johannes-vogel@users.noreply.github.com> --- get-started/get-help.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/get-started/get-help.md b/get-started/get-help.md index 81e508f39f..517febd3f4 100644 --- a/get-started/get-help.md +++ b/get-started/get-help.md @@ -166,6 +166,13 @@ Ensure that database transactions are either committed or rolled back. This can If you're using [@sap/hana-client](https://www.npmjs.com/package/@sap/hana-client), verify that the environment variable [`HDB_NODEJS_THREADPOOL_SIZE`](https://help.sap.com/docs/SAP_HANA_CLIENT/f1b440ded6144a54ada97ff95dac7adf/31a8c93a574b4f8fb6a8366d2c758f21.html?version=2.11) is adjusted appropriately. This variable specifies the amount of workers that concurrently execute asynchronous method calls for different connections. +### Why are requests rejected with `431` and not logged? + +| | Explanation | +|--------------|----------------------------------------------------------------------------------------------------------------------| +| _Root Cause_ | `431` occurs when the size of the request headers exceeds the maximum limit configured in the Node.js HTTP server. In this case, the Node.js HTTP server rejects the request during the initial parsing phase before it reaches CAP. Therefore, the request is not logged by the application. | +| _Solution_ | Inspect the request headers and check their size. If large headers are required and cannot be reduced, increase the maximum allowed HTTP header size in Node.js by setting the following environment variable `NODE_OPTIONS="--max-http-header-size=65536"` | + ### Why are requests rejected with `502`? From 8917d9b76930d4e057a9679788148a51ceed61a5 Mon Sep 17 00:00:00 2001 From: ecklie <52252271+ecklie@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:15:10 +0100 Subject: [PATCH 05/78] Hook for internal HANA TMS troubleshooting (#2377) See https://github.tools.sap/cap/docs/pull/2019 Put to the HANA section instead of MTXS? --- get-started/get-help.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/get-started/get-help.md b/get-started/get-help.md index 517febd3f4..33689a3eba 100644 --- a/get-started/get-help.md +++ b/get-started/get-help.md @@ -646,6 +646,8 @@ See [How to configure your App Router](../guides/extensibility/customization#app [Find the documentation on `cds login`](../guides/extensibility/customization#cds-login){.learn-more} +
+ ## BTP ### How do I get an account on the SAP Business Technology Platform? From ced81f811d4e3ee3bea197a7aadb591bf476f4b0 Mon Sep 17 00:00:00 2001 From: Rene Jeglinsky Date: Thu, 12 Feb 2026 13:27:31 +0100 Subject: [PATCH 06/78] remove variants hint --- tools/cds-cli.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/cds-cli.md b/tools/cds-cli.md index 45d0963c7f..0e968484ca 100644 --- a/tools/cds-cli.md +++ b/tools/cds-cli.md @@ -31,8 +31,6 @@ To use `cds` from your command line, install package `@sap/cds-dk` globally: npm i -g @sap/cds-dk ``` - - [[toc]] ## cds version From b9dbd65e28a54c9e6f07f629669a784ca85061bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jeglinsky?= Date: Thu, 12 Feb 2026 16:43:29 +0100 Subject: [PATCH 07/78] Tools/cds build: rework w/o toggling (#2391) --- tools/apis/cds-build.md | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/tools/apis/cds-build.md b/tools/apis/cds-build.md index 79bc91bdda..669b972303 100644 --- a/tools/apis/cds-build.md +++ b/tools/apis/cds-build.md @@ -142,13 +142,10 @@ cds build --for postgres > See also the command line help for further details using `cds build --help`.## Test-Run Built Projects Locally {#test-run} -
- -The artifacts deployed to the various cloud platforms are generated in the `gen/srv/` folder. So, to test the application as it runs on the cloud start your application from the `gen/srv/` folder: - -```sh -cds build # to create the build results, followed by either: +Test the application as it runs on the cloud: +::: code-group +```sh [Node.js] cd gen/srv && npx cds-serve # or: cd gen/srv && npm start @@ -156,14 +153,9 @@ cd gen/srv && npm start npx cds-serve -p gen/srv ``` -
- -
- -Use the regular command to [start a Java application](../../java/getting-started#build-and-run): - -```sh +```sh [Java] mvn spring-boot:run ``` +::: -
\ No newline at end of file +>For Node.js, you need to start the application from the the _gen/srv_ to use the result of `cds build`. Java uses that folder by default. \ No newline at end of file From 5c38f2a6394004b0c8cd7df9ad58eedba75b27ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jeglinsky?= Date: Fri, 13 Feb 2026 08:12:08 +0100 Subject: [PATCH 08/78] Fiori Guide: remove toggle (#2393) Co-authored-by: Christian Georgi --- guides/uis/fiori.md | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/guides/uis/fiori.md b/guides/uis/fiori.md index 9f004cdb37..a9252ee868 100644 --- a/guides/uis/fiori.md +++ b/guides/uis/fiori.md @@ -1,5 +1,5 @@ --- -impl-variants: true + --- # Serving SAP Fiori UIs @@ -18,23 +18,9 @@ For entities exposed via OData V4 there is a _Fiori preview_ link on the index p ::: details Be aware that this is **not meant for production**. -
- -The preview is not meant as a replacement for a proper SAP Fiori elements (UI5) application. -It is only active locally where the [development profile](../../node.js/cds-env#profiles) is enabled. - -To also enable it in cloud deployments, for test or demo purposes maybe, set cds.fiori.preview:true. - -
- -
- The preview is not meant as a replacement for a proper SAP Fiori elements (UI5) application. -It is active by default, but disabled automatically in case the [production profile](../../java/developing-applications/configuring#production-profile) is enabled. - -To also enable it in cloud deployments, for test or demo purposes maybe, set cds.index-page.enabled:true. -
+It's active by default, but disabled automatically in production. To also enable it in cloud deployments, for test or demo purposes maybe, set cds.fiori.preview:true for Node.js apps, or cds.index-page.enabled:true for Java. ::: @@ -65,7 +51,7 @@ The SAP Fiori tools provide advanced support for [adding SAP Fiori apps](https:/ ### Using [`cds add`](../../tools/cds-cli#sample) -Use `cds add sample` to add Fiori sample code to an existing project, or create a new one with `cds init --nodejs --add sample`. +Use `cds add sample` to add Fiori sample code to an existing project, or create a new Node.js project with `cds init --nodejs --add sample`. To create a Java project use `cds init --java --add sample`. ### From [Capire Samples](https://github.com/capire) @@ -812,7 +798,7 @@ You can now start the server with `cds watch` and see the hierarchical tree view ![Fiori UI with hierarchical tree view.](hierarchical-tree-view.png) {style="filter: drop-shadow(0 2px 5px rgba(0,0,0,.40));"} The compiler automatically expands the shortcut annotation `@hierarchy` to the -following `annotate` and `extend` statements. +following `annotate` and `extend` statements. ### Manual Approach From ff5cbd7a872e13354082aac2510b63f45c602bfb Mon Sep 17 00:00:00 2001 From: Johannes Vogt Date: Fri, 13 Feb 2026 08:26:45 +0100 Subject: [PATCH 09/78] fix impl variants (#2371) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I noticed that the impl-variants behavior was not quite consistent... some pages had an `ImplVariantsHint`, but no `impl-variants: true` and another page (the new remote-authentication guide) had an `ImplVariantsHint` without java or node specific sections. => add the hint and metadata where there are java or node specific sections --------- Co-authored-by: Christian Georgi Co-authored-by: René Jeglinsky --- guides/deploy/to-kyma.md | 1 + guides/security/authentication.md | 1 + guides/security/authorization.md | 1 + guides/security/cap-users.md | 1 + guides/security/remote-authentication.md | 1 - guides/services/consuming-services.md | 2 ++ guides/uis/fiori.md | 1 + tools/apis/cds-build.md | 1 + 8 files changed, 8 insertions(+), 1 deletion(-) diff --git a/guides/deploy/to-kyma.md b/guides/deploy/to-kyma.md index 1095796ba5..f083c470d8 100644 --- a/guides/deploy/to-kyma.md +++ b/guides/deploy/to-kyma.md @@ -7,6 +7,7 @@ breadcrumbs: - Deployment - Deploy to Kyma status: released +impl-variants: true # uacp: Used as link target from Help Portal at https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/29c25e504fdb4752b0383d3c407f52a6.html and https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/e4a7559baf9f4e4394302442745edcd9.html --- diff --git a/guides/security/authentication.md b/guides/security/authentication.md index 81063a3d92..93c636413f 100644 --- a/guides/security/authentication.md +++ b/guides/security/authentication.md @@ -4,6 +4,7 @@ label: Authentication synopsis: > This guide explains how to authenticate CAP services. status: released +impl-variants: true --- ', + contentStripped: '\n', + tagClose: '', + tagOpen: '', + contentStripped: '\n', + tagClose: '', + tagOpen: ' + + diff --git a/.vitepress/theme/components/cds-playground/MonacoEditor.vue b/.vitepress/theme/components/cds-playground/MonacoEditor.vue new file mode 100644 index 0000000000..f874e844d7 --- /dev/null +++ b/.vitepress/theme/components/cds-playground/MonacoEditor.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/.vitepress/theme/components/cds-playground/highlighter.js b/.vitepress/theme/components/cds-playground/highlighter.js new file mode 100644 index 0000000000..8f6fe37ad4 --- /dev/null +++ b/.vitepress/theme/components/cds-playground/highlighter.js @@ -0,0 +1,10 @@ +import { createHighlighter } from 'shiki' +import languages from '../../../languages' + +const highlighter = await createHighlighter({ + themes: ['github-dark', 'github-light'], + langs: ['javascript', 'js', 'sql', 'typescript', 'vue', ...languages], + langAlias: Object.fromEntries( languages.map(l => l.aliases?.map(alias => [alias, l.name])) ) +}) + +export default highlighter diff --git a/.vitepress/theme/components/cds-playground/monaco.js b/.vitepress/theme/components/cds-playground/monaco.js new file mode 100644 index 0000000000..ef86401165 --- /dev/null +++ b/.vitepress/theme/components/cds-playground/monaco.js @@ -0,0 +1,32 @@ +import highlighter from './highlighter' +import { shikiToMonaco } from '@shikijs/monaco' + +// no correct top-level await in Safari +async function setupMonaco() { + const [monaco, editorWorker, tsWorker] = await Promise.all([ + import('monaco-editor/esm/vs/editor/editor.api'), + import('monaco-editor/esm/vs/editor/editor.worker?worker'), + import('monaco-editor/esm/vs/language/typescript/ts.worker?worker'), + import('monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution'), + import('monaco-editor/esm/vs/language/typescript/monaco.contribution'), + import('monaco-editor/esm/vs/language/json/monaco.contribution') + ]) + + monaco.languages.register({ id: 'javascript' }) + monaco.languages.register({ id: 'js' }) + monaco.languages.register({ id: 'cds' }) + monaco.languages.register({ id: 'cql' }) + monaco.languages.register({ id: 'typescript' }) + + self.MonacoEnvironment = { + getWorker(_, label) { + if (label === 'typescript' || label === 'javascript') return new tsWorker.default() + return new editorWorker.default() + } + } + + shikiToMonaco(highlighter, monaco) + return monaco +} + +export default setupMonaco(); diff --git a/.vitepress/theme/components/cds-playground/runners.js b/.vitepress/theme/components/cds-playground/runners.js new file mode 100644 index 0000000000..0567e82347 --- /dev/null +++ b/.vitepress/theme/components/cds-playground/runners.js @@ -0,0 +1,101 @@ +function simpleSqlFormat(sql) { + return sql + .replace(/\b(select|from|where|group by|order by|having|limit|offset|join|left join|right join|inner join|outer join)\b/gi, "\n$1") + .replace(/\b(and|or)\b/gi, "\n $1") + .replace(/,\s*/g, ",\n ") + .replace(/\n{2,}/g, "\n") + .trim(); +} + +let sql; +function injectLogger(sqlite) { + const sqlLog = []; + const { prototype } = sqlite().constructor; + const { prepare : original } = prototype; + prototype.prepare = function prepare(sql) { + sqlLog.push(sql); + return original.call(this, sql); + } + + sqlLog.trace = async function trace(cb) { + sqlLog.length = 0; + const result = await cb(); + return {result, trace: [...sqlLog], formatted: sqlLog.map(simpleSqlFormat).join('\n\n-------\n')}; + } + + sql = sqlLog; + return sqlLog; +} + + +async function initialize() { + const cds = (await import('@sap/cds')).default; + const express = (await import('express')).default; + const templates = (await import('virtual:templates')).default; + const sqlite = (await import('better-sqlite3')).default; + + const { bookshop } = templates + const model = Object.fromEntries(bookshop + ?.filter(file => file.path.endsWith('.cds') || file.path.startsWith('@sap/cds')) + ?.map(file => [file.path, file.content]) ?? []) + + const csvs = Object.fromEntries(bookshop + ?.filter(f => f.path.endsWith('.csv')) + ?.map(f => [f.path, f.content]) ?? []) + + window.cds = cds + //======= compile a csn model ======= + const csn = cds.compile(model); + csn.namespace = 'sap.capire.bookshop'; + + //======= start a cds server ======= + await sqlite.initialized // wait for sqlite3-wasm to be ready (part of polyfill) + injectLogger(sqlite); + + cds.db = await cds.connect.to('db'); + await cds.deploy(csn, null, csvs).to(cds.db); + + const app = express(); + await cds.serve('all').from(csn).in(app); + + return cds; +} + +let initialized; +if (!import.meta.env.SSR) { + // runs only in the browser + initialized = initialize(); +} + +const AsyncFunction = async function () {}.constructor; +async function evalJS(code) { + await initialized; + const fn = new AsyncFunction(code); + const { result, formatted } = await sql.trace(fn); + const kind = result? 'json' : 'plaintext' + return [ + { value: result ? typeof result !== 'string' ? JSON.stringify(result, null, 2) : result : "success", kind, name: 'Result' }, + { value: formatted, kind: 'sql', name: 'SQL'} + ]; +} + +async function cdsQL(query) { + const cds = await initialized; + + const { result, formatted } = await sql.trace(() => cds.ql(query)); + return [ + { value: result, kind: 'json', name: 'Result' }, + { value: formatted, kind: 'sql', name: 'SQL'} + ]; +} + +export { + evalJS, + cdsQL, +} + +export const runners = { + js: evalJS, + cql: cdsQL, + cds: cdsQL, +} diff --git a/cds/cxl.md b/cds/cxl.md index afe238478d..fe41f9a421 100644 --- a/cds/cxl.md +++ b/cds/cxl.md @@ -25,8 +25,31 @@ For example, [a calculated element](./cdl#calculated-elements) defined in an ent to the respective calculation in the generated query when the entity is queried. ::: -In the following chapters we illustrate the `CXL` syntax based on simple and more complex examples. + +### Live Code + The language syntax is described using [syntax diagrams](https://en.wikipedia.org/wiki/Syntax_diagram). +Most of the accompanying samples are runnable directly in the browser. +Press the play button to see the result and the corresponding sql: + +```cds live +SELECT from Books { title } +``` + +You can also edit the query, making this your personal playground. + +:::info Application Context +The cds model initialized on this page is a slightly modified version of the [capire/bookshop](https://github.com/capire/bookshop). + +All samples run on a single browser-local `cds` instance, you can access it via the dev tools +or run statements in the following code block: + +```js live +await INSERT.into('Books').entries( + { ID: 2, author_ID: 150, title: 'Eldorado' } +) +``` +::: ### Trying it with `cds repl` @@ -44,12 +67,9 @@ Just create the sample app as described above and start a repl session within th cds repl --run . ``` -:::info All of the example expressions follow the same pattern: -1. A **`CXL`** is shown in the context of a query. -2. The resulting **`SQL`** is shown. +Simply use `cds.ql` to run CXL as part of a CQL query: -:::code-group -```js [CQL] +```js > await cds.ql`SELECT from Books { title }` // [!code focus] [ { title: 'Wuthering Heights' }, @@ -60,10 +80,19 @@ cds repl --run . ] ``` -```sql [SQL] -SELECT title FROM sap_capire_bookshop_Books as Books + There's also a CQL mode: + +```js +> .ql // [!code focus] +cql> select from Books { title } // [!code focus] +[ + { title: 'Wuthering Heights' }, + { title: 'Jane Eyre' }, + { title: 'The Raven' }, + { title: 'Eleonora' }, + { title: 'Catweazle' } +] ``` -::: ## Expressions (`expr`) @@ -118,25 +147,9 @@ This syntax diagram describes the possible expressions: that calculates the total value of all books in stock by multiplying the `price` with the `stock`. - :::code-group - ```js [CQL] - > await cds.ql`SELECT title, total from Books` // [!code focus] - [ - { title: 'Wuthering Heights', total: 133.32 }, - { title: 'Jane Eyre', total: 135.74 }, - { title: 'The Raven', total: 4372.29 }, - { title: 'Eleonora', total: 7770 }, - { title: 'Catweazle', total: 3300 } - ] - ``` - - ```sql [SQL] - SELECT - Books.title, - Books.price * Books.stock as total -- calculated element is resolved - FROM sap_capire_bookshop_Books as Books + ```cds live + SELECT title, total from Books ``` - ::: [Learn more about calculated elements](./cdl.md#calculated-elements){ .learn-more } @@ -223,33 +236,14 @@ This syntax diagram describes the possible expressions: Expressions can be used in various parts of a query, e.g., on the select list, in the where clause, in order by clauses, and more: - :::code-group - ```js [CQL] - > await cds.ql` - SELECT from Books { - title, - stock, - price, - price * stock as total } where price > 10` // [!code focus] - [ - { title: 'Wuthering Heights', stock: 12, price: 11.11, total: 133.32}, - { title: 'Jane Eyre', stock: 11, price: 12.34, total: 135.74 }, - { title: 'The Raven', stock: 333, price: 13.13, total: 4372.29 }, - { title: 'Eleonora', stock: 555, price: 14, total: 7770 }, - { title: 'Catweazle', stock: 22, price: 150, total: 3300 } - ] - ``` - - ```sql [SQL] - SELECT - Books.title, - Books.stock, - Books.price, - Books.price * Books.stock as total - FROM sap_capire_bookshop_Books as Books - WHERE Books.price > 10 + ```cds live + SELECT from Books { + title, + stock, + price, + price * stock as total + } where price > 10 ``` - ::: Compared to the previous example, we now use the expression directly in the query to calculate the total value of all books in stock. @@ -290,22 +284,9 @@ They typically manifest as columns in database tables. The simplest form of a `ref` references a single element: -:::code-group -```js [CQL] {1} -> await cds.ql`SELECT from Books { title }` // [!code focus] -[ - { title: 'Wuthering Heights' }, - { title: 'Jane Eyre' }, - { title: 'The Raven' }, - { title: 'Eleonora' }, - { title: 'Catweazle' } -] -``` - -```sql [SQL] -SELECT title FROM sap_capire_bookshop_Books as Books +```cds live +SELECT from Books { title } ``` -::: In this example, we select the `title` element from the `Books` entity. @@ -314,28 +295,11 @@ In this example, we select the `title` element from the `Books` entity. A path expression navigates to elements of an association's target: -:::code-group -```js [CQL] -> await cds.ql`SELECT from Books { title, author.name as author }` // [!code focus] -[ - { title: 'Wuthering Heights', author: 'Emily Brontë' }, - { title: 'Jane Eyre', author: 'Charlotte Brontë' }, - { title: 'The Raven', author: 'Edgar Allen Poe' }, - { title: 'Eleonora', author: 'Edgar Allen Poe' }, - { title: 'Catweazle', author: 'Richard Carpenter' } -] -``` - -```sql [SQL] -SELECT - title, - author.name AS author -FROM - sap_capire_bookshop_Books AS Books - LEFT JOIN sap_capire_bookshop_Authors AS author -- The table alias for association 'author' - ON author.ID = Books.author_ID; +```cds live +SELECT from Books { title, + author.name as author +} ``` -::: In this example, we select all books together with the name of their author. The association `author` defined in the `Books` entity relates a book to its author. @@ -422,29 +386,10 @@ This is especially useful for to-many relations. For example, to select all authors that have written **at least** one book: -:::code-group -```js [CQL] -> await cds.ql`SELECT from Authors { name } where exists books` // [!code focus] - -[ - { name: 'Emily Brontë' }, - { name: 'Charlotte Brontë' }, - { name: 'Edgar Allen Poe' }, - { name: 'Richard Carpenter' } -] +```cds live +SELECT from Authors { name } where exists books ``` -```sql [SQL] {3-7} -SELECT Authors.name -FROM sap_capire_bookshop_Authors as Authors -WHERE exists ( - SELECT 1 - FROM sap_capire_bookshop_Books as books - WHERE books.author_ID = Authors.ID - ) -``` -::: - [Learn more about the `exists` predicate.](./cql.md#exists-predicate){.learn-more} The `exists` predicate can be further enhanced by [combining it with infix filters](#exists-infix-filter). @@ -475,55 +420,19 @@ This allows you to filter the target of an association based on certain criteria In this example, we want to select all authors with books that have a certain stock amount. To achieve this, we can apply an infix filter to the path segment `books` in the exists predicate: -:::code-group -```js [CQL] -await cds.ql`SELECT from Authors { name } - where exists books[stock > 100]` // [!code focus] -[ { name: 'Edgar Allen Poe' } ] -``` -```sql [SQL] -SELECT - name -FROM sap_capire_bookshop_Authors as Authors -WHERE exists ( - SELECT 1 - FROM sap_capire_bookshop_Books as books - WHERE books.author_ID = Authors.ID - and books.stock > 100 -) +```cds live +SELECT from Authors { name } + where exists books[stock > 100] ``` -::: Exist predicates with infix filters can also be nested. Here we select all authors that have written at least one book in the `Fantasy` genre: -:::code-group -```js [CQL] -> await cds.ql` - SELECT from Authors { name } - where exists books[exists genre[name = 'Fantasy']]` // [!code focus] - -[ { name: 'Richard Carpenter' } ] -``` - -```sql [SQL] -SELECT - name -FROM sap_capire_bookshop_Authors as Authors -WHERE exists ( - SELECT 1 - FROM sap_capire_bookshop_Books as books - WHERE books.author_ID = Authors.ID - and exists ( - SELECT 1 - FROM sap_capire_bookshop_Genres as genre - WHERE genre.ID = books.genre_ID - and genre.name = 'Fantasy' - ) -) +```cds live +SELECT from Authors { name } + where exists books[exists genre[name = 'Fantasy']] ``` -::: ### Applied to `from` Clause @@ -533,76 +442,29 @@ Infix filters can also be applied to [path expressions in the `from` clause](./c For example, we want to get the author names of books with a price greater than 19.99. Intuitively, we can formulate a query using a condition in the `where` clause: -:::code-group -```js [CQL] -> await cds.ql`SELECT from Books { author.name as name } where price > 19.99` // [!code focus] -[ { name: 'Richard Carpenter' } ] +```cds live +SELECT from Books { author.name as name } where price > 19.99 ``` -```sql [SQL] -SELECT author.name as name -FROM sap_capire_bookshop_Books as Books -LEFT JOIN sap_capire_bookshop_Authors as author - ON author.ID = Books.author_ID -WHERE Books.price > ? -``` -::: But we can also move this condition to an infix filter: -:::code-group -```js [CQL] -> await cds.ql`SELECT from Books[price > 19.99] { author.name as name }` // [!code focus] -[ { name: 'Richard Carpenter' } ] +```cds live +SELECT from Books[price > 19.99] { author.name as name } ``` -```sql [SQL] -SELECT author.name as name -FROM sap_capire_bookshop_Books as Books - LEFT JOIN sap_capire_bookshop_Authors as author ON author.ID = Books.author_ID -WHERE Books.price > 19.99 -``` -::: - Now we can further use path navigation to navigate from the filtered books to their authors: -:::code-group -```js [CQL] -> await cds.ql`SELECT from Books[price > 19.99]:author { name }` // [!code focus] -[ { name: 'Richard Carpenter' } ] -``` - -```sql [SQL] -SELECT Authors.name -FROM sap_capire_bookshop_Authors as Authors -WHERE exists ( - SELECT 1 - FROM sap_capire_bookshop_Books as Books - WHERE Books.author_ID = Authors.ID - and Books.price > ? -) +```cds live +SELECT from Books[price > 19.99]:author { name } ``` -::: ::: info Note that the generated SQL is equivalent to querying authors with an [exists predicate](#exists-infix-filter): -:::code-group -```js [CQL] -> await cds.ql`SELECT from Authors { name } where exists books[price > 19.99]` // [!code focus] -[ { name: 'Richard Carpenter' } ] -``` - -```sql [SQL] -SELECT Authors.name -FROM sap_capire_bookshop_Authors as Authors -WHERE exists ( - SELECT 1 - FROM sap_capire_bookshop_Books as Books - WHERE Books.author_ID = Authors.ID - and Books.price > ? -) +```cds live +SELECT from Authors { name } where exists books[price > 19.99] ``` ::: @@ -613,81 +475,29 @@ another more specific association from an existing one. In the `Authors` entity in the `Books.cds` file add a new element `cheapBooks`: -```cds {2} +```cds +entity Authors { books : Association to many Books on books.author = $self; cheapBooks = books[price < 19.99]; // based on `books` association +} ``` Now we can use `cheapBooks` just like any other association. For example, to select the set of authors which have no cheap books: -:::code-group -```js [CQL] -> await cds.ql`SELECT from Authors { name } where not exists cheapBooks` // [!code focus] -[ - { name: 'Richard Carpenter' } -] -``` - -```sql [SQL] -SELECT Authors.name -FROM sap_capire_bookshop_Authors as Authors -WHERE not exists ( - SELECT 1 - FROM sap_capire_bookshop_Books as cheapBooks - WHERE (cheapBooks.author_ID = Authors.ID) - and (cheapBooks.price < 19.99) -- here the infix filter condition is applied - ) +```cds live +SELECT from Authors { name } where not exists cheapBooks ``` -::: [Learn more about association-like calculated elements.](./cdl.md#association-like-calculated-elements){ .learn-more } We can also use `cheapBooks` in nested expands to get all cheap books of each author: -::: code-group -```js [CQL] -> await cds.ql`SELECT from Authors { name, cheapBooks { title, price } }` // [!code focus] -[ - { - name: 'Emily Brontë', - cheapBooks: [ { title: 'Wuthering Heights', price: 11.11 } ] - }, - { - name: 'Charlotte Brontë', - cheapBooks: [ { title: 'Jane Eyre', price: 12.34 } ] - }, - { - name: 'Edgar Allen Poe', - cheapBooks: [ - { title: 'The Raven', price: 13.13 }, - { title: 'Eleonora', price: 14 } - ] - }, - { name: 'Richard Carpenter', cheapBooks: [] } -] +```cds live +SELECT from Authors { name, cheapBooks { title, price } } ``` -```sql [SQL] -SELECT Authors.name, -( - SELECT jsonb_group_array( - jsonb_insert('{}', '$."title"', title, '$."price"', price) - ) as _json_ - FROM ( - SELECT - Books.title, - Books.price - FROM sap_capire_bookshop_Books as Books - WHERE (Authors.ID = Books.author_ID) - and (Books.price < ?) - ) -) as cheapBooks -FROM sap_capire_bookshop_Authors as Authors -``` -::: - ### Between Path Segments @@ -701,47 +511,10 @@ extend Authors with { In this case we want to select all books but the author is only included in the result if their age is below 40: -:::code-group -```js [CQL] -> await cds.ql `SELECT from Books { title, author[age < 40].name as author }` // [!code focus] - -[ - { title: 'Wuthering Heights', author: 'Emily Brontë' }, - { title: 'Jane Eyre', author: 'Charlotte Brontë' }, - { title: 'The Raven', author: null }, - { title: 'Eleonora', author: null }, - { title: 'Catweazle', author: null } -] +```cds live +SELECT from Books { title, author[age < 40].name as author } ``` -```sql [SQL] -SELECT - title, - author.name as author -FROM - sap_capire_bookshop_Books as Books -LEFT JOIN - sap_capire_bookshop_Authors as author -ON - author.ID = Books.author_ID AND floor( - ( - ( - (cast(strftime('%Y', coalesce(author.dateOfDeath,session_context('$now'))) as Integer) - cast(strftime('%Y', author.dateOfBirth) as Integer)) * 12 - ) + ( - cast(strftime('%m', coalesce(author.dateOfDeath,session_context('$now'))) as Integer) - cast(strftime('%m', author.dateOfBirth) as Integer) - ) + ( - ( - case - when (cast(strftime('%Y%m', coalesce(author.dateOfDeath,session_context('$now'))) as Integer) < cast(strftime('%Y%m', author.dateOfBirth) as Integer)) then - (cast(strftime('%d%H%M%S%f0000', coalesce(author.dateOfDeath,session_context('$now'))) as Integer) > cast(strftime('%d%H%M%S%f0000', author.dateOfBirth) as Integer)) - else - (cast(strftime('%d%H%M%S%f0000', coalesce(author.dateOfDeath,session_context('$now'))) as Integer) < cast(strftime('%d%H%M%S%f0000', author.dateOfBirth) as Integer)) * -1 - end - ) - ) - ) / 12) < ? -``` -::: The path expression `author[ age < 40 ].name` navigates along the `author` association of the `Books` entity only if the author's age is below 40. diff --git a/package-lock.json b/package-lock.json index 3b60106312..8242f90574 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,12 @@ "devDependencies": { "@cap-js/cds-typer": "^0", "@cap-js/cds-types": "^0", + "@cap-js/sqlite": "^2.1.2", "@mdit/plugin-dl": ">=0.22.2", - "@sap/cds": "^9", + "@sap/cds": "^9.6.2", + "@shikijs/monaco": "^3.21.0", "@shikijs/vitepress-twoslash": "^3", + "@sqlite.org/sqlite-wasm": "3.51.2-build6", "@types/adm-zip": ">=0.5.0", "@types/express": "^4.17.21", "@typescript-eslint/parser": "^8.0.0", @@ -21,10 +24,14 @@ "cspell": "^9.0.0", "eslint": "^9.0.0", "eslint-plugin-vue": "^10.0.0", + "express": "^5", "fflate": "^0.8.2", "markdownlint-cli": ">=0.35.0", "markdownlint-rule-search-replace": "^1.1.1", + "monaco-editor": "^0.55.1", "sass": "^1.62.1", + "vite": "^7.3.1", + "vite-plugin-cds": "^0.1.9", "vitepress": "^1" } }, @@ -368,6 +375,33 @@ } } }, + "node_modules/@cap-js/db-service": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-2.8.2.tgz", + "integrity": "sha512-5BUWnoRX7LQBEWvEZmq0urEkxWPIIUnV9v2uFYop19W10jtmK6bxKqk+oUGD/7o6C9GNiFcZoLpja7SFohfKOg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "generic-pool": "^3.9.0" + }, + "peerDependencies": { + "@sap/cds": ">=9.4.5" + } + }, + "node_modules/@cap-js/sqlite": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-2.1.3.tgz", + "integrity": "sha512-JkIAR8khPEW0jgw440JrtOzsj+TacZmACJsifGnCWpgrC17f2q8r15pzrCnvvCmkLXTqUW1kRg5/B3nLbaO86Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@cap-js/db-service": "^2.8.2", + "better-sqlite3": "^12.0.0" + }, + "peerDependencies": { + "@sap/cds": ">=9" + } + }, "node_modules/@cspell/cspell-bundled-dicts": { "version": "9.7.0", "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.7.0.tgz", @@ -1049,9 +1083,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "cpu": [ "ppc64" ], @@ -1062,13 +1096,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "cpu": [ "arm" ], @@ -1079,13 +1113,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "cpu": [ "arm64" ], @@ -1096,13 +1130,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "cpu": [ "x64" ], @@ -1113,13 +1147,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "cpu": [ "arm64" ], @@ -1130,13 +1164,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "cpu": [ "x64" ], @@ -1147,13 +1181,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "cpu": [ "arm64" ], @@ -1164,13 +1198,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "cpu": [ "x64" ], @@ -1181,13 +1215,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "cpu": [ "arm" ], @@ -1198,13 +1232,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "cpu": [ "arm64" ], @@ -1215,13 +1249,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "cpu": [ "ia32" ], @@ -1232,13 +1266,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "cpu": [ "loong64" ], @@ -1249,13 +1283,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "cpu": [ "mips64el" ], @@ -1266,13 +1300,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "cpu": [ "ppc64" ], @@ -1283,13 +1317,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "cpu": [ "riscv64" ], @@ -1300,13 +1334,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "cpu": [ "s390x" ], @@ -1317,13 +1351,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "cpu": [ "x64" ], @@ -1334,13 +1368,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "cpu": [ "x64" ], @@ -1351,13 +1402,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "cpu": [ "x64" ], @@ -1368,13 +1436,30 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "cpu": [ "x64" ], @@ -1385,13 +1470,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "cpu": [ "arm64" ], @@ -1402,13 +1487,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "cpu": [ "ia32" ], @@ -1419,13 +1504,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "cpu": [ "x64" ], @@ -1436,7 +1521,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -2483,14 +2568,13 @@ } }, "node_modules/@sap/cds-fiori": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-2.1.1.tgz", - "integrity": "sha512-X+4v4LBAT8HIt0zr28/kJNS15nlNlcM97vAMW+agLrmK134nyBiMwUMcp8BMhxlG9B2PykrnAKH56D9O3tfoBg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-2.2.0.tgz", + "integrity": "sha512-NnvpmU40Eez5Q3SkyCCLRuBd1XUjk7N+pbXcIPIkKw4rwvqR2/FbjNveRzc8mcrLcQA3/5b/CXYsafDoozUhng==", "dev": true, "license": "SEE LICENSE IN LICENSE", "peerDependencies": { - "@sap/cds": ">=8", - "express": "^4" + "@sap/cds": ">=8" } }, "node_modules/@shikijs/core": { @@ -2539,6 +2623,18 @@ "@shikijs/types": "3.22.0" } }, + "node_modules/@shikijs/monaco": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/monaco/-/monaco-3.22.0.tgz", + "integrity": "sha512-4Bi/Gr5+ZVGmILq4ksyWtNbylfHxYB0BDMLR76UsaKOkWNJ/1w+c2s7bIjYnBNydyLVRlp28qntqEvB9EaJu3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.22.0", + "@shikijs/types": "3.22.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, "node_modules/@shikijs/themes": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.22.0.tgz", @@ -2676,6 +2772,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@sqlite.org/sqlite-wasm": { + "version": "3.51.2-build6", + "resolved": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.51.2-build6.tgz", + "integrity": "sha512-5ibsgipkqcLINZ5qNSp5KfrtL6KwiNVtwBksNO6zhTghhLmEf3/u1sPoAkgH5RzuLpMw7zi50IWgkZ0WhfqpaA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=22" + } + }, "node_modules/@types/adm-zip": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.5.7.tgz", @@ -2887,6 +2993,14 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -3063,20 +3177,6 @@ "dev": true, "license": "ISC" }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", - "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", - "vue": "^3.2.25" - } - }, "node_modules/@volar/language-core": { "version": "2.4.27", "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.27.tgz", @@ -3375,14 +3475,14 @@ } }, "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { "node": ">= 0.6" @@ -3507,13 +3607,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/array-timsort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", @@ -3528,6 +3621,52 @@ "dev": true, "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/better-sqlite3": { + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.6.2.tgz", + "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/birpc": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", @@ -3538,49 +3677,44 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/boolbase": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", @@ -3597,6 +3731,31 @@ "balanced-match": "^1.0.0" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -3748,6 +3907,13 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" + }, "node_modules/clear-module": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", @@ -3829,16 +3995,17 @@ "license": "MIT" }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/content-type": { @@ -3862,11 +4029,14 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } }, "node_modules/copy-anything": { "version": "4.0.5", @@ -4143,6 +4313,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -4180,24 +4366,12 @@ "node": ">=6" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=8" } @@ -4216,6 +4390,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/dompurify": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -4255,6 +4439,16 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -4318,9 +4512,9 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4328,32 +4522,35 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, "node_modules/escape-html": { @@ -4634,70 +4831,60 @@ "node": ">= 0.6" } }, - "node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4767,42 +4954,35 @@ "node": ">=16.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT" + }, "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -4882,15 +5062,22 @@ } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4916,6 +5103,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/gensequence": { "version": "8.0.8", "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-8.0.8.tgz", @@ -4978,6 +5175,13 @@ "node": ">= 0.4" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT" + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -5157,18 +5361,43 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -5345,6 +5574,13 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-safe-filename": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", @@ -5706,6 +5942,19 @@ "node": ">=16" } }, + "node_modules/marked": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -5959,35 +6208,28 @@ "license": "MIT" }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -6547,23 +6789,10 @@ ], "license": "MIT" }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", "engines": { @@ -6571,16 +6800,33 @@ } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/minimatch": { @@ -6623,6 +6869,24 @@ "dev": true, "license": "MIT" }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/monaco-editor": { + "version": "0.55.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.55.1.tgz", + "integrity": "sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dompurify": "3.2.7", + "marked": "14.0.0" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -6656,6 +6920,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "dev": true, + "license": "MIT" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6664,16 +6935,29 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/node-addon-api": { + "node_modules/node-abi": { + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", @@ -6727,6 +7011,16 @@ "node": ">= 0.8" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/oniguruma-parser": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", @@ -6874,11 +7168,15 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/perfect-debounce": { "version": "1.0.0", @@ -6961,6 +7259,34 @@ "url": "https://opencollective.com/preact" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6996,6 +7322,17 @@ "node": ">= 0.10" } }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -7017,9 +7354,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -7043,19 +7380,67 @@ } }, "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", + "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.10" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/readdirp": { @@ -7161,6 +7546,23 @@ "fsevents": "~2.3.2" } }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/run-con": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", @@ -7248,61 +7650,50 @@ } }, "node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/setprototypeof": { @@ -7428,6 +7819,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/smol-toml": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", @@ -7482,6 +7920,16 @@ "node": ">= 0.8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", @@ -7576,6 +8024,36 @@ "dev": true, "license": "MIT" }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -7627,6 +8105,19 @@ "typescript": ">=4.8.4" } }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/twoslash": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/twoslash/-/twoslash-0.3.6.tgz", @@ -7680,14 +8171,15 @@ } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "engines": { "node": ">= 0.6" @@ -7822,16 +8314,6 @@ "dev": true, "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -7873,21 +8355,24 @@ } }, "node_modules/vite": { - "version": "5.4.21", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", - "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -7896,19 +8381,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -7929,9 +8420,28 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, + "node_modules/vite-plugin-cds": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/vite-plugin-cds/-/vite-plugin-cds-0.1.9.tgz", + "integrity": "sha512-i28tJueb6B/BM+o2tigzSPIq99wQ5o1w+FF+fiVaSwbyrX8dwCo/288TRGwtXwZUVRDMYZHC+wneZDqpCK+wpg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "test/*" + ], + "peerDependencies": { + "@sap/cds": "^9" + } + }, "node_modules/vitepress": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.4.tgz", @@ -7974,40 +8484,431 @@ } } }, - "node_modules/vitepress/node_modules/@shikijs/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", - "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "node_modules/vitepress/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@shikijs/engine-javascript": "2.5.0", - "@shikijs/engine-oniguruma": "2.5.0", - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" } }, - "node_modules/vitepress/node_modules/@shikijs/engine-javascript": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", - "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "node_modules/vitepress/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^3.1.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/vitepress/node_modules/@shikijs/engine-oniguruma": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", - "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", - "dev": true, - "license": "MIT", - "dependencies": { + "node_modules/vitepress/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/vitepress/node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/vitepress/node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2" } @@ -8043,6 +8944,59 @@ "@types/hast": "^3.0.4" } }, + "node_modules/vitepress/node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/vitepress/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, "node_modules/vitepress/node_modules/oniguruma-to-es": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", @@ -8072,6 +9026,66 @@ "@types/hast": "^3.0.4" } }, + "node_modules/vitepress/node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", @@ -8169,6 +9183,13 @@ "node": ">=0.10.0" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", diff --git a/package.json b/package.json index 35b0dc95d2..53f5cf6c72 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,12 @@ "devDependencies": { "@cap-js/cds-typer": "^0", "@cap-js/cds-types": "^0", - "@sap/cds": "^9", + "@cap-js/sqlite": "^2.1.2", + "@mdit/plugin-dl": ">=0.22.2", + "@sap/cds": "^9.6.2", + "@shikijs/monaco": "^3.21.0", "@shikijs/vitepress-twoslash": "^3", + "@sqlite.org/sqlite-wasm": "3.51.2-build6", "@types/adm-zip": ">=0.5.0", "@types/express": "^4.17.21", "@typescript-eslint/parser": "^8.0.0", @@ -28,11 +32,14 @@ "cspell": "^9.0.0", "eslint": "^9.0.0", "eslint-plugin-vue": "^10.0.0", + "express": "^5", "fflate": "^0.8.2", - "@mdit/plugin-dl": ">=0.22.2", "markdownlint-cli": ">=0.35.0", "markdownlint-rule-search-replace": "^1.1.1", + "monaco-editor": "^0.55.1", "sass": "^1.62.1", + "vite": "^7.3.1", + "vite-plugin-cds": "^0.1.9", "vitepress": "^1" } } diff --git a/public/icons/play.svg b/public/icons/play.svg new file mode 100644 index 0000000000..51511a3d6c --- /dev/null +++ b/public/icons/play.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file From c4052e3e37b1bc1b7f4c5737f0198992300e472a Mon Sep 17 00:00:00 2001 From: Daniel Hutzel Date: Thu, 26 Feb 2026 09:58:01 +0100 Subject: [PATCH 32/78] Added npm/mvn install to cloned repos --- get-started/bookshop.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/get-started/bookshop.md b/get-started/bookshop.md index 2156f4a8f4..b97a71973a 100644 --- a/get-started/bookshop.md +++ b/get-started/bookshop.md @@ -37,9 +37,11 @@ cap/bookshop/ ::: code-group ```sh [Node.js] git clone https://github.com/capire/bookshop +npm install ``` ```sh [Java] git clone https://github.com/sap-samples/cloud-cap-samples-java bookshop +mvn install ``` ::: From 01a39f7c31efa1699c91bf099af77fd2e64e3349 Mon Sep 17 00:00:00 2001 From: Rene Jeglinsky Date: Thu, 26 Feb 2026 10:10:54 +0100 Subject: [PATCH 33/78] add redirects --- redirects.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/redirects.md b/redirects.md index 28d2033214..c724d09167 100644 --- a/redirects.md +++ b/redirects.md @@ -24,6 +24,7 @@ - [guides/deploy-to-cloud](guides/deploy/) - [guides/deployment/(.*)](guides/deploy/$1) - [guides/deployment/deploy-to-kyma](guides/deploy/to-kyma) +- [guides/deployment/to-kyma](guides/deploy/to-kyma) - [guides/domain-models](guides/domain/) - [guides/domain-modeling](guides/domain/) - [guides/dps](guides/protocols/cdi) @@ -40,11 +41,13 @@ - [guides/temporal-data](guides/domain/temporal-data) - [guides/using-services](guides/integration/calesi) - [guides/databases-hana](guides/databases/hana) +- [guides/databases-postgres](guides/databases/postgres) - [security](guides/security/) - [security/aspects](guides/security/overview) - [security/data-protection-privacy](guides/security/data-protection) - [security/overview](guides/security/overview) +- [guides/security/aspects](guides/security/overview) - [advanced/asyncapi](guides/protocols/asyncapi) - [advanced/deploy-to-cloud](guides/deploy/) @@ -57,6 +60,8 @@ - [advanced/performance-modeling](guides/databases/performance) - [advanced/publishing-apis/(.*)](guides/protocols/$1) - [advanced/troubleshooting](get-started/get-help) +- [advanced/hybrid-testing](tools/cds-bind) +- [advanced/odata](protocols/odata) ## CDS From 5dc479dc2afa3cf75f23f10bd1d70efd4dc53d7a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 12:48:55 +0000 Subject: [PATCH 34/78] chore(deps): update shiki monorepo to v3.23.0 (#2414) 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)) | [`3.22.0` → `3.23.0`](https://renovatebot.com/diffs/npm/@shikijs%2fmonaco/3.22.0/3.23.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@shikijs%2fmonaco/3.23.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@shikijs%2fmonaco/3.22.0/3.23.0?slim=true) | | [@shikijs/vitepress-twoslash](https://redirect.github.com/shikijs/shiki) ([source](https://redirect.github.com/shikijs/shiki/tree/HEAD/packages/vitepress-twoslash)) | [`3.22.0` → `3.23.0`](https://renovatebot.com/diffs/npm/@shikijs%2fvitepress-twoslash/3.22.0/3.23.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@shikijs%2fvitepress-twoslash/3.23.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@shikijs%2fvitepress-twoslash/3.22.0/3.23.0?slim=true) | --- ### Release Notes
shikijs/shiki (@​shikijs/monaco) ### [`v3.23.0`](https://redirect.github.com/shikijs/shiki/releases/tag/v3.23.0) [Compare Source](https://redirect.github.com/shikijs/shiki/compare/v3.22.0...v3.23.0) #####    🚀 Features - Update grammar and themes  -  by [@​antfu](https://redirect.github.com/antfu) [(9b4ca)](https://redirect.github.com/shikijs/shiki/commit/9b4cacac) - **cli**: - Add stdin support and list commands  -  by [@​Divyapahuja31](https://redirect.github.com/Divyapahuja31) and **DIVYA PAHUJA** in [#​1241](https://redirect.github.com/shikijs/shiki/issues/1241) [(213f1)](https://redirect.github.com/shikijs/shiki/commit/213f19bf) - **transformers**: - Add 'leading' position to transformerRenderWhitespace  -  by [@​Divyapahuja31](https://redirect.github.com/Divyapahuja31) and **DIVYA PAHUJA** in [#​1236](https://redirect.github.com/shikijs/shiki/issues/1236) [(49cbb)](https://redirect.github.com/shikijs/shiki/commit/49cbb761) - Add support for \[!code info] notation  -  by [@​Divyapahuja31](https://redirect.github.com/Divyapahuja31) and **DIVYA PAHUJA** in [#​1237](https://redirect.github.com/shikijs/shiki/issues/1237) [(cd2a6)](https://redirect.github.com/shikijs/shiki/commit/cd2a6d94) #####    🐞 Bug Fixes - Add `declare` modifier to top level declarations in `.d.ts`  -  by [@​KazariEX](https://redirect.github.com/KazariEX) in [#​1242](https://redirect.github.com/shikijs/shiki/issues/1242) [(142d5)](https://redirect.github.com/shikijs/shiki/commit/142d55c3) - **cli**: Normalize language/extension casing for CLI inputs  -  by [@​Nandann018-ux](https://redirect.github.com/Nandann018-ux) and [@​antfu](https://redirect.github.com/antfu) in [#​1245](https://redirect.github.com/shikijs/shiki/issues/1245) [(4bea1)](https://redirect.github.com/shikijs/shiki/commit/4bea1a54) #####     [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v3.22.0...v3.23.0)
--- ### Configuration 📅 **Schedule**: 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 | 238 +++++++++++++++++++++++----------------------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8242f90574..03d2a43d52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -314,13 +314,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", - "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -330,9 +330,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", - "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { @@ -2578,71 +2578,71 @@ } }, "node_modules/@shikijs/core": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.22.0.tgz", - "integrity": "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz", + "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0", + "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.22.0.tgz", - "integrity": "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz", + "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0", + "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.22.0.tgz", - "integrity": "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0", + "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.22.0.tgz", - "integrity": "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0" + "@shikijs/types": "3.23.0" } }, "node_modules/@shikijs/monaco": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/monaco/-/monaco-3.22.0.tgz", - "integrity": "sha512-4Bi/Gr5+ZVGmILq4ksyWtNbylfHxYB0BDMLR76UsaKOkWNJ/1w+c2s7bIjYnBNydyLVRlp28qntqEvB9EaJu3g==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/monaco/-/monaco-3.23.0.tgz", + "integrity": "sha512-OCApTdAGTHMFUXSYwGztW6EnlxXsWNrpnGf+uO+AznE+khC6V1/8QjuJESIcvZUIq9iAp4ZCNYosZKSVj1Hctg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "3.22.0", - "@shikijs/types": "3.22.0", + "@shikijs/core": "3.23.0", + "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/themes": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.22.0.tgz", - "integrity": "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0" + "@shikijs/types": "3.23.0" } }, "node_modules/@shikijs/transformers": { @@ -2718,14 +2718,14 @@ } }, "node_modules/@shikijs/twoslash": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-3.22.0.tgz", - "integrity": "sha512-GO27UPN+kegOMQvC+4XcLt0Mttyg+n16XKjmoKjdaNZoW+sOJV7FLdv2QKauqUDws6nE3EQPD+TFHEdyyoUBDw==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-3.23.0.tgz", + "integrity": "sha512-pNaLJWMA3LU7PhT8tm9OQBZ1epy0jmdgeJzntBtr1EVXLbHxGzTj3mnf9vOdcl84l96qnlJXkJ/NGXZYBpXl5g==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "3.22.0", - "@shikijs/types": "3.22.0", + "@shikijs/core": "3.23.0", + "@shikijs/types": "3.23.0", "twoslash": "^0.3.6" }, "peerDependencies": { @@ -2733,9 +2733,9 @@ } }, "node_modules/@shikijs/types": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.22.0.tgz", - "integrity": "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2744,25 +2744,25 @@ } }, "node_modules/@shikijs/vitepress-twoslash": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/vitepress-twoslash/-/vitepress-twoslash-3.22.0.tgz", - "integrity": "sha512-E4W4eUHmRVaWhhJO9Phor7xySwKyxMlgzqAnx3/wC9JWxTUKcsWn4gtd4zGtHF9IsrAq0JVkcGdLSx2YoY784A==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/vitepress-twoslash/-/vitepress-twoslash-3.23.0.tgz", + "integrity": "sha512-CnNsKIxxkRxRkL5+m6TNPit563TYfEEqlod8C6N1rfeZvX4xUlRrpoKyoWKmpGSNyjWWeYpMZTUH18YTTOxKfw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/twoslash": "3.22.0", + "@shikijs/twoslash": "3.23.0", "floating-vue": "^5.2.2", "lz-string": "^1.5.0", "magic-string": "^0.30.21", - "markdown-it": "^14.1.0", - "mdast-util-from-markdown": "^2.0.2", + "markdown-it": "^14.1.1", + "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": "3.22.0", + "shiki": "3.23.0", "twoslash": "^0.3.6", "twoslash-vue": "^0.3.6", - "vue": "^3.5.27" + "vue": "^3.5.29" } }, "node_modules/@shikijs/vscode-textmate": { @@ -3195,15 +3195,15 @@ "license": "MIT" }, "node_modules/@vue/compiler-core": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.27.tgz", - "integrity": "sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz", + "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/shared": "3.5.27", - "entities": "^7.0.0", + "@babel/parser": "^7.29.0", + "@vue/shared": "3.5.29", + "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } @@ -3222,28 +3222,28 @@ } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz", - "integrity": "sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", + "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-core": "3.5.29", + "@vue/shared": "3.5.29" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz", - "integrity": "sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz", + "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/compiler-core": "3.5.27", - "@vue/compiler-dom": "3.5.27", - "@vue/compiler-ssr": "3.5.27", - "@vue/shared": "3.5.27", + "@babel/parser": "^7.29.0", + "@vue/compiler-core": "3.5.29", + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.6", @@ -3251,14 +3251,14 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz", - "integrity": "sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.29.tgz", + "integrity": "sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-dom": "3.5.29", + "@vue/shared": "3.5.29" } }, "node_modules/@vue/devtools-api": { @@ -3314,57 +3314,57 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.27.tgz", - "integrity": "sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.29.tgz", + "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "3.5.27" + "@vue/shared": "3.5.29" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.27.tgz", - "integrity": "sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.29.tgz", + "integrity": "sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/reactivity": "3.5.29", + "@vue/shared": "3.5.29" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz", - "integrity": "sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.29.tgz", + "integrity": "sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.27", - "@vue/runtime-core": "3.5.27", - "@vue/shared": "3.5.27", + "@vue/reactivity": "3.5.29", + "@vue/runtime-core": "3.5.29", + "@vue/shared": "3.5.29", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.27.tgz", - "integrity": "sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.29.tgz", + "integrity": "sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29" }, "peerDependencies": { - "vue": "3.5.27" + "vue": "3.5.29" } }, "node_modules/@vue/shared": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.27.tgz", - "integrity": "sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", + "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", "dev": true, "license": "MIT" }, @@ -5788,9 +5788,9 @@ "license": "MIT" }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "dev": true, "license": "MIT", "dependencies": { @@ -5996,9 +5996,9 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -7727,18 +7727,18 @@ } }, "node_modules/shiki": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.22.0.tgz", - "integrity": "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz", + "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "3.22.0", - "@shikijs/engine-javascript": "3.22.0", - "@shikijs/engine-oniguruma": "3.22.0", - "@shikijs/langs": "3.22.0", - "@shikijs/themes": "3.22.0", - "@shikijs/types": "3.22.0", + "@shikijs/core": "3.23.0", + "@shikijs/engine-javascript": "3.23.0", + "@shikijs/engine-oniguruma": "3.23.0", + "@shikijs/langs": "3.23.0", + "@shikijs/themes": "3.23.0", + "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } @@ -9101,17 +9101,17 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.27", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz", - "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.29.tgz", + "integrity": "sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.27", - "@vue/compiler-sfc": "3.5.27", - "@vue/runtime-dom": "3.5.27", - "@vue/server-renderer": "3.5.27", - "@vue/shared": "3.5.27" + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-sfc": "3.5.29", + "@vue/runtime-dom": "3.5.29", + "@vue/server-renderer": "3.5.29", + "@vue/shared": "3.5.29" }, "peerDependencies": { "typescript": "*" From 75a6a6dc1973b197702eaf70def7741fb7de4d80 Mon Sep 17 00:00:00 2001 From: Christian Georgi Date: Thu, 26 Feb 2026 15:08:35 +0100 Subject: [PATCH 35/78] Less version changes from renovate, use variables --- .github/renovate.json | 11 +++++++++++ .vitepress/config.js | 3 ++- guides/security/cap-users.md | 6 ++++-- plugins/index.md | 5 +++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 141f5b2876..64415f15dd 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -54,5 +54,16 @@ "depNameTemplate": "com.sap.cds:cds4j-api", "datasourceTemplate": "maven", "versioningTemplate": "maven" + }, + { + "customType": "regex", + "fileMatch": [ ".vitepress/config.*" ], + "matchStrings": [ + "cloud_sec_ams\\s*:\\s*'(?.*?)'" + ], + "depNameTemplate": "com.sap.cloud.security.ams.client:cap-ams-support", + "datasourceTemplate": "maven", + "versioningTemplate": "maven" } + ]} diff --git a/.vitepress/config.js b/.vitepress/config.js index 4ea537197f..50fd2dc26a 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -124,7 +124,8 @@ if (!siteURL.pathname.endsWith('/')) siteURL.pathname += '/' config.themeConfig.capire = { versions: { java_services: '4.7.0', - java_cds4j: '4.7.0' + java_cds4j: '4.7.0', + cloud_sec_ams: '3.7.0' }, gotoLinks: [], siteURL diff --git a/guides/security/cap-users.md b/guides/security/cap-users.md index fa34951828..599467b0e7 100644 --- a/guides/security/cap-users.md +++ b/guides/security/cap-users.md @@ -8,6 +8,8 @@ impl-variants: true --- + # CAP Plugins & Enhancements Following is a curated list of plugins that are available for the SAP Cloud Application Programming Model (CAP) which provide integration with SAP BTP services and technologies, or other SAP products. From abd2372b9317ab281e748427684bc64730cf2c00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 14:18:29 +0000 Subject: [PATCH 36/78] chore(deps): update dependency com.sap.cloud.security.ams.client:cap-ams-support to v3.8.0 (#2417) 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/) | |---|---|---|---| | [com.sap.cloud.security.ams.client:cap-ams-support](https://sap.github.io/cloud-identity-developer-guide) ([source](https://redirect.github.com/SAP/cloud-identity-developer-guide)) | `3.7.0` → `3.8.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.sap.cloud.security.ams.client:cap-ams-support/3.8.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.sap.cloud.security.ams.client:cap-ams-support/3.7.0/3.8.0?slim=true) | --- ### Configuration 📅 **Schedule**: 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> --- .vitepress/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vitepress/config.js b/.vitepress/config.js index 50fd2dc26a..6378b839bf 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -125,7 +125,7 @@ config.themeConfig.capire = { versions: { java_services: '4.7.0', java_cds4j: '4.7.0', - cloud_sec_ams: '3.7.0' + cloud_sec_ams: '3.8.0' }, gotoLinks: [], siteURL From 7ae5a07c1c941f707a07dee29c2ecba079d770fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Mann?= <64193442+joergmann@users.noreply.github.com> Date: Fri, 27 Feb 2026 13:59:38 +0100 Subject: [PATCH 37/78] remove(lint): commented out section in tools/lint (#2418) --- tools/cds-lint/index.md | 63 ----------------------------------------- 1 file changed, 63 deletions(-) diff --git a/tools/cds-lint/index.md b/tools/cds-lint/index.md index 412085fc6c..2b69a3366d 100644 --- a/tools/cds-lint/index.md +++ b/tools/cds-lint/index.md @@ -77,69 +77,6 @@ The **CDS Lint** rules are a set of generic rules based on CAP best practices. [See our Rules Reference page to find out more](./rules/){ .learn-more} - - - ### ESLint CLI (optional) {#usage-eslint-cli} To have more control over the linting process, you can also access the CDS ESLint plugin natively via the [ESLint CLI](https://eslint.org/docs/user-guide/command-line-interface). To determine the proper command line options, it can help to refer to output of the equivalent call using the [CDS Lint CLI](#usage-lint-cli) with `DEBUG="lint"`, which shows all of the options and flags applied: From 91cabddcb40f2696dfd5ccaf25838d763900a43f Mon Sep 17 00:00:00 2001 From: Steffen Waldmann Date: Fri, 27 Feb 2026 15:24:04 +0100 Subject: [PATCH 38/78] Adjust `cds version` output to current format --- get-started/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/get-started/index.md b/get-started/index.md index 33a0f71fbd..dbea146d67 100644 --- a/get-started/index.md +++ b/get-started/index.md @@ -136,10 +136,10 @@ Use `cds version` to check your installed versions of _cds-dk_ , as well as your cds version ``` ```zsh - @sap/cds-dk: 9.6.1 /opt/homebrew/lib/node_modules/@sap/cds/dk - npm root -l: ~/cap/bookshop/node_modules - npm root -g: /opt/homebrew/lib/node_modules - Node.js: 24.12.0 /opt/homebrew/bin/node + @sap/cds-dk 9.6.1 /opt/homebrew/lib/node_modules/@sap/cds/dk + npm root -l ~/cap/bookshop/node_modules + npm root -g /opt/homebrew/lib/node_modules + Node.js 24.12.0 /opt/homebrew/bin/node ``` From 12990058d8b2011f8a2968550f8651f32f3e8255 Mon Sep 17 00:00:00 2001 From: ankul <116072312+kulliax@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:23:32 +0100 Subject: [PATCH 39/78] fix deprecated version in hana limitation link (#2415) --- guides/databases/hana.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/databases/hana.md b/guides/databases/hana.md index 5f1cd70cb4..4bda1e0c38 100644 --- a/guides/databases/hana.md +++ b/guides/databases/hana.md @@ -694,7 +694,7 @@ If you need to remove deployed CSV files, also add this entry: ### System Limits -All limitations for the SAP HANA Cloud database can be found in the [SAP Help Portal](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/system-limitations?version=2024_2_QRC). +All limitations for the SAP HANA Cloud database can be found in the [SAP Help Portal](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/system-limitations). ### Native Associations From 7bcc9febae744b0787aa94ee3a7b2c3c9b6fb92f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Mann?= <64193442+joergmann@users.noreply.github.com> Date: Mon, 2 Mar 2026 08:43:32 +0100 Subject: [PATCH 40/78] feat(install): setup for Windows / Linux / WSL (#2392) --- get-started/index.md | 164 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 132 insertions(+), 32 deletions(-) diff --git a/get-started/index.md b/get-started/index.md index dbea146d67..ba200b6bf9 100644 --- a/get-started/index.md +++ b/get-started/index.md @@ -12,71 +12,159 @@ Jumpstart & Grow as You Go... {.subtitle} A most minimalistic setup needs [CAP's _cds-dk_](https://www.npmjs.com/package/@sap/cds-dk) installed, which in turn requires [Node.js](https://nodejs.org). Add optional setups for [Java](https://sapmachine.io), [GitHub](https://github.com), and [Visual Studio Code](https://code.visualstudio.com), as appropriate, and as outlined below. -On macOS (and Linux), we recommend using [Homebrew](https://brew.sh), and run the commands in the subsequent sections in your terminal to get everything set up. +### Preparation -```shell -bash -c "$( curl https://raw.githubusercontent.com/homebrew/install/HEAD/install.sh )" -``` +On macOS, Linux and WSL (Windows Subsystem for Linux), we recommend using [Homebrew](https://brew.sh), and run the commands in the subsequent sections in your terminal to get everything set up. We use multiline console commands to improve usability in Windows PowerShell. PowerShell will ask for confirmation when you paste these commands, adding an extra safety step. -::: details Alternative setup (required on Windows) ... - Instead of using Homebrew – which is not available on Windows –, you can manually download and install the required packages from their respective websites: - - | Package | Install from | Remarks | - |---------|----------------------------------|---------------------------------------------------------| - | Node.js | https://nodejs.org | _required_ | - | Java | https://sapmachine.io | _optional_ | - | Git | https://git-scm.com | _optional_ | - | VS Code | https://code.visualstudio.com | + [recommended extensions](../tools/cds-editors#vscode) | - | SQLite | https://sqlite.org/download.html | _required_ on Windows | - -Then install CAP's _cds-dk_ globally: - - ```shell - npm add -g @sap/cds-dk - ``` +::: code-group +```shell [macOS] +bash -c "$( curl https://raw.githubusercontent.com/homebrew/install/HEAD/install.sh )" +``` +```shell [Linux / WSL] +# install curl (required to get Homebrew) and git (required to run Homebrew) +sudo apt install curl git -y +bash -c "$( curl https://raw.githubusercontent.com/homebrew/install/HEAD/install.sh )" +``` ::: - +### Node.js and _cds-dk_ {.required} +::: code-group +```shell [macOS / Linux / WSL] +brew install node # Node.js LTS +npm i -g @sap/cds-dk # install CAP's cds-dk globally +cds -v # check cds version +``` +```PowerShell [Windows] +winget install --silent OpenJS.NodeJS.LTS -### Node.js and _cds-dk_ {.required} +# Reload PATH from registry to access newly installed tools +$env:PATH = [Environment]::GetEnvironmentVariable("PATH","Machine") ` + + ";" + [Environment]::GetEnvironmentVariable("PATH","User") -```shell -brew install node # Node.js -npm i -g @sap/cds-dk # CAP's cds-dk +npm i -g @sap/cds-dk # install CAP's cds-dk globally +cds -v # check cds version +# done ``` +::: + +### SQLite (Windows) {.required} + +::: code-group +```PowerShell [Windows] +winget install --silent SQLite.SQLite +# Reload PATH from registry to access newly installed tools +$env:PATH = [Environment]::GetEnvironmentVariable("PATH","Machine") ` + + ";" + [Environment]::GetEnvironmentVariable("PATH","User") + +sqlite3 -version +# done +``` +::: ### Java and Maven {.optional} -```shell +::: code-group +```shell [macOS / Linux / WSL] brew install sapmachine-jdk brew install maven +mvn -version # display Maven and Java versions ``` - +```PowerShell [Windows] +winget install --silent SAP.SapMachine.25.JDK + +# Apache Maven is not available using winget so download it directly +$v="3.9.12"; ` +$url="https://dlcdn.apache.org/maven/maven-3/$v/binaries/apache-maven-$v-bin.zip"; ` +$mvnzip="$env:LOCALAPPDATA\maven.zip"; ` +curl $url -o $mvnzip; ` +tar -xf $mvnzip -C "$env:LOCALAPPDATA"; ` +setx PATH "$env:PATH;$env:LOCALAPPDATA\apache-maven-$v\bin"; ` +rm $mvnzip + +# Reload PATH from registry to access newly installed tools +$env:PATH = [Environment]::GetEnvironmentVariable("PATH","Machine") ` + + ";" + [Environment]::GetEnvironmentVariable("PATH","User") + +mvn -version # display Maven and Java versions +# done +``` +::: ### Git and GitHub {.optional} -```shell -brew install git # Git CLI -brew install gh # GitHub CLI +::: code-group +```shell [macOS / Linux / WSL] +brew install git # Git CLI (for completeness, already installed for Homebrew) +brew install gh # GitHub CLI +git -v # display Git cli version +``` +```PowerShell [Windows] +winget install --silent Git.Git +winget install --silent GitHub.cli + +# Reload PATH from registry to access newly installed tools +$env:PATH = [Environment]::GetEnvironmentVariable("PATH","Machine") ` + + ";" + [Environment]::GetEnvironmentVariable("PATH","User") + +git -v # display Git cli version +# done +``` +::: +::: code-group +```shell [macOS] brew install github # GitHub Desktop App ``` +```shell [Linux / WSL] +# Github-Desktop on Homebrew is only supported for macOS +GHD_VERSION="3.3.12" +GHD_HOST="https://github.com/shiftkey/desktop/releases/download" + +curl -L ${GHD_HOST}/release-${GHD_VERSION}-linux1/ +GitHubDesktop-linux-amd64-${GHD_VERSION}-linux1.deb -o github-desktop.deb +sudo apt install ./github-desktop.deb +rm ./github-desktop.deb +``` +```PowerShell [Windows] +winget install --silent GitHub.GitHubDesktop +``` +::: ### Visual Studio Code {.proposed} -```shell -brew install --cask visual-studio-code # VS Code itself +::: code-group +```shell [macOS] +brew install --cask visual-studio-code # VS Code itself +code -v # display VS Code's version +``` +```bash [Linux / WSL] +# VS Code on Homebrew is only supported for macOS +sudo snap install --classic code +code -v # display VS Code's version +``` +```PowerShell [Windows] +winget install --silent Microsoft.VisualStudioCode + +# Reload PATH from registry to access newly installed tools +$env:PATH = [Environment]::GetEnvironmentVariable("PATH","Machine") ` + + ";" + [Environment]::GetEnvironmentVariable("PATH","User") + +code -v # display VS Code's version +# done ``` +::: + +#### Visual Studio Code Proposed Extensions {.proposed} ```shell code --install-extension sapse.vscode-cds # for .cds models code --install-extension mechatroner.rainbow-csv # for .csv files @@ -92,6 +180,18 @@ code --install-extension vscjava.vscode-maven # for Maven > You can of course also use other IDEs or editors of your choice, such as [IntelliJ IDEA](https://www.jetbrains.com/idea/), for which we also provide [support](../tools/cds-editors#intellij). Yet we strongly recommend Visual Studio Code for the best experience with CAP. +::: details Alternative setup ... + + You can also manually download and install the required packages from their respective websites: + + | Package | Install from | Remarks | + |---------|----------------------------------|---------------------------------------------------------| + | Node.js | https://nodejs.org | _required_ | + | Java | https://sapmachine.io | _optional_ | + | Git | https://git-scm.com | _optional_ | + | VS Code | https://code.visualstudio.com | + [recommended extensions](../tools/cds-editors#vscode) | + | SQLite | https://sqlite.org/download.html | _required_ on Windows | +::: ## Command Line Interface From badc1cd426b0279d4469f0b4de8cc0729c621121 Mon Sep 17 00:00:00 2001 From: DJ Adams Date: Mon, 2 Mar 2026 12:31:42 +0000 Subject: [PATCH 41/78] Fix typo in get-help.md (#2423) --- get-started/get-help.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/get-started/get-help.md b/get-started/get-help.md index 029ff1794b..6e1b4d26e0 100644 --- a/get-started/get-help.md +++ b/get-started/get-help.md @@ -425,7 +425,7 @@ In case you want a visual interface tool to work with SQLite, you can use [SQLit ### How to get an SAP HANA Cloud instance for SAP BTP? { #get-hana} -To configure this service in the SAP BPT cockpit on trial, refer to the [SAP HANA Cloud Onboarding Guide](https://www.sap.com/documents/2021/09/7476f8c4-f77d-0010-bca6-c68f7e60039b.html). See [SAP HANA Cloud](https://help.sap.com/docs/HANA_CLOUD) documentation or visit the [SAP HANA Cloud community](https://pages.community.sap.com/topics/hana/cloud) for more details. +To configure this service in the SAP BTP cockpit on trial, refer to the [SAP HANA Cloud Onboarding Guide](https://www.sap.com/documents/2021/09/7476f8c4-f77d-0010-bca6-c68f7e60039b.html). See [SAP HANA Cloud](https://help.sap.com/docs/HANA_CLOUD) documentation or visit the [SAP HANA Cloud community](https://pages.community.sap.com/topics/hana/cloud) for more details. ::: warning HANA needs to be restarted on trial accounts On trial, your SAP HANA Cloud instance will be automatically stopped overnight, according to the server region time zone. That means you need to restart your instance every day before you start working with your trial. From 01565ee23d769dd8715aa0db69c4a2c9b38cf65a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 14:07:25 +0100 Subject: [PATCH 42/78] chore(deps): update eslint (#2397) 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.55.0` → `8.56.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.55.0/8.56.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.56.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.55.0/8.56.1?slim=true) | | [eslint](https://eslint.org) ([source](https://redirect.github.com/eslint/eslint)) | [`9.39.2` → `9.39.3`](https://renovatebot.com/diffs/npm/eslint/9.39.2/9.39.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/9.39.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.39.2/9.39.3?slim=true) | | [eslint-plugin-vue](https://eslint.vuejs.org) ([source](https://redirect.github.com/vuejs/eslint-plugin-vue)) | [`10.7.0` → `10.8.0`](https://renovatebot.com/diffs/npm/eslint-plugin-vue/10.7.0/10.8.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-vue/10.8.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-vue/10.7.0/10.8.0?slim=true) | --- ### Release Notes
typescript-eslint/typescript-eslint (@​typescript-eslint/parser) ### [`v8.56.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8561-2026-02-23) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.56.0...v8.56.1) 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.56.1) 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. ### [`v8.56.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8560-2026-02-16) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.55.0...v8.56.0) ##### 🚀 Features - support ESLint v10 ([#​12057](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12057)) ##### ❤️ Thank You - Brad Zacher [@​bradzacher](https://redirect.github.com/bradzacher) - Joshua Chen See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.56.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.
eslint/eslint (eslint) ### [`v9.39.3`](https://redirect.github.com/eslint/eslint/releases/tag/v9.39.3) [Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.39.2...v9.39.3) #### Bug Fixes - [`791bf8d`](https://redirect.github.com/eslint/eslint/commit/791bf8d7e76ce7ab8c88cb8982658823da4eff27) fix: restore TypeScript 4.0 compatibility in types ([#​20504](https://redirect.github.com/eslint/eslint/issues/20504)) (sethamus) #### Chores - [`8594a43`](https://redirect.github.com/eslint/eslint/commit/8594a436c22a0167fe3c2c4109bbdb04e519a014) chore: upgrade [@​eslint/js](https://redirect.github.com/eslint/js)@​9.39.3 ([#​20529](https://redirect.github.com/eslint/eslint/issues/20529)) (Milos Djermanovic) - [`9ceef92`](https://redirect.github.com/eslint/eslint/commit/9ceef92fbd3d1298d9a00483f86897834b88acac) chore: package.json update for [@​eslint/js](https://redirect.github.com/eslint/js) release (Jenkins) - [`af498c6`](https://redirect.github.com/eslint/eslint/commit/af498c63b9ca065223a425a85afabdcc8451e69b) chore: ignore `/docs/v9.x` in link checker ([#​20453](https://redirect.github.com/eslint/eslint/issues/20453)) (Milos Djermanovic)
vuejs/eslint-plugin-vue (eslint-plugin-vue) ### [`v10.8.0`](https://redirect.github.com/vuejs/eslint-plugin-vue/blob/HEAD/CHANGELOG.md#1080) [Compare Source](https://redirect.github.com/vuejs/eslint-plugin-vue/compare/v10.7.0...v10.8.0) ##### Minor Changes - Added [ESLint v10](https://eslint.org/blog/2026/02/eslint-v10.0.0-released/) as an allowed peer dependency (needs [`eslint-parser-vue` v10.3.0](https://redirect.github.com/vuejs/vue-eslint-parser/releases/tag/v10.3.0)) ([#​2962](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/2962)) - Added more `Promise` functions to [`vue/no-async-in-computed-properties`](https://eslint.vuejs.org/rules/no-async-in-computed-properties.html) ([#​3020](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3020)) - Added `ignoreVBindObject` option to [`vue/attributes-order`](https://eslint.vuejs.org/rules/attributes-order.html) ([#​3012](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3012)) - Added `allowEmptyAlias` option to [`vue/valid-v-for`](https://eslint.vuejs.org/rules/valid-v-for.html) ([#​3011](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3011)) - Added new `destructure: "only-when-assigned"` option to [`vue/define-props-destructuring`](https://eslint.vuejs.org/rules/define-props-destructuring.html) and changed default value from `destructure: "always"` to `destructure: "only-when-assigned"` ([#​3009](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3009)) ##### Patch Changes - Fixed [`vue/no-unused-vars`](https://eslint.vuejs.org/rules/no-unused-vars.html) to detect components passed as slot props ([#​3008](https://redirect.github.com/vuejs/eslint-plugin-vue/pull/3008))
--- ### Configuration 📅 **Schedule**: 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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] 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 | 148 +++++++++++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 61 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03d2a43d52..aa5044ebbd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1680,9 +1680,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", + "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", "dev": true, "license": "MIT", "engines": { @@ -3016,16 +3016,16 @@ "license": "MIT" }, "node_modules/@typescript-eslint/parser": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", + "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3" }, "engines": { @@ -3036,19 +3036,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", + "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.55.0", - "@typescript-eslint/types": "^8.55.0", + "@typescript-eslint/tsconfig-utils": "^8.56.1", + "@typescript-eslint/types": "^8.56.1", "debug": "^4.4.3" }, "engines": { @@ -3063,14 +3063,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3081,9 +3081,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", + "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", "dev": true, "license": "MIT", "engines": { @@ -3098,9 +3098,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", "engines": { @@ -3112,18 +3112,18 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.55.0", - "@typescript-eslint/tsconfig-utils": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3", - "minimatch": "^9.0.5", + "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" @@ -3140,14 +3140,14 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3157,6 +3157,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typescript/vfs": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.2.tgz", @@ -3722,13 +3735,26 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/buffer": { @@ -4574,9 +4600,9 @@ } }, "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", + "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", "dev": true, "license": "MIT", "dependencies": { @@ -4586,7 +4612,7 @@ "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", + "@eslint/js": "9.39.3", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -4634,9 +4660,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.7.0.tgz", - "integrity": "sha512-r2XFCK4qlo1sxEoAMIoTTX0PZAdla0JJDt1fmYiworZUX67WeEGqm+JbyAg3M+pGiJ5U6Mp5WQbontXWtIW7TA==", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.8.0.tgz", + "integrity": "sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==", "dev": true, "license": "MIT", "dependencies": { @@ -4653,7 +4679,7 @@ "peerDependencies": { "@stylistic/eslint-plugin": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "vue-eslint-parser": "^10.0.0" }, "peerDependenciesMeta": { @@ -4724,9 +4750,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6830,16 +6856,16 @@ } }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" From 94bd9f2be85bbf551e049fcb260cce2b7a43f6b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 20:00:44 +0100 Subject: [PATCH 43/78] chore(deps): update dependency vite-plugin-cds to v0.1.10 (#2421) 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.1.9` → `0.1.10`](https://renovatebot.com/diffs/npm/vite-plugin-cds/0.1.9/0.1.10) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vite-plugin-cds/0.1.10?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite-plugin-cds/0.1.9/0.1.10?slim=true) | --- ### Release Notes
Akatuoro/vite-plugin-cds (vite-plugin-cds) ### [`v0.1.10`](https://redirect.github.com/Akatuoro/vite-plugin-cds/releases/tag/v0.1.10) [Compare Source](https://redirect.github.com/Akatuoro/vite-plugin-cds/compare/v0.1.9...v0.1.10) removed `minify: false`, added manual chunks
--- ### Configuration 📅 **Schedule**: 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 aa5044ebbd..e04765025a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8456,9 +8456,9 @@ } }, "node_modules/vite-plugin-cds": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/vite-plugin-cds/-/vite-plugin-cds-0.1.9.tgz", - "integrity": "sha512-i28tJueb6B/BM+o2tigzSPIq99wQ5o1w+FF+fiVaSwbyrX8dwCo/288TRGwtXwZUVRDMYZHC+wneZDqpCK+wpg==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/vite-plugin-cds/-/vite-plugin-cds-0.1.10.tgz", + "integrity": "sha512-JXEftjXRTk8xQqSRB/mXobJPbrCE2+QIC+3nZy/UGwGlUiTimOCHTAoVhWXv+VYD/h+5HsTyXCPGE7sv64Tcnw==", "dev": true, "license": "MIT", "workspaces": [ From 21c1042d422299e50478cab548932e9f33003b6c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 12:37:16 +0100 Subject: [PATCH 44/78] chore(deps): update dependency markdownlint-cli to v0.48.0 (#2425) 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/) | |---|---|---|---| | [markdownlint-cli](https://redirect.github.com/igorshubovych/markdownlint-cli) | [`0.47.0` → `0.48.0`](https://renovatebot.com/diffs/npm/markdownlint-cli/0.47.0/0.48.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/markdownlint-cli/0.48.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/markdownlint-cli/0.47.0/0.48.0?slim=true) | --- ### Release Notes
igorshubovych/markdownlint-cli (markdownlint-cli) ### [`v0.48.0`](https://redirect.github.com/igorshubovych/markdownlint-cli/compare/v0.47.0...e72a3ca1632f0b11a07d171449fe447a7ff6795e) [Compare Source](https://redirect.github.com/igorshubovych/markdownlint-cli/compare/v0.47.0...v0.48.0)
--- ### Configuration 📅 **Schedule**: 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 | 66 +++++------------------------------------------ 1 file changed, 7 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index e04765025a..2d76efe7a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1812,29 +1812,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", @@ -5867,23 +5844,23 @@ } }, "node_modules/markdownlint-cli": { - "version": "0.47.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.47.0.tgz", - "integrity": "sha512-HOcxeKFAdDoldvoYDofd85vI8LgNWy8vmYpCwnlLV46PJcodmGzD7COSSBlhHwsfT4o9KrAStGodImVBus31Bg==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.48.0.tgz", + "integrity": "sha512-NkZQNu2E0Q5qLEEHwWj674eYISTLD4jMHkBzDobujXd1kv+yCxi8jOaD/rZoQNW1FBBMMGQpuW5So8B51N/e0A==", "dev": true, "license": "MIT", "dependencies": { - "commander": "~14.0.2", + "commander": "~14.0.3", "deep-extend": "~0.6.0", "ignore": "~7.0.5", "js-yaml": "~4.1.1", "jsonc-parser": "~3.3.1", "jsonpointer": "~5.0.1", - "markdown-it": "~14.1.0", + "markdown-it": "~14.1.1", "markdownlint": "~0.40.0", - "minimatch": "~10.1.1", + "minimatch": "~10.2.4", "run-con": "~1.3.2", - "smol-toml": "~1.5.2", + "smol-toml": "~1.6.0", "tinyglobby": "~0.2.15" }, "bin": { @@ -5903,35 +5880,6 @@ "node": ">= 4" } }, - "node_modules/markdownlint-cli/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/markdownlint-cli/node_modules/smol-toml": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", - "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, "node_modules/markdownlint-micromark": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz", From 265e4739d702a5b6b2dc3ce978c376ba463cac8e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 12:37:27 +0100 Subject: [PATCH 45/78] chore(deps): update dependency @mdit/plugin-dl to v0.23.1 (#2424) 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/dl)) | [`0.23.0` → `0.23.1`](https://renovatebot.com/diffs/npm/@mdit%2fplugin-dl/0.23.0/0.23.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@mdit%2fplugin-dl/0.23.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@mdit%2fplugin-dl/0.23.0/0.23.1?slim=true) | --- ### Release Notes
mdit-plugins/mdit-plugins (@​mdit/plugin-dl) ### [`v0.23.1`](https://redirect.github.com/mdit-plugins/mdit-plugins/blob/HEAD/packages/dl/CHANGELOG.md#0231-2026-03-02) [Compare Source](https://redirect.github.com/mdit-plugins/mdit-plugins/compare/@mdit/plugin-dl@0.23.0...@mdit/plugin-dl@0.23.1) **Note:** Version bump only for package [@​mdit/plugin-dl](https://redirect.github.com/mdit/plugin-dl)
--- ### Configuration 📅 **Schedule**: 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 2d76efe7a1..214ce843c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1820,9 +1820,9 @@ "license": "MIT" }, "node_modules/@mdit/plugin-dl": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@mdit/plugin-dl/-/plugin-dl-0.23.0.tgz", - "integrity": "sha512-l4fdMlA/bNPfnCD8cAYFFJV3Qqk7n22C5NaslfDja/ticMx3vErf+mzwS06gDQSHFd00fgyPAFWKYaVw45eGgw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@mdit/plugin-dl/-/plugin-dl-0.23.1.tgz", + "integrity": "sha512-5ldUwO81Fa9zKBMedu143R2IycGsED+BW4f9MljXUxpl/+/fw4cDvNKRDS9VD8XQsXY0+cl46mjSmtFFeCgTaA==", "dev": true, "license": "MIT", "dependencies": { From 00597c0bc16c44862d4874e77dd0cf45aea1f8a9 Mon Sep 17 00:00:00 2001 From: Christian Georgi Date: Tue, 3 Mar 2026 13:13:56 +0100 Subject: [PATCH 46/78] Troubleshooting note on HANA root cert change (#2429) This is to address the hiccups around the root cert change on CF. --- get-started/get-help.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/get-started/get-help.md b/get-started/get-help.md index 6e1b4d26e0..059f8f37bf 100644 --- a/get-started/get-help.md +++ b/get-started/get-help.md @@ -449,6 +449,16 @@ On trial, your SAP HANA Cloud instance will be automatically stopped overnight, | _Root Cause_ | An error like `Version incompatibility for the ... build plugin: "2.0.x" (installed) is incompatible with "2.0.y" (requested)` indicates that your project demands a higher version of SAP HANA than what is available in your org/space on SAP BTP, Cloud Foundry environment. The error might not occur on other landscapes for the same project. | | _Solution_ | Lower the version in file `db/src/.hdiconfig` to the one given in the error message. If you're the owner of the SAP HANA installation, ask for an upgrade of the SAP HANA instance. | +#### Deployment fails - _unable to get local issuer certificate_ {#root-cert-change} ++ _Could not connect to any host... - unable to get local issuer certificate_ ++ MTX sidecar crashes with HTTP error _429 (Too Many Requests)_ + +| | Explanation | +|--------------|--------------------------------| +| _Root Cause_ | A change of SAP's root certificate from _DigiCert Global Root CA_ to _DigiCert TLS RSA4096 Root G5_ leads to deployment failures because older certificates get rejected by too old SAP HANA driver versions and/or older service bindings in SAP HANA Cloud. | +| _Solution_ | For Node.js applications, update the `hdb` driver to the latest version. [See SAP note 3397584](https://me.sap.com/notes/3397584) for details. See the [SAP HANA blog post](https://community.sap.com/t5/technology-blog-posts-by-sap/action-required-update-your-certificate-trust-stores-for-enhanced-sap-hana/ba-p/14332703) for the broader context. | + + #### Deployment fails — _Cannot create certificate store_ {#cannot-create-certificate-store} | | Explanation | From 86379b19fa98271d2f74fabb82829a6253c25ded Mon Sep 17 00:00:00 2001 From: rashmiangadi11 Date: Tue, 3 Mar 2026 17:44:04 +0530 Subject: [PATCH 47/78] Removed external repository support (#2426) --- plugins/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/index.md b/plugins/index.md index 0b72a1b40f..99c4eff116 100644 --- a/plugins/index.md +++ b/plugins/index.md @@ -227,7 +227,6 @@ Features: - **Automated Malware Scanning for Uploaded Files**: Enhance security by automatically scanning all uploaded files for malware, ensuring the integrity and safety of your data. - **Automatic Fiori Annotations for Upload Controls**: Streamlined user interactions with automatic SAP Fiori annotations that enhance upload controls, providing a more intuitive and seamless user experience. - **Support for SAP Document Management Service-Hosted Cloud Repository**: Leverage the robust capabilities of the SAP Document Management service-hosted cloud repository to store and manage your documents efficiently. -- **Support for Third-Party CMIS-Compliant Repositories**: Integrate with third-party repositories that adhere to the Content Management Interoperability Services (CMIS) standard, offering flexibility and compatibility with various document management systems. - **Intrinsic Multitenancy Handling**: Benefit from built-in multitenancy support, allowing for efficient management of multiple tenants without additional configuration. - **Automated Onboarding and Offboarding of Repositories**: Simplify repository management with automated repository provisioning upon subscription and seamless repository removal upon unsubscription. From cc830a2c12ada1b9d7d9b70a85ccbb4c25d77a4a Mon Sep 17 00:00:00 2001 From: Johannes Vogt Date: Tue, 3 Mar 2026 19:12:43 +0100 Subject: [PATCH 48/78] Fix toggles (#2428) Fixes impl-variant toggle behavior in regards to: - layout shift on load - outline inconsistencies (both node and java headers shown on load) Good page for testing: http://localhost:5173/docs/guides/databases/postgres#deploy Chrome Performance CLS: 0.01 -> 0.00 --------- Co-authored-by: Christian Georgi --- .vitepress/config.js | 3 +- .vitepress/theme/Layout.vue | 7 ++ .../components/implvariants/ImplVariants.vue | 94 +++++++++---------- .vitepress/theme/styles.scss | 10 ++ public/script.js | 4 - 5 files changed, 62 insertions(+), 56 deletions(-) delete mode 100644 public/script.js diff --git a/.vitepress/config.js b/.vitepress/config.js index 6378b839bf..6002e30e0d 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -76,7 +76,8 @@ const config = defineConfig({ ['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' }], - ['script', { src: base+'script.js' } ] + // Inline script to restore impl-variant selection immediately (before first paint) + ['script', { id: 'check-impl-variant' }, `{const p=new URLSearchParams(location.search),v=p.get('impl-variant')||localStorage.getItem('impl-variant');if(v)document.documentElement.classList.add(v)}`] ], vite: { diff --git a/.vitepress/theme/Layout.vue b/.vitepress/theme/Layout.vue index d85b1d08bd..68c88e9f21 100644 --- a/.vitepress/theme/Layout.vue +++ b/.vitepress/theme/Layout.vue @@ -1,4 +1,5 @@