From f05bc92ce80fa8f1e673d6bdec931f41e8f38e2e Mon Sep 17 00:00:00 2001 From: Matthias Schur <107557548+MattSchur@users.noreply.github.com> Date: Wed, 29 May 2024 14:30:01 +0200 Subject: [PATCH 001/244] CAP Java `2.10.0`: Enable Fuzzy Search on SAP HANA Cloud (#324) --- pom.xml | 12 ++++++++++-- srv/src/main/resources/application.yaml | 6 +++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index cb2331c2..9eae1650 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.5 + 3.2.6 @@ -23,7 +23,7 @@ 17 - 2.9.1 + 2.10.0 5.7.0 3.5.0 3.8.3 @@ -63,6 +63,14 @@ pom import + + + + com.sap.cloud.servicesdk.xbem + emjapi-extension-sap-cp-jms + 4.0.0 + + diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 85f4707b..b956b4b6 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -47,7 +47,11 @@ spring: config.activate.on-profile: cloud sql.init.schema-locations: "classpath:schema-nomocks.sql" cds: - sql.hana.optimizationMode: hex + sql.hana: + optimizationMode: hex + search: + fuzzy: true + fuzzinessThreshold: 0.9 messaging.services: bupa-messaging: kind: enterprise-messaging From edcbe96ec6a5f768e888f9289fd2b4fffcf62024 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 5 Jun 2024 10:30:28 +0200 Subject: [PATCH 002/244] Add change tracking (#327) Adds change tracking for orders in the admin view. Bumps Fiori version. --- app/fiori.html | 4 ++-- app/orders/fiori-service.cds | 20 +++++++++++++++----- mtx/sidecar/package.json | 3 +++ srv/admin-service.cds | 23 +++++++++++++++++++++++ srv/pom.xml | 6 ++++++ 5 files changed, 49 insertions(+), 7 deletions(-) diff --git a/app/fiori.html b/app/fiori.html index 5864648a..2ddf95f8 100644 --- a/app/fiori.html +++ b/app/fiori.html @@ -14,8 +14,8 @@ }; - - + - - + - - + - - + + + +
+ + diff --git a/app/genres/webapp/manifest.json b/app/genres/webapp/manifest.json new file mode 100644 index 00000000..ab4a7d46 --- /dev/null +++ b/app/genres/webapp/manifest.json @@ -0,0 +1,129 @@ +{ + "_version": "1.8.0", + "sap.app": { + "id": "genres", + "type": "application", + "title": "{{appTitle}}", + "description": "{{appDescription}}", + "applicationVersion": { + "version": "1.0.0" + }, + "dataSources": { + "AdminService": { + "uri": "/api/admin/", + "type": "OData", + "settings": { + "odataVersion": "4.0" + } + } + }, + "-sourceTemplate": { + "id": "ui5template.basicSAPUI5ApplicationProject", + "-id": "ui5template.smartTemplate", + "-version": "1.40.12" + }, + "crossNavigation": { + "inbounds": { + "Genres-show": { + "signature": { + "parameters": {}, + "additionalParameters": "allowed" + }, + "semanticObject": "GenreHierarchy", + "action": "show" + } + } + } + }, + "sap.ui5": { + "dependencies": { + "minUI5Version": "1.122.0", + "libs": { + "sap.fe.templates": {} + } + }, + "models": { + "i18n": { + "type": "sap.ui.model.resource.ResourceModel", + "uri": "i18n/i18n.properties" + }, + "": { + "dataSource": "AdminService", + "settings": { + "synchronizationMode": "None", + "operationMode": "Server", + "autoExpandSelect" : true, + "earlyRequests": true, + "groupProperties": { + "default": { + "submit": "Auto" + } + } + } + } + }, + "routing": { + "routes": [ + { + "pattern": ":?query:", + "name": "GenreHierarchyList", + "target": "GenreHierarchyList" + }, + { + "pattern": "GenreHierarchy({key}):?query:", + "name": "GenreHierarchyDetails", + "target": "GenreHierarchyDetails" + } + ], + "targets": { + "GenreHierarchyList": { + "type": "Component", + "id": "GenreHierarchyList", + "name": "sap.fe.templates.ListReport", + "options": { + "settings" : { + "entitySet" : "GenreHierarchy", + "navigation" : { + "GenreHierarchy" : { + "detail" : { + "route" : "GenreHierarchyDetails" + } + } + }, + "controlConfiguration": { + "@com.sap.vocabularies.UI.v1.LineItem": { + "tableSettings": { + "hierarchyQualifier": "GenreHierarchy", + "type": "TreeTable" + } + } + } + } + } + }, + "GenreHierarchyDetails": { + "type": "Component", + "id": "GenreHierarchyDetails", + "name": "sap.fe.templates.ObjectPage", + "options": { + "settings" : { + "entitySet": "GenreHierarchy" + } + } + } + } + }, + "contentDensities": { + "compact": true, + "cozy": true + } + }, + "sap.ui": { + "technology": "UI5", + "fullWidth": false + }, + "sap.fiori": { + "registrationIds": [], + "archeType": "transactional" + } +} diff --git a/app/index.cds b/app/index.cds index dcbf40e5..0c07c888 100644 --- a/app/index.cds +++ b/app/index.cds @@ -8,4 +8,5 @@ using from './orders/fiori-service'; using from './reviews/fiori-service'; using from './notes/fiori-service'; using from './addresses/fiori-service'; +using from './genres/fiori-service'; using from './common'; diff --git a/app/xs-app.json b/app/xs-app.json index f6adf5a4..4facc67d 100644 --- a/app/xs-app.json +++ b/app/xs-app.json @@ -2,77 +2,82 @@ "welcomeFile": "/app/fiori.html", "authenticationMethod": "route", "routes": [ - { - "source": "^/app/(.*)$", - "cacheControl": "no-cache, no-store, must-revalidate", - "target": "$1", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/appconfig/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/browse/webapp/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/admin/webapp/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/orders/webapp/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/reviews/webapp/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/notes/webapp/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/addresses/webapp/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/vue/(.*)$", - "localDir": "./", - "authenticationType": "xsuaa" - }, - { - "source": "^/api/admin/(.*)", - "authenticationType": "xsuaa", - "destination": "backend" - }, - { - "source": "^/api/browse/(.*)", - "authenticationType": "xsuaa", - "destination": "backend" - }, - { - "source": "^/api/review/(.*)", - "authenticationType": "xsuaa", - "destination": "backend" - }, - { - "source": "^/api/notes/(.*)", - "authenticationType": "xsuaa", - "destination": "backend" - }, - { - "source": "^/api/(.*)$", - "authenticationType": "none", - "destination": "backend" - } + { + "source": "^/app/(.*)$", + "cacheControl": "no-cache, no-store, must-revalidate", + "target": "$1", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/appconfig/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/browse/webapp/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/admin/webapp/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/orders/webapp/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/genres/webapp/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/reviews/webapp/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/notes/webapp/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/addresses/webapp/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/vue/(.*)$", + "localDir": "./", + "authenticationType": "xsuaa" + }, + { + "source": "^/api/admin/(.*)", + "authenticationType": "xsuaa", + "destination": "backend" + }, + { + "source": "^/api/browse/(.*)", + "authenticationType": "xsuaa", + "destination": "backend" + }, + { + "source": "^/api/review/(.*)", + "authenticationType": "xsuaa", + "destination": "backend" + }, + { + "source": "^/api/notes/(.*)", + "authenticationType": "xsuaa", + "destination": "backend" + }, + { + "source": "^/api/(.*)$", + "authenticationType": "none", + "destination": "backend" + } ] } diff --git a/db/books.cds b/db/books.cds index fe2e5e0a..1fd06ae9 100644 --- a/db/books.cds +++ b/db/books.cds @@ -2,7 +2,6 @@ namespace my.bookshop; using { Currency, - sap, managed, cuid } from '@sap/cds/common'; @@ -25,7 +24,7 @@ entity Books : cuid, managed { } entity Authors : cuid, managed { - @assert.format : '^\p{Lu}.*' // assert that name starts with a capital letter + @assert.format: '^\p{Lu}.*' // assert that name starts with a capital letter name : String(111); dateOfBirth : Date; dateOfDeath : Date; @@ -37,17 +36,21 @@ entity Authors : cuid, managed { // annotations for Data Privacy annotate Authors with -@PersonalData : { DataSubjectRole : 'Author', EntitySemantics : 'DataSubject' } -{ - ID @PersonalData.FieldSemantics : 'DataSubjectID'; - name @PersonalData.IsPotentiallySensitive; +@PersonalData: { + DataSubjectRole: 'Author', + EntitySemantics: 'DataSubject' +} { + ID @PersonalData.FieldSemantics: 'DataSubjectID'; + name @PersonalData.IsPotentiallySensitive; } /** * Hierarchically organized Code List for Genres */ -entity Genres : sap.common.CodeList { +entity Genres { key ID : Integer; + name : localized String(255); + descr : localized String(1000); parent : Association to Genres; children : Composition of many Genres on children.parent = $self; diff --git a/db/data/my.bookshop-Books.csv b/db/data/my.bookshop-Books.csv index dd4baa1a..e5453379 100644 --- a/db/data/my.bookshop-Books.csv +++ b/db/data/my.bookshop-Books.csv @@ -1,6 +1,6 @@ ID;TITLE;DESCR;AUTHOR_ID;STOCK;PRICE;CURRENCY_CODE;GENRE_ID;RATING;ISBN -f846b0b9-01d4-4f6d-82a4-d79204f62278;Wuthering Heights;"Wuthering Heights, Emily Brontë's only novel, was published in 1847 under the pseudonym ""Ellis Bell"". It was written between October 1845 and June 1846. Wuthering Heights and Anne Brontë's Agnes Grey were accepted by publisher Thomas Newby before the success of their sister Charlotte's novel Jane Eyre. After Emily's death, Charlotte edited the manuscript of Wuthering Heights and arranged for the edited version to be published as a posthumous second edition in 1850.";335c7bcd-b826-4f14-a788-e0bf6738617a;12;11.11;GBP;11;4.5;979-8698267973 -9b084139-0b1e-43b6-b12a-7b3669d75f02;Jane Eyre;"Jane Eyre /ɛər/ (originally published as Jane Eyre: An Autobiography) is a novel by English writer Charlotte Brontë, published under the pen name ""Currer Bell"", on 16 October 1847, by Smith, Elder & Co. of London. The first American edition was published the following year by Harper & Brothers of New York. Primarily a bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall. The novel revolutionised prose fiction in that the focus on Jane's moral and spiritual development is told through an intimate, first-person narrative, where actions and events are coloured by a psychological intensity. The book contains elements of social criticism, with a strong sense of Christian morality at its core and is considered by many to be ahead of its time because of Jane's individualistic character and how the novel approaches the topics of class, sexuality, religion and feminism.";e3da2c2e-72ee-45d5-8def-52964c7b252a;11;12.34;GBP;11;3.0;979-8598716472 -51061ce3-ddde-4d70-a2dc-6314afbcc73e;The Raven;"“The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;333;13.13;USD;16;2.5;978-1092909747 -aebdfc8a-0dfa-4468-bd36-48aabd65e663;Eleonora;"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;555;14;USD;16;1.0;979-8669820985 -4a519e61-3c3a-4bd9-ab12-d7e0c5329933;Catweazle;Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.;3c081d9d-abda-4da9-8b6a-4f4555bb26bc;22;15;EUR;13;4.0;978-3473523023 +f846b0b9-01d4-4f6d-82a4-d79204f62278;Wuthering Heights;"Wuthering Heights, Emily Brontë's only novel, was published in 1847 under the pseudonym ""Ellis Bell"". It was written between October 1845 and June 1846. Wuthering Heights and Anne Brontë's Agnes Grey were accepted by publisher Thomas Newby before the success of their sister Charlotte's novel Jane Eyre. After Emily's death, Charlotte edited the manuscript of Wuthering Heights and arranged for the edited version to be published as a posthumous second edition in 1850.";335c7bcd-b826-4f14-a788-e0bf6738617a;12;11.11;GBP;103;4.5;979-8698267973 +9b084139-0b1e-43b6-b12a-7b3669d75f02;Jane Eyre;"Jane Eyre /ɛər/ (originally published as Jane Eyre: An Autobiography) is a novel by English writer Charlotte Brontë, published under the pen name ""Currer Bell"", on 16 October 1847, by Smith, Elder & Co. of London. The first American edition was published the following year by Harper & Brothers of New York. Primarily a bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall. The novel revolutionised prose fiction in that the focus on Jane's moral and spiritual development is told through an intimate, first-person narrative, where actions and events are coloured by a psychological intensity. The book contains elements of social criticism, with a strong sense of Christian morality at its core and is considered by many to be ahead of its time because of Jane's individualistic character and how the novel approaches the topics of class, sexuality, religion and feminism.";e3da2c2e-72ee-45d5-8def-52964c7b252a;11;12.34;GBP;103;3.0;979-8598716472 +51061ce3-ddde-4d70-a2dc-6314afbcc73e;The Raven;"“The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;333;13.13;USD;117;2.5;978-1092909747 +aebdfc8a-0dfa-4468-bd36-48aabd65e663;Eleonora;"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;555;14;USD;117;1.0;979-8669820985 +4a519e61-3c3a-4bd9-ab12-d7e0c5329933;Catweazle;Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.;3c081d9d-abda-4da9-8b6a-4f4555bb26bc;22;15;EUR;110;4.0;978-3473523023 diff --git a/db/data/my.bookshop-Genres.csv b/db/data/my.bookshop-Genres.csv index 88e73bdd..84bb85b0 100644 --- a/db/data/my.bookshop-Genres.csv +++ b/db/data/my.bookshop-Genres.csv @@ -1,16 +1,31 @@ ID;parent_ID;name -10;;Fiction -11;10;Drama -12;10;Poetry -13;10;Fantasy -14;10;Science Fiction -15;10;Romance -16;10;Mystery -17;10;Thriller -18;10;Dystopia -19;10;Fairy Tale -20;;Non-Fiction -21;20;Biography -22;21;Autobiography -23;20;Essay -24;20;Speech \ No newline at end of file +100;;Fiction +101;100;Action +102;100;Adventure +103;100;Drama +105;100;Poetry +106;100;Science Fiction +107;106;Utopian and Dystopian +108;107;Dystopia +109;108;Cyberpunk +110;109;Steampunk +104;100;Fantasy +111;104;Epic fantasy +112;104;High fantasy +113;100;Graphic Novel +115;100;Short Story +116;100;Romance +117;100;Mystery +123;117;Thriller +124;117;Suspense +118;100;Horror +119;100;Historical Fiction +120;100;Contemporary Fiction +121;100;Magical Realism +122;100;Literary Fiction +128;100;Fairy Tale +200;;Non-Fiction +201;200;Biography +202;201;Autobiography +203;200;Essay +204;200;Speech diff --git a/db/reviews.cds b/db/reviews.cds index 7015fbf6..318844f7 100644 --- a/db/reviews.cds +++ b/db/reviews.cds @@ -9,17 +9,17 @@ using my.bookshop.Books from './books'; entity Reviews : cuid, managed { @cds.odata.ValueList - book : Association to Books; - rating : Rating; - title : String(111); - text : String(1111); + book : Association to Books; + rating : Rating; + title : String(111); + text : String(1111); } // input validation annotate Reviews with { title @mandatory; rating @assert.range; - book @mandatory @assert.target; + book @mandatory @assert.target; } type Rating : Integer enum { diff --git a/srv/admin-service.cds b/srv/admin-service.cds index 79d3ce34..4d3b93f3 100644 --- a/srv/admin-service.cds +++ b/srv/admin-service.cds @@ -1,34 +1,43 @@ using {sap.common.Languages as CommonLanguages} from '@sap/cds/common'; using {my.bookshop as my} from '../db/index'; using {sap.changelog as changelog} from 'com.sap.cds/change-tracking'; -using {sap.attachments.Attachments} from `com.sap.cds/cds-feature-attachments`; +using {my.common.Hierarchy as Hierarchy} from './hierarchy'; +using {sap.attachments.Attachments} from 'com.sap.cds/cds-feature-attachments'; extend my.Orders with changelog.changeTracked; -@path : 'admin' -service AdminService @(requires : 'admin') { - entity Books as projection on my.Books excluding { reviews } actions { - action addToOrder(order_ID : UUID, quantity : Integer) returns Orders; - } +@path: 'admin' +@odata.apply.transformations +service AdminService @(requires: 'admin') { + entity Books as + projection on my.Books + excluding { + reviews + } + actions { + action addToOrder(order_ID : UUID, quantity : Integer) returns Orders; + } - entity Authors as projection on my.Authors; - entity Orders as select from my.Orders; + entity Authors as projection on my.Authors; + entity Orders as select from my.Orders; + extend my.Genres with Hierarchy; + entity GenreHierarchy as projection on my.Genres; @cds.persistence.skip entity Upload @odata.singleton { - csv : LargeBinary @Core.MediaType : 'text/csv'; + csv : LargeBinary @Core.MediaType: 'text/csv'; } } // Deep Search Items -annotate AdminService.Orders with @cds.search : { +annotate AdminService.Orders with @cds.search: { OrderNo, Items }; -annotate AdminService.OrderItems with @cds.search : {book}; +annotate AdminService.OrderItems with @cds.search: {book}; -annotate AdminService.Books with @cds.search : { +annotate AdminService.Books with @cds.search: { descr, title }; @@ -60,12 +69,13 @@ annotate AdminService.OrderItems { // Assign identifiers to the tracked entities annotate AdminService.Orders with @changelog: [OrderNo]; + annotate AdminService.OrderItems with @changelog: [ - parent.OrderNo, - book.title, - ]; + parent.OrderNo, + book.title, +]; // Extends the Books entity with the Attachments composition extend my.Books with { - covers : Composition of many Attachments; + covers : Composition of many Attachments; }; diff --git a/srv/cat-service.cds b/srv/cat-service.cds index e887271f..c83eb432 100644 --- a/srv/cat-service.cds +++ b/srv/cat-service.cds @@ -13,6 +13,9 @@ service CatalogService @(requires: 'any') { @readonly entity Authors as projection on my.Authors; + @readonly + entity Genres as projection on my.Genres; + @readonly entity Reviews as projection on my.Reviews; diff --git a/srv/hierarchy.cds b/srv/hierarchy.cds new file mode 100644 index 00000000..f6619d98 --- /dev/null +++ b/srv/hierarchy.cds @@ -0,0 +1,29 @@ +namespace my.common; + +aspect Hierarchy { + virtual LimitedDescendantCount : Integer64; + virtual DistanceFromRoot : Integer64; + virtual DrillState : String; + virtual Matched : Boolean; + virtual MatchedDescendantCount : Integer64; + virtual LimitedRank : Integer64; +} + + +annotate Hierarchy with @Capabilities.FilterRestrictions.NonFilterableProperties: [ + 'LimitedDescendantCount', + 'DistanceFromRoot', + 'DrillState', + 'Matched', + 'MatchedDescendantCount', + 'LimitedRank' +]; + +annotate Hierarchy with @Capabilities.SortRestrictions.NonSortableProperties: [ + 'LimitedDescendantCount', + 'DistanceFromRoot', + 'DrillState', + 'Matched', + 'MatchedDescendantCount', + 'LimitedRank' +]; diff --git a/srv/review-service.cds b/srv/review-service.cds index d87950f9..0afa2e92 100644 --- a/srv/review-service.cds +++ b/srv/review-service.cds @@ -1,28 +1,33 @@ using {my.bookshop as my} from '../db/index'; -@path : 'review' +@path: 'review' service ReviewService { entity Reviews as projection on my.Reviews; @readonly - entity Books as projection on my.Books excluding { - createdBy, - modifiedBy - } + entity Books as + projection on my.Books + excluding { + createdBy, + modifiedBy + } @readonly entity Authors as projection on my.Authors; + @readonly + entity Genres as projection on my.Genres; + // access control restrictions - annotate Reviews with @restrict : [ + annotate Reviews with @restrict: [ { - grant : '*', - to : 'authenticated-user', - where : (createdBy=$user) + grant: '*', + to: 'authenticated-user', + where: (createdBy = $user) }, { - grant : '*', - to : 'admin', + grant: '*', + to: 'admin', } ]; } diff --git a/srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java b/srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java new file mode 100644 index 00000000..bdd875a0 --- /dev/null +++ b/srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java @@ -0,0 +1,313 @@ +package my.bookshop.handlers; + +import java.util.ArrayDeque; +import java.util.Comparator; +import java.util.Deque; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +import com.sap.cds.Row; +import com.sap.cds.ql.CQL; +import com.sap.cds.ql.Select; +import com.sap.cds.ql.cqn.CqnElementRef; +import com.sap.cds.ql.cqn.CqnPredicate; +import com.sap.cds.ql.cqn.CqnSelect; +import com.sap.cds.ql.cqn.CqnValue; +import com.sap.cds.ql.cqn.Modifier; +import com.sap.cds.ql.cqn.transformation.CqnTopLevelsTransformation; +import com.sap.cds.ql.cqn.transformation.CqnAncestorsTransformation; +import com.sap.cds.ql.cqn.transformation.CqnDescendantsTransformation; +import com.sap.cds.ql.cqn.transformation.CqnFilterTransformation; +import com.sap.cds.ql.cqn.transformation.CqnSearchTransformation; +import com.sap.cds.ql.cqn.transformation.CqnOrderByTransformation; +import com.sap.cds.ql.cqn.transformation.CqnTransformation; +import com.sap.cds.services.cds.CdsReadEventContext; +import com.sap.cds.services.cds.CqnService; +import com.sap.cds.services.handler.EventHandler; +import com.sap.cds.services.handler.annotations.Before; +import com.sap.cds.services.handler.annotations.ServiceName; +import com.sap.cds.services.persistence.PersistenceService; + +import cds.gen.adminservice.AdminService_; +import cds.gen.adminservice.GenreHierarchy; +import cds.gen.adminservice.GenreHierarchy_; + +import static cds.gen.adminservice.AdminService_.GENRE_HIERARCHY; + +@Component +@Profile("default") // non-HANA +@ServiceName(AdminService_.CDS_NAME) +/** + * On HANA, requests for GenreHierarchy are handled generically. + * + * This handler is only in effect when running with the `default` profile on + * H2. It is a stand-in for non-HANA until the CAP Java runtime can also handle + * requests for hierarchies on non-HANA databases. + * + * The handler is neither functionally complete nor correct for all requests. It + * is not intended as a blue-print for custom code. + */ +public class HierarchyHandler implements EventHandler { + + private final PersistenceService db; + + HierarchyHandler(PersistenceService db) { + this.db = db; + } + + @Before(event = CqnService.EVENT_READ, entity = GenreHierarchy_.CDS_NAME) + public void readGenreHierarchy(CdsReadEventContext event) { + List trafos = event.getCqn().transformations(); + List result = null; + + if (trafos.size() < 1) { + return; + } + + if (getTopLevels(trafos) instanceof CqnTopLevelsTransformation topLevels) { + result = topLevels(topLevels, CQL.TRUE); + } else if (trafos.get(0) instanceof CqnDescendantsTransformation descendants) { + result = handleDescendants(descendants); + } else if (trafos.get(0) instanceof CqnAncestorsTransformation ancestors) { + if (trafos.size() == 2 && trafos.get(1) instanceof CqnTopLevelsTransformation topLevels) { + result = handleAncestors(ancestors, topLevels); + } else if (trafos.size() == 3 && trafos.get(2) instanceof CqnTopLevelsTransformation topLevels) { + result = handleAncestors(ancestors, topLevels); + } + } + + setResult(event, result); + } + + private CqnTopLevelsTransformation getTopLevels(List trafos) { + if (trafos.get(0) instanceof CqnTopLevelsTransformation topLevels) { + return topLevels; + } else if (trafos.size() == 2 && trafos.get(0) instanceof CqnOrderByTransformation + && trafos.get(1) instanceof CqnTopLevelsTransformation topLevels) { + return topLevels; + } + return null; + } + + private void setResult(CdsReadEventContext event, List result) { + if (!result.isEmpty()) { + addDrillState(result); + } + + event.setResult(result); + } + + private void addDrillState(List ghs) { + List ids = ghs.stream().map(gh -> gh.getId()).toList(); + Set parents = ghs.stream().map(gh -> gh.getParentId()).filter(p -> p != null) + .collect(Collectors.toSet()); + CqnSelect q = Select.from(GENRE_HIERARCHY).columns(gh -> gh.parent_ID().as("id")) + .where(gh -> gh.parent_ID().in(ids)); + Set nonLeafs = db + .run(q) + .stream().map(r -> r.get("id")).collect(Collectors.toSet()); + + for (GenreHierarchy gh : ghs) { + Integer id = gh.getId(); + if (nonLeafs.contains(id)) { + if (parents.contains(id)) { + gh.setDrillState("expanded"); + } else { + gh.setDrillState("collapsed"); + } + } else { + gh.setDrillState("leaf"); + } + } + } + + private CqnPredicate descendantsFilter(CqnDescendantsTransformation descendants) { + CqnTransformation trafo = descendants.transformations().get(0); + CqnPredicate start = ((CqnFilterTransformation) trafo).filter(); + CqnPredicate result = CQL.FALSE; + if (descendants.keepStart()) { + result = CQL.or(result, start); + } + CqnPredicate children = CQL.copy(start, new Modifier() { + @Override + public CqnValue ref(CqnElementRef ref) { + return CQL.get(GenreHierarchy.PARENT_ID); + } + }); + result = CQL.or(result, children); + + return result; + } + + private CqnPredicate ancestorsFilter(CqnAncestorsTransformation ancestors) { + CqnTransformation trafo = ancestors.transformations().get(0); + Select inner = Select.from(GENRE_HIERARCHY).columns(gh -> gh.ID()); + if (trafo instanceof CqnFilterTransformation filter) { + inner.where(filter.filter()); + } else if (trafo instanceof CqnSearchTransformation search) { + inner.search(search.search()); + } + + Select outer = Select.from(GENRE_HIERARCHY) + .columns(gh -> gh.ID().as("i0"), + gh -> gh.parent().ID().as("i1"), + gh -> gh.parent().parent().ID().as("i2"), + gh -> gh.parent().parent().parent().ID().as("i3"), + gh -> gh.parent().parent().parent().parent().ID().as("i4")) + .where(gh -> gh.ID().in(inner)); + + Set ancestorIds = new HashSet<>(); + db.run(outer).stream().forEach(r -> { + addIfNotNull(ancestorIds, r, "i0"); + addIfNotNull(ancestorIds, r, "i1"); + addIfNotNull(ancestorIds, r, "i2"); + addIfNotNull(ancestorIds, r, "i3"); + addIfNotNull(ancestorIds, r, "i4"); + }); + + return CQL.get(GenreHierarchy_.ID).in(ancestorIds.stream().toList()); + } + + private List handleDescendants(CqnDescendantsTransformation descendants) { + CqnPredicate filter = descendantsFilter(descendants); + CqnSelect childrenCQN = Select.from(GENRE_HIERARCHY).where(filter); + List nodes = db.run(childrenCQN).listOf(GenreHierarchy.class); + + connect(nodes); + + return nodes.stream().sorted(new Sorter()).toList(); + } + + private static void connect(List nodes) { + Map lookup = new HashMap<>(); + nodes.forEach(gh -> lookup.put(gh.getId(), gh)); + nodes.forEach(gh -> gh.setParent(lookup.get(gh.getParentId()))); + nodes.forEach(gh -> gh.setDistanceFromRoot(distanceFromRoot(gh))); + } + + private List handleAncestors(CqnAncestorsTransformation ancestors, + CqnTopLevelsTransformation topLevels) { + CqnPredicate filter = ancestorsFilter(ancestors); + + return topLevels(topLevels, filter); + } + + private void addIfNotNull(Set ancestorIds, Row r, String key) { + Integer id = (Integer) r.get(key); + if (id != null) { + ancestorIds.add(id); + } + } + + private List topLevels(CqnTopLevelsTransformation topLevels, CqnPredicate filter) { + return topLevels.levels() < 0 ? topLevelsAll(filter) : topLevelsLimit(topLevels, filter); + } + + private List topLevelsLimit(CqnTopLevelsTransformation topLevels, CqnPredicate filter) { + long limit = topLevels.levels(); + Map lookup = new HashMap<>(); + Map expandLevels = topLevels.expandLevels(); + + CqnSelect getRoots = Select.from(GENRE_HIERARCHY).where(gh -> gh.parent_ID().isNull().and(filter)); + List roots = db.run(getRoots).listOf(GenreHierarchy.class); + roots.forEach(root -> { + root.setDistanceFromRoot(0l); + lookup.put(root.getId(), root); + List parents = List.of(root.getId()); + for (long i = 1; i < limit; i++) { + List ps = parents; + CqnSelect getChildren = Select.from(GENRE_HIERARCHY) + .where(gh -> gh.parent_ID().in(ps).and(filter)); + List children = db.run(getChildren).listOf(GenreHierarchy.class); + if (children.isEmpty()) { + break; + } + long dfr = i; + parents = children.stream().peek(gh -> { + gh.setParent(lookup.get(gh.getParentId())); + gh.setDistanceFromRoot(dfr); + lookup.put(gh.getId(), gh); + }).map(GenreHierarchy::getId).toList(); + } + }); + + if (!expandLevels.isEmpty()) { + List expandedIds = expandLevels.keySet().stream().map(key -> (Integer) key).toList(); + CqnSelect expandedCQN = Select.from(AdminService_.GENRE_HIERARCHY).where(gh -> CQL.and(filter, + CQL.or(gh.ID().in(expandedIds), gh.parent_ID().in(expandedIds)))); + + List expanded = db.run(expandedCQN).listOf(GenreHierarchy.class); + expanded.forEach(gh -> { + if (!lookup.keySet().contains(gh.getId())) { + gh.setParent(lookup.get(gh.getParentId())); + gh.setDistanceFromRoot(distanceFromRoot(gh)); + lookup.put(gh.getId(), gh); + } + }); + + } + + return lookup.values().stream().sorted(new Sorter()).toList(); + } + + private List topLevelsAll(CqnPredicate filter) { + CqnSelect allCqn = Select.from(GENRE_HIERARCHY).where(filter); + var all = db.run(allCqn).listOf(GenreHierarchy.class); + + connect(all); + + return all.stream().sorted(new Sorter()).toList(); + } + + private static long distanceFromRoot(GenreHierarchy gh) { + long dfr = 0; + while (gh.getParent() != null) { + dfr++; + gh = gh.getParent(); + } + + return dfr; + } + + static class Sorter implements Comparator { + + @Override + public int compare(GenreHierarchy gh1, GenreHierarchy gh2) { + Deque path1 = getPath(gh1); + Deque path2 = getPath(gh2); + int res = 0; + + while (true) { + if (path1.isEmpty()) { + return path2.isEmpty() ? 0 : -1; + } + if (path2.isEmpty()) { + return +1; + } + String last1 = path1.pop(); + String last2 = path2.pop(); + res = last1.compareTo(last2); + if (res != 0) { + return res; + } + } + } + + Deque getPath(GenreHierarchy gh) { + Deque path = new ArrayDeque<>(); + do { + path.push(gh.getName()); + gh = gh.getParent(); + } while (gh != null); + + return path; + } + } +} diff --git a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java new file mode 100644 index 00000000..e519a2b4 --- /dev/null +++ b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java @@ -0,0 +1,239 @@ +package my.bookshop; + +import static org.assertj.core.api.Assumptions.assumeThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.net.URI; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.env.Environment; +import org.springframework.core.env.Profiles; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.web.util.UriComponentsBuilder; + +@SpringBootTest +@AutoConfigureMockMvc +public class GenreHierarchyTest { + + @Autowired + private MockMvc client; + + @Autowired + Environment env; + + private static final String genresURI = "/api/admin/GenreHierarchy"; + + @Test + @WithMockUser(username = "admin") + void testGetAll() throws Exception { + client.perform(get(genresURI)).andExpect(status().isOk()); + } + + @Test + @WithMockUser(username = "admin") + void testCountAll() throws Exception { + client.perform(get(genresURI + "/$count")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$").value(30)); + } + + @Test + @WithMockUser(username = "admin") + void testStartOneLevel() throws Exception { + client.perform(get(genresURI + + "?$select=DrillState,ID,name,DistanceFromRoot" + + "&$apply=orderby(name)/" + + "com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=1)" + + "&$count=true")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(100)) + .andExpect(jsonPath("$.value[0].name").value("Fiction")) + .andExpect(jsonPath("$.value[0].DistanceFromRoot").value(0)) + .andExpect(jsonPath("$.value[0].DrillState").value("collapsed")) + .andExpect(jsonPath("$.value[1].ID").value(200)) + .andExpect(jsonPath("$.value[1].name").value("Non-Fiction")) + .andExpect(jsonPath("$.value[1].DistanceFromRoot").value(0)) + .andExpect(jsonPath("$.value[1].DrillState").value("collapsed")) + .andExpect(jsonPath("$.value[2]").doesNotExist()); + } + + @Test + @WithMockUser(username = "admin") + void testStartTwoLevels() throws Exception { + client.perform(get(genresURI + + "?$select=DrillState,ID,name,DistanceFromRoot" + + "&$apply=orderby(name)/" + + "com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=2)" + + "&$count=true")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(100)) + .andExpect(jsonPath("$.value[0].name").value("Fiction")) + .andExpect(jsonPath("$.value[0].DrillState").value("expanded")) + .andExpect(jsonPath("$.value[0].DistanceFromRoot").value(0)) + .andExpect(jsonPath("$.value[1].ID").value(101)) + .andExpect(jsonPath("$.value[1].name").value("Action")) + .andExpect(jsonPath("$.value[1].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[1].DistanceFromRoot").value(1)) + .andExpect(jsonPath("$.value[20].ID").value(204)) + .andExpect(jsonPath("$.value[20].name").value("Speech")) + .andExpect(jsonPath("$.value[20].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[20].DistanceFromRoot").value(1)) + .andExpect(jsonPath("$.value[21]").doesNotExist()); + } + + @Test + @WithMockUser(username = "admin") + void testExpandNonFiction() throws Exception { + client.perform(get(genresURI + + "?$select=DrillState,ID,name" + + "&$apply=descendants($root/GenreHierarchy,GenreHierarchy,ID,filter(ID eq 200),1)" + + "/orderby(ID)")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(201)) + .andExpect(jsonPath("$.value[0].name").value("Biography")) + .andExpect(jsonPath("$.value[0].DrillState").value("collapsed")) + .andExpect(jsonPath("$.value[1].ID").value(203)) + .andExpect(jsonPath("$.value[1].name").value("Essay")) + .andExpect(jsonPath("$.value[1].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[2].ID").value(204)) + .andExpect(jsonPath("$.value[2].name").value("Speech")) + .andExpect(jsonPath("$.value[2].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[3]").doesNotExist()); + } + + @Test + @WithMockUser(username = "admin") + void testCollapseAll() throws Exception { + client.perform(get(genresURI + + "?$select=DrillState,ID,name" + + "&$apply=com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=1)" + + "&$count=true&$skip=0&$top=238")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].name").value("Fiction")) + .andExpect(jsonPath("$.value[0].DrillState").value("collapsed")) + .andExpect(jsonPath("$.value[1].name").value("Non-Fiction")) + .andExpect(jsonPath("$.value[1].DrillState").value("collapsed")) + .andExpect(jsonPath("$.value[2]").doesNotExist()); + } + + @Test + @WithMockUser(username = "admin") + void testExpandAll() throws Exception { + String url = genresURI + + "?$select=DistanceFromRoot,DrillState,ID,LimitedDescendantCount,name" + + "&$apply=com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID')" + + "&$count=true&$skip=0&$top=238"; + + ResultActions expectations = client.perform(get(url)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(100)) + .andExpect(jsonPath("$.value[0].name").value("Fiction")) + .andExpect(jsonPath("$.value[0].DrillState").value("expanded")) + .andExpect(jsonPath("$.value[0].DistanceFromRoot").value(0)) + .andExpect(jsonPath("$.value[29].name").value("Speech")) + .andExpect(jsonPath("$.value[29].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[30]").doesNotExist()); + if (isOnHana()) { + expectations.andExpect(jsonPath("$.value[0].LimitedDescendantCount").value(24)); + } + } + + @Test + @WithMockUser(username = "admin") + void testSearch() throws Exception { + ResultActions expectations = client.perform(get(genresURI + + "?$select=DistanceFromRoot,DrillState,ID,LimitedDescendantCount,name" + + "&$apply=ancestors($root/GenreHierarchy,GenreHierarchy,ID,search(\"ry\"),keep start)" + + "/orderby(name)" + + "/com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID')" + + "&$count=true")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(100)) + .andExpect(jsonPath("$.value[0].name").value("Fiction")) + .andExpect(jsonPath("$.value[0].DrillState").value("expanded")) + .andExpect(jsonPath("$.value[0].DistanceFromRoot").value(0)) + .andExpect(jsonPath("$.value[1].ID").value(120)) + .andExpect(jsonPath("$.value[1].name").value("Contemporary Fiction")) + .andExpect(jsonPath("$.value[1].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[1].DistanceFromRoot").value(1)) + .andExpect(jsonPath("$.value[2].ID").value(128)) + .andExpect(jsonPath("$.value[2].name").value("Fairy Tale")) + .andExpect(jsonPath("$.value[2].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[2].DistanceFromRoot").value(1)) + .andExpect(jsonPath("$.value[3].ID").value(122)) + .andExpect(jsonPath("$.value[6].name").value("Short Story")) + .andExpect(jsonPath("$.value[6].DrillState").value("leaf")) + .andExpect(jsonPath("$.value[6].DistanceFromRoot").value(1)) + .andExpect(jsonPath("$.value[7]").doesNotExist()) + ; + if (isOnHana()) { + expectations.andExpect(jsonPath("$.value[0].LimitedDescendantCount").value(6)) + .andExpect(jsonPath("$.value[1].LimitedDescendantCount").value(0)) + .andExpect(jsonPath("$.value[2].LimitedDescendantCount").value(0)) + .andExpect(jsonPath("$.value[6].LimitedDescendantCount").value(0)); + } + } + + @Test + @WithMockUser(username = "admin") + void testFilterNotExpanded() throws Exception { + client.perform(get(genresURI + + "?$select=DrillState,ID,name,DistanceFromRoot" + + "&$apply=ancestors($root/GenreHierarchy,GenreHierarchy,ID,filter(name eq 'Autobiography'),keep start)/orderby(name)" + + "/com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=1)")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(200)) + .andExpect(jsonPath("$.value[0].name").value("Non-Fiction")) + .andExpect(jsonPath("$.value[0].DrillState").value("collapsed")) + .andExpect(jsonPath("$.value[0].DistanceFromRoot").value(0)) + .andExpect(jsonPath("$.value[1]").doesNotExist()); + } + + @Test + @WithMockUser(username = "admin") + void testFilterExpandLevels() throws Exception { + String expandLevelsJson = """ + [{"NodeID":100,"Levels":1},{"NodeID":200,"Levels":1}]\ + """; + String unencoded = genresURI + "?$select=DistanceFromRoot,DrillState,ID,LimitedDescendantCount,name" + + "&$apply=ancestors($root/GenreHierarchy,GenreHierarchy,ID,filter(name eq 'Autobiography'),keep start)/orderby(name)" + + "/com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=1,ExpandLevels=" + + expandLevelsJson + ")&$count=true"; + String uriString = UriComponentsBuilder.fromUriString(unencoded).toUriString(); + URI uri = URI.create(uriString); + client.perform(get(uri)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(200)) + .andExpect(jsonPath("$.value[0].name").value("Non-Fiction")) + .andExpect(jsonPath("$.value[0].DrillState").value("expanded")) + .andExpect(jsonPath("$.value[0].DistanceFromRoot").value(0)) + .andExpect(jsonPath("$.value[2]").doesNotExist()); + } + + @Test + @WithMockUser(username = "admin") + void testStartTwoLevelsOrderByDescHANA() throws Exception { + assumeThat(env.getActiveProfiles()).contains("hybrid"); + client.perform(get(genresURI + + "?$select=DrillState,ID,name,DistanceFromRoot" + + "&$apply=orderby(name desc)/" + + "com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=2)" + + "&$count=true")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(200)) + .andExpect(jsonPath("$.value[1].ID").value(204)) + .andExpect(jsonPath("$.value[20].ID").value(101)) + .andExpect(jsonPath("$.value[21]").doesNotExist()); + } + + private boolean isOnHana() { + return env.acceptsProfiles(Profiles.of("hybrid")); + } +} \ No newline at end of file diff --git a/srv/src/test/java/my/bookshop/handlers/HierarchyHandlerSorterTest.java b/srv/src/test/java/my/bookshop/handlers/HierarchyHandlerSorterTest.java new file mode 100644 index 00000000..46bc78c2 --- /dev/null +++ b/srv/src/test/java/my/bookshop/handlers/HierarchyHandlerSorterTest.java @@ -0,0 +1,70 @@ +package my.bookshop.handlers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.List; +import org.junit.jupiter.api.Test; + +import cds.gen.adminservice.GenreHierarchy; +import my.bookshop.handlers.HierarchyHandler.Sorter; + +public class HierarchyHandlerSorterTest { + + @Test + public void testSortRoots() { + GenreHierarchy r1 = genre("Philosophical fiction"); + GenreHierarchy r2 = genre("Epic"); + List sorted = sorted(r1, r2); + + assertEquals("Epic", sorted.get(0).getName()); + assertEquals("Philosophical fiction", sorted.get(1).getName()); + } + + @Test + public void testSortSiblings() { + GenreHierarchy root = genre("Folklore"); + GenreHierarchy g1 = genre("Urban legend", root); + GenreHierarchy g2 = genre("Fairy tale", root); + List sorted = sorted(g1, g2); + + assertEquals("Fairy tale", sorted.get(0).getName()); + assertEquals("Urban legend", sorted.get(1).getName()); + } + + @Test + public void testSortChildrenWithDifRoot() { + GenreHierarchy r1 = genre("Thriller"); + GenreHierarchy r2 = genre("Folklore"); + GenreHierarchy g2 = genre("Urban legend", r2); + List sorted = sorted(r1, g2); + + assertEquals("Urban legend", sorted.get(0).getName()); + assertEquals("Thriller", sorted.get(1).getName()); + } + + @Test + public void testSortChildrenSameRoot() { + GenreHierarchy r1 = genre("Folklore"); + GenreHierarchy g1 = genre("Urban legend", r1); + List sorted = sorted(g1, r1); + + assertEquals("Folklore", sorted.get(0).getName()); + assertEquals("Urban legend", sorted.get(1).getName()); + } + + private static GenreHierarchy genre(String name, GenreHierarchy parent) { + GenreHierarchy genre = GenreHierarchy.create(); + genre.setName(name); + if (parent != null) { + genre.setParent(parent); + } + return genre; + } + + private static GenreHierarchy genre(String name) { + return genre(name, null); + } + + private static List sorted(GenreHierarchy... h) { + return List.of(h).stream().sorted(new Sorter()).toList(); + } +} From aa690f688c61d6f9325298d03718fe1079dc76b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Thu, 19 Dec 2024 12:52:41 +0100 Subject: [PATCH 051/244] Restore CodeList (#419) Co-authored-by: Marc Becker --- README.md | 4 ++-- db/books.cds | 5 ++--- srv/cat-service.cds | 3 --- srv/review-service.cds | 3 --- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d59b0bb6..b652330c 100644 --- a/README.md +++ b/README.md @@ -143,10 +143,10 @@ are defined for local development: ### Testing in hybrid mode -You can test the `GenreHierarchyTest` on H2 using the profile `default` as well as on HANA using the profile `hybrid` +You can test the `GenreHierarchyTest` on H2 using the profile `default` as well as on HANA using the profile `cloud` ``` -cds bind --exec -- mvn clean install -Dspring.profiles.active=hybrid +cds bind --exec -- mvn clean install -Dspring.profiles.active=cloud ``` ## Using VS Code diff --git a/db/books.cds b/db/books.cds index 1fd06ae9..e7aa3928 100644 --- a/db/books.cds +++ b/db/books.cds @@ -2,6 +2,7 @@ namespace my.bookshop; using { Currency, + sap, managed, cuid } from '@sap/cds/common'; @@ -47,10 +48,8 @@ annotate Authors with /** * Hierarchically organized Code List for Genres */ -entity Genres { +entity Genres : sap.common.CodeList { key ID : Integer; - name : localized String(255); - descr : localized String(1000); parent : Association to Genres; children : Composition of many Genres on children.parent = $self; diff --git a/srv/cat-service.cds b/srv/cat-service.cds index c83eb432..e887271f 100644 --- a/srv/cat-service.cds +++ b/srv/cat-service.cds @@ -13,9 +13,6 @@ service CatalogService @(requires: 'any') { @readonly entity Authors as projection on my.Authors; - @readonly - entity Genres as projection on my.Genres; - @readonly entity Reviews as projection on my.Reviews; diff --git a/srv/review-service.cds b/srv/review-service.cds index 0afa2e92..9ef98df7 100644 --- a/srv/review-service.cds +++ b/srv/review-service.cds @@ -15,9 +15,6 @@ service ReviewService { @readonly entity Authors as projection on my.Authors; - @readonly - entity Genres as projection on my.Genres; - // access control restrictions annotate Reviews with @restrict: [ { From d0180d5c511bbe7c66c539667c19308f9ba64e8f Mon Sep 17 00:00:00 2001 From: Marc Becker Date: Thu, 19 Dec 2024 15:03:05 +0100 Subject: [PATCH 052/244] Maintain @sap/cds-dk in package.json (#421) --- .cdsrc.json | 5 +- app/package-lock.json | 6 +- db/package-lock.json | 2692 ------------------- db/package.json | 3 - mtx/sidecar/package-lock.json | 2812 +------------------- mtx/sidecar/package.json | 5 +- package-lock.json | 4611 +++++++++++++++++++++++++++++++++ package.json | 11 + pom.xml | 9 - srv/pom.xml | 7 +- 10 files changed, 4690 insertions(+), 5471 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.cdsrc.json b/.cdsrc.json index a63b42bd..d7bd9b1f 100644 --- a/.cdsrc.json +++ b/.cdsrc.json @@ -4,8 +4,5 @@ "extensibility": true, "toggles": true }, - "profile": "with-mtx-sidecar", - "cdsc": { - "moduleLookupDirectories": [ "node_modules/", "target/cds/", "mtx/sidecar/node_modules/" ] - } + "profile": "with-mtx-sidecar" } diff --git a/app/package-lock.json b/app/package-lock.json index 09872eab..0cb233d6 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1434,9 +1434,9 @@ } }, "node_modules/math-intrinsics": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", - "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", "engines": { "node": ">= 0.4" diff --git a/db/package-lock.json b/db/package-lock.json index c25c5eb5..b4f7efd5 100644 --- a/db/package-lock.json +++ b/db/package-lock.json @@ -9,2702 +9,10 @@ "@sap/hdi-deploy": "^5", "hdb": "^0" }, - "devDependencies": { - "@sap/cds-dk": "^8" - }, "engines": { "node": "^20" } }, - "node_modules/@sap/cds-dk": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-8.6.1.tgz", - "integrity": "sha512-33yQwhJMDFMNabiBWiFT0JEZmPs76pqUJQhJC9YuRt1ibk3/DMMzzfmL8ZQZMGcn1pOgkEmG3+vULDKE/86Wjg==", - "dev": true, - "hasShrinkwrap": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@cap-js/asyncapi": "^1.0.0", - "@cap-js/openapi": "^1.0.0", - "@sap/cds": ">=7", - "@sap/cds-foss": "^5.0.0", - "@sap/cds-mtxs": ">=1.9.0", - "@sap/eslint-plugin-cds": "^3.0.1", - "@sap/hdi-deploy": "^5", - "axios": "^1", - "eslint": "^9", - "express": "^4.17.3", - "hdb": "^0", - "livereload-js": "^4.0.1", - "mustache": "^4.0.1", - "node-watch": ">=0.7", - "ws": "^8.4.2", - "xml-js": "^1.6.11" - }, - "bin": { - "cds": "bin/cds.js", - "cds-ts": "bin/cds-ts.js", - "cds-tsx": "bin/cds-tsx.js" - }, - "optionalDependencies": { - "@cap-js/sqlite": "^1" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/asyncapi": { - "version": "1.0.2", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "peerDependencies": { - "@sap/cds": ">=7.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/db-service": { - "version": "1.16.1", - "dev": true, - "license": "SEE LICENSE", - "optional": true, - "dependencies": { - "generic-pool": "^3.9.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.9" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/openapi": { - "version": "1.1.1", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "pluralize": "^8.0.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/sqlite": { - "version": "1.7.8", - "dev": true, - "license": "SEE LICENSE", - "optional": true, - "dependencies": { - "@cap-js/db-service": "^1.14.1", - "better-sqlite3": "^11.0.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/config-array": { - "version": "0.19.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.5", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/core": { - "version": "0.9.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/js": { - "version": "9.17.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/object-schema": { - "version": "2.1.5", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanfs/core": { - "version": "0.19.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanfs/node": { - "version": "0.16.6", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds": { - "version": "8.6.0", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@sap/cds-compiler": ">=5.1", - "@sap/cds-fiori": "^1", - "@sap/cds-foss": "^5.0.0" - }, - "bin": { - "cds-deploy": "lib/dbs/cds-deploy.js", - "cds-serve": "bin/serve.js", - "cds-test": "bin/test.js", - "chest": "bin/test.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "express": ">=4" - }, - "peerDependenciesMeta": { - "express": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-compiler": { - "version": "5.6.0", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "antlr4": "4.9.3" - }, - "bin": { - "cdsc": "bin/cdsc.js", - "cdshi": "bin/cdshi.js", - "cdsse": "bin/cdsse.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-fiori": { - "version": "1.2.8", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "peerDependencies": { - "@sap/cds": ">=7.6", - "express": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-foss": { - "version": "5.0.1", - "dev": true, - "license": "See LICENSE in LICENSE", - "dependencies": { - "big.js": "^6.1.1", - "generic-pool": "^3.8.2", - "xmlbuilder": "^15.1.1", - "yaml": "^2.2.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-mtxs": { - "version": "2.4.2", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@sap/hdi-deploy": ">=4", - "axios": "^1" - }, - "bin": { - "cds-mtx": "bin/cds-mtx.js", - "cds-mtx-migrate": "bin/cds-mtx-migrate.js" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/eslint-plugin-cds": { - "version": "3.1.2", - "dev": true, - "license": "See LICENSE file", - "dependencies": { - "@sap/cds": ">=7", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/hdi": { - "version": "4.6.0", - "dev": true, - "license": "See LICENSE file", - "dependencies": { - "async": "^3.2.3" - }, - "engines": { - "node": ">=18 <=20" - }, - "peerDependencies": { - "@sap/hana-client": "^2 >= 2.5", - "hdb": "^0" - }, - "peerDependenciesMeta": { - "@sap/hana-client": { - "optional": true - }, - "hdb": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/hdi-deploy": { - "version": "5.3.2", - "dev": true, - "license": "See LICENSE file", - "dependencies": { - "@sap/hdi": "^4.6.0", - "@sap/xsenv": "^5.2.0", - "async": "^3.2.6", - "dotenv": "^16.4.5", - "handlebars": "^4.7.8", - "micromatch": "^4.0.8" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0" - }, - "peerDependencies": { - "@sap/hana-client": "^2 >= 2.6", - "hdb": "^0" - }, - "peerDependenciesMeta": { - "@sap/hana-client": { - "optional": true - }, - "hdb": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/xsenv": { - "version": "5.4.0", - "dev": true, - "license": "SEE LICENSE IN LICENSE file", - "dependencies": { - "debug": "4.3.7", - "node-cache": "^5.1.2", - "verror": "1.10.1" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || ^22.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@types/estree": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/@types/json-schema": { - "version": "7.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/accepts": { - "version": "1.3.8", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/acorn": { - "version": "8.14.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@sap/cds-dk/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@sap/cds-dk/node_modules/antlr4": { - "version": "4.9.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=14" - } - }, - "node_modules/@sap/cds-dk/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@sap/cds-dk/node_modules/array-flatten": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/assert-plus": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/async": { - "version": "3.2.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/asynckit": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/axios": { - "version": "1.7.9", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/base64-js": { - "version": "1.5.1", - "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", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/better-sqlite3": { - "version": "11.7.0", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "bindings": "^1.5.0", - "prebuild-install": "^7.1.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/big.js": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" - } - }, - "node_modules/@sap/cds-dk/node_modules/bindings": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/bl": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/body-parser": { - "version": "1.20.3", - "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.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/@sap/cds-dk/node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/braces": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/buffer": { - "version": "5.7.1", - "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", - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@sap/cds-dk/node_modules/bytes": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/call-bound": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@sap/cds-dk/node_modules/chownr": { - "version": "1.1.4", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/clone": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/combined-stream": { - "version": "1.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/content-disposition": { - "version": "0.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/content-type": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/cookie": { - "version": "0.7.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/cookie-signature": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/core-util-is": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/cross-spawn": { - "version": "7.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sap/cds-dk/node_modules/debug": { - "version": "4.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/decompress-response": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/deep-extend": { - "version": "0.6.0", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/delayed-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/depd": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/destroy": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/@sap/cds-dk/node_modules/detect-libc": { - "version": "2.0.3", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/dotenv": { - "version": "16.4.7", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@sap/cds-dk/node_modules/dunder-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/ee-first": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/encodeurl": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/end-of-stream": { - "version": "1.4.4", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/es-define-property": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/es-errors": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/es-object-atoms": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/escape-html": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/eslint": { - "version": "9.17.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/eslint-scope": { - "version": "8.2.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/espree": { - "version": "10.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/esquery": { - "version": "1.6.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@sap/cds-dk/node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/etag": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/expand-template": { - "version": "2.0.3", - "dev": true, - "license": "(MIT OR WTFPL)", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/express": { - "version": "4.21.2", - "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.13.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/@sap/cds-dk/node_modules/express/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/express/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/extsprintf": { - "version": "1.4.1", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/file-entry-cache": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/file-uri-to-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/fill-range": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/finalhandler": { - "version": "1.3.1", - "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.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/flat-cache": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@sap/cds-dk/node_modules/flatted": { - "version": "3.3.2", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/follow-redirects": { - "version": "1.15.9", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/form-data": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@sap/cds-dk/node_modules/forwarded": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/fresh": { - "version": "0.5.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/fs-constants": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/generic-pool": { - "version": "3.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@sap/cds-dk/node_modules/get-intrinsic": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/github-from-package": { - "version": "0.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/globals": { - "version": "14.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/gopd": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/handlebars": { - "version": "4.7.8", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/has-symbols": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/hasown": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/hdb": { - "version": "0.19.11", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "iconv-lite": "^0.4.18" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/@sap/cds-dk/node_modules/http-errors": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/ieee754": { - "version": "1.2.1", - "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", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@sap/cds-dk/node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/@sap/cds-dk/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ipaddr.js": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@sap/cds-dk/node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@sap/cds-dk/node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/keyv": { - "version": "4.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/livereload-js": { - "version": "4.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/math-intrinsics": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/media-typer": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/merge-descriptors": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/methods": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/micromatch": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/mime": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/mimic-response": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@sap/cds-dk/node_modules/minimist": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/mkdirp-classic": { - "version": "0.5.3", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/mustache": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/@sap/cds-dk/node_modules/napi-build-utils": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/node-abi": { - "version": "3.71.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@sap/cds-dk/node_modules/node-cache": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "2.x" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/node-watch": { - "version": "0.7.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/object-inspect": { - "version": "1.13.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/on-finished": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/@sap/cds-dk/node_modules/optionator": { - "version": "0.9.4", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/parent-module": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/parseurl": { - "version": "1.3.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/path-to-regexp": { - "version": "0.1.12", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@sap/cds-dk/node_modules/pluralize": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/prebuild-install": { - "version": "7.1.2", - "dev": true, - "license": "MIT", - "optional": true, - "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": "^1.0.1", - "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/@sap/cds-dk/node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/proxy-addr": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@sap/cds-dk/node_modules/proxy-from-env": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/pump": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/qs": { - "version": "6.13.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/range-parser": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/raw-body": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/rc": { - "version": "1.2.8", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "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/@sap/cds-dk/node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@sap/cds-dk/node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/safe-buffer": { - "version": "5.2.1", - "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/@sap/cds-dk/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/sax": { - "version": "1.4.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/semver": { - "version": "7.6.3", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@sap/cds-dk/node_modules/send": { - "version": "0.19.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/send/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/serve-static": { - "version": "1.16.2", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/setprototypeof": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel-list": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel-map": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel-weakmap": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/simple-concat": { - "version": "1.0.1", - "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", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/simple-get": { - "version": "4.0.1", - "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", - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/statuses": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/tar-fs": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/tar-stream": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "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/@sap/cds-dk/node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/toidentifier": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/tunnel-agent": { - "version": "0.6.0", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@sap/cds-dk/node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/type-is": { - "version": "1.6.18", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/uglify-js": { - "version": "3.19.3", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/unpipe": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/utils-merge": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/vary": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/verror": { - "version": "1.10.1", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sap/cds-dk/node_modules/word-wrap": { - "version": "1.2.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/wordwrap": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ws": { - "version": "8.18.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/xml-js": { - "version": "1.6.11", - "dev": true, - "license": "MIT", - "dependencies": { - "sax": "^1.2.4" - }, - "bin": { - "xml-js": "bin/cli.js" - } - }, - "node_modules/@sap/cds-dk/node_modules/xmlbuilder": { - "version": "15.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/yaml": { - "version": "2.6.1", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@sap/cds-dk/node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@sap/hdi": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.6.0.tgz", diff --git a/db/package.json b/db/package.json index 21d678a0..f35c820b 100644 --- a/db/package.json +++ b/db/package.json @@ -10,8 +10,5 @@ "scripts": { "start": "node node_modules/@sap/hdi-deploy/deploy.js --use-hdb", "build": "npm ci && npx cds build .. --for hana --production" - }, - "devDependencies": { - "@sap/cds-dk": "^8" } } diff --git a/mtx/sidecar/package-lock.json b/mtx/sidecar/package-lock.json index 09ac8d31..90ad0c31 100644 --- a/mtx/sidecar/package-lock.json +++ b/mtx/sidecar/package-lock.json @@ -12,2790 +12,100 @@ "express": "^4" }, "devDependencies": { - "@cap-js/sqlite": "^1", - "@sap/cds-dk": "^8" - }, - "engines": { - "node": "^20" - } - }, - "node_modules/@cap-js/db-service": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.16.2.tgz", - "integrity": "sha512-B9XSThHB3McPYBGP1Lty4/I5edD6aCcBFKRLYIqUj2u6gIzHNJXu1TIHicGwWb/e6Plp2+ntwTQ01DgMp6Xgtg==", - "license": "SEE LICENSE", - "dependencies": { - "generic-pool": "^3.9.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.9" - } - }, - "node_modules/@cap-js/hana": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.5.2.tgz", - "integrity": "sha512-8+fxzHHiJEFL0KZtuCKwKFu1HmZA3mvyEfWEbd7w81MSmsvCqkrrKpix0cEvnaG2pahxuAECDthqiQJ3GMLFVQ==", - "license": "SEE LICENSE", - "dependencies": { - "@cap-js/db-service": "^1.16.1", - "hdb": "^0.19.5" - }, - "peerDependencies": { - "@sap/cds": ">=8.2", - "@sap/hana-client": ">=2" - }, - "peerDependenciesMeta": { - "@sap/hana-client": { - "optional": true - } - } - }, - "node_modules/@cap-js/sqlite": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.7.8.tgz", - "integrity": "sha512-llFn0LGNIdlsfU4KjzyuIMvlQhKxXodq4GIt9yStmmX/av/twwHR8SyUmTJirRH4IkNtpCsuNYpsI+bYO2Xklg==", - "dev": true, - "license": "SEE LICENSE", - "dependencies": { - "@cap-js/db-service": "^1.14.1", - "better-sqlite3": "^11.0.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.6" - } - }, - "node_modules/@sap/cds": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.6.0.tgz", - "integrity": "sha512-MagthrcmAa1l+nAtx/4gMnDv9scfkIwXPFQT7N8+dLU0u1DitLePA5nYk9M62wHZy79mE1tPwxdoLS2NdMzQQw==", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@sap/cds-compiler": ">=5.1", - "@sap/cds-fiori": "^1", - "@sap/cds-foss": "^5.0.0" - }, - "bin": { - "cds-deploy": "lib/dbs/cds-deploy.js", - "cds-serve": "bin/serve.js", - "cds-test": "bin/test.js", - "chest": "bin/test.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "express": ">=4" - }, - "peerDependenciesMeta": { - "express": { - "optional": true - } - } - }, - "node_modules/@sap/cds-compiler": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.6.0.tgz", - "integrity": "sha512-MYhAQNkSQPwi16q738edpHP9JcVH8gunm15+02nQu1Rz59PQDcj7GcWqyb4EGQklKRyMUg/5J4zXKaH1RxKqgA==", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "antlr4": "4.9.3" - }, - "bin": { - "cdsc": "bin/cdsc.js", - "cdshi": "bin/cdshi.js", - "cdsse": "bin/cdsse.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sap/cds-dk": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-8.6.1.tgz", - "integrity": "sha512-33yQwhJMDFMNabiBWiFT0JEZmPs76pqUJQhJC9YuRt1ibk3/DMMzzfmL8ZQZMGcn1pOgkEmG3+vULDKE/86Wjg==", - "dev": true, - "hasShrinkwrap": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@cap-js/asyncapi": "^1.0.0", - "@cap-js/openapi": "^1.0.0", - "@sap/cds": ">=7", - "@sap/cds-foss": "^5.0.0", - "@sap/cds-mtxs": ">=1.9.0", - "@sap/eslint-plugin-cds": "^3.0.1", - "@sap/hdi-deploy": "^5", - "axios": "^1", - "eslint": "^9", - "express": "^4.17.3", - "hdb": "^0", - "livereload-js": "^4.0.1", - "mustache": "^4.0.1", - "node-watch": ">=0.7", - "ws": "^8.4.2", - "xml-js": "^1.6.11" - }, - "bin": { - "cds": "bin/cds.js", - "cds-ts": "bin/cds-ts.js", - "cds-tsx": "bin/cds-tsx.js" - }, - "optionalDependencies": { - "@cap-js/sqlite": "^1" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/asyncapi": { - "version": "1.0.2", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "peerDependencies": { - "@sap/cds": ">=7.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/db-service": { - "version": "1.16.1", - "dev": true, - "license": "SEE LICENSE", - "optional": true, - "dependencies": { - "generic-pool": "^3.9.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.9" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/openapi": { - "version": "1.1.1", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "pluralize": "^8.0.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/@cap-js/sqlite": { - "version": "1.7.8", - "dev": true, - "license": "SEE LICENSE", - "optional": true, - "dependencies": { - "@cap-js/db-service": "^1.14.1", - "better-sqlite3": "^11.0.0" - }, - "peerDependencies": { - "@sap/cds": ">=7.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/config-array": { - "version": "0.19.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.5", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/core": { - "version": "0.9.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/js": { - "version": "9.17.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/object-schema": { - "version": "2.1.5", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanfs/core": { - "version": "0.19.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanfs/node": { - "version": "0.16.6", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@sap/cds-dk/node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds": { - "version": "8.6.0", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@sap/cds-compiler": ">=5.1", - "@sap/cds-fiori": "^1", - "@sap/cds-foss": "^5.0.0" - }, - "bin": { - "cds-deploy": "lib/dbs/cds-deploy.js", - "cds-serve": "bin/serve.js", - "cds-test": "bin/test.js", - "chest": "bin/test.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "express": ">=4" - }, - "peerDependenciesMeta": { - "express": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-compiler": { - "version": "5.6.0", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "antlr4": "4.9.3" - }, - "bin": { - "cdsc": "bin/cdsc.js", - "cdshi": "bin/cdshi.js", - "cdsse": "bin/cdsse.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-fiori": { - "version": "1.2.8", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "peerDependencies": { - "@sap/cds": ">=7.6", - "express": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-foss": { - "version": "5.0.1", - "dev": true, - "license": "See LICENSE in LICENSE", - "dependencies": { - "big.js": "^6.1.1", - "generic-pool": "^3.8.2", - "xmlbuilder": "^15.1.1", - "yaml": "^2.2.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/cds-mtxs": { - "version": "2.4.2", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@sap/hdi-deploy": ">=4", - "axios": "^1" - }, - "bin": { - "cds-mtx": "bin/cds-mtx.js", - "cds-mtx-migrate": "bin/cds-mtx-migrate.js" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/eslint-plugin-cds": { - "version": "3.1.2", - "dev": true, - "license": "See LICENSE file", - "dependencies": { - "@sap/cds": ">=7", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/hdi": { - "version": "4.6.0", - "dev": true, - "license": "See LICENSE file", - "dependencies": { - "async": "^3.2.3" - }, - "engines": { - "node": ">=18 <=20" - }, - "peerDependencies": { - "@sap/hana-client": "^2 >= 2.5", - "hdb": "^0" - }, - "peerDependenciesMeta": { - "@sap/hana-client": { - "optional": true - }, - "hdb": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/hdi-deploy": { - "version": "5.3.2", - "dev": true, - "license": "See LICENSE file", - "dependencies": { - "@sap/hdi": "^4.6.0", - "@sap/xsenv": "^5.2.0", - "async": "^3.2.6", - "dotenv": "^16.4.5", - "handlebars": "^4.7.8", - "micromatch": "^4.0.8" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0" - }, - "peerDependencies": { - "@sap/hana-client": "^2 >= 2.6", - "hdb": "^0" - }, - "peerDependenciesMeta": { - "@sap/hana-client": { - "optional": true - }, - "hdb": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/@sap/xsenv": { - "version": "5.4.0", - "dev": true, - "license": "SEE LICENSE IN LICENSE file", - "dependencies": { - "debug": "4.3.7", - "node-cache": "^5.1.2", - "verror": "1.10.1" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || ^22.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/@types/estree": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/@types/json-schema": { - "version": "7.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/accepts": { - "version": "1.3.8", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/acorn": { - "version": "8.14.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@sap/cds-dk/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@sap/cds-dk/node_modules/antlr4": { - "version": "4.9.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=14" - } - }, - "node_modules/@sap/cds-dk/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@sap/cds-dk/node_modules/array-flatten": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/assert-plus": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/async": { - "version": "3.2.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/asynckit": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/axios": { - "version": "1.7.9", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/base64-js": { - "version": "1.5.1", - "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", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/better-sqlite3": { - "version": "11.7.0", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "bindings": "^1.5.0", - "prebuild-install": "^7.1.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/big.js": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" - } - }, - "node_modules/@sap/cds-dk/node_modules/bindings": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/bl": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/body-parser": { - "version": "1.20.3", - "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.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/@sap/cds-dk/node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/braces": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/buffer": { - "version": "5.7.1", - "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", - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@sap/cds-dk/node_modules/bytes": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/call-bound": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@sap/cds-dk/node_modules/chownr": { - "version": "1.1.4", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/clone": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/combined-stream": { - "version": "1.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/content-disposition": { - "version": "0.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/content-type": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/cookie": { - "version": "0.7.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/cookie-signature": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/core-util-is": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/cross-spawn": { - "version": "7.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sap/cds-dk/node_modules/debug": { - "version": "4.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/decompress-response": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/deep-extend": { - "version": "0.6.0", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/delayed-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/depd": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/destroy": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/@sap/cds-dk/node_modules/detect-libc": { - "version": "2.0.3", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/dotenv": { - "version": "16.4.7", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@sap/cds-dk/node_modules/dunder-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/ee-first": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/encodeurl": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/end-of-stream": { - "version": "1.4.4", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/es-define-property": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/es-errors": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/es-object-atoms": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/escape-html": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/eslint": { - "version": "9.17.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/eslint-scope": { - "version": "8.2.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/espree": { - "version": "10.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@sap/cds-dk/node_modules/esquery": { - "version": "1.6.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@sap/cds-dk/node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/etag": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/expand-template": { - "version": "2.0.3", - "dev": true, - "license": "(MIT OR WTFPL)", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/express": { - "version": "4.21.2", - "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.13.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/@sap/cds-dk/node_modules/express/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/express/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/extsprintf": { - "version": "1.4.1", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/file-entry-cache": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/file-uri-to-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/fill-range": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/finalhandler": { - "version": "1.3.1", - "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.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/flat-cache": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@sap/cds-dk/node_modules/flatted": { - "version": "3.3.2", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/follow-redirects": { - "version": "1.15.9", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/@sap/cds-dk/node_modules/form-data": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@sap/cds-dk/node_modules/forwarded": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/fresh": { - "version": "0.5.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/fs-constants": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/generic-pool": { - "version": "3.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@sap/cds-dk/node_modules/get-intrinsic": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/github-from-package": { - "version": "0.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/globals": { - "version": "14.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/gopd": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/handlebars": { - "version": "4.7.8", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/has-symbols": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/hasown": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/hdb": { - "version": "0.19.11", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "iconv-lite": "^0.4.18" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/@sap/cds-dk/node_modules/http-errors": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/ieee754": { - "version": "1.2.1", - "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", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@sap/cds-dk/node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/@sap/cds-dk/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ipaddr.js": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@sap/cds-dk/node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@sap/cds-dk/node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/keyv": { - "version": "4.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/livereload-js": { - "version": "4.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/math-intrinsics": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/media-typer": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/merge-descriptors": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/methods": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/micromatch": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/mime": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/mimic-response": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@sap/cds-dk/node_modules/minimist": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/mkdirp-classic": { - "version": "0.5.3", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/mustache": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/@sap/cds-dk/node_modules/napi-build-utils": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/node-abi": { - "version": "3.71.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@sap/cds-dk/node_modules/node-cache": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "2.x" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/node-watch": { - "version": "0.7.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/object-inspect": { - "version": "1.13.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/on-finished": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/@sap/cds-dk/node_modules/optionator": { - "version": "0.9.4", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/parent-module": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/parseurl": { - "version": "1.3.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/path-to-regexp": { - "version": "0.1.12", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@sap/cds-dk/node_modules/pluralize": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/prebuild-install": { - "version": "7.1.2", - "dev": true, - "license": "MIT", - "optional": true, - "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": "^1.0.1", - "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/@sap/cds-dk/node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/proxy-addr": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@sap/cds-dk/node_modules/proxy-from-env": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/pump": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/@sap/cds-dk/node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sap/cds-dk/node_modules/qs": { - "version": "6.13.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/range-parser": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/raw-body": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/rc": { - "version": "1.2.8", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "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/@sap/cds-dk/node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@sap/cds-dk/node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sap/cds-dk/node_modules/safe-buffer": { - "version": "5.2.1", - "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/@sap/cds-dk/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/sax": { - "version": "1.4.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/semver": { - "version": "7.6.3", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@sap/cds-dk/node_modules/send": { - "version": "0.19.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/send/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/serve-static": { - "version": "1.16.2", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/setprototypeof": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@sap/cds-dk/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel-list": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel-map": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/side-channel-weakmap": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@sap/cds-dk/node_modules/simple-concat": { - "version": "1.0.1", - "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", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/simple-get": { - "version": "4.0.1", - "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", - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/statuses": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sap/cds-dk/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sap/cds-dk/node_modules/tar-fs": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/@sap/cds-dk/node_modules/tar-stream": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "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/@sap/cds-dk/node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/toidentifier": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/tunnel-agent": { - "version": "0.6.0", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" + "@cap-js/sqlite": "^1" }, "engines": { - "node": "*" + "node": "^20" } }, - "node_modules/@sap/cds-dk/node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", + "node_modules/@cap-js/db-service": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.16.2.tgz", + "integrity": "sha512-B9XSThHB3McPYBGP1Lty4/I5edD6aCcBFKRLYIqUj2u6gIzHNJXu1TIHicGwWb/e6Plp2+ntwTQ01DgMp6Xgtg==", + "license": "SEE LICENSE", "dependencies": { - "prelude-ls": "^1.2.1" + "generic-pool": "^3.9.0" }, - "engines": { - "node": ">= 0.8.0" + "peerDependencies": { + "@sap/cds": ">=7.9" } }, - "node_modules/@sap/cds-dk/node_modules/type-is": { - "version": "1.6.18", - "dev": true, - "license": "MIT", + "node_modules/@cap-js/hana": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.5.2.tgz", + "integrity": "sha512-8+fxzHHiJEFL0KZtuCKwKFu1HmZA3mvyEfWEbd7w81MSmsvCqkrrKpix0cEvnaG2pahxuAECDthqiQJ3GMLFVQ==", + "license": "SEE LICENSE", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "@cap-js/db-service": "^1.16.1", + "hdb": "^0.19.5" }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@sap/cds-dk/node_modules/uglify-js": { - "version": "3.19.3", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" + "peerDependencies": { + "@sap/cds": ">=8.2", + "@sap/hana-client": ">=2" }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/unpipe": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@sap/cds-dk/node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/utils-merge": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/vary": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + } } }, - "node_modules/@sap/cds-dk/node_modules/verror": { - "version": "1.10.1", + "node_modules/@cap-js/sqlite": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.7.8.tgz", + "integrity": "sha512-llFn0LGNIdlsfU4KjzyuIMvlQhKxXodq4GIt9yStmmX/av/twwHR8SyUmTJirRH4IkNtpCsuNYpsI+bYO2Xklg==", "dev": true, - "license": "MIT", + "license": "SEE LICENSE", "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "@cap-js/db-service": "^1.14.1", + "better-sqlite3": "^11.0.0" }, - "engines": { - "node": ">=0.6.0" + "peerDependencies": { + "@sap/cds": ">=7.6" } }, - "node_modules/@sap/cds-dk/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", + "node_modules/@sap/cds": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.6.0.tgz", + "integrity": "sha512-MagthrcmAa1l+nAtx/4gMnDv9scfkIwXPFQT7N8+dLU0u1DitLePA5nYk9M62wHZy79mE1tPwxdoLS2NdMzQQw==", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "isexe": "^2.0.0" + "@sap/cds-compiler": ">=5.1", + "@sap/cds-fiori": "^1", + "@sap/cds-foss": "^5.0.0" }, "bin": { - "node-which": "bin/node-which" + "cds-deploy": "lib/dbs/cds-deploy.js", + "cds-serve": "bin/serve.js", + "cds-test": "bin/test.js", + "chest": "bin/test.js" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/@sap/cds-dk/node_modules/word-wrap": { - "version": "1.2.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/wordwrap": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@sap/cds-dk/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/@sap/cds-dk/node_modules/ws": { - "version": "8.18.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" + "node": ">=18" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "express": ">=4" }, "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { + "express": { "optional": true } } }, - "node_modules/@sap/cds-dk/node_modules/xml-js": { - "version": "1.6.11", - "dev": true, - "license": "MIT", + "node_modules/@sap/cds-compiler": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.6.0.tgz", + "integrity": "sha512-MYhAQNkSQPwi16q738edpHP9JcVH8gunm15+02nQu1Rz59PQDcj7GcWqyb4EGQklKRyMUg/5J4zXKaH1RxKqgA==", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "sax": "^1.2.4" + "antlr4": "4.9.3" }, "bin": { - "xml-js": "bin/cli.js" - } - }, - "node_modules/@sap/cds-dk/node_modules/xmlbuilder": { - "version": "15.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/yaml": { - "version": "2.6.1", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" + "cdsc": "bin/cdsc.js", + "cdshi": "bin/cdshi.js", + "cdsse": "bin/cdsse.js" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/@sap/cds-dk/node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, "node_modules/@sap/cds-fiori": { @@ -3805,9 +1115,9 @@ } }, "node_modules/math-intrinsics": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", - "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", "engines": { "node": ">= 0.4" diff --git a/mtx/sidecar/package.json b/mtx/sidecar/package.json index 13462cc9..05dbd843 100644 --- a/mtx/sidecar/package.json +++ b/mtx/sidecar/package.json @@ -7,8 +7,7 @@ "express": "^4" }, "devDependencies": { - "@cap-js/sqlite": "^1", - "@sap/cds-dk": "^8" + "@cap-js/sqlite": "^1" }, "engines": { "node": "^20" @@ -21,6 +20,6 @@ }, "scripts": { "start": "cds-serve", - "build": "npm ci && cds build ../.. --for mtx-sidecar --production && npm ci --prefix gen" + "build": "cds build ../.. --for mtx-sidecar --production && npm ci --prefix gen" } } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..466989a9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4611 @@ +{ + "name": "bookshop-cds", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "bookshop-cds", + "version": "1.0.0", + "workspaces": [ + "mtx/sidecar" + ], + "devDependencies": { + "@sap/cds-dk": "^8" + } + }, + "mtx/sidecar": { + "dependencies": { + "@cap-js/hana": "^1", + "@sap/cds": "^8", + "@sap/cds-mtxs": "^2", + "@sap/xssec": "^4", + "express": "^4" + }, + "devDependencies": { + "@cap-js/sqlite": "^1" + }, + "engines": { + "node": "^20" + } + }, + "node_modules/@cap-js/db-service": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.16.2.tgz", + "integrity": "sha512-B9XSThHB3McPYBGP1Lty4/I5edD6aCcBFKRLYIqUj2u6gIzHNJXu1TIHicGwWb/e6Plp2+ntwTQ01DgMp6Xgtg==", + "license": "SEE LICENSE", + "dependencies": { + "generic-pool": "^3.9.0" + }, + "peerDependencies": { + "@sap/cds": ">=7.9" + } + }, + "node_modules/@cap-js/hana": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.5.2.tgz", + "integrity": "sha512-8+fxzHHiJEFL0KZtuCKwKFu1HmZA3mvyEfWEbd7w81MSmsvCqkrrKpix0cEvnaG2pahxuAECDthqiQJ3GMLFVQ==", + "license": "SEE LICENSE", + "dependencies": { + "@cap-js/db-service": "^1.16.1", + "hdb": "^0.19.5" + }, + "peerDependencies": { + "@sap/cds": ">=8.2", + "@sap/hana-client": ">=2" + }, + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + } + } + }, + "node_modules/@cap-js/sqlite": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.7.8.tgz", + "integrity": "sha512-llFn0LGNIdlsfU4KjzyuIMvlQhKxXodq4GIt9yStmmX/av/twwHR8SyUmTJirRH4IkNtpCsuNYpsI+bYO2Xklg==", + "dev": true, + "license": "SEE LICENSE", + "dependencies": { + "@cap-js/db-service": "^1.14.1", + "better-sqlite3": "^11.0.0" + }, + "peerDependencies": { + "@sap/cds": ">=7.6" + } + }, + "node_modules/@sap/cds": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.6.0.tgz", + "integrity": "sha512-MagthrcmAa1l+nAtx/4gMnDv9scfkIwXPFQT7N8+dLU0u1DitLePA5nYk9M62wHZy79mE1tPwxdoLS2NdMzQQw==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@sap/cds-compiler": ">=5.1", + "@sap/cds-fiori": "^1", + "@sap/cds-foss": "^5.0.0" + }, + "bin": { + "cds-deploy": "lib/dbs/cds-deploy.js", + "cds-serve": "bin/serve.js", + "cds-test": "bin/test.js", + "chest": "bin/test.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "express": ">=4" + }, + "peerDependenciesMeta": { + "express": { + "optional": true + } + } + }, + "node_modules/@sap/cds-compiler": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.6.0.tgz", + "integrity": "sha512-MYhAQNkSQPwi16q738edpHP9JcVH8gunm15+02nQu1Rz59PQDcj7GcWqyb4EGQklKRyMUg/5J4zXKaH1RxKqgA==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "antlr4": "4.9.3" + }, + "bin": { + "cdsc": "bin/cdsc.js", + "cdshi": "bin/cdshi.js", + "cdsse": "bin/cdsse.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sap/cds-dk": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-8.6.1.tgz", + "integrity": "sha512-33yQwhJMDFMNabiBWiFT0JEZmPs76pqUJQhJC9YuRt1ibk3/DMMzzfmL8ZQZMGcn1pOgkEmG3+vULDKE/86Wjg==", + "dev": true, + "hasShrinkwrap": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@cap-js/asyncapi": "^1.0.0", + "@cap-js/openapi": "^1.0.0", + "@sap/cds": ">=7", + "@sap/cds-foss": "^5.0.0", + "@sap/cds-mtxs": ">=1.9.0", + "@sap/eslint-plugin-cds": "^3.0.1", + "@sap/hdi-deploy": "^5", + "axios": "^1", + "eslint": "^9", + "express": "^4.17.3", + "hdb": "^0", + "livereload-js": "^4.0.1", + "mustache": "^4.0.1", + "node-watch": ">=0.7", + "ws": "^8.4.2", + "xml-js": "^1.6.11" + }, + "bin": { + "cds": "bin/cds.js", + "cds-ts": "bin/cds-ts.js", + "cds-tsx": "bin/cds-tsx.js" + }, + "optionalDependencies": { + "@cap-js/sqlite": "^1" + } + }, + "node_modules/@sap/cds-dk/node_modules/@cap-js/asyncapi": { + "version": "1.0.2", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "peerDependencies": { + "@sap/cds": ">=7.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/@cap-js/db-service": { + "version": "1.16.1", + "dev": true, + "license": "SEE LICENSE", + "optional": true, + "dependencies": { + "generic-pool": "^3.9.0" + }, + "peerDependencies": { + "@sap/cds": ">=7.9" + } + }, + "node_modules/@sap/cds-dk/node_modules/@cap-js/openapi": { + "version": "1.1.1", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "pluralize": "^8.0.0" + }, + "peerDependencies": { + "@sap/cds": ">=7.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/@cap-js/sqlite": { + "version": "1.7.8", + "dev": true, + "license": "SEE LICENSE", + "optional": true, + "dependencies": { + "@cap-js/db-service": "^1.14.1", + "better-sqlite3": "^11.0.0" + }, + "peerDependencies": { + "@sap/cds": ">=7.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint/config-array": { + "version": "0.19.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint/core": { + "version": "0.9.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint/js": { + "version": "9.17.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint/object-schema": { + "version": "2.1.5", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@humanfs/core": { + "version": "0.19.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@humanfs/node": { + "version": "0.16.6", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@sap/cds-dk/node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@sap/cds-dk/node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/cds": { + "version": "8.6.0", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@sap/cds-compiler": ">=5.1", + "@sap/cds-fiori": "^1", + "@sap/cds-foss": "^5.0.0" + }, + "bin": { + "cds-deploy": "lib/dbs/cds-deploy.js", + "cds-serve": "bin/serve.js", + "cds-test": "bin/test.js", + "chest": "bin/test.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "express": ">=4" + }, + "peerDependenciesMeta": { + "express": { + "optional": true + } + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/cds-compiler": { + "version": "5.6.0", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "antlr4": "4.9.3" + }, + "bin": { + "cdsc": "bin/cdsc.js", + "cdshi": "bin/cdshi.js", + "cdsse": "bin/cdsse.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/cds-fiori": { + "version": "1.2.8", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "peerDependencies": { + "@sap/cds": ">=7.6", + "express": ">=4" + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/cds-foss": { + "version": "5.0.1", + "dev": true, + "license": "See LICENSE in LICENSE", + "dependencies": { + "big.js": "^6.1.1", + "generic-pool": "^3.8.2", + "xmlbuilder": "^15.1.1", + "yaml": "^2.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/cds-mtxs": { + "version": "2.4.2", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@sap/hdi-deploy": ">=4", + "axios": "^1" + }, + "bin": { + "cds-mtx": "bin/cds-mtx.js", + "cds-mtx-migrate": "bin/cds-mtx-migrate.js" + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/eslint-plugin-cds": { + "version": "3.1.2", + "dev": true, + "license": "See LICENSE file", + "dependencies": { + "@sap/cds": ">=7", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/hdi": { + "version": "4.6.0", + "dev": true, + "license": "See LICENSE file", + "dependencies": { + "async": "^3.2.3" + }, + "engines": { + "node": ">=18 <=20" + }, + "peerDependencies": { + "@sap/hana-client": "^2 >= 2.5", + "hdb": "^0" + }, + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + }, + "hdb": { + "optional": true + } + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/hdi-deploy": { + "version": "5.3.2", + "dev": true, + "license": "See LICENSE file", + "dependencies": { + "@sap/hdi": "^4.6.0", + "@sap/xsenv": "^5.2.0", + "async": "^3.2.6", + "dotenv": "^16.4.5", + "handlebars": "^4.7.8", + "micromatch": "^4.0.8" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0" + }, + "peerDependencies": { + "@sap/hana-client": "^2 >= 2.6", + "hdb": "^0" + }, + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + }, + "hdb": { + "optional": true + } + } + }, + "node_modules/@sap/cds-dk/node_modules/@sap/xsenv": { + "version": "5.4.0", + "dev": true, + "license": "SEE LICENSE IN LICENSE file", + "dependencies": { + "debug": "4.3.7", + "node-cache": "^5.1.2", + "verror": "1.10.1" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || ^22.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/@types/estree": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/accepts": { + "version": "1.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/acorn": { + "version": "8.14.0", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@sap/cds-dk/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@sap/cds-dk/node_modules/antlr4": { + "version": "4.9.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=14" + } + }, + "node_modules/@sap/cds-dk/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@sap/cds-dk/node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/async": { + "version": "3.2.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/axios": { + "version": "1.7.9", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/base64-js": { + "version": "1.5.1", + "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", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/better-sqlite3": { + "version": "11.7.0", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + } + }, + "node_modules/@sap/cds-dk/node_modules/big.js": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" + } + }, + "node_modules/@sap/cds-dk/node_modules/bindings": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/body-parser": { + "version": "1.20.3", + "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.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/@sap/cds-dk/node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@sap/cds-dk/node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/buffer": { + "version": "5.7.1", + "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", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/@sap/cds-dk/node_modules/bytes": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/call-bound": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sap/cds-dk/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@sap/cds-dk/node_modules/chownr": { + "version": "1.1.4", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/clone": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/content-disposition": { + "version": "0.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/content-type": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/cookie": { + "version": "0.7.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/cross-spawn": { + "version": "7.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sap/cds-dk/node_modules/debug": { + "version": "4.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@sap/cds-dk/node_modules/decompress-response": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/deep-extend": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/depd": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/destroy": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/@sap/cds-dk/node_modules/detect-libc": { + "version": "2.0.3", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/dotenv": { + "version": "16.4.7", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@sap/cds-dk/node_modules/dunder-proto": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/encodeurl": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/end-of-stream": { + "version": "1.4.4", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/es-define-property": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/es-errors": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/es-object-atoms": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/eslint": { + "version": "9.17.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/@sap/cds-dk/node_modules/eslint-scope": { + "version": "8.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@sap/cds-dk/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@sap/cds-dk/node_modules/espree": { + "version": "10.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@sap/cds-dk/node_modules/esquery": { + "version": "1.6.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@sap/cds-dk/node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/etag": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/expand-template": { + "version": "2.0.3", + "dev": true, + "license": "(MIT OR WTFPL)", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sap/cds-dk/node_modules/express": { + "version": "4.21.2", + "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.13.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/@sap/cds-dk/node_modules/express/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/extsprintf": { + "version": "1.4.1", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/file-entry-cache": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/file-uri-to-path": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/finalhandler": { + "version": "1.3.1", + "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.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/flat-cache": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@sap/cds-dk/node_modules/flatted": { + "version": "3.3.2", + "dev": true, + "license": "ISC" + }, + "node_modules/@sap/cds-dk/node_modules/follow-redirects": { + "version": "1.15.9", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/@sap/cds-dk/node_modules/form-data": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@sap/cds-dk/node_modules/forwarded": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/fresh": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/fs-constants": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/generic-pool": { + "version": "3.9.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@sap/cds-dk/node_modules/get-intrinsic": { + "version": "1.2.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/github-from-package": { + "version": "0.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/globals": { + "version": "14.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/gopd": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/handlebars": { + "version": "4.7.8", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/has-symbols": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/hdb": { + "version": "0.19.11", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "iconv-lite": "^0.4.18" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@sap/cds-dk/node_modules/http-errors": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/ieee754": { + "version": "1.2.1", + "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", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/ignore": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@sap/cds-dk/node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/@sap/cds-dk/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/@sap/cds-dk/node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@sap/cds-dk/node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@sap/cds-dk/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@sap/cds-dk/node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/@sap/cds-dk/node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/livereload-js": { + "version": "4.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/math-intrinsics": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/merge-descriptors": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/micromatch": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@sap/cds-dk/node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/mimic-response": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@sap/cds-dk/node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/mkdirp-classic": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/mustache": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/@sap/cds-dk/node_modules/napi-build-utils": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/node-abi": { + "version": "3.71.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sap/cds-dk/node_modules/node-cache": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "2.x" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/node-watch": { + "version": "0.7.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sap/cds-dk/node_modules/object-inspect": { + "version": "1.13.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/on-finished": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/@sap/cds-dk/node_modules/optionator": { + "version": "0.9.4", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sap/cds-dk/node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/path-to-regexp": { + "version": "0.1.12", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@sap/cds-dk/node_modules/pluralize": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sap/cds-dk/node_modules/prebuild-install": { + "version": "7.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "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": "^1.0.1", + "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/@sap/cds-dk/node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/proxy-addr": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@sap/cds-dk/node_modules/proxy-from-env": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/pump": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/@sap/cds-dk/node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sap/cds-dk/node_modules/qs": { + "version": "6.13.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/raw-body": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/rc": { + "version": "1.2.8", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "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/@sap/cds-dk/node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@sap/cds-dk/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sap/cds-dk/node_modules/safe-buffer": { + "version": "5.2.1", + "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/@sap/cds-dk/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/sax": { + "version": "1.4.1", + "dev": true, + "license": "ISC" + }, + "node_modules/@sap/cds-dk/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sap/cds-dk/node_modules/send": { + "version": "0.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/send/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/serve-static": { + "version": "1.16.2", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@sap/cds-dk/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/side-channel": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/side-channel-list": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/side-channel-map": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/side-channel-weakmap": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sap/cds-dk/node_modules/simple-concat": { + "version": "1.0.1", + "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", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/simple-get": { + "version": "4.0.1", + "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", + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/statuses": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-dk/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sap/cds-dk/node_modules/tar-fs": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/@sap/cds-dk/node_modules/tar-stream": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "optional": true, + "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/@sap/cds-dk/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/toidentifier": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@sap/cds-dk/node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sap/cds-dk/node_modules/uglify-js": { + "version": "3.19.3", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@sap/cds-dk/node_modules/verror": { + "version": "1.10.1", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sap/cds-dk/node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/wordwrap": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sap/cds-dk/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/@sap/cds-dk/node_modules/ws": { + "version": "8.18.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@sap/cds-dk/node_modules/xml-js": { + "version": "1.6.11", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/@sap/cds-dk/node_modules/xmlbuilder": { + "version": "15.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@sap/cds-dk/node_modules/yaml": { + "version": "2.6.1", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@sap/cds-dk/node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sap/cds-fiori": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.2.8.tgz", + "integrity": "sha512-UXvsd4pGxnrxMBDO3HWLHFYhkVIsz3F15ePrAqHpeUKXw42ToCFFu+QJTbhKtONKlxoW1DVDobga4K1dvSyzrw==", + "license": "SEE LICENSE IN LICENSE", + "peerDependencies": { + "@sap/cds": ">=7.6", + "express": ">=4" + } + }, + "node_modules/@sap/cds-foss": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@sap/cds-foss/-/cds-foss-5.0.1.tgz", + "integrity": "sha512-q6h7LkEx6w9LswCIQzJJ2mnoyeGS8jrmBXN4I4+aECRL60mkLskoqGetot+2tX2xXGxCYJuo5v1dtSafwBqTRQ==", + "license": "See LICENSE in LICENSE", + "dependencies": { + "big.js": "^6.1.1", + "generic-pool": "^3.8.2", + "xmlbuilder": "^15.1.1", + "yaml": "^2.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sap/cds-mtxs": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.4.2.tgz", + "integrity": "sha512-/6jAsY/6UgdGhJseoo9PNcfT8TJZ5mKvdRbAdbBgaaOYFGG6c1RIMBvQmGJ/37lctbZIu9K21l/ftiTt5lCwqA==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@sap/hdi-deploy": ">=4", + "axios": "^1" + }, + "bin": { + "cds-mtx": "bin/cds-mtx.js", + "cds-mtx-migrate": "bin/cds-mtx-migrate.js" + } + }, + "node_modules/@sap/hdi": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.6.0.tgz", + "integrity": "sha512-heRX6dvyr58LT0jrZECpt9jJTHIWttDSuLKsBccpKPBbBJxCDr6hpIXKmtCJj7M7ASDgESSGx1fE326V/ltlLQ==", + "license": "See LICENSE file", + "dependencies": { + "async": "^3.2.3" + }, + "engines": { + "node": ">=18 <=20" + }, + "peerDependencies": { + "@sap/hana-client": "^2 >= 2.5", + "hdb": "^0" + }, + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + }, + "hdb": { + "optional": true + } + } + }, + "node_modules/@sap/hdi-deploy": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.3.2.tgz", + "integrity": "sha512-1QvlrMdeVXCIc2DSLjR5ZIKFz9GVcuC8JvXtifU7bYetajc6mgU5FRR9zseZgrHVdCveeRIURmoPplUl4Hszag==", + "license": "See LICENSE file", + "dependencies": { + "@sap/hdi": "^4.6.0", + "@sap/xsenv": "^5.2.0", + "async": "^3.2.6", + "dotenv": "^16.4.5", + "handlebars": "^4.7.8", + "micromatch": "^4.0.8" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0" + }, + "peerDependencies": { + "@sap/hana-client": "^2 >= 2.6", + "hdb": "^0" + }, + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + }, + "hdb": { + "optional": true + } + } + }, + "node_modules/@sap/xsenv": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-5.4.0.tgz", + "integrity": "sha512-O9G71v7S1ZHorDHwNGAbZXmvRvALbeN8Q/j1UgQdKfUcf18re+5CZxKCVUezs2OTBR2KB/tvDFLnlXwHYuwC7A==", + "license": "SEE LICENSE IN LICENSE file", + "dependencies": { + "debug": "4.3.7", + "node-cache": "^5.1.2", + "verror": "1.10.1" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || ^22.0.0" + } + }, + "node_modules/@sap/xssec": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.2.7.tgz", + "integrity": "sha512-RCBFma3jiLIJ1naAPFNLQWMIkKwQENiwSsdEtffs2Q+RhH+AnLiaXAqxtXGlO/N+Lg53WANEIcLThYRkttQ00w==", + "license": "SAP DEVELOPER LICENSE AGREEMENT", + "dependencies": { + "debug": "^4.3.4", + "jwt-decode": "^4" + }, + "engines": { + "node": ">=18" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/antlr4": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.9.3.tgz", + "integrity": "sha512-qNy2odgsa0skmNMCuxzXhM4M8J1YDaPv3TI+vCdnOAanu0N982wBrSqziDKRDctEZLZy9VffqIZXc0UGjjSP/g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=14" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "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": "11.7.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.7.0.tgz", + "integrity": "sha512-mXpa5jnIKKHeoGzBrUJrc65cXFKcILGZpU3FXR0pradUEm9MA7UZz02qfEejaMcm9iXrSOCenwwYMJ/tZ1y5Ig==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + } + }, + "node_modules/big.js": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" + } + }, + "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/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": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "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.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "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==", + "license": "MIT" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "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", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "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.13.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/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "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/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "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.1", + "unpipe": "~1.0.0" + }, + "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==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "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==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hdb": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.11.tgz", + "integrity": "sha512-q+VG76R9gO0jg6HBz98bxRWKSJSMTHu1IQjbfrjsr34q84mC7bPu1T0yVbDbQAJ7lwd+cg4Ze+TrqbAj96TWMA==", + "license": "Apache-2.0", + "dependencies": { + "iconv-lite": "^0.4.18" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "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/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.71.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", + "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "license": "MIT", + "dependencies": { + "clone": "2.x" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "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/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "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": "^1.0.1", + "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/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/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/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sidecar": { + "resolved": "mtx/sidecar", + "link": true + }, + "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/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "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/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/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "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/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "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/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "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==", + "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", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "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/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/yaml": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..f19660a8 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "bookshop-cds", + "version": "1.0.0", + "description": "Generated by cds-services-archetype", + "devDependencies": { + "@sap/cds-dk": "^8" + }, + "workspaces": [ + "mtx/sidecar" + ] +} diff --git a/pom.xml b/pom.xml index 94ae48ba..efcfad7b 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,6 @@ 5.14.0 3.5.3 3.8.4 - 8.6.1 1.0.5 @@ -64,14 +63,6 @@ pom import - - - - com.sap.cloud.servicesdk.xbem - emjapi-extension-sap-cp-jms - 4.0.0 - - diff --git a/srv/pom.xml b/srv/pom.xml index 19d6e810..18b22bff 100644 --- a/srv/pom.xml +++ b/srv/pom.xml @@ -193,20 +193,15 @@ install-node - - ${cdsdk-global} - - - cds.install-mtx-dependencies + cds.npm-ci npm ci - ../mtx/sidecar From 2f724b2c5861fcb0c8b112281cbcd8616c06535e Mon Sep 17 00:00:00 2001 From: Marc Becker Date: Thu, 19 Dec 2024 17:20:15 +0100 Subject: [PATCH 053/244] Fix hybrid testing in GenresHierarchyTest (#423) --- srv/src/test/java/my/bookshop/GenreHierarchyTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java index e519a2b4..d925cb67 100644 --- a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java +++ b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java @@ -220,7 +220,7 @@ void testFilterExpandLevels() throws Exception { @Test @WithMockUser(username = "admin") void testStartTwoLevelsOrderByDescHANA() throws Exception { - assumeThat(env.getActiveProfiles()).contains("hybrid"); + assumeThat(env.getActiveProfiles()).contains("cloud"); client.perform(get(genresURI + "?$select=DrillState,ID,name,DistanceFromRoot" + "&$apply=orderby(name desc)/" @@ -234,6 +234,6 @@ void testStartTwoLevelsOrderByDescHANA() throws Exception { } private boolean isOnHana() { - return env.acceptsProfiles(Profiles.of("hybrid")); + return env.acceptsProfiles(Profiles.of("cloud")); } -} \ No newline at end of file +} From 228e05f940b4d22acc7d88c862fcb6e8c085ff40 Mon Sep 17 00:00:00 2001 From: Marc Becker Date: Fri, 20 Dec 2024 09:49:00 +0100 Subject: [PATCH 054/244] Avoid assumeThat to fix Native Image tests (#424) `assumeThat` seems to cause issues in Native Image-based test execution. Therefore using a plain old `if`. --- .../java/my/bookshop/GenreHierarchyTest.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java index d925cb67..1c1abe72 100644 --- a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java +++ b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java @@ -220,17 +220,18 @@ void testFilterExpandLevels() throws Exception { @Test @WithMockUser(username = "admin") void testStartTwoLevelsOrderByDescHANA() throws Exception { - assumeThat(env.getActiveProfiles()).contains("cloud"); - client.perform(get(genresURI - + "?$select=DrillState,ID,name,DistanceFromRoot" - + "&$apply=orderby(name desc)/" - + "com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=2)" - + "&$count=true")) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.value[0].ID").value(200)) - .andExpect(jsonPath("$.value[1].ID").value(204)) - .andExpect(jsonPath("$.value[20].ID").value(101)) - .andExpect(jsonPath("$.value[21]").doesNotExist()); + if (isOnHana()) { + client.perform(get(genresURI + + "?$select=DrillState,ID,name,DistanceFromRoot" + + "&$apply=orderby(name desc)/" + + "com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/GenreHierarchy,HierarchyQualifier='GenreHierarchy',NodeProperty='ID',Levels=2)" + + "&$count=true")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.value[0].ID").value(200)) + .andExpect(jsonPath("$.value[1].ID").value(204)) + .andExpect(jsonPath("$.value[20].ID").value(101)) + .andExpect(jsonPath("$.value[21]").doesNotExist()); + } } private boolean isOnHana() { From 1cc0602a89ecc1dc31f2fa6022ba6b9a53585861 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Thu, 9 Jan 2025 12:49:36 +0100 Subject: [PATCH 055/244] Remove open endpoint /actuator/health (#426) By default, CAP Java provides the open endpoints `actuator/health/liveness` and `actuator/health/readiness`. Both can be used by Cf or K8s for application health checks. There is no need for a public `actuator/health` anymore. See also in mta.yaml: https://github.com/SAP-samples/cloud-cap-samples-java/blob/228e05f940b4d22acc7d88c862fcb6e8c085ff40/mta-multi-tenant.yaml#L18 --- srv/src/main/java/my/bookshop/config/WebSecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/src/main/java/my/bookshop/config/WebSecurityConfig.java b/srv/src/main/java/my/bookshop/config/WebSecurityConfig.java index 346a784f..18bd091b 100644 --- a/srv/src/main/java/my/bookshop/config/WebSecurityConfig.java +++ b/srv/src/main/java/my/bookshop/config/WebSecurityConfig.java @@ -18,7 +18,7 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain configure(HttpSecurity http) throws Exception { - return http.securityMatchers(s -> s.requestMatchers(antMatcher("/actuator/health"), antMatcher("/swagger/**"))) // + return http.securityMatchers(s -> s.requestMatchers(antMatcher("/swagger/**"))) // .csrf(c -> c.disable()).authorizeHttpRequests(a -> a.anyRequest().permitAll()) .build(); } From 716074cc3c673ebc772c133cfe21cc83bbe8b405 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Tue, 21 Jan 2025 17:12:02 +0100 Subject: [PATCH 056/244] Added missing label to UI annotation (#431) Current UI: image With this fix: image --- app/admin/fiori-service.cds | 1 + 1 file changed, 1 insertion(+) diff --git a/app/admin/fiori-service.cds b/app/admin/fiori-service.cds index bee1aa19..c848916b 100644 --- a/app/admin/fiori-service.cds +++ b/app/admin/fiori-service.cds @@ -29,6 +29,7 @@ annotate AdminService.Books with @(UI : { { $Type : 'UI.ReferenceFacet', ID : 'AttachmentsFacet', + Label : '{i18n>attachments}', Target : 'covers/@UI.LineItem' }, { From 26349020ecc559e64071de27c10233dbfe4cf22d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Wed, 22 Jan 2025 14:56:58 +0100 Subject: [PATCH 057/244] Use new CDS parser (#432) --- .cdsrc.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.cdsrc.json b/.cdsrc.json index d7bd9b1f..9f178cd8 100644 --- a/.cdsrc.json +++ b/.cdsrc.json @@ -4,5 +4,8 @@ "extensibility": true, "toggles": true }, - "profile": "with-mtx-sidecar" + "profile": "with-mtx-sidecar", + "cdsc": { + "newParser": true + } } From 740f4dafba5bf5023ffb0aeef2b3bf012523a18b Mon Sep 17 00:00:00 2001 From: BraunMatthias <59841349+BraunMatthias@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:49:57 +0100 Subject: [PATCH 058/244] Update to cds-services 3.7.1 (#433) --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index efcfad7b..2c536a3b 100644 --- a/pom.xml +++ b/pom.xml @@ -23,9 +23,9 @@ 21 - 3.6.0 - 5.14.0 - 3.5.3 + 3.7.1 + 5.15.0 + 3.5.7 3.8.4 1.0.5 From 783af191619255e28df778e06ea3897f52f4d049 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 31 Jan 2025 12:37:40 +0100 Subject: [PATCH 059/244] Update several package-lock.json files (#434) --- app/package-lock.json | 51 +++++--- db/package-lock.json | 14 +-- mtx/sidecar/package-lock.json | 145 +++++++++++---------- package-lock.json | 230 +++++++++++++++++++--------------- 4 files changed, 257 insertions(+), 183 deletions(-) diff --git a/app/package-lock.json b/app/package-lock.json index 0cb233d6..2fe4a66c 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -868,9 +868,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -970,9 +970,19 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fecha": { @@ -1094,21 +1104,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", + "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -1117,6 +1127,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -1876,9 +1899,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "license": "ISC", "bin": { "semver": "bin/semver.js" diff --git a/db/package-lock.json b/db/package-lock.json index b4f7efd5..ad277cf7 100644 --- a/db/package-lock.json +++ b/db/package-lock.json @@ -14,15 +14,15 @@ } }, "node_modules/@sap/hdi": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.6.0.tgz", - "integrity": "sha512-heRX6dvyr58LT0jrZECpt9jJTHIWttDSuLKsBccpKPBbBJxCDr6hpIXKmtCJj7M7ASDgESSGx1fE326V/ltlLQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.7.0.tgz", + "integrity": "sha512-iA7W3en3QdZBTialmbomB2E6q4mP/b2Z2S2juhyQpbG7jPhc9jcL3S2wMkDv1XF3RJ5bmm6S/QwiSPtuCfI3LQ==", "license": "See LICENSE file", "dependencies": { "async": "^3.2.3" }, "engines": { - "node": ">=18 <=20" + "node": ">=18" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.5", @@ -194,9 +194,9 @@ } }, "node_modules/hdb": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.11.tgz", - "integrity": "sha512-q+VG76R9gO0jg6HBz98bxRWKSJSMTHu1IQjbfrjsr34q84mC7bPu1T0yVbDbQAJ7lwd+cg4Ze+TrqbAj96TWMA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.12.tgz", + "integrity": "sha512-vv+cjmvr6fNH/s0Q2zOZc4sEjMpSC0KuacFn8dp3L38qM3RA2LLeX70wWhZLESpwvwUf1pQkRfUhZeooFSmv3A==", "license": "Apache-2.0", "dependencies": { "iconv-lite": "^0.4.18" diff --git a/mtx/sidecar/package-lock.json b/mtx/sidecar/package-lock.json index 90ad0c31..23cce481 100644 --- a/mtx/sidecar/package-lock.json +++ b/mtx/sidecar/package-lock.json @@ -19,9 +19,9 @@ } }, "node_modules/@cap-js/db-service": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.16.2.tgz", - "integrity": "sha512-B9XSThHB3McPYBGP1Lty4/I5edD6aCcBFKRLYIqUj2u6gIzHNJXu1TIHicGwWb/e6Plp2+ntwTQ01DgMp6Xgtg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.17.0.tgz", + "integrity": "sha512-n2hna2hh2eg588KmXUvDj2n/1UnlaUcIKSRuQCVDoYnGex8fFP58nqZCJzJnLsr0UYqm5+yO2AK5hwHlvJ2hzA==", "license": "SEE LICENSE", "dependencies": { "generic-pool": "^3.9.0" @@ -31,12 +31,12 @@ } }, "node_modules/@cap-js/hana": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.5.2.tgz", - "integrity": "sha512-8+fxzHHiJEFL0KZtuCKwKFu1HmZA3mvyEfWEbd7w81MSmsvCqkrrKpix0cEvnaG2pahxuAECDthqiQJ3GMLFVQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.6.0.tgz", + "integrity": "sha512-z9TrqwX72yT1WeTsSIaaXD2CTJgVTlklPbvMzKoCaCpnAknKcBSuNyakrmlSRIs8E0ci/YJ2b0mBajQmkOSURg==", "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.16.1", + "@cap-js/db-service": "^1.17.0", "hdb": "^0.19.5" }, "peerDependencies": { @@ -50,13 +50,13 @@ } }, "node_modules/@cap-js/sqlite": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.7.8.tgz", - "integrity": "sha512-llFn0LGNIdlsfU4KjzyuIMvlQhKxXodq4GIt9yStmmX/av/twwHR8SyUmTJirRH4IkNtpCsuNYpsI+bYO2Xklg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.8.0.tgz", + "integrity": "sha512-Qd/IrSksT+NWUopwtKnKMSs4pPnzfXJiILycK5CkZH3dKju9xpUvHBYxJF5uXBnN6UOhFURXXyvJ0BArk40nvQ==", "dev": true, "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.14.1", + "@cap-js/db-service": "^1.17.0", "better-sqlite3": "^11.0.0" }, "peerDependencies": { @@ -64,9 +64,9 @@ } }, "node_modules/@sap/cds": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.6.0.tgz", - "integrity": "sha512-MagthrcmAa1l+nAtx/4gMnDv9scfkIwXPFQT7N8+dLU0u1DitLePA5nYk9M62wHZy79mE1tPwxdoLS2NdMzQQw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.7.0.tgz", + "integrity": "sha512-QL5xQIkID3sICYNIlpCfXjvDGKfO6WpuGWVD9x3T6zFzdz409dSOzq2wp7HSWWKsy0HZEPRgsRatYjFx3LMNTA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/cds-compiler": ">=5.1", @@ -83,18 +83,22 @@ "node": ">=18" }, "peerDependencies": { - "express": ">=4" + "express": "^4", + "tar": "^7" }, "peerDependenciesMeta": { "express": { "optional": true + }, + "tar": { + "optional": true } } }, "node_modules/@sap/cds-compiler": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.6.0.tgz", - "integrity": "sha512-MYhAQNkSQPwi16q738edpHP9JcVH8gunm15+02nQu1Rz59PQDcj7GcWqyb4EGQklKRyMUg/5J4zXKaH1RxKqgA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.7.0.tgz", + "integrity": "sha512-nmKEfYICdFlGaQ7DQz8Jb2KrYDajCYTB8yllcQGwq7nyYE01MM0/1c7N7BRbSOnX5HStZ/MUG9+NQweb9dEOEA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "antlr4": "4.9.3" @@ -109,9 +113,9 @@ } }, "node_modules/@sap/cds-fiori": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.2.8.tgz", - "integrity": "sha512-UXvsd4pGxnrxMBDO3HWLHFYhkVIsz3F15ePrAqHpeUKXw42ToCFFu+QJTbhKtONKlxoW1DVDobga4K1dvSyzrw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.3.0.tgz", + "integrity": "sha512-PEppgJyc3SO0df5zP2OZG41UKLdsowQLwcsLUSFPzn56MlbFdzaRhO1qXaMhPlQ+bIo19aLOZcAZa9ewkSwS0w==", "license": "SEE LICENSE IN LICENSE", "peerDependencies": { "@sap/cds": ">=7.6", @@ -134,9 +138,9 @@ } }, "node_modules/@sap/cds-mtxs": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.4.2.tgz", - "integrity": "sha512-/6jAsY/6UgdGhJseoo9PNcfT8TJZ5mKvdRbAdbBgaaOYFGG6c1RIMBvQmGJ/37lctbZIu9K21l/ftiTt5lCwqA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.5.0.tgz", + "integrity": "sha512-d3R0cBaBdqLWRniZ/vwi/3TtKBCpCFJx5m/4Tg24erufs9e76aeLw7VnNJL24paNWdtiqMXuKFsTuPr4oEu2Vg==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/hdi-deploy": ">=4", @@ -148,15 +152,15 @@ } }, "node_modules/@sap/hdi": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.6.0.tgz", - "integrity": "sha512-heRX6dvyr58LT0jrZECpt9jJTHIWttDSuLKsBccpKPBbBJxCDr6hpIXKmtCJj7M7ASDgESSGx1fE326V/ltlLQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.7.0.tgz", + "integrity": "sha512-iA7W3en3QdZBTialmbomB2E6q4mP/b2Z2S2juhyQpbG7jPhc9jcL3S2wMkDv1XF3RJ5bmm6S/QwiSPtuCfI3LQ==", "license": "See LICENSE file", "dependencies": { "async": "^3.2.3" }, "engines": { - "node": ">=18 <=20" + "node": ">=18" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.5", @@ -215,9 +219,9 @@ } }, "node_modules/@sap/xssec": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.2.7.tgz", - "integrity": "sha512-RCBFma3jiLIJ1naAPFNLQWMIkKwQENiwSsdEtffs2Q+RhH+AnLiaXAqxtXGlO/N+Lg53WANEIcLThYRkttQ00w==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.2.8.tgz", + "integrity": "sha512-hTwupdCFdp3ElAF/e4qj6Akgf3N6/C7bq3qggbTeHEdaPVEehYPyxuTsdxb1TVI1vUGlHjB7RUW6aa6n30fP6Q==", "license": "SAP DEVELOPER LICENSE AGREEMENT", "dependencies": { "debug": "^4.3.4", @@ -309,9 +313,9 @@ "license": "MIT" }, "node_modules/better-sqlite3": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.7.0.tgz", - "integrity": "sha512-mXpa5jnIKKHeoGzBrUJrc65cXFKcILGZpU3FXR0pradUEm9MA7UZz02qfEejaMcm9iXrSOCenwwYMJ/tZ1y5Ig==", + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.8.1.tgz", + "integrity": "sha512-9BxNaBkblMjhJW8sMRZxnxVTRgbRmssZW0Oxc1MPBTfiR+WW21e2Mk4qu8CzrcZb1LwPCnFsfDEzq+SNcBU8eg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -690,9 +694,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -926,21 +930,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", + "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -949,6 +953,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "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", @@ -1014,9 +1031,9 @@ } }, "node_modules/hdb": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.11.tgz", - "integrity": "sha512-q+VG76R9gO0jg6HBz98bxRWKSJSMTHu1IQjbfrjsr34q84mC7bPu1T0yVbDbQAJ7lwd+cg4Ze+TrqbAj96TWMA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.12.tgz", + "integrity": "sha512-vv+cjmvr6fNH/s0Q2zOZc4sEjMpSC0KuacFn8dp3L38qM3RA2LLeX70wWhZLESpwvwUf1pQkRfUhZeooFSmv3A==", "license": "Apache-2.0", "dependencies": { "iconv-lite": "^0.4.18" @@ -1232,9 +1249,9 @@ "license": "MIT" }, "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "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" }, @@ -1254,9 +1271,9 @@ "license": "MIT" }, "node_modules/node-abi": { - "version": "3.71.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", - "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "version": "3.73.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz", + "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==", "dev": true, "license": "MIT", "dependencies": { @@ -1340,9 +1357,9 @@ } }, "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", "dev": true, "license": "MIT", "dependencies": { @@ -1351,7 +1368,7 @@ "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", + "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", @@ -1493,9 +1510,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -1732,9 +1749,9 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", "dev": true, "license": "MIT", "dependencies": { @@ -1892,9 +1909,9 @@ } }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/package-lock.json b/package-lock.json index 466989a9..33197a22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,9 +30,9 @@ } }, "node_modules/@cap-js/db-service": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.16.2.tgz", - "integrity": "sha512-B9XSThHB3McPYBGP1Lty4/I5edD6aCcBFKRLYIqUj2u6gIzHNJXu1TIHicGwWb/e6Plp2+ntwTQ01DgMp6Xgtg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.17.0.tgz", + "integrity": "sha512-n2hna2hh2eg588KmXUvDj2n/1UnlaUcIKSRuQCVDoYnGex8fFP58nqZCJzJnLsr0UYqm5+yO2AK5hwHlvJ2hzA==", "license": "SEE LICENSE", "dependencies": { "generic-pool": "^3.9.0" @@ -42,12 +42,12 @@ } }, "node_modules/@cap-js/hana": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.5.2.tgz", - "integrity": "sha512-8+fxzHHiJEFL0KZtuCKwKFu1HmZA3mvyEfWEbd7w81MSmsvCqkrrKpix0cEvnaG2pahxuAECDthqiQJ3GMLFVQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.6.0.tgz", + "integrity": "sha512-z9TrqwX72yT1WeTsSIaaXD2CTJgVTlklPbvMzKoCaCpnAknKcBSuNyakrmlSRIs8E0ci/YJ2b0mBajQmkOSURg==", "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.16.1", + "@cap-js/db-service": "^1.17.0", "hdb": "^0.19.5" }, "peerDependencies": { @@ -61,13 +61,13 @@ } }, "node_modules/@cap-js/sqlite": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.7.8.tgz", - "integrity": "sha512-llFn0LGNIdlsfU4KjzyuIMvlQhKxXodq4GIt9yStmmX/av/twwHR8SyUmTJirRH4IkNtpCsuNYpsI+bYO2Xklg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.8.0.tgz", + "integrity": "sha512-Qd/IrSksT+NWUopwtKnKMSs4pPnzfXJiILycK5CkZH3dKju9xpUvHBYxJF5uXBnN6UOhFURXXyvJ0BArk40nvQ==", "dev": true, "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.14.1", + "@cap-js/db-service": "^1.17.0", "better-sqlite3": "^11.0.0" }, "peerDependencies": { @@ -75,9 +75,9 @@ } }, "node_modules/@sap/cds": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.6.0.tgz", - "integrity": "sha512-MagthrcmAa1l+nAtx/4gMnDv9scfkIwXPFQT7N8+dLU0u1DitLePA5nYk9M62wHZy79mE1tPwxdoLS2NdMzQQw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.7.0.tgz", + "integrity": "sha512-QL5xQIkID3sICYNIlpCfXjvDGKfO6WpuGWVD9x3T6zFzdz409dSOzq2wp7HSWWKsy0HZEPRgsRatYjFx3LMNTA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/cds-compiler": ">=5.1", @@ -94,18 +94,22 @@ "node": ">=18" }, "peerDependencies": { - "express": ">=4" + "express": "^4", + "tar": "^7" }, "peerDependenciesMeta": { "express": { "optional": true + }, + "tar": { + "optional": true } } }, "node_modules/@sap/cds-compiler": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.6.0.tgz", - "integrity": "sha512-MYhAQNkSQPwi16q738edpHP9JcVH8gunm15+02nQu1Rz59PQDcj7GcWqyb4EGQklKRyMUg/5J4zXKaH1RxKqgA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.7.0.tgz", + "integrity": "sha512-nmKEfYICdFlGaQ7DQz8Jb2KrYDajCYTB8yllcQGwq7nyYE01MM0/1c7N7BRbSOnX5HStZ/MUG9+NQweb9dEOEA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "antlr4": "4.9.3" @@ -120,9 +124,9 @@ } }, "node_modules/@sap/cds-dk": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-8.6.1.tgz", - "integrity": "sha512-33yQwhJMDFMNabiBWiFT0JEZmPs76pqUJQhJC9YuRt1ibk3/DMMzzfmL8ZQZMGcn1pOgkEmG3+vULDKE/86Wjg==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-8.7.0.tgz", + "integrity": "sha512-RVJsyEX/9IgvbcAKO0d29jzKHzD8NA08fIkbopcAyPMyarc3UG4wAVSFlcsBx+F1WiLd+LVZgs0MdjPtG305lA==", "dev": true, "hasShrinkwrap": true, "license": "SEE LICENSE IN LICENSE", @@ -162,7 +166,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/db-service": { - "version": "1.16.1", + "version": "1.17.0", "dev": true, "license": "SEE LICENSE", "optional": true, @@ -174,7 +178,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/openapi": { - "version": "1.1.1", + "version": "1.1.2", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -185,12 +189,12 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/sqlite": { - "version": "1.7.8", + "version": "1.8.0", "dev": true, "license": "SEE LICENSE", "optional": true, "dependencies": { - "@cap-js/db-service": "^1.14.1", + "@cap-js/db-service": "^1.17.0", "better-sqlite3": "^11.0.0" }, "peerDependencies": { @@ -247,7 +251,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/core": { - "version": "0.9.1", + "version": "0.10.0", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -280,7 +284,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/js": { - "version": "9.17.0", + "version": "9.19.0", "dev": true, "license": "MIT", "engines": { @@ -296,10 +300,11 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/plugin-kit": { - "version": "0.2.4", + "version": "0.2.5", "dev": true, "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { @@ -363,7 +368,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds": { - "version": "8.6.0", + "version": "8.7.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -381,16 +386,20 @@ "node": ">=18" }, "peerDependencies": { - "express": ">=4" + "express": "^4", + "tar": "^7" }, "peerDependenciesMeta": { "express": { "optional": true + }, + "tar": { + "optional": true } } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-compiler": { - "version": "5.6.0", + "version": "5.7.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -406,7 +415,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-fiori": { - "version": "1.2.8", + "version": "1.3.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "peerDependencies": { @@ -429,7 +438,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-mtxs": { - "version": "2.4.2", + "version": "2.5.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -457,14 +466,14 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/hdi": { - "version": "4.6.0", + "version": "4.7.0", "dev": true, "license": "See LICENSE file", "dependencies": { "async": "^3.2.3" }, "engines": { - "node": ">=18 <=20" + "node": ">=18" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.5", @@ -662,7 +671,7 @@ "optional": true }, "node_modules/@sap/cds-dk/node_modules/better-sqlite3": { - "version": "11.7.0", + "version": "11.8.1", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1080,7 +1089,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/es-object-atoms": { - "version": "1.0.0", + "version": "1.1.1", "dev": true, "license": "MIT", "dependencies": { @@ -1107,17 +1116,17 @@ } }, "node_modules/@sap/cds-dk/node_modules/eslint": { - "version": "9.17.0", + "version": "9.19.0", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", + "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/js": "9.19.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", @@ -1503,20 +1512,20 @@ } }, "node_modules/@sap/cds-dk/node_modules/get-intrinsic": { - "version": "1.2.6", + "version": "1.2.7", "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", + "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -1525,6 +1534,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@sap/cds-dk/node_modules/get-proto": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/@sap/cds-dk/node_modules/github-from-package": { "version": "0.0.0", "dev": true, @@ -1615,7 +1636,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/hdb": { - "version": "0.19.11", + "version": "0.19.12", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1824,7 +1845,7 @@ "license": "MIT" }, "node_modules/@sap/cds-dk/node_modules/math-intrinsics": { - "version": "1.0.0", + "version": "1.1.0", "dev": true, "license": "MIT", "engines": { @@ -1948,7 +1969,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/napi-build-utils": { - "version": "1.0.2", + "version": "2.0.0", "dev": true, "license": "MIT", "optional": true @@ -1972,7 +1993,7 @@ "license": "MIT" }, "node_modules/@sap/cds-dk/node_modules/node-abi": { - "version": "3.71.0", + "version": "3.73.0", "dev": true, "license": "MIT", "optional": true, @@ -2137,7 +2158,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/prebuild-install": { - "version": "7.1.2", + "version": "7.1.3", "dev": true, "license": "MIT", "optional": true, @@ -2147,7 +2168,7 @@ "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", + "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", @@ -2570,7 +2591,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/tar-fs": { - "version": "2.1.1", + "version": "2.1.2", "dev": true, "license": "MIT", "optional": true, @@ -2787,7 +2808,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/yaml": { - "version": "2.6.1", + "version": "2.7.0", "dev": true, "license": "ISC", "bin": { @@ -2809,9 +2830,9 @@ } }, "node_modules/@sap/cds-fiori": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.2.8.tgz", - "integrity": "sha512-UXvsd4pGxnrxMBDO3HWLHFYhkVIsz3F15ePrAqHpeUKXw42ToCFFu+QJTbhKtONKlxoW1DVDobga4K1dvSyzrw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.3.0.tgz", + "integrity": "sha512-PEppgJyc3SO0df5zP2OZG41UKLdsowQLwcsLUSFPzn56MlbFdzaRhO1qXaMhPlQ+bIo19aLOZcAZa9ewkSwS0w==", "license": "SEE LICENSE IN LICENSE", "peerDependencies": { "@sap/cds": ">=7.6", @@ -2834,9 +2855,9 @@ } }, "node_modules/@sap/cds-mtxs": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.4.2.tgz", - "integrity": "sha512-/6jAsY/6UgdGhJseoo9PNcfT8TJZ5mKvdRbAdbBgaaOYFGG6c1RIMBvQmGJ/37lctbZIu9K21l/ftiTt5lCwqA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.5.0.tgz", + "integrity": "sha512-d3R0cBaBdqLWRniZ/vwi/3TtKBCpCFJx5m/4Tg24erufs9e76aeLw7VnNJL24paNWdtiqMXuKFsTuPr4oEu2Vg==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/hdi-deploy": ">=4", @@ -2848,15 +2869,15 @@ } }, "node_modules/@sap/hdi": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.6.0.tgz", - "integrity": "sha512-heRX6dvyr58LT0jrZECpt9jJTHIWttDSuLKsBccpKPBbBJxCDr6hpIXKmtCJj7M7ASDgESSGx1fE326V/ltlLQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.7.0.tgz", + "integrity": "sha512-iA7W3en3QdZBTialmbomB2E6q4mP/b2Z2S2juhyQpbG7jPhc9jcL3S2wMkDv1XF3RJ5bmm6S/QwiSPtuCfI3LQ==", "license": "See LICENSE file", "dependencies": { "async": "^3.2.3" }, "engines": { - "node": ">=18 <=20" + "node": ">=18" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.5", @@ -2915,9 +2936,9 @@ } }, "node_modules/@sap/xssec": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.2.7.tgz", - "integrity": "sha512-RCBFma3jiLIJ1naAPFNLQWMIkKwQENiwSsdEtffs2Q+RhH+AnLiaXAqxtXGlO/N+Lg53WANEIcLThYRkttQ00w==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.2.8.tgz", + "integrity": "sha512-hTwupdCFdp3ElAF/e4qj6Akgf3N6/C7bq3qggbTeHEdaPVEehYPyxuTsdxb1TVI1vUGlHjB7RUW6aa6n30fP6Q==", "license": "SAP DEVELOPER LICENSE AGREEMENT", "dependencies": { "debug": "^4.3.4", @@ -3009,9 +3030,9 @@ "license": "MIT" }, "node_modules/better-sqlite3": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.7.0.tgz", - "integrity": "sha512-mXpa5jnIKKHeoGzBrUJrc65cXFKcILGZpU3FXR0pradUEm9MA7UZz02qfEejaMcm9iXrSOCenwwYMJ/tZ1y5Ig==", + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.8.1.tgz", + "integrity": "sha512-9BxNaBkblMjhJW8sMRZxnxVTRgbRmssZW0Oxc1MPBTfiR+WW21e2Mk4qu8CzrcZb1LwPCnFsfDEzq+SNcBU8eg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3390,9 +3411,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -3626,21 +3647,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", + "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3649,6 +3670,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "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", @@ -3714,9 +3748,9 @@ } }, "node_modules/hdb": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.11.tgz", - "integrity": "sha512-q+VG76R9gO0jg6HBz98bxRWKSJSMTHu1IQjbfrjsr34q84mC7bPu1T0yVbDbQAJ7lwd+cg4Ze+TrqbAj96TWMA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.12.tgz", + "integrity": "sha512-vv+cjmvr6fNH/s0Q2zOZc4sEjMpSC0KuacFn8dp3L38qM3RA2LLeX70wWhZLESpwvwUf1pQkRfUhZeooFSmv3A==", "license": "Apache-2.0", "dependencies": { "iconv-lite": "^0.4.18" @@ -3932,9 +3966,9 @@ "license": "MIT" }, "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "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" }, @@ -3954,9 +3988,9 @@ "license": "MIT" }, "node_modules/node-abi": { - "version": "3.71.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", - "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "version": "3.73.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz", + "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==", "dev": true, "license": "MIT", "dependencies": { @@ -4040,9 +4074,9 @@ } }, "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", "dev": true, "license": "MIT", "dependencies": { @@ -4051,7 +4085,7 @@ "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", + "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", @@ -4193,9 +4227,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -4436,9 +4470,9 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", "dev": true, "license": "MIT", "dependencies": { @@ -4596,9 +4630,9 @@ } }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "license": "ISC", "bin": { "yaml": "bin.mjs" From 804212f7edf3dc715bde3205fdea70715229845d Mon Sep 17 00:00:00 2001 From: Marc Becker Date: Mon, 3 Feb 2025 15:52:15 +0100 Subject: [PATCH 060/244] Cleanup unused import (#436) --- srv/src/test/java/my/bookshop/GenreHierarchyTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java index 1c1abe72..90358c23 100644 --- a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java +++ b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java @@ -1,6 +1,5 @@ package my.bookshop; -import static org.assertj.core.api.Assumptions.assumeThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; From 19e7e1251a7a8cb4ce23fd2aca0380c4cb6c8287 Mon Sep 17 00:00:00 2001 From: Marc Becker Date: Tue, 4 Feb 2025 16:13:02 +0100 Subject: [PATCH 061/244] Enable default translations for error messages (#437) --- srv/src/main/resources/application.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 6766721d..477f3dfb 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -6,6 +6,8 @@ spring: jmx: enabled: true cds: + errors: + default-translations.enabled: true odata-v4: endpoint.path: "/api" security: From fac44efee3f91bb44ccea921b954e05db05e99a0 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Mon, 10 Feb 2025 10:57:11 +0100 Subject: [PATCH 062/244] Disable native hana associations (#438) --- .cdsrc.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cdsrc.json b/.cdsrc.json index 9f178cd8..751f9d85 100644 --- a/.cdsrc.json +++ b/.cdsrc.json @@ -7,5 +7,8 @@ "profile": "with-mtx-sidecar", "cdsc": { "newParser": true + }, + "sql": { + "native_hana_associations": false } } From 43a98016a6dc8e7f20833ec79c588ca2e6ddb6f9 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Wed, 12 Feb 2025 14:03:52 +0100 Subject: [PATCH 063/244] Align bookshop with CAP Java archetype (#440) Co-authored-by: Marc Becker --- .gitignore | 3 +-- pom.xml | 11 +++++++++++ srv/pom.xml | 4 +--- srv/src/main/resources/application.yaml | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 0d7f525b..f9986b41 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ gen/ edmx/ -schema.sql -schema-nomocks.sql +schema-h2.sql default-env.json openapi.json .env diff --git a/pom.xml b/pom.xml index 2c536a3b..b64c4404 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,17 @@ + + + + + com.sap.cds + cds-maven-plugin + ${cds.services.version} + + + + diff --git a/srv/pom.xml b/srv/pom.xml index 18b22bff..dfbaf573 100644 --- a/srv/pom.xml +++ b/srv/pom.xml @@ -179,7 +179,6 @@ com.sap.cds cds-maven-plugin - ${cds.services.version} cds.clean @@ -220,8 +219,7 @@ build --for java - deploy --to h2 --with-mocks --dry --out "${project.basedir}/src/main/resources/schema.sql" - deploy --to h2 --dry --out "${project.basedir}/src/main/resources/schema-nomocks.sql" + deploy --to h2 --with-mocks --dry --out "${project.basedir}/src/main/resources/schema-h2.sql" compile srv/cat-service.cds -2 openapi --openapi:url /api/browse > "${project.basedir}/src/main/resources/swagger/openapi.json" diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 477f3dfb..da6f33a7 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -44,7 +44,6 @@ management: --- spring: config.activate.on-profile: cloud - sql.init.schema-locations: "classpath:schema-nomocks.sql" cds: sql.hana.search: fuzzy: true @@ -128,6 +127,7 @@ cds: --- spring: config.activate.on-profile: default + sql.init.platform: h2 cds: data-source: auto-config.enabled: false From 8e02df03be2b68964812cf34bee29f04e07be51b Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Mon, 17 Feb 2025 14:22:12 +0100 Subject: [PATCH 064/244] Update cds-feature-attachments and re-use i18n (#442) With version 1.0.6 of the cds-feature-attachments, default UI texts are provided by the plugin itself. --- app/_i18n/i18n.properties | 8 -------- app/_i18n/i18n_de.properties | 8 -------- pom.xml | 2 +- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/app/_i18n/i18n.properties b/app/_i18n/i18n.properties index 84a329b5..a12b718d 100644 --- a/app/_i18n/i18n.properties +++ b/app/_i18n/i18n.properties @@ -69,11 +69,3 @@ AddReview = Add Review Notes = Notes Note = Note ISBN = ISBN - -attachment_content = Content -attachment_mimeType = MIME Type -attachment_fileName = File Name -attachment_status = Status -attachment_note = Note -attachment = Cover -attachments = Covers \ No newline at end of file diff --git a/app/_i18n/i18n_de.properties b/app/_i18n/i18n_de.properties index b9eb4a9c..63c111fb 100644 --- a/app/_i18n/i18n_de.properties +++ b/app/_i18n/i18n_de.properties @@ -69,11 +69,3 @@ AddReview = Rezension hinzufügen Notes = Notizen Note = Notiz ISBN = ISBN - -attachment_content = Inhalt -attachment_mimeType = MIME-Typ -attachment_fileName = Dateiname -attachment_status = Status -attachment_note = Notiz -attachment = Buchcover -attachments = Buchcovers \ No newline at end of file diff --git a/pom.xml b/pom.xml index b64c4404..74b2b82a 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ 5.15.0 3.5.7 3.8.4 - 1.0.5 + 1.0.6 From 88ab48c1d41ccc576eb9f8069d387f38a106c579 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Thu, 27 Feb 2025 22:27:57 +0100 Subject: [PATCH 065/244] Showase type cds.Map (#439) - Enhanced Books and Authors with details map - Provide initial data for the details fields in csv files --- db/books.cds | 2 ++ db/data/my.bookshop-Authors.csv | 20 +++++------ db/data/my.bookshop-Books.csv | 12 +++---- .../handlers/CatalogServiceHandler.java | 33 +++++++++++++++---- 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/db/books.cds b/db/books.cds index e7aa3928..51703f30 100644 --- a/db/books.cds +++ b/db/books.cds @@ -22,6 +22,7 @@ entity Books : cuid, managed { reviews : Association to many Reviews on reviews.book = $self; isReviewable : TechnicalBooleanFlag not null default true; + details : Map; } entity Authors : cuid, managed { @@ -33,6 +34,7 @@ entity Authors : cuid, managed { placeOfDeath : String; books : Association to many Books on books.author = $self; + details : Map; } // annotations for Data Privacy diff --git a/db/data/my.bookshop-Authors.csv b/db/data/my.bookshop-Authors.csv index 84d7eb44..137f405d 100644 --- a/db/data/my.bookshop-Authors.csv +++ b/db/data/my.bookshop-Authors.csv @@ -1,10 +1,10 @@ -ID;NAME;DATEOFBIRTH;PLACEOFBIRTH;DATEOFDEATH;PLACEOFDEATH -335c7bcd-b826-4f14-a788-e0bf6738617a;Emily Brontë;1818-07-30;Thornton, Yorkshire;1848-12-19;Haworth, Yorkshire -e3da2c2e-72ee-45d5-8def-52964c7b252a;Charlote Brontë;1818-04-21;Thornton, Yorkshire;1855-03-31;Haworth, Yorkshire -e7643aae-2d2f-4656-bb2d-1328ad3c8045;Edgar Allen Poe;1809-01-19;Boston, Massachusetts;1849-10-07;Baltimore, Maryland -3c081d9d-abda-4da9-8b6a-4f4555bb26bc;Richard Carpenter;1929-08-14;King’s Lynn, Norfolk;2012-02-26;Hertfordshire, England -b834ddb0-613a-4edf-8d47-7d80989e1325;Jane Austen;1775-12-16;Steventon, United Kingdom;1817-07-18;Winchester, United Kingdom -a57f75fa-2bda-47b5-ab4d-b644570f29cd;F. Scott Fitzgerald;1896-09-24;Saint Paul, Minnesota;1940-12-21;Los Angeles, California -b22f5293-7eea-49bb-9ee7-17c5de81f1df;Harper Lee;1926-04-28;Monroeville, Alabama;2016-02-19;Monroeville, Alabama -1d2ec887-cbf1-491e-943e-33a2b4f39a6f;Gabriel García Márquez;1927-03-06;Aracataca, Columbia;2014-04-17;Mexico City, Mexico -c0526b1a-9a75-4a43-9133-163325cbbd2b;Truman Capote;1924-09-30;New Orleans, Louisiana;1984-08-25;Los Angeles, California +ID;NAME;DATEOFBIRTH;PLACEOFBIRTH;DATEOFDEATH;PLACEOFDEATH;DETAILS +335c7bcd-b826-4f14-a788-e0bf6738617a;Emily Brontë;1818-07-30;Thornton, Yorkshire;1848-12-19;Haworth, Yorkshire;{"pseudonyms": ["Ellis Bell"]} +e3da2c2e-72ee-45d5-8def-52964c7b252a;Charlote Brontë;1818-04-21;Thornton, Yorkshire;1855-03-31;Haworth, Yorkshire;{"pseudonyms": ["Currer Bell"]} +e7643aae-2d2f-4656-bb2d-1328ad3c8045;Edgar Allen Poe;1809-01-19;Boston, Massachusetts;1849-10-07;Baltimore, Maryland;{"nickname": "The Tomahawk Man"} +3c081d9d-abda-4da9-8b6a-4f4555bb26bc;Richard Carpenter;1929-08-14;King’s Lynn, Norfolk;2012-02-26;Hertfordshire, England;{"nickname": "Kip"} +b834ddb0-613a-4edf-8d47-7d80989e1325;Jane Austen;1775-12-16;Steventon, United Kingdom;1817-07-18;Winchester, United Kingdom;{"pseudonyms": ["By a Lady"], "nickname": "Jenny"} +a57f75fa-2bda-47b5-ab4d-b644570f29cd;F. Scott Fitzgerald;1896-09-24;Saint Paul, Minnesota;1940-12-21;Los Angeles, California;{"nickname": "Scottie"} +b22f5293-7eea-49bb-9ee7-17c5de81f1df;Harper Lee;1926-04-28;Monroeville, Alabama;2016-02-19;Monroeville, Alabama;{"nickname": "Nelle"} +1d2ec887-cbf1-491e-943e-33a2b4f39a6f;Gabriel García Márquez;1927-03-06;Aracataca, Columbia;2014-04-17;Mexico City, Mexico;{"nickname": "Gabo"} +c0526b1a-9a75-4a43-9133-163325cbbd2b;Truman Capote;1924-09-30;New Orleans, Louisiana;1984-08-25;Los Angeles, California;{"nickname": "Bulldog", "pseudonyms": ["Buddy"]} diff --git a/db/data/my.bookshop-Books.csv b/db/data/my.bookshop-Books.csv index e5453379..4b23413b 100644 --- a/db/data/my.bookshop-Books.csv +++ b/db/data/my.bookshop-Books.csv @@ -1,6 +1,6 @@ -ID;TITLE;DESCR;AUTHOR_ID;STOCK;PRICE;CURRENCY_CODE;GENRE_ID;RATING;ISBN -f846b0b9-01d4-4f6d-82a4-d79204f62278;Wuthering Heights;"Wuthering Heights, Emily Brontë's only novel, was published in 1847 under the pseudonym ""Ellis Bell"". It was written between October 1845 and June 1846. Wuthering Heights and Anne Brontë's Agnes Grey were accepted by publisher Thomas Newby before the success of their sister Charlotte's novel Jane Eyre. After Emily's death, Charlotte edited the manuscript of Wuthering Heights and arranged for the edited version to be published as a posthumous second edition in 1850.";335c7bcd-b826-4f14-a788-e0bf6738617a;12;11.11;GBP;103;4.5;979-8698267973 -9b084139-0b1e-43b6-b12a-7b3669d75f02;Jane Eyre;"Jane Eyre /ɛər/ (originally published as Jane Eyre: An Autobiography) is a novel by English writer Charlotte Brontë, published under the pen name ""Currer Bell"", on 16 October 1847, by Smith, Elder & Co. of London. The first American edition was published the following year by Harper & Brothers of New York. Primarily a bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall. The novel revolutionised prose fiction in that the focus on Jane's moral and spiritual development is told through an intimate, first-person narrative, where actions and events are coloured by a psychological intensity. The book contains elements of social criticism, with a strong sense of Christian morality at its core and is considered by many to be ahead of its time because of Jane's individualistic character and how the novel approaches the topics of class, sexuality, religion and feminism.";e3da2c2e-72ee-45d5-8def-52964c7b252a;11;12.34;GBP;103;3.0;979-8598716472 -51061ce3-ddde-4d70-a2dc-6314afbcc73e;The Raven;"“The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;333;13.13;USD;117;2.5;978-1092909747 -aebdfc8a-0dfa-4468-bd36-48aabd65e663;Eleonora;"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;555;14;USD;117;1.0;979-8669820985 -4a519e61-3c3a-4bd9-ab12-d7e0c5329933;Catweazle;Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.;3c081d9d-abda-4da9-8b6a-4f4555bb26bc;22;15;EUR;110;4.0;978-3473523023 +ID;TITLE;DESCR;AUTHOR_ID;STOCK;PRICE;CURRENCY_CODE;GENRE_ID;RATING;ISBN;DETAILS +f846b0b9-01d4-4f6d-82a4-d79204f62278;Wuthering Heights;"Wuthering Heights, Emily Brontë's only novel, was published in 1847 under the pseudonym ""Ellis Bell"". It was written between October 1845 and June 1846. Wuthering Heights and Anne Brontë's Agnes Grey were accepted by publisher Thomas Newby before the success of their sister Charlotte's novel Jane Eyre. After Emily's death, Charlotte edited the manuscript of Wuthering Heights and arranged for the edited version to be published as a posthumous second edition in 1850.";335c7bcd-b826-4f14-a788-e0bf6738617a;12;11.11;GBP;103;4.5;979-8698267973;{"pages": 446} +9b084139-0b1e-43b6-b12a-7b3669d75f02;Jane Eyre;"Jane Eyre /ɛər/ (originally published as Jane Eyre: An Autobiography) is a novel by English writer Charlotte Brontë, published under the pen name ""Currer Bell"", on 16 October 1847, by Smith, Elder & Co. of London. The first American edition was published the following year by Harper & Brothers of New York. Primarily a bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall. The novel revolutionised prose fiction in that the focus on Jane's moral and spiritual development is told through an intimate, first-person narrative, where actions and events are coloured by a psychological intensity. The book contains elements of social criticism, with a strong sense of Christian morality at its core and is considered by many to be ahead of its time because of Jane's individualistic character and how the novel approaches the topics of class, sexuality, religion and feminism.";e3da2c2e-72ee-45d5-8def-52964c7b252a;11;12.34;GBP;103;3.0;979-8598716472;{"pages": 290} +51061ce3-ddde-4d70-a2dc-6314afbcc73e;The Raven;"“The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;333;13.13;USD;117;2.5;978-1092909747;{"pages": 46} +aebdfc8a-0dfa-4468-bd36-48aabd65e663;Eleonora;"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;555;14;USD;117;1.0;979-8669820985;{"pages": 29} +4a519e61-3c3a-4bd9-ab12-d7e0c5329933;Catweazle;Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.;3c081d9d-abda-4da9-8b6a-4f4555bb26bc;22;15;EUR;110;4.0;978-3473523023;{"pages": 224} diff --git a/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java b/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java index b36b859e..c9a5b0e7 100644 --- a/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java +++ b/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java @@ -13,11 +13,14 @@ import com.sap.cds.Result; import com.sap.cds.Struct; +import com.sap.cds.ql.CQL; import com.sap.cds.ql.Insert; import com.sap.cds.ql.Select; import com.sap.cds.ql.Update; import com.sap.cds.ql.cqn.CqnAnalyzer; import com.sap.cds.ql.cqn.CqnSelect; +import com.sap.cds.ql.cqn.CqnSelectListItem; +import com.sap.cds.ql.cqn.Modifier; import com.sap.cds.reflect.CdsModel; import com.sap.cds.services.ErrorStatuses; import com.sap.cds.services.ServiceException; @@ -74,6 +77,19 @@ class CatalogServiceHandler implements EventHandler { this.analyzer = CqnAnalyzer.create(model); } + @Before(entity = Books_.CDS_NAME) + public void beforeReadBooks(CdsReadEventContext context) { + CqnSelect copy = CQL.copy(context.getCqn(), new Modifier() { + @Override + public List items(List items) { + items.add(CQL.get("details")); + items.add(CQL.get("stock")); + return items; + } + }); + context.setCqn(copy); + } + /** * Invokes some validations before creating a review. * @@ -127,11 +143,20 @@ public void afterAddReview(BooksAddReviewContext context) { @After(event = CqnService.EVENT_READ) public void discountBooks(Stream books) { books.filter(b -> b.getTitle() != null).forEach(b -> { - loadStockIfNotSet(b); discountBooksWithMoreThan111Stock(b, featureToggles.isEnabled("discount")); }); } + @After(event = CqnService.EVENT_READ) + public void bigBooks(Stream books) { + books.filter(b -> b.getDetails() != null).forEach(b -> { + int pages = (int) b.getDetails().get("pages"); + if (pages > 400) { + b.setTitle("%s -- Big Book".formatted(b.getTitle())); + } + }); + } + @After public void setIsReviewable(CdsReadEventContext context, List books) { String user = context.getUserInfo().getName(); @@ -185,10 +210,4 @@ private void discountBooksWithMoreThan111Stock(Books b, boolean premium) { } } - private void loadStockIfNotSet(Books b) { - if (b.getId() != null && b.getStock() == null) { - b.setStock(db.run(Select.from(BOOKS).byId(b.getId()).columns(Books_::stock)).single(Books.class).getStock()); - } - } - } From beaebcad808a7763bb6383e64d8a972648df15fe Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 28 Feb 2025 16:47:23 +0100 Subject: [PATCH 066/244] Bump cds-feature-attachments to 1.0.7 (#444) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 74b2b82a..1d04fed4 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ 5.15.0 3.5.7 3.8.4 - 1.0.6 + 1.0.7 From 1cc55c4ca2db204966b9044f8ea4d9cf37580e4f Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 28 Feb 2025 20:27:10 +0100 Subject: [PATCH 067/244] Leftovers from demonstrating cds.Map (#443) - Remove field details from Books entity - Avoid duplicate items in select list --- db/books.cds | 1 - db/data/my.bookshop-Books.csv | 12 ++++++------ .../bookshop/handlers/CatalogServiceHandler.java | 16 ++++------------ 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/db/books.cds b/db/books.cds index 51703f30..82e63043 100644 --- a/db/books.cds +++ b/db/books.cds @@ -22,7 +22,6 @@ entity Books : cuid, managed { reviews : Association to many Reviews on reviews.book = $self; isReviewable : TechnicalBooleanFlag not null default true; - details : Map; } entity Authors : cuid, managed { diff --git a/db/data/my.bookshop-Books.csv b/db/data/my.bookshop-Books.csv index 4b23413b..e5453379 100644 --- a/db/data/my.bookshop-Books.csv +++ b/db/data/my.bookshop-Books.csv @@ -1,6 +1,6 @@ -ID;TITLE;DESCR;AUTHOR_ID;STOCK;PRICE;CURRENCY_CODE;GENRE_ID;RATING;ISBN;DETAILS -f846b0b9-01d4-4f6d-82a4-d79204f62278;Wuthering Heights;"Wuthering Heights, Emily Brontë's only novel, was published in 1847 under the pseudonym ""Ellis Bell"". It was written between October 1845 and June 1846. Wuthering Heights and Anne Brontë's Agnes Grey were accepted by publisher Thomas Newby before the success of their sister Charlotte's novel Jane Eyre. After Emily's death, Charlotte edited the manuscript of Wuthering Heights and arranged for the edited version to be published as a posthumous second edition in 1850.";335c7bcd-b826-4f14-a788-e0bf6738617a;12;11.11;GBP;103;4.5;979-8698267973;{"pages": 446} -9b084139-0b1e-43b6-b12a-7b3669d75f02;Jane Eyre;"Jane Eyre /ɛər/ (originally published as Jane Eyre: An Autobiography) is a novel by English writer Charlotte Brontë, published under the pen name ""Currer Bell"", on 16 October 1847, by Smith, Elder & Co. of London. The first American edition was published the following year by Harper & Brothers of New York. Primarily a bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall. The novel revolutionised prose fiction in that the focus on Jane's moral and spiritual development is told through an intimate, first-person narrative, where actions and events are coloured by a psychological intensity. The book contains elements of social criticism, with a strong sense of Christian morality at its core and is considered by many to be ahead of its time because of Jane's individualistic character and how the novel approaches the topics of class, sexuality, religion and feminism.";e3da2c2e-72ee-45d5-8def-52964c7b252a;11;12.34;GBP;103;3.0;979-8598716472;{"pages": 290} -51061ce3-ddde-4d70-a2dc-6314afbcc73e;The Raven;"“The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;333;13.13;USD;117;2.5;978-1092909747;{"pages": 46} -aebdfc8a-0dfa-4468-bd36-48aabd65e663;Eleonora;"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;555;14;USD;117;1.0;979-8669820985;{"pages": 29} -4a519e61-3c3a-4bd9-ab12-d7e0c5329933;Catweazle;Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.;3c081d9d-abda-4da9-8b6a-4f4555bb26bc;22;15;EUR;110;4.0;978-3473523023;{"pages": 224} +ID;TITLE;DESCR;AUTHOR_ID;STOCK;PRICE;CURRENCY_CODE;GENRE_ID;RATING;ISBN +f846b0b9-01d4-4f6d-82a4-d79204f62278;Wuthering Heights;"Wuthering Heights, Emily Brontë's only novel, was published in 1847 under the pseudonym ""Ellis Bell"". It was written between October 1845 and June 1846. Wuthering Heights and Anne Brontë's Agnes Grey were accepted by publisher Thomas Newby before the success of their sister Charlotte's novel Jane Eyre. After Emily's death, Charlotte edited the manuscript of Wuthering Heights and arranged for the edited version to be published as a posthumous second edition in 1850.";335c7bcd-b826-4f14-a788-e0bf6738617a;12;11.11;GBP;103;4.5;979-8698267973 +9b084139-0b1e-43b6-b12a-7b3669d75f02;Jane Eyre;"Jane Eyre /ɛər/ (originally published as Jane Eyre: An Autobiography) is a novel by English writer Charlotte Brontë, published under the pen name ""Currer Bell"", on 16 October 1847, by Smith, Elder & Co. of London. The first American edition was published the following year by Harper & Brothers of New York. Primarily a bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall. The novel revolutionised prose fiction in that the focus on Jane's moral and spiritual development is told through an intimate, first-person narrative, where actions and events are coloured by a psychological intensity. The book contains elements of social criticism, with a strong sense of Christian morality at its core and is considered by many to be ahead of its time because of Jane's individualistic character and how the novel approaches the topics of class, sexuality, religion and feminism.";e3da2c2e-72ee-45d5-8def-52964c7b252a;11;12.34;GBP;103;3.0;979-8598716472 +51061ce3-ddde-4d70-a2dc-6314afbcc73e;The Raven;"“The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;333;13.13;USD;117;2.5;978-1092909747 +aebdfc8a-0dfa-4468-bd36-48aabd65e663;Eleonora;"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.";e7643aae-2d2f-4656-bb2d-1328ad3c8045;555;14;USD;117;1.0;979-8669820985 +4a519e61-3c3a-4bd9-ab12-d7e0c5329933;Catweazle;Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.;3c081d9d-abda-4da9-8b6a-4f4555bb26bc;22;15;EUR;110;4.0;978-3473523023 diff --git a/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java b/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java index c9a5b0e7..d477c3ff 100644 --- a/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java +++ b/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java @@ -82,8 +82,10 @@ public void beforeReadBooks(CdsReadEventContext context) { CqnSelect copy = CQL.copy(context.getCqn(), new Modifier() { @Override public List items(List items) { - items.add(CQL.get("details")); - items.add(CQL.get("stock")); + CqnSelectListItem stock = CQL.get("stock"); + if (!items.contains(stock)) { + items.add(stock); + } return items; } }); @@ -147,16 +149,6 @@ public void discountBooks(Stream books) { }); } - @After(event = CqnService.EVENT_READ) - public void bigBooks(Stream books) { - books.filter(b -> b.getDetails() != null).forEach(b -> { - int pages = (int) b.getDetails().get("pages"); - if (pages > 400) { - b.setTitle("%s -- Big Book".formatted(b.getTitle())); - } - }); - } - @After public void setIsReviewable(CdsReadEventContext context, List books) { String user = context.getUserInfo().getName(); From df31eb0a1d49d864b467036b360e7ace3d96eb47 Mon Sep 17 00:00:00 2001 From: Marc Becker Date: Thu, 6 Mar 2025 11:56:38 +0100 Subject: [PATCH 068/244] Update CDS Services to 3.8.0 and enable Draft Messages (#445) - Updates @sap/cds-dk to 8.8.0 and CDS Services to 3.8.0 - Enables Draft Messages - Enables OData containment --- .cdsrc.json | 8 +- app/addresses/webapp/manifest.json | 6 +- app/admin/webapp/manifest.json | 6 +- app/browse/webapp/manifest.json | 6 +- app/genres/webapp/manifest.json | 4 +- app/notes/webapp/manifest.json | 4 +- app/orders/webapp/manifest.json | 10 +- app/package-lock.json | 77 +++-- app/reviews/webapp/manifest.json | 6 +- db/package-lock.json | 10 +- mtx/sidecar/package-lock.json | 151 ++++++---- package-lock.json | 266 +++++++++++------- pom.xml | 8 +- srv/notes-mashup.cds | 2 +- .../main/java/my/bookshop/MessageKeys.java | 1 - .../handlers/AdminServiceHandler.java | 15 +- srv/src/main/resources/messages.properties | 3 +- srv/src/main/resources/messages_de.properties | 3 +- 18 files changed, 352 insertions(+), 234 deletions(-) diff --git a/.cdsrc.json b/.cdsrc.json index 751f9d85..8b1c3585 100644 --- a/.cdsrc.json +++ b/.cdsrc.json @@ -5,8 +5,14 @@ "toggles": true }, "profile": "with-mtx-sidecar", + "odata": { + "containment": true + }, "cdsc": { - "newParser": true + "newParser": true, + "beta": { + "draftMessages": true + } }, "sql": { "native_hana_associations": false diff --git a/app/addresses/webapp/manifest.json b/app/addresses/webapp/manifest.json index 5266df52..8a535985 100644 --- a/app/addresses/webapp/manifest.json +++ b/app/addresses/webapp/manifest.json @@ -86,7 +86,7 @@ "name": "sap.fe.templates.ListReport", "options": { "settings" : { - "entitySet" : "Addresses", + "contextPath" : "/Addresses", "navigation" : { "Addresses" : { "detail" : { @@ -103,7 +103,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Addresses", + "contextPath" : "/Addresses", "navigation" : { "notes" : { "detail" : { @@ -120,7 +120,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet": "Notes" + "contextPath": "/Addresses/notes" } } } diff --git a/app/admin/webapp/manifest.json b/app/admin/webapp/manifest.json index 4225597f..29ac7e46 100644 --- a/app/admin/webapp/manifest.json +++ b/app/admin/webapp/manifest.json @@ -86,7 +86,7 @@ "name": "sap.fe.templates.ListReport", "options": { "settings" : { - "entitySet" : "Books", + "contextPath" : "/Books", "navigation" : { "Books" : { "detail" : { @@ -113,7 +113,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Books", + "contextPath" : "/Books", "navigation" : { "Authors" : { "detail" : { @@ -130,7 +130,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Authors" + "contextPath" : "/Authors" } } } diff --git a/app/browse/webapp/manifest.json b/app/browse/webapp/manifest.json index ec7a8840..1b9f2d3f 100644 --- a/app/browse/webapp/manifest.json +++ b/app/browse/webapp/manifest.json @@ -86,7 +86,7 @@ "name": "sap.fe.templates.ListReport", "options": { "settings" : { - "entitySet" : "Books", + "contextPath" : "/Books", "navigation" : { "Books" : { "detail" : { @@ -103,7 +103,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Books", + "contextPath" : "/Books", "navigation" : { "Authors" : { "detail" : { @@ -120,7 +120,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Authors" + "contextPath" : "/Authors" } } } diff --git a/app/genres/webapp/manifest.json b/app/genres/webapp/manifest.json index ab4a7d46..68d48208 100644 --- a/app/genres/webapp/manifest.json +++ b/app/genres/webapp/manifest.json @@ -82,7 +82,7 @@ "name": "sap.fe.templates.ListReport", "options": { "settings" : { - "entitySet" : "GenreHierarchy", + "contextPath" : "/GenreHierarchy", "navigation" : { "GenreHierarchy" : { "detail" : { @@ -107,7 +107,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet": "GenreHierarchy" + "contextPath": "/GenreHierarchy" } } } diff --git a/app/notes/webapp/manifest.json b/app/notes/webapp/manifest.json index f75a99b2..1a87691c 100644 --- a/app/notes/webapp/manifest.json +++ b/app/notes/webapp/manifest.json @@ -81,7 +81,7 @@ "name": "sap.fe.templates.ListReport", "options": { "settings" : { - "entitySet" : "Notes", + "contextPath" : "/Notes", "navigation" : { "Notes" : { "detail" : { @@ -98,7 +98,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Notes" + "contextPath" : "/Notes" } } } diff --git a/app/orders/webapp/manifest.json b/app/orders/webapp/manifest.json index 758e31f2..02cf3bcf 100644 --- a/app/orders/webapp/manifest.json +++ b/app/orders/webapp/manifest.json @@ -91,7 +91,7 @@ "name": "sap.fe.templates.ListReport", "options": { "settings" : { - "entitySet" : "Orders", + "contextPath" : "/Orders", "navigation" : { "Orders" : { "detail" : { @@ -108,7 +108,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet": "Orders", + "contextPath": "/Orders", "navigation" : { "Items": { "detail": { @@ -135,7 +135,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet": "OrderItems" + "contextPath": "/Orders/Items" } } }, @@ -145,7 +145,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet": "Books", + "contextPath": "/Books", "navigation": { "author": { "detail": { @@ -162,7 +162,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet": "Authors" + "contextPath": "/Authors" } } } diff --git a/app/package-lock.json b/app/package-lock.json index 2fe4a66c..f8cf3891 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -497,9 +497,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -510,13 +510,13 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -879,6 +879,21 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1072,13 +1087,14 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -1104,17 +1120,17 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -1170,6 +1186,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -1598,9 +1629,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -1899,9 +1930,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" diff --git a/app/reviews/webapp/manifest.json b/app/reviews/webapp/manifest.json index 78dd8f8c..ccf35060 100644 --- a/app/reviews/webapp/manifest.json +++ b/app/reviews/webapp/manifest.json @@ -86,7 +86,7 @@ "name": "sap.fe.templates.ListReport", "options": { "settings" : { - "entitySet" : "Reviews", + "contextPath" : "/Reviews", "navigation" : { "Reviews" : { "detail" : { @@ -103,7 +103,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Reviews", + "contextPath" : "/Reviews", "navigation" : { "Books" : { "detail" : { @@ -120,7 +120,7 @@ "name": "sap.fe.templates.ObjectPage", "options": { "settings" : { - "entitySet" : "Books" + "contextPath" : "/Books" } } } diff --git a/db/package-lock.json b/db/package-lock.json index ad277cf7..cc04938d 100644 --- a/db/package-lock.json +++ b/db/package-lock.json @@ -38,12 +38,12 @@ } }, "node_modules/@sap/hdi-deploy": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.3.2.tgz", - "integrity": "sha512-1QvlrMdeVXCIc2DSLjR5ZIKFz9GVcuC8JvXtifU7bYetajc6mgU5FRR9zseZgrHVdCveeRIURmoPplUl4Hszag==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.4.1.tgz", + "integrity": "sha512-tTdbxFJadgf0cLjTe+O/CgNUOY6ZYUu/eFyALuR2w6V9JRUKSPaZcFM2uMiWbCM5OYJGUGfNRJYRYC6sVIDQRg==", "license": "See LICENSE file", "dependencies": { - "@sap/hdi": "^4.6.0", + "@sap/hdi": "^4.7.0", "@sap/xsenv": "^5.2.0", "async": "^3.2.6", "dotenv": "^16.4.5", @@ -51,7 +51,7 @@ "micromatch": "^4.0.8" }, "engines": { - "node": "^18.0.0 || ^20.0.0" + "node": ">=18.x" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.6", diff --git a/mtx/sidecar/package-lock.json b/mtx/sidecar/package-lock.json index 23cce481..0e8e11c2 100644 --- a/mtx/sidecar/package-lock.json +++ b/mtx/sidecar/package-lock.json @@ -19,9 +19,9 @@ } }, "node_modules/@cap-js/db-service": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.17.0.tgz", - "integrity": "sha512-n2hna2hh2eg588KmXUvDj2n/1UnlaUcIKSRuQCVDoYnGex8fFP58nqZCJzJnLsr0UYqm5+yO2AK5hwHlvJ2hzA==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.18.0.tgz", + "integrity": "sha512-Gv0X+GZx85Op8GZ+xbkt49Nrrha68jPfV5+Uo023Xqsbv7HhoFPkI1t1IVI+isZRz04dx4MW573b0KKGEFDAFg==", "license": "SEE LICENSE", "dependencies": { "generic-pool": "^3.9.0" @@ -31,12 +31,12 @@ } }, "node_modules/@cap-js/hana": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.6.0.tgz", - "integrity": "sha512-z9TrqwX72yT1WeTsSIaaXD2CTJgVTlklPbvMzKoCaCpnAknKcBSuNyakrmlSRIs8E0ci/YJ2b0mBajQmkOSURg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.7.0.tgz", + "integrity": "sha512-QaFQAKT6beFIC61I+3BSq4aSmVydzTziEUy/eb+hWZqfUaqZjujgnI9OPrnLaDeE4dZkOGYj/GAGy39t5vaagA==", "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.17.0", + "@cap-js/db-service": "^1.18.0", "hdb": "^0.19.5" }, "peerDependencies": { @@ -50,13 +50,13 @@ } }, "node_modules/@cap-js/sqlite": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.8.0.tgz", - "integrity": "sha512-Qd/IrSksT+NWUopwtKnKMSs4pPnzfXJiILycK5CkZH3dKju9xpUvHBYxJF5uXBnN6UOhFURXXyvJ0BArk40nvQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.9.0.tgz", + "integrity": "sha512-0Ka6a7W7v5qyL8IiEjKg1oJH1AvLh/bmshHYxovmruKfyDEuEx+Kz8IARKq8oHwmzPCZVV/xXIKnpg/KWesXcA==", "dev": true, "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.17.0", + "@cap-js/db-service": "^1.18.0", "better-sqlite3": "^11.0.0" }, "peerDependencies": { @@ -64,9 +64,9 @@ } }, "node_modules/@sap/cds": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.7.0.tgz", - "integrity": "sha512-QL5xQIkID3sICYNIlpCfXjvDGKfO6WpuGWVD9x3T6zFzdz409dSOzq2wp7HSWWKsy0HZEPRgsRatYjFx3LMNTA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.8.0.tgz", + "integrity": "sha512-7IYV44HUR3BygEXv+yEa430yfJErT/5Iez0LMvCS1A9lkpYjFhC79p28tnwZjP9ezwiWKOav/qKcF/+gliaCiA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/cds-compiler": ">=5.1", @@ -96,9 +96,9 @@ } }, "node_modules/@sap/cds-compiler": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.7.0.tgz", - "integrity": "sha512-nmKEfYICdFlGaQ7DQz8Jb2KrYDajCYTB8yllcQGwq7nyYE01MM0/1c7N7BRbSOnX5HStZ/MUG9+NQweb9dEOEA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.8.0.tgz", + "integrity": "sha512-cBf9N5g35A69S3n8HWmFDE6MUfogUn26wntF3CC1iQLEocth9Lo/ralerY9KHEd5OQ1nDC3FwDs+AMAA2BT+uA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "antlr4": "4.9.3" @@ -113,9 +113,9 @@ } }, "node_modules/@sap/cds-fiori": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.3.0.tgz", - "integrity": "sha512-PEppgJyc3SO0df5zP2OZG41UKLdsowQLwcsLUSFPzn56MlbFdzaRhO1qXaMhPlQ+bIo19aLOZcAZa9ewkSwS0w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.4.0.tgz", + "integrity": "sha512-Ge0Lwr2W1jUGepA4uABVB2szA/PBpmZDQt2CZdU1Ihc8LlgcdCoiulEYkiJvX3mTcQJEWCTEEsCNpQUqniEtTw==", "license": "SEE LICENSE IN LICENSE", "peerDependencies": { "@sap/cds": ">=7.6", @@ -138,9 +138,9 @@ } }, "node_modules/@sap/cds-mtxs": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.5.0.tgz", - "integrity": "sha512-d3R0cBaBdqLWRniZ/vwi/3TtKBCpCFJx5m/4Tg24erufs9e76aeLw7VnNJL24paNWdtiqMXuKFsTuPr4oEu2Vg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.6.0.tgz", + "integrity": "sha512-RCTnwXsbY+a3uHN5Kd3u43xz+a+948yXkJjmsdgjz9MtGIZELrZpkjqd1ps67eniTgkrKkBDymRMn8eBIIjyyQ==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/hdi-deploy": ">=4", @@ -176,12 +176,12 @@ } }, "node_modules/@sap/hdi-deploy": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.3.2.tgz", - "integrity": "sha512-1QvlrMdeVXCIc2DSLjR5ZIKFz9GVcuC8JvXtifU7bYetajc6mgU5FRR9zseZgrHVdCveeRIURmoPplUl4Hszag==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.4.1.tgz", + "integrity": "sha512-tTdbxFJadgf0cLjTe+O/CgNUOY6ZYUu/eFyALuR2w6V9JRUKSPaZcFM2uMiWbCM5OYJGUGfNRJYRYC6sVIDQRg==", "license": "See LICENSE file", "dependencies": { - "@sap/hdi": "^4.6.0", + "@sap/hdi": "^4.7.0", "@sap/xsenv": "^5.2.0", "async": "^3.2.6", "dotenv": "^16.4.5", @@ -189,7 +189,7 @@ "micromatch": "^4.0.8" }, "engines": { - "node": "^18.0.0 || ^20.0.0" + "node": ">=18.x" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.6", @@ -219,9 +219,9 @@ } }, "node_modules/@sap/xssec": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.2.8.tgz", - "integrity": "sha512-hTwupdCFdp3ElAF/e4qj6Akgf3N6/C7bq3qggbTeHEdaPVEehYPyxuTsdxb1TVI1vUGlHjB7RUW6aa6n30fP6Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.4.0.tgz", + "integrity": "sha512-tVPyF6z6lWN2cucT38kkTu6GTmFXhqd/xa0SrExZ+j8K1cNePEIDHvx/zfibubLeb198vyoreW4QOpR9+Vaj4A==", "license": "SAP DEVELOPER LICENSE AGREEMENT", "dependencies": { "debug": "^4.3.4", @@ -281,9 +281,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.1.tgz", + "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -445,9 +445,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -458,13 +458,13 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -705,6 +705,21 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -873,13 +888,14 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -930,17 +946,17 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -1018,6 +1034,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -1271,9 +1302,9 @@ "license": "MIT" }, "node_modules/node-abi": { - "version": "3.73.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz", - "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==", + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", "dev": true, "license": "MIT", "dependencies": { @@ -1296,9 +1327,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -1510,9 +1541,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { diff --git a/package-lock.json b/package-lock.json index 33197a22..40069c17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,9 +30,9 @@ } }, "node_modules/@cap-js/db-service": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.17.0.tgz", - "integrity": "sha512-n2hna2hh2eg588KmXUvDj2n/1UnlaUcIKSRuQCVDoYnGex8fFP58nqZCJzJnLsr0UYqm5+yO2AK5hwHlvJ2hzA==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-1.18.0.tgz", + "integrity": "sha512-Gv0X+GZx85Op8GZ+xbkt49Nrrha68jPfV5+Uo023Xqsbv7HhoFPkI1t1IVI+isZRz04dx4MW573b0KKGEFDAFg==", "license": "SEE LICENSE", "dependencies": { "generic-pool": "^3.9.0" @@ -42,12 +42,12 @@ } }, "node_modules/@cap-js/hana": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.6.0.tgz", - "integrity": "sha512-z9TrqwX72yT1WeTsSIaaXD2CTJgVTlklPbvMzKoCaCpnAknKcBSuNyakrmlSRIs8E0ci/YJ2b0mBajQmkOSURg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-1.7.0.tgz", + "integrity": "sha512-QaFQAKT6beFIC61I+3BSq4aSmVydzTziEUy/eb+hWZqfUaqZjujgnI9OPrnLaDeE4dZkOGYj/GAGy39t5vaagA==", "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.17.0", + "@cap-js/db-service": "^1.18.0", "hdb": "^0.19.5" }, "peerDependencies": { @@ -61,13 +61,13 @@ } }, "node_modules/@cap-js/sqlite": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.8.0.tgz", - "integrity": "sha512-Qd/IrSksT+NWUopwtKnKMSs4pPnzfXJiILycK5CkZH3dKju9xpUvHBYxJF5uXBnN6UOhFURXXyvJ0BArk40nvQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-1.9.0.tgz", + "integrity": "sha512-0Ka6a7W7v5qyL8IiEjKg1oJH1AvLh/bmshHYxovmruKfyDEuEx+Kz8IARKq8oHwmzPCZVV/xXIKnpg/KWesXcA==", "dev": true, "license": "SEE LICENSE", "dependencies": { - "@cap-js/db-service": "^1.17.0", + "@cap-js/db-service": "^1.18.0", "better-sqlite3": "^11.0.0" }, "peerDependencies": { @@ -75,9 +75,9 @@ } }, "node_modules/@sap/cds": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.7.0.tgz", - "integrity": "sha512-QL5xQIkID3sICYNIlpCfXjvDGKfO6WpuGWVD9x3T6zFzdz409dSOzq2wp7HSWWKsy0HZEPRgsRatYjFx3LMNTA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-8.8.0.tgz", + "integrity": "sha512-7IYV44HUR3BygEXv+yEa430yfJErT/5Iez0LMvCS1A9lkpYjFhC79p28tnwZjP9ezwiWKOav/qKcF/+gliaCiA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/cds-compiler": ">=5.1", @@ -107,9 +107,9 @@ } }, "node_modules/@sap/cds-compiler": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.7.0.tgz", - "integrity": "sha512-nmKEfYICdFlGaQ7DQz8Jb2KrYDajCYTB8yllcQGwq7nyYE01MM0/1c7N7BRbSOnX5HStZ/MUG9+NQweb9dEOEA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-5.8.0.tgz", + "integrity": "sha512-cBf9N5g35A69S3n8HWmFDE6MUfogUn26wntF3CC1iQLEocth9Lo/ralerY9KHEd5OQ1nDC3FwDs+AMAA2BT+uA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "antlr4": "4.9.3" @@ -124,9 +124,9 @@ } }, "node_modules/@sap/cds-dk": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-8.7.0.tgz", - "integrity": "sha512-RVJsyEX/9IgvbcAKO0d29jzKHzD8NA08fIkbopcAyPMyarc3UG4wAVSFlcsBx+F1WiLd+LVZgs0MdjPtG305lA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-8.8.0.tgz", + "integrity": "sha512-61KqUNAbNaaXz7LHfhTBhIryaUDIj1iW9f/XHCbtc+AV8G2O5JcvBUEwf2ROYtvbXlKlZsIe4QewyUP6S78/8w==", "dev": true, "hasShrinkwrap": true, "license": "SEE LICENSE IN LICENSE", @@ -166,7 +166,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/db-service": { - "version": "1.17.0", + "version": "1.17.2", "dev": true, "license": "SEE LICENSE", "optional": true, @@ -178,7 +178,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/openapi": { - "version": "1.1.2", + "version": "1.2.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -238,11 +238,11 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/config-array": { - "version": "0.19.1", + "version": "0.19.2", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.5", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -251,7 +251,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/core": { - "version": "0.10.0", + "version": "0.12.0", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -262,7 +262,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/eslintrc": { - "version": "3.2.0", + "version": "3.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -284,7 +284,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/js": { - "version": "9.19.0", + "version": "9.21.0", "dev": true, "license": "MIT", "engines": { @@ -292,7 +292,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/object-schema": { - "version": "2.1.5", + "version": "2.1.6", "dev": true, "license": "Apache-2.0", "engines": { @@ -300,11 +300,11 @@ } }, "node_modules/@sap/cds-dk/node_modules/@eslint/plugin-kit": { - "version": "0.2.5", + "version": "0.2.7", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.12.0", "levn": "^0.4.1" }, "engines": { @@ -356,7 +356,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@humanwhocodes/retry": { - "version": "0.4.1", + "version": "0.4.2", "dev": true, "license": "Apache-2.0", "engines": { @@ -368,7 +368,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds": { - "version": "8.7.0", + "version": "8.8.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -399,7 +399,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-compiler": { - "version": "5.7.0", + "version": "5.8.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -415,7 +415,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-fiori": { - "version": "1.3.0", + "version": "1.4.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "peerDependencies": { @@ -438,7 +438,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-mtxs": { - "version": "2.5.0", + "version": "2.6.0", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -451,12 +451,12 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/eslint-plugin-cds": { - "version": "3.1.2", + "version": "3.2.0", "dev": true, "license": "See LICENSE file", "dependencies": { "@sap/cds": ">=7", - "semver": "^7.3.4" + "semver": "^7.7.1" }, "engines": { "node": ">=18" @@ -489,11 +489,11 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/hdi-deploy": { - "version": "5.3.2", + "version": "5.4.1", "dev": true, "license": "See LICENSE file", "dependencies": { - "@sap/hdi": "^4.6.0", + "@sap/hdi": "^4.7.0", "@sap/xsenv": "^5.2.0", "async": "^3.2.6", "dotenv": "^16.4.5", @@ -501,7 +501,7 @@ "micromatch": "^4.0.8" }, "engines": { - "node": "^18.0.0 || ^20.0.0" + "node": ">=18.x" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.6", @@ -636,7 +636,7 @@ "license": "MIT" }, "node_modules/@sap/cds-dk/node_modules/axios": { - "version": "1.7.9", + "version": "1.8.1", "dev": true, "license": "MIT", "dependencies": { @@ -802,7 +802,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/call-bind-apply-helpers": { - "version": "1.0.1", + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { @@ -1099,6 +1099,20 @@ "node": ">= 0.4" } }, + "node_modules/@sap/cds-dk/node_modules/es-set-tostringtag": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/@sap/cds-dk/node_modules/escape-html": { "version": "1.0.3", "dev": true, @@ -1116,20 +1130,20 @@ } }, "node_modules/@sap/cds-dk/node_modules/eslint": { - "version": "9.19.0", + "version": "9.21.0", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.10.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.19.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -1437,7 +1451,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/flatted": { - "version": "3.3.2", + "version": "3.3.3", "dev": true, "license": "ISC" }, @@ -1461,12 +1475,13 @@ } }, "node_modules/@sap/cds-dk/node_modules/form-data": { - "version": "4.0.1", + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -1512,16 +1527,16 @@ } }, "node_modules/@sap/cds-dk/node_modules/get-intrinsic": { - "version": "1.2.7", + "version": "1.3.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -1624,6 +1639,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@sap/cds-dk/node_modules/has-tostringtag": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@sap/cds-dk/node_modules/hasown": { "version": "2.0.2", "dev": true, @@ -1701,7 +1730,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/import-fresh": { - "version": "3.3.0", + "version": "3.3.1", "dev": true, "license": "MIT", "dependencies": { @@ -1993,7 +2022,7 @@ "license": "MIT" }, "node_modules/@sap/cds-dk/node_modules/node-abi": { - "version": "3.73.0", + "version": "3.74.0", "dev": true, "license": "MIT", "optional": true, @@ -2024,7 +2053,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/object-inspect": { - "version": "1.13.3", + "version": "1.13.4", "dev": true, "license": "MIT", "engines": { @@ -2338,7 +2367,7 @@ "license": "ISC" }, "node_modules/@sap/cds-dk/node_modules/semver": { - "version": "7.6.3", + "version": "7.7.1", "dev": true, "license": "ISC", "bin": { @@ -2769,7 +2798,7 @@ "optional": true }, "node_modules/@sap/cds-dk/node_modules/ws": { - "version": "8.18.0", + "version": "8.18.1", "dev": true, "license": "MIT", "engines": { @@ -2830,9 +2859,9 @@ } }, "node_modules/@sap/cds-fiori": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.3.0.tgz", - "integrity": "sha512-PEppgJyc3SO0df5zP2OZG41UKLdsowQLwcsLUSFPzn56MlbFdzaRhO1qXaMhPlQ+bIo19aLOZcAZa9ewkSwS0w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-1.4.0.tgz", + "integrity": "sha512-Ge0Lwr2W1jUGepA4uABVB2szA/PBpmZDQt2CZdU1Ihc8LlgcdCoiulEYkiJvX3mTcQJEWCTEEsCNpQUqniEtTw==", "license": "SEE LICENSE IN LICENSE", "peerDependencies": { "@sap/cds": ">=7.6", @@ -2855,9 +2884,9 @@ } }, "node_modules/@sap/cds-mtxs": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.5.0.tgz", - "integrity": "sha512-d3R0cBaBdqLWRniZ/vwi/3TtKBCpCFJx5m/4Tg24erufs9e76aeLw7VnNJL24paNWdtiqMXuKFsTuPr4oEu2Vg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-2.6.0.tgz", + "integrity": "sha512-RCTnwXsbY+a3uHN5Kd3u43xz+a+948yXkJjmsdgjz9MtGIZELrZpkjqd1ps67eniTgkrKkBDymRMn8eBIIjyyQ==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/hdi-deploy": ">=4", @@ -2893,12 +2922,12 @@ } }, "node_modules/@sap/hdi-deploy": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.3.2.tgz", - "integrity": "sha512-1QvlrMdeVXCIc2DSLjR5ZIKFz9GVcuC8JvXtifU7bYetajc6mgU5FRR9zseZgrHVdCveeRIURmoPplUl4Hszag==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.4.1.tgz", + "integrity": "sha512-tTdbxFJadgf0cLjTe+O/CgNUOY6ZYUu/eFyALuR2w6V9JRUKSPaZcFM2uMiWbCM5OYJGUGfNRJYRYC6sVIDQRg==", "license": "See LICENSE file", "dependencies": { - "@sap/hdi": "^4.6.0", + "@sap/hdi": "^4.7.0", "@sap/xsenv": "^5.2.0", "async": "^3.2.6", "dotenv": "^16.4.5", @@ -2906,7 +2935,7 @@ "micromatch": "^4.0.8" }, "engines": { - "node": "^18.0.0 || ^20.0.0" + "node": ">=18.x" }, "peerDependencies": { "@sap/hana-client": "^2 >= 2.6", @@ -2936,9 +2965,9 @@ } }, "node_modules/@sap/xssec": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.2.8.tgz", - "integrity": "sha512-hTwupdCFdp3ElAF/e4qj6Akgf3N6/C7bq3qggbTeHEdaPVEehYPyxuTsdxb1TVI1vUGlHjB7RUW6aa6n30fP6Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.4.0.tgz", + "integrity": "sha512-tVPyF6z6lWN2cucT38kkTu6GTmFXhqd/xa0SrExZ+j8K1cNePEIDHvx/zfibubLeb198vyoreW4QOpR9+Vaj4A==", "license": "SAP DEVELOPER LICENSE AGREEMENT", "dependencies": { "debug": "^4.3.4", @@ -2998,9 +3027,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.1.tgz", + "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -3162,9 +3191,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -3175,13 +3204,13 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -3422,6 +3451,21 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3590,13 +3634,14 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -3647,17 +3692,17 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -3735,6 +3780,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -3988,9 +4048,9 @@ "license": "MIT" }, "node_modules/node-abi": { - "version": "3.73.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz", - "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==", + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", "dev": true, "license": "MIT", "dependencies": { @@ -4013,9 +4073,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -4227,9 +4287,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { diff --git a/pom.xml b/pom.xml index 1d04fed4..d0cc5755 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 3.4.0 + 3.4.3 @@ -23,9 +23,9 @@ 21 - 3.7.1 - 5.15.0 - 3.5.7 + 3.8.0 + 5.17.0 + 3.5.8 3.8.4 1.0.7 diff --git a/srv/notes-mashup.cds b/srv/notes-mashup.cds index 6dbea08b..e766f0ee 100644 --- a/srv/notes-mashup.cds +++ b/srv/notes-mashup.cds @@ -14,7 +14,7 @@ entity my.bookshop.NoteableAddresses as select from API_BUSINESS_PARTNER.A_Busin @readonly PostalCode as postalCode, @readonly StreetName as street, @readonly HouseNumber as houseNumber, - notes + notes @(odata.contained: false) }; /* diff --git a/srv/src/main/java/my/bookshop/MessageKeys.java b/srv/src/main/java/my/bookshop/MessageKeys.java index 9f217eb9..70e7de3d 100644 --- a/srv/src/main/java/my/bookshop/MessageKeys.java +++ b/srv/src/main/java/my/bookshop/MessageKeys.java @@ -2,7 +2,6 @@ public class MessageKeys { - public static final String QUANTITY_REQUIRE_MINIMUM = "quantity.require.minimum"; public static final String BOOK_REQUIRE_STOCK = "book.require.stock"; public static final String BOOK_ADDED_ORDER = "book.added.order"; public static final String BOOK_MISSING = "book.missing"; diff --git a/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java b/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java index 06ec29c6..ddf2b7fa 100644 --- a/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java +++ b/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java @@ -111,7 +111,7 @@ public void beforeCreateOrder(Stream orders, EventContext context) { if (book.getStock() < diffQuantity) { // Tip: you can have localized messages and use parameters in your messages messages.error(MessageKeys.BOOK_REQUIRE_STOCK, book.getStock()) - .target("in", ORDERS, o -> o.Items(i -> i.ID().eq(orderItem.getId()).and(i.IsActiveEntity().eq(orderItem.getIsActiveEntity()))).quantity()); + .target(ORDERS, o -> o.Items(i -> i.ID().eq(orderItem.getId()).and(i.IsActiveEntity().eq(orderItem.getIsActiveEntity()))).quantity()); return; // no need to update follow-up values with invalid quantity / stock } @@ -143,7 +143,7 @@ public void patchOrderItems(DraftPatchEventContext context, OrderItems orderItem Integer quantity = orderItem.getQuantity(); String bookId = orderItem.getBookId(); String orderItemId = orderItem.getId(); - BigDecimal amount = calculateAmountInDraft(orderItemId, quantity, bookId, true); + BigDecimal amount = calculateAmountInDraft(orderItemId, quantity, bookId); if (amount != null) { orderItem.setAmount(amount); } @@ -158,11 +158,11 @@ public void patchOrderItems(DraftPatchEventContext context, OrderItems orderItem public void cancelOrderItems(DraftCancelEventContext context) { String orderItemId = (String) analyzer.analyze(context.getCqn()).targetKeys().get(OrderItems.ID); if(orderItemId != null) { - calculateAmountInDraft(orderItemId, 0, null, false); + calculateAmountInDraft(orderItemId, 0, null); } } - private BigDecimal calculateAmountInDraft(String orderItemId, Integer newQuantity, String newBookId, boolean includeWarnings) { + private BigDecimal calculateAmountInDraft(String orderItemId, Integer newQuantity, String newBookId) { Integer quantity = newQuantity; String bookId = newBookId; if (quantity == null && bookId == null) { @@ -192,13 +192,6 @@ private BigDecimal calculateAmountInDraft(String orderItemId, Integer newQuantit return null; // not enough data available } - // only warn about invalid values as we are in draft mode - if(includeWarnings && quantity <= 0) { - // Tip: add additional messages with localized messages from property files - // these messages are transported in sap-messages and do not abort the request - messages.warn(MessageKeys.QUANTITY_REQUIRE_MINIMUM).target(ORDER_ITEMS, i -> i.quantity()); - } - // get the price of the updated book ID if(bookPrice == null) { result = db.run(Select.from(BOOKS).byId(bookId).columns(b -> b.price())); diff --git a/srv/src/main/resources/messages.properties b/srv/src/main/resources/messages.properties index b0e769b8..a65fa2b0 100644 --- a/srv/src/main/resources/messages.properties +++ b/srv/src/main/resources/messages.properties @@ -1,4 +1,3 @@ -quantity.require.minimum = The specified quantity is smaller than 1 book.require.stock = Not enough books on stock (only {0} left) book.added.order = Book successfully added to order book.missing = Book does not exist @@ -10,4 +9,4 @@ review.added = Review added order.exceeds.stock = {0} exceeds stock for book review.add.forbidden=User not allowed to add more than one review for a given book book.import.failed = Import of books failed -book.import.invalid.csv = Invalid CSV structure found - Please check its content \ No newline at end of file +book.import.invalid.csv = Invalid CSV structure found - Please check its content diff --git a/srv/src/main/resources/messages_de.properties b/srv/src/main/resources/messages_de.properties index f498bbe0..d6534814 100644 --- a/srv/src/main/resources/messages_de.properties +++ b/srv/src/main/resources/messages_de.properties @@ -1,4 +1,3 @@ -quantity.require.minimum = Die eingetragene Anzahl ist kleiner als 1 book.require.stock = Nicht genügend Bücher auf Vorrat (nur {0} übrig) book.added.order = Das Buch wurde der Bestellung erfolgreich hinzugefügt book.missing = Das Buch existiert nicht @@ -10,4 +9,4 @@ review.added = Bewertung hinzugefügt order.exceeds.stock = {0} ist mehr als für das Buch auf Vorrat übrig ist review.add.forbidden = Es ist nicht mehr als eine Bewertung pro Buch erlaubt book.import.failed = Bücher Import fehlgeschlagen -book.import.invalid.csv = Die CSV Datei enthält eine ungültige Struktur - Bitte überprüfen Sie den Inhalt \ No newline at end of file +book.import.invalid.csv = Die CSV Datei enthält eine ungültige Struktur - Bitte überprüfen Sie den Inhalt From fcffdec9ac53b791783b2f8bb93202f71efbe541 Mon Sep 17 00:00:00 2001 From: SAP Open Source Program Office Bot <81750448+sap-ospo-bot@users.noreply.github.com> Date: Mon, 10 Mar 2025 09:57:09 +0100 Subject: [PATCH 069/244] [chore]:Reuse API update - Migration from dep5 file to TOML file. (#448) The PR is fixing and updating the Reuse compliance to match the recent Reuse API Specification - we remove the dep5 file and migrate to the toml file. For more details please read the [Reuse Specification](https://reuse.software/spec-3.3/) Co-authored-by: ajinkyapatil8190 --- .reuse/dep5 | 29 ----------------------------- REUSE.toml | 11 +++++++++++ 2 files changed, 11 insertions(+), 29 deletions(-) delete mode 100644 .reuse/dep5 create mode 100644 REUSE.toml diff --git a/.reuse/dep5 b/.reuse/dep5 deleted file mode 100644 index 57d1ebed..00000000 --- a/.reuse/dep5 +++ /dev/null @@ -1,29 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: cloud-cap-samples-java -Upstream-Contact: -Source: https://github.com/SAP-samples/cloud-cap-samples-java -Disclaimer: The code in this project may include calls to APIs (“API Calls”) of - SAP or third-party products or services developed outside of this project - (“External Products”). - “APIs” means application programming interfaces, as well as their respective - specifications and implementing code that allows software to communicate with - other software. - API Calls to External Products are not licensed under the open source license - that governs this project. The use of such API Calls and related External - Products are subject to applicable additional agreements with the relevant - provider of the External Products. In no event shall the open source license - that governs this project grant any rights in or to any External Products,or - alter, expand or supersede any terms of the applicable additional agreements. - If you have a valid license agreement with SAP for the use of a particular SAP - External Product, then you may make use of any API Calls included in this - project’s code for that SAP External Product, subject to the terms of such - license agreement. If you do not have a valid license agreement for the use of - a particular SAP External Product, then you may only make use of any API Calls - in this project for that SAP External Product for your internal, non-productive - and non-commercial test and evaluation of such API Calls. Nothing herein grants - you any rights to use or access any SAP External Product, or provide any third - parties the right to use of access any SAP External Product, through API Calls. - -Files: * -Copyright: 2019-2020 SAP SE or an SAP affiliate company and cap-cloud-samples-java -License: Apache-2.0 diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000..aca2fe39 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,11 @@ +version = 1 +SPDX-PackageName = "cloud-cap-samples-java" +SPDX-PackageSupplier = "" +SPDX-PackageDownloadLocation = "https://github.com/SAP-samples/cloud-cap-samples-java" +SPDX-PackageComment = "The code in this project may include calls to APIs (“API Calls”) of\n SAP or third-party products or services developed outside of this project\n (“External Products”).\n “APIs” means application programming interfaces, as well as their respective\n specifications and implementing code that allows software to communicate with\n other software.\n API Calls to External Products are not licensed under the open source license\n that governs this project. The use of such API Calls and related External\n Products are subject to applicable additional agreements with the relevant\n provider of the External Products. In no event shall the open source license\n that governs this project grant any rights in or to any External Products,or\n alter, expand or supersede any terms of the applicable additional agreements.\n If you have a valid license agreement with SAP for the use of a particular SAP\n External Product, then you may make use of any API Calls included in this\n project’s code for that SAP External Product, subject to the terms of such\n license agreement. If you do not have a valid license agreement for the use of\n a particular SAP External Product, then you may only make use of any API Calls\n in this project for that SAP External Product for your internal, non-productive\n and non-commercial test and evaluation of such API Calls. Nothing herein grants\n you any rights to use or access any SAP External Product, or provide any third\n parties the right to use of access any SAP External Product, through API Calls." + +[[annotations]] +path = "**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2019-2020 SAP SE or an SAP affiliate company and cap-cloud-samples-java" +SPDX-License-Identifier = "Apache-2.0" From 5947b742e208198f50868405bdd3fc8390504872 Mon Sep 17 00:00:00 2001 From: Olena Date: Mon, 10 Mar 2025 14:33:15 +0100 Subject: [PATCH 070/244] Modification of Hierarchies (#428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: D070615 Co-authored-by: Adrian Görler Co-authored-by: Marc Becker Co-authored-by: Evgeny Andreev --- README.md | 3 +- app/_i18n/i18n.properties | 7 +- app/_i18n/i18n_de.properties | 6 + app/admin/fiori-service.cds | 84 +++++++++++- app/admin/webapp/manifest.json | 30 +++-- app/appconfig/fioriSandboxConfig.json | 29 +++- app/browse-genres/fiori-service.cds | 22 ++++ app/browse-genres/package.json | 12 ++ app/browse-genres/webapp/Component.js | 3 + app/browse-genres/webapp/i18n/i18n.properties | 2 + .../webapp/i18n/i18n_de.properties | 2 + app/browse-genres/webapp/index.html | 35 +++++ app/browse-genres/webapp/manifest.json | 124 ++++++++++++++++++ app/browse/fiori-service.cds | 13 ++ app/common.cds | 2 - app/fiori.html | 4 +- app/genres/fiori-service.cds | 2 +- app/genres/webapp/i18n/i18n.properties | 4 +- app/genres/webapp/i18n/i18n_de.properties | 4 +- app/index.cds | 1 + app/xs-app.json | 5 + db/books.cds | 21 ++- db/data/my.bookshop-Books.csv | 10 +- db/data/my.bookshop-Contents.csv | 64 +++++++++ db/data/my.bookshop-Genres.csv | 65 ++++----- srv/admin-service.cds | 16 ++- srv/cat-service.cds | 6 + .../handlers/AdminServiceHandler.java | 2 +- .../bookshop/handlers/HierarchyHandler.java | 34 ++--- .../HierarchySiblingActionHandler.java | 75 +++++++++++ .../java/my/bookshop/GenreHierarchyTest.java | 55 ++++---- .../handlers/HierarchyHandlerSorterTest.java | 2 +- 32 files changed, 624 insertions(+), 120 deletions(-) create mode 100644 app/browse-genres/fiori-service.cds create mode 100644 app/browse-genres/package.json create mode 100644 app/browse-genres/webapp/Component.js create mode 100644 app/browse-genres/webapp/i18n/i18n.properties create mode 100644 app/browse-genres/webapp/i18n/i18n_de.properties create mode 100644 app/browse-genres/webapp/index.html create mode 100644 app/browse-genres/webapp/manifest.json create mode 100644 db/data/my.bookshop-Contents.csv create mode 100644 srv/src/main/java/my/bookshop/handlers/HierarchySiblingActionHandler.java diff --git a/README.md b/README.md index b652330c..29311a48 100644 --- a/README.md +++ b/README.md @@ -90,9 +90,10 @@ User Interface related Features: - [Model Localization](https://cap.cloud.sap/docs/guides/i18n) for [English](app/_i18n/i18n.properties) and [German](app/_i18n/i18n_de.properties) language for static texts - [Custom File Upload extension](app/admin/webapp/extension/Upload.js) which provides a button for uploading `CSV` files - A simple Swagger UI for the CatalogService API at -- UI5 [Tree Table](app/genres/webapp/manifest.json) with Value Help for [GenreHierarchy](app/admin/fiori-service.cds) +- UI5 [Tree Table](app/genres/webapp/manifest.json) with CRUD requests and Value Help for [GenreHierarchy](app/admin/fiori-service.cds). Only on HANA. To check tree table `Contents` embedded into `Books`, please remove `@UI.Hidden` annotation from [Fiori Service](app/admin/fiori-service.cds) - [Custom event handlers](https://cap.cloud.sap/docs/java/provisioning-api) for Tree Table such as the [Custom business logic for GenreHierarchy](srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java). Please note, that Tree Tables must be used with HANA. Custom event handler in this case provides a limited support ment for local testing. +- [Custom actions](https://cap.cloud.sap/docs/cds/cdl#actions) such as `moveSibling` in the [Admin Service](srv/admin-service.cds). This action demonstrates experimental UI feature [ChangeNextSiblingAction](https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.md#template_changenextsiblingaction-experimental). The Action implementation is in the [Hierarchy Sibling Action Handler](srv/src/main/java/my/bookshop/handlers/HierarchySiblingActionHandler.java) CDS Maven Plugin Features: diff --git a/app/_i18n/i18n.properties b/app/_i18n/i18n.properties index a12b718d..94df904d 100644 --- a/app/_i18n/i18n.properties +++ b/app/_i18n/i18n.properties @@ -5,6 +5,7 @@ Created = Created Modified = Modified ModifiedBy = Modified By General = General +Contents = Contents Details = Details Admin = Administrative Translations = Translations @@ -63,7 +64,11 @@ Text = Text Image = Image Genres = Genres Genre = Genre - +PageNumber = Page Number +Informations = Informations +Page = Page +ContentsLevel = Contents Level +ContentsLevels = Contents Levels AddReview = Add Review Notes = Notes diff --git a/app/_i18n/i18n_de.properties b/app/_i18n/i18n_de.properties index 63c111fb..a134ff55 100644 --- a/app/_i18n/i18n_de.properties +++ b/app/_i18n/i18n_de.properties @@ -5,6 +5,7 @@ Created = Angelegt Modified = Bearbeitet ModifiedBy = Bearbeitet von General = Generelles +Contents = Buchinhalt Details = Details Admin = Administratives Translations = Übersetzungen @@ -63,6 +64,11 @@ Text = Text Image = Bild Genres = Genre Genre = Genre +PageNumber = Seitenzahl +Informations = Informationen +Page = Seite +ContentsLevel = Inhaltsebene +ContentsLevels = Inhaltsebenen AddReview = Rezension hinzufügen diff --git a/app/admin/fiori-service.cds b/app/admin/fiori-service.cds index c848916b..813afea9 100644 --- a/app/admin/fiori-service.cds +++ b/app/admin/fiori-service.cds @@ -36,6 +36,13 @@ annotate AdminService.Books with @(UI : { $Type : 'UI.ReferenceFacet', Label : '{i18n>Admin}', Target : '@UI.FieldGroup#Admin' + }, + { + // TODO: should work dynamically + @UI.Hidden, + $Type : 'UI.ReferenceFacet', + Label : '{i18n>Contents}', + Target : 'contents/@UI.PresentationVariant' } ], FieldGroup #General : {Data : [ @@ -60,10 +67,14 @@ annotate AdminService.Books with @(UI : { ]} }); -// Add Value Help for Tree Table + +//////////////////////////////////////////////////////////////////////////// +// +// Value Help for Tree Table +// annotate AdminService.Books with { genre @(Common: { - Label : 'Genre', + Label : '{i18n>Genre}', ValueList: { CollectionPath : 'GenreHierarchy', Parameters : [ @@ -87,6 +98,12 @@ annotate AdminService.GenreHierarchy with { ID @UI.Hidden; }; +@Hierarchy.RecursiveHierarchyActions #GenreHierarchy: { + $Type : 'Hierarchy.RecursiveHierarchyActionsType', + // any name can be the action name with namespace/no bound action name + ChangeNextSiblingAction: 'AdminService.moveSibling', +} + annotate AdminService.GenreHierarchy with @UI: { PresentationVariant #VH: { $Type : 'UI.PresentationVariantType', @@ -96,7 +113,48 @@ annotate AdminService.GenreHierarchy with @UI: { LineItem : [{ $Type: 'UI.DataField', Value: name, - }] + Label : '{i18n>Genre}' + }], +}; + +annotate AdminService.ContentsHierarchy with @UI: { + PresentationVariant : { + $Type : 'UI.PresentationVariantType', + RequestAtLeast: [name], + Visualizations: ['@UI.LineItem'], + }, + LineItem : [{ + $Type: 'UI.DataField', + Value: name, + Label : '{i18n>Name}' + }, + { + $Type: 'UI.DataField', + Value: page, + Label : '{i18n>Page}' + }], + HeaderInfo : { + $Type : 'UI.HeaderInfoType', + TypeName : '{i18n>ContentsLevel}', + TypeNamePlural: '{i18n>ContentsLevels}', + Title : { + $Type: 'UI.DataField', + Value: name, + } + }, + FieldGroup : { + $Type: 'UI.FieldGroupType', + Data : [{ + $Type: 'UI.DataField', + Value: page, + Label : '{i18n>PageNumber}' + }], + }, + Facets : [{ + $Type : 'UI.ReferenceFacet', + Target: '@UI.FieldGroup', + Label : '{i18n>Informations}', + }], }; //////////////////////////////////////////////////////////// @@ -138,6 +196,26 @@ annotate AdminService.Books.texts { } } +//////////////////////////////////////////////////////////// +// +// Annotations for hierarchy ContentsHierarchy +// +annotate AdminService.ContentsHierarchy with @Aggregation.RecursiveHierarchy#ContentsHierarchy: { + $Type: 'Aggregation.RecursiveHierarchyType', + NodeProperty: ID, // identifies a node + ParentNavigationProperty: parent // navigates to a node's parent + }; + +annotate AdminService.ContentsHierarchy with @Hierarchy.RecursiveHierarchy#ContentsHierarchy: { + $Type: 'Hierarchy.RecursiveHierarchyType', + LimitedDescendantCount: LimitedDescendantCount, + DistanceFromRoot: DistanceFromRoot, + DrillState: DrillState, + Matched: Matched, + MatchedDescendantCount: MatchedDescendantCount, + LimitedRank: LimitedRank +}; + annotate AdminService.Books actions { @( Common.SideEffects : { diff --git a/app/admin/webapp/manifest.json b/app/admin/webapp/manifest.json index 29ac7e46..49d05c2c 100644 --- a/app/admin/webapp/manifest.json +++ b/app/admin/webapp/manifest.json @@ -51,7 +51,7 @@ "settings": { "synchronizationMode": "None", "operationMode": "Server", - "autoExpandSelect" : true, + "autoExpandSelect": true, "earlyRequests": true, "groupProperties": { "default": { @@ -74,9 +74,9 @@ "target": "BooksDetails" }, { - "pattern": "Books({key}/author({key2}):?query:", - "name": "AuthorsDetails", - "target": "AuthorsDetails" + "pattern": "Books({key})/contents({key2}):?query:", + "name": "ContentsDetails", + "target": "ContentsDetails" } ], "targets": { @@ -115,22 +115,30 @@ "settings" : { "contextPath" : "/Books", "navigation" : { - "Authors" : { - "detail" : { - "route" : "AuthorsDetails" + "contents": { + "detail": { + "route": "ContentsDetails" + } + } + }, + "controlConfiguration": { + "contents/@com.sap.vocabularies.UI.v1.LineItem": { + "tableSettings": { + "hierarchyQualifier": "ContentsHierarchy", + "type": "TreeTable" } } } } } }, - "AuthorsDetails": { + "ContentsDetails": { "type": "Component", - "id": "AuthorsDetailsList", + "id": "ContentsDetails", "name": "sap.fe.templates.ObjectPage", "options": { - "settings" : { - "contextPath" : "/Authors" + "settings": { + "contextPath": "/Books/contents" } } } diff --git a/app/appconfig/fioriSandboxConfig.json b/app/appconfig/fioriSandboxConfig.json index 48b2ef6a..5c030843 100644 --- a/app/appconfig/fioriSandboxConfig.json +++ b/app/appconfig/fioriSandboxConfig.json @@ -20,7 +20,8 @@ "title": "Browse Books", "description": "Find your favorite book" } - }, { + }, + { "id": "browse-genres", "tileType": "sap.ushell.ui.tile.StaticTile", "properties": { @@ -64,6 +65,15 @@ "title": "Manage Reviews", "description": "Add/edit/delete reviews" } + }, + { + "id": "manage-genres", + "tileType": "sap.ushell.ui.tile.StaticTile", + "properties": { + "targetURL": "#Genres-manage", + "title": "Manage Genres", + "description": "Add/edit/delete genres" + } } ] }, @@ -129,8 +139,8 @@ }, "resolutionResult": { "applicationType": "SAPUI5", - "additionalInformation": "SAPUI5.Component=genres", - "url": "/genres/webapp" + "additionalInformation": "SAPUI5.Component=browse-genres", + "url": "/browse-genres/webapp" } }, "manage-books": { @@ -146,6 +156,19 @@ "url": "/admin/webapp" } }, + "manage-genres": { + "semanticObject": "Genres", + "action": "manage", + "signature": { + "parameters": {}, + "additionalParameters": "allowed" + }, + "resolutionResult": { + "applicationType": "SAPUI5", + "additionalInformation": "SAPUI5.Component=genres", + "url": "/genres/webapp" + } + }, "manage-orders": { "semanticObject": "Orders", "action": "manage", diff --git a/app/browse-genres/fiori-service.cds b/app/browse-genres/fiori-service.cds new file mode 100644 index 00000000..0fe951c0 --- /dev/null +++ b/app/browse-genres/fiori-service.cds @@ -0,0 +1,22 @@ +/* + UI annotations for the Browse GenreHierarchy App +*/ + +using CatalogService from '../../srv/cat-service'; + + +annotate CatalogService.GenreHierarchy with @Aggregation.RecursiveHierarchy#GenreHierarchy: { + $Type: 'Aggregation.RecursiveHierarchyType', + NodeProperty: ID, // identifies a node + ParentNavigationProperty: parent // navigates to a node's parent + }; + +annotate CatalogService.GenreHierarchy with @Hierarchy.RecursiveHierarchy#GenreHierarchy: { + $Type: 'Hierarchy.RecursiveHierarchyType', + LimitedDescendantCount: LimitedDescendantCount, + DistanceFromRoot: DistanceFromRoot, + DrillState: DrillState, + Matched: Matched, + MatchedDescendantCount: MatchedDescendantCount, + LimitedRank: LimitedRank +}; diff --git a/app/browse-genres/package.json b/app/browse-genres/package.json new file mode 100644 index 00000000..2809c302 --- /dev/null +++ b/app/browse-genres/package.json @@ -0,0 +1,12 @@ +{ + "name": "browse-genres", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/app/browse-genres/webapp/Component.js b/app/browse-genres/webapp/Component.js new file mode 100644 index 00000000..5fa2ad5d --- /dev/null +++ b/app/browse-genres/webapp/Component.js @@ -0,0 +1,3 @@ +sap.ui.define(["sap/fe/core/AppComponent"], ac => ac.extend("browse-genres.Component", { + metadata:{ manifest:'json' } +})) diff --git a/app/browse-genres/webapp/i18n/i18n.properties b/app/browse-genres/webapp/i18n/i18n.properties new file mode 100644 index 00000000..d2792ee9 --- /dev/null +++ b/app/browse-genres/webapp/i18n/i18n.properties @@ -0,0 +1,2 @@ +appTitle=Browse Genres +appDescription=Genres as Tree View diff --git a/app/browse-genres/webapp/i18n/i18n_de.properties b/app/browse-genres/webapp/i18n/i18n_de.properties new file mode 100644 index 00000000..e8714e92 --- /dev/null +++ b/app/browse-genres/webapp/i18n/i18n_de.properties @@ -0,0 +1,2 @@ +appTitle=Zeige Genres +appDescription=Genres als Baumansicht diff --git a/app/browse-genres/webapp/index.html b/app/browse-genres/webapp/index.html new file mode 100644 index 00000000..167596a7 --- /dev/null +++ b/app/browse-genres/webapp/index.html @@ -0,0 +1,35 @@ + + + + + + + Browse Genres + + + + +
+ + diff --git a/app/browse-genres/webapp/manifest.json b/app/browse-genres/webapp/manifest.json new file mode 100644 index 00000000..875c6231 --- /dev/null +++ b/app/browse-genres/webapp/manifest.json @@ -0,0 +1,124 @@ +{ + "_version": "1.8.0", + "sap.app": { + "id": "browse-genres", + "type": "application", + "title": "{{appTitle}}", + "description": "{{appDescription}}", + "applicationVersion": { + "version": "1.0.0" + }, + "dataSources": { + "CatalogService": { + "uri": "/api/browse/", + "type": "OData", + "settings": { + "odataVersion": "4.0" + } + } + }, + "crossNavigation": { + "inbounds": { + "Genres-show": { + "signature": { + "parameters": {}, + "additionalParameters": "allowed" + }, + "semanticObject": "GenreHierarchy", + "action": "show" + } + } + } + }, + "sap.ui5": { + "dependencies": { + "minUI5Version": "1.122.0", + "libs": { + "sap.fe.templates": {} + } + }, + "models": { + "i18n": { + "type": "sap.ui.model.resource.ResourceModel", + "uri": "i18n/i18n.properties" + }, + "": { + "dataSource": "CatalogService", + "settings": { + "synchronizationMode": "None", + "operationMode": "Server", + "autoExpandSelect" : true, + "earlyRequests": true, + "groupProperties": { + "default": { + "submit": "Auto" + } + } + } + } + }, + "routing": { + "routes": [ + { + "pattern": ":?query:", + "name": "GenreHierarchyList", + "target": "GenreHierarchyList" + }, + { + "pattern": "GenreHierarchy({key}):?query:", + "name": "GenreHierarchyDetails", + "target": "GenreHierarchyDetails" + } + ], + "targets": { + "GenreHierarchyList": { + "type": "Component", + "id": "GenreHierarchyList", + "name": "sap.fe.templates.ListReport", + "options": { + "settings" : { + "contextPath" : "/GenreHierarchy", + "navigation" : { + "GenreHierarchy" : { + "detail" : { + "route" : "GenreHierarchyDetails" + } + } + }, + "controlConfiguration": { + "@com.sap.vocabularies.UI.v1.LineItem": { + "tableSettings": { + "hierarchyQualifier": "GenreHierarchy", + "type": "TreeTable" + } + } + } + } + } + }, + "GenreHierarchyDetails": { + "type": "Component", + "id": "GenreHierarchyDetails", + "name": "sap.fe.templates.ObjectPage", + "options": { + "settings" : { + "contextPath" : "/GenreHierarchy" + } + } + } + } + }, + "contentDensities": { + "compact": true, + "cozy": true + } + }, + "sap.ui": { + "technology": "UI5", + "fullWidth": false + }, + "sap.fiori": { + "registrationIds": [], + "archeType": "transactional" + } +} diff --git a/app/browse/fiori-service.cds b/app/browse/fiori-service.cds index 953c39dc..07ecb564 100644 --- a/app/browse/fiori-service.cds +++ b/app/browse/fiori-service.cds @@ -161,6 +161,19 @@ annotate CatalogService.Reviews with @(UI : { ]} }); +annotate CatalogService.GenreHierarchy with @UI: { + PresentationVariant : { + $Type : 'UI.PresentationVariantType', + RequestAtLeast: [name], + Visualizations: ['@UI.LineItem'], + }, + LineItem : [{ + $Type: 'UI.DataField', + Value: name, + Label : '{i18n>Genre}' + }], +}; + annotate CatalogService.Books actions { @( Common.SideEffects : { diff --git a/app/common.cds b/app/common.cds index ba638052..f9df40b2 100644 --- a/app/common.cds +++ b/app/common.cds @@ -206,8 +206,6 @@ annotate my.Genres with // Genres Elements // annotate my.Genres with { - ID - @title : '{i18n>ID}'; name @title : '{i18n>Genre}'; } diff --git a/app/fiori.html b/app/fiori.html index 7fa46503..845ec889 100644 --- a/app/fiori.html +++ b/app/fiori.html @@ -14,8 +14,8 @@ }; - - + - - + - - + - - + - - + - - +