├── .cdsrc.json ├── .gitignore ├── .prettierrc ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── bookshop.db ├── db ├── data │ ├── sap.capire.bookshop-Author.csv │ ├── sap.capire.bookshop-Book.csv │ ├── sap.capire.bookshop-Book_texts.csv │ └── sap.capire.bookshop-Genre.csv └── schema.cds ├── mta.yaml ├── nodemon.json ├── package-lock.json ├── package.json ├── readme.md ├── src ├── entities.ts ├── entities │ └── BookHandler.ts ├── functions │ └── FunctionHandler.ts └── server.ts ├── srv └── cat-service.cds ├── tsconfig.json └── xs-security.json /.cdsrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "target": "gen", 4 | "tasks": [ 5 | { "for": "hana", "src": "db", "options": { "model": ["db", "srv"] } }, 6 | { "for": "node-cf", "src": "srv", "options": { "model": ["db", "srv"] } } 7 | ] 8 | }, 9 | "[production]": { 10 | "requires": { 11 | "db": { 12 | "kind": "hana", 13 | "model": ["db", "srv"] 14 | }, 15 | "uaa": { 16 | "kind": "xsuaa" 17 | } 18 | } 19 | }, 20 | "requires": { 21 | "db": { 22 | "kind": "sqlite", 23 | "credentials": { 24 | "database": "bookshop.db" 25 | } 26 | } 27 | }, 28 | "odata": { 29 | "version": "v4" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | gen 3 | default-env.json 4 | !srv/**/*.cds 5 | srv/* -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 4, 4 | "semi": true, 5 | "singleQuote": false, 6 | "quote-props": "as-needed", 7 | "printWidth": 160, 8 | "endOfLine": "auto", 9 | "arrowParens": "avoid" 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "esbenp.prettier-vscode", 4 | "sapse.sap-ux-fiori-tools-extension-pack", 5 | "SAPOSS.vscode-ui5-language-assistant", 6 | "SAPSE.vscode-cds" 7 | ], 8 | "unwantedRecommendations": [] 9 | } 10 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Attach to CDS", 9 | "type": "node", 10 | "request": "attach", 11 | "port": 9230, 12 | "restart": true, 13 | "sourceMaps": true, 14 | "protocol": "inspector", 15 | "timeout": 60000, 16 | "skipFiles": ["/**/*.js"] 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib", 3 | "sqltools.connections": [ 4 | { 5 | "database": "bookshop.db", 6 | "driver": "SQLite", 7 | "name": "bookshop" 8 | } 9 | ], 10 | "sqltools.useNodeRuntime": true, 11 | "prettier.printWidth": 160, 12 | "prettier.requireConfig": true, 13 | "prettier.tabWidth": 4, 14 | "editor.formatOnSave": true, 15 | } -------------------------------------------------------------------------------- /bookshop.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeneryHawk/cap-bookshop-typescript/cfa563ee275427ffe02f5b7a77a6cdb5e5825c9c/bookshop.db -------------------------------------------------------------------------------- /db/data/sap.capire.bookshop-Author.csv: -------------------------------------------------------------------------------- 1 | ID;name;dateOfBirth;placeOfBirth;dateOfDeath;placeOfDeath 2 | 101;Emily Brontë;1818-07-30;Thornton, Yorkshire;1848-12-19;Haworth, Yorkshire 3 | 107;Charlotte Brontë;1818-04-21;Thornton, Yorkshire;1855-03-31;Haworth, Yorkshire 4 | 150;Edgar Allen Poe;1809-01-19;Boston, Massachusetts;1849-10-07;Baltimore, Maryland 5 | 170;Richard Carpenter;1929-08-14;King’s Lynn, Norfolk;2012-02-26;Hertfordshire, England -------------------------------------------------------------------------------- /db/data/sap.capire.bookshop-Book.csv: -------------------------------------------------------------------------------- 1 | ID;title;descr;author_ID;stock;price;currency_code;genre_ID 2 | 201;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.";101;12;11.11;GBP;11 3 | 207;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.";107;11;12.34;GBP;11 4 | 251;The Raven;"""The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.";150;333;13.13;USD;16 5 | 252;Eleonora;"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.";150;555;14;USD;16 6 | 271;Catweazle;Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.;170;22;15;EUR;13 -------------------------------------------------------------------------------- /db/data/sap.capire.bookshop-Book_texts.csv: -------------------------------------------------------------------------------- 1 | ID;locale;title;descr 2 | 201;de;Sturmhöhe;Sturmhöhe (Originaltitel: Wuthering Heights) ist der einzige Roman der englischen Schriftstellerin Emily Brontë (1818–1848). Der 1847 unter dem Pseudonym Ellis Bell veröffentlichte Roman wurde vom viktorianischen Publikum weitgehend abgelehnt, heute gilt er als ein Klassiker der britischen Romanliteratur des 19. Jahrhunderts. 3 | 201;fr;Les Hauts de Hurlevent;Les Hauts de Hurlevent (titre original : Wuthering Heights), parfois orthographié Les Hauts de Hurle-Vent, est l'unique roman d'Emily Brontë, publié pour la première fois en 1847 sous le pseudonyme d’Ellis Bell. Loin d'être un récit moralisateur, Emily Brontë achève néanmoins le roman dans une atmosphère sereine, suggérant le triomphe de la paix et du Bien sur la vengeance et le Mal. 4 | 207;de;Jane Eyre;Jane Eyre. Eine Autobiographie (Originaltitel: Jane Eyre. An Autobiography), erstmals erschienen im Jahr 1847 unter dem Pseudonym Currer Bell, ist der erste veröffentlichte Roman der britischen Autorin Charlotte Brontë und ein Klassiker der viktorianischen Romanliteratur des 19. Jahrhunderts. Der Roman erzählt in Form einer Ich-Erzählung die Lebensgeschichte von Jane Eyre (ausgesprochen /ˌdʒeɪn ˈɛə/), die nach einer schweren Kindheit eine Stelle als Gouvernante annimmt und sich in ihren Arbeitgeber verliebt, jedoch immer wieder um ihre Freiheit und Selbstbestimmung kämpfen muss. Als klein, dünn, blass, stets schlicht dunkel gekleidet und mit strengem Mittelscheitel beschrieben, gilt die Heldin des Romans Jane Eyre nicht zuletzt aufgrund der Kino- und Fernsehversionen der melodramatischen Romanvorlage als die bekannteste englische Gouvernante der Literaturgeschichte 5 | 252;de;Eleonora;“Eleonora” ist eine Erzählung von Edgar Allan Poe. Sie wurde 1841 erstveröffentlicht. In ihr geht es um das Paradox der Treue in der Treulosigkeit. -------------------------------------------------------------------------------- /db/data/sap.capire.bookshop-Genre.csv: -------------------------------------------------------------------------------- 1 | ID;parent_ID;name 2 | 10;;Fiction 3 | 11;10;Drama 4 | 12;10;Poetry 5 | 13;10;Fantasy 6 | 14;10;Science Fiction 7 | 15;10;Romance 8 | 16;10;Mystery 9 | 17;10;Thriller 10 | 18;10;Dystopia 11 | 19;10;Fairy Tale 12 | 20;;Non-Fiction 13 | 21;20;Biography 14 | 22;20;Autobiography 15 | 23;20;Essay 16 | 24;20;Speech 17 | -------------------------------------------------------------------------------- /db/schema.cds: -------------------------------------------------------------------------------- 1 | using { 2 | Currency, 3 | managed, 4 | sap 5 | } from '@sap/cds/common'; 6 | 7 | namespace cap.bookshop.typescript; 8 | 9 | entity Book : managed { 10 | key ID : Integer; 11 | title : localized String(111); 12 | descr : localized String(1111); 13 | author : Association to Author; 14 | genre : Association to Genre; 15 | stock : Integer; 16 | price : Decimal(9, 2); 17 | currency : Currency; 18 | } 19 | 20 | entity Author : managed { 21 | key ID : Integer; 22 | name : String(111); 23 | dateOfBirth : Date; 24 | dateOfDeath : Date; 25 | placeOfBirth : String; 26 | placeOfDeath : String; 27 | books : Association to many Book 28 | on books.author = $self; 29 | } 30 | 31 | /** 32 | * Hierarchically organized Code List for Genres 33 | */ 34 | entity Genre : sap.common.CodeList { 35 | key ID : Integer; 36 | parent : Association to Genre; 37 | children : Composition of many Genre 38 | on children.parent = $self; 39 | } 40 | -------------------------------------------------------------------------------- /mta.yaml: -------------------------------------------------------------------------------- 1 | ID: cap.bookshop.typescript 2 | version: 0.0.1 3 | _schema-version: "3.1" 4 | parameters: 5 | enable-parallel-deployments: true 6 | modules: 7 | ############################################################## 8 | # Services 9 | ############################################################## 10 | - name: api-service 11 | type: nodejs 12 | path: gen/srv 13 | parameters: 14 | disk-quota: 1024M 15 | memory: 512M 16 | build-parameters: 17 | ignore: ["default-env.json", "node_modules"] 18 | provides: 19 | - name: api-service-endpoint 20 | properties: 21 | url: ${default-url} 22 | requires: 23 | - name: hdi-container 24 | - name: uaa 25 | 26 | - name: db 27 | type: hdb 28 | path: gen/db 29 | parameters: 30 | memory: 256M 31 | disk-quota: 256M 32 | build-parameters: 33 | ignore: ["default-env.json", "node_modules"] 34 | requires: 35 | - name: hdi-container 36 | 37 | resources: 38 | - name: uaa 39 | parameters: 40 | path: ./xs-security.json 41 | service-plan: application 42 | service: xsuaa 43 | type: org.cloudfoundry.managed-service 44 | 45 | - name: hdi-container 46 | properties: 47 | hdi-container-name: "${service-name}" 48 | type: com.sap.xs.hdi-container -------------------------------------------------------------------------------- /nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignore": [".git", "node_modules"], 3 | "verbose": false, 4 | "exec": "npm run build:ts && node --inspect=9230 ./gen/srv/srv/server.js", 5 | "watch": ["src/**/*"], 6 | "env": { 7 | "PORT": 3001, 8 | "NODE_ENV": "development" 9 | }, 10 | "ext": "*.ts" 11 | } 12 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cap-bookshop-typescript", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@dabh/diagnostics": { 8 | "version": "2.0.2", 9 | "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", 10 | "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", 11 | "requires": { 12 | "colorspace": "1.1.x", 13 | "enabled": "2.0.x", 14 | "kuler": "^2.0.0" 15 | } 16 | }, 17 | "@dsherret/to-absolute-glob": { 18 | "version": "2.0.2", 19 | "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", 20 | "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", 21 | "dev": true, 22 | "requires": { 23 | "is-absolute": "^1.0.0", 24 | "is-negated-glob": "^1.0.0" 25 | } 26 | }, 27 | "@gar/promisify": { 28 | "version": "1.1.3", 29 | "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", 30 | "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", 31 | "dev": true, 32 | "optional": true 33 | }, 34 | "@mapbox/node-pre-gyp": { 35 | "version": "1.0.9", 36 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", 37 | "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", 38 | "dev": true, 39 | "requires": { 40 | "detect-libc": "^2.0.0", 41 | "https-proxy-agent": "^5.0.0", 42 | "make-dir": "^3.1.0", 43 | "node-fetch": "^2.6.7", 44 | "nopt": "^5.0.0", 45 | "npmlog": "^5.0.1", 46 | "rimraf": "^3.0.2", 47 | "semver": "^7.3.5", 48 | "tar": "^6.1.11" 49 | }, 50 | "dependencies": { 51 | "semver": { 52 | "version": "7.3.7", 53 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 54 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 55 | "dev": true, 56 | "requires": { 57 | "lru-cache": "^6.0.0" 58 | } 59 | } 60 | } 61 | }, 62 | "@nodelib/fs.scandir": { 63 | "version": "2.1.5", 64 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 65 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 66 | "dev": true, 67 | "requires": { 68 | "@nodelib/fs.stat": "2.0.5", 69 | "run-parallel": "^1.1.9" 70 | } 71 | }, 72 | "@nodelib/fs.stat": { 73 | "version": "2.0.5", 74 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 75 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 76 | "dev": true 77 | }, 78 | "@nodelib/fs.walk": { 79 | "version": "1.2.7", 80 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", 81 | "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", 82 | "dev": true, 83 | "requires": { 84 | "@nodelib/fs.scandir": "2.1.5", 85 | "fastq": "^1.6.0" 86 | } 87 | }, 88 | "@npmcli/fs": { 89 | "version": "1.1.1", 90 | "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", 91 | "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", 92 | "dev": true, 93 | "optional": true, 94 | "requires": { 95 | "@gar/promisify": "^1.0.1", 96 | "semver": "^7.3.5" 97 | }, 98 | "dependencies": { 99 | "semver": { 100 | "version": "7.3.7", 101 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 102 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 103 | "dev": true, 104 | "optional": true, 105 | "requires": { 106 | "lru-cache": "^6.0.0" 107 | } 108 | } 109 | } 110 | }, 111 | "@npmcli/move-file": { 112 | "version": "1.1.2", 113 | "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", 114 | "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", 115 | "dev": true, 116 | "optional": true, 117 | "requires": { 118 | "mkdirp": "^1.0.4", 119 | "rimraf": "^3.0.2" 120 | } 121 | }, 122 | "@sap-cloud-sdk/core": { 123 | "version": "1.52.0", 124 | "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/core/-/core-1.52.0.tgz", 125 | "integrity": "sha512-6ISoOUJOOQ9nasghbQLHP3QWzKbNKba4GRWyi3ocs05/QVB7bueN8FoyKIbGIbZXaXeqZf2cgyyoxMlQk7yOkQ==", 126 | "requires": { 127 | "@sap-cloud-sdk/analytics": "^1.52.0", 128 | "@sap-cloud-sdk/util": "^1.52.0", 129 | "@sap/xsenv": "^3.0.0", 130 | "@sap/xssec": "^3.2.7", 131 | "@types/jsonwebtoken": "^8.3.8", 132 | "axios": "^0.21.1", 133 | "bignumber.js": "^9.0.0", 134 | "http-proxy-agent": "^5.0.0", 135 | "https-proxy-agent": "^5.0.0", 136 | "jsonwebtoken": "^8.5.1", 137 | "moment": "^2.29.0", 138 | "opossum": "^6.0.0", 139 | "uuid": "^8.2.0", 140 | "voca": "^1.4.0" 141 | }, 142 | "dependencies": { 143 | "@sap-cloud-sdk/analytics": { 144 | "version": "1.52.0", 145 | "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/analytics/-/analytics-1.52.0.tgz", 146 | "integrity": "sha512-NwiK22SqutPDQtXtVgWLRdlXDIcvW95RjyJi6ZiiGKPNsVW3oPLpfa29pQ7pDXpn1ID2VNDEe3fu4WKrt5TMsQ==", 147 | "requires": { 148 | "@sap-cloud-sdk/util": "^1.52.0", 149 | "axios": "^0.21.1" 150 | } 151 | }, 152 | "@sap-cloud-sdk/util": { 153 | "version": "1.52.0", 154 | "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-1.52.0.tgz", 155 | "integrity": "sha512-B5tiLwO7BtZlGH3Qsg7yFv9RZgSiFcBhj3acAretWr0nF9/emZGiwX38TQuNEfdX0oaNddGiKmZgKI47pA6eBA==", 156 | "requires": { 157 | "axios": "^0.21.1", 158 | "chalk": "^4.1.0", 159 | "logform": "^2.2.0", 160 | "promise.allsettled": "^1.0.4", 161 | "voca": "^1.4.0", 162 | "winston": "^3.3.3" 163 | } 164 | }, 165 | "@tootallnate/once": { 166 | "version": "2.0.0", 167 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 168 | "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" 169 | }, 170 | "http-proxy-agent": { 171 | "version": "5.0.0", 172 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 173 | "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 174 | "requires": { 175 | "@tootallnate/once": "2", 176 | "agent-base": "6", 177 | "debug": "4" 178 | } 179 | } 180 | } 181 | }, 182 | "@sap-cloud-sdk/util": { 183 | "version": "1.45.0", 184 | "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-1.45.0.tgz", 185 | "integrity": "sha512-Y2+p3zhx3nPPre16FS4ywxDaKLyUj3NgEkvWBPzrLxi6OWkvtmEBWVHAaz/bW2ipivUjuvPQB9j3vyBbYrIolQ==", 186 | "requires": { 187 | "axios": "^0.21.1", 188 | "chalk": "^4.1.0", 189 | "logform": "^2.2.0", 190 | "promise.allsettled": "^1.0.4", 191 | "voca": "^1.4.0", 192 | "winston": "^3.3.3" 193 | } 194 | }, 195 | "@sap/cds": { 196 | "version": "5.1.5", 197 | "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.1.5.tgz", 198 | "integrity": "sha512-nm5LjXLqUAXivO73eyzTfsvdVanZAVVhqEM86p3hV4sveRsWF56WS+6Rlbz5eFGMtH0LaXzEAd0gzJ4G8/spow==", 199 | "requires": { 200 | "@sap/cds-compiler": "^2.1.6", 201 | "@sap/cds-foss": "^2.3.1", 202 | "@sap/cds-runtime": "~3.1.0" 203 | } 204 | }, 205 | "@sap/cds-compiler": { 206 | "version": "2.2.8", 207 | "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-2.2.8.tgz", 208 | "integrity": "sha512-PEjLKGXSKqowFjyVsL3sAV0szIXTvULup0Sxv+PoKg44twXbHqiuKHsnu16peknMa5xuDN+r9YDvZvUjCFnsEw==", 209 | "requires": { 210 | "antlr4": "4.8.0" 211 | } 212 | }, 213 | "@sap/cds-foss": { 214 | "version": "2.3.1", 215 | "resolved": "https://registry.npmjs.org/@sap/cds-foss/-/cds-foss-2.3.1.tgz", 216 | "integrity": "sha512-Scfvem8T7YFBJE2Ruphrl/YVBUah8kYtaSyhiCh7N3+Vop4vx09WWysa1geOT1hholbZL3UCZ87w5R+0wKMEoA==", 217 | "requires": { 218 | "big.js": "6.0.3", 219 | "fs-extra": "9.1.0", 220 | "generic-pool": "3.7.2", 221 | "uuid": "8.3.2", 222 | "xmlbuilder": "15.1.1", 223 | "yaml": "1.10.2" 224 | }, 225 | "dependencies": { 226 | "at-least-node": { 227 | "version": "1.0.0", 228 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", 229 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" 230 | }, 231 | "big.js": { 232 | "version": "6.0.3", 233 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.0.3.tgz", 234 | "integrity": "sha512-n6yn1FyVL1EW2DBAr4jlU/kObhRzmr+NNRESl65VIOT8WBJj/Kezpx2zFdhJUqYI6qrtTW7moCStYL5VxeVdPA==" 235 | }, 236 | "fs-extra": { 237 | "version": "9.1.0", 238 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", 239 | "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", 240 | "requires": { 241 | "at-least-node": "^1.0.0", 242 | "graceful-fs": "^4.2.0", 243 | "jsonfile": "^6.0.1", 244 | "universalify": "^2.0.0" 245 | } 246 | }, 247 | "generic-pool": { 248 | "version": "3.7.2", 249 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.7.2.tgz", 250 | "integrity": "sha512-Ec7D4KySmEtIdJBNRVS8jus84ejNAvYG7KaLsXMhIs4AVQ2RuXSjMtmpskTKDT0y6TFSPjo4H+cCmLKUb+vDzg==" 251 | }, 252 | "graceful-fs": { 253 | "version": "4.2.6", 254 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", 255 | "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" 256 | }, 257 | "jsonfile": { 258 | "version": "6.1.0", 259 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 260 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 261 | "requires": { 262 | "graceful-fs": "^4.1.6", 263 | "universalify": "^2.0.0" 264 | } 265 | }, 266 | "universalify": { 267 | "version": "2.0.0", 268 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 269 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" 270 | }, 271 | "uuid": { 272 | "version": "8.3.2", 273 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 274 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 275 | }, 276 | "xmlbuilder": { 277 | "version": "15.1.1", 278 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", 279 | "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==" 280 | }, 281 | "yaml": { 282 | "version": "1.10.2", 283 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 284 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 285 | } 286 | } 287 | }, 288 | "@sap/cds-runtime": { 289 | "version": "3.1.2", 290 | "resolved": "https://registry.npmjs.org/@sap/cds-runtime/-/cds-runtime-3.1.2.tgz", 291 | "integrity": "sha512-Y7qdgieWqvnFICZ2pCpnwc4U36O8rmOYTNrUWVduM1wwcVeOzlGPnwFwDckG63zVxL7vJlkqHNsgFN5myXHTGw==", 292 | "requires": { 293 | "@sap-cloud-sdk/core": "^1.41", 294 | "@sap-cloud-sdk/util": "^1.41", 295 | "@sap/cds-foss": "^2.2.0" 296 | } 297 | }, 298 | "@sap/xsenv": { 299 | "version": "3.1.0", 300 | "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-3.1.0.tgz", 301 | "integrity": "sha512-Z+fwO13tcad+eoe8iTrbR471OacU754puabhRn8OI1MU2pPebDQu8rcHN7sR9JQinh4dSs953WkbDneOmvCWuA==", 302 | "requires": { 303 | "debug": "3.1.0", 304 | "verror": "1.10.0" 305 | }, 306 | "dependencies": { 307 | "assert-plus": { 308 | "version": "1.0.0", 309 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 310 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 311 | }, 312 | "core-util-is": { 313 | "version": "1.0.2", 314 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 315 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 316 | }, 317 | "debug": { 318 | "version": "3.1.0", 319 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 320 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 321 | "requires": { 322 | "ms": "2.0.0" 323 | } 324 | }, 325 | "extsprintf": { 326 | "version": "1.4.0", 327 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", 328 | "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" 329 | }, 330 | "ms": { 331 | "version": "2.0.0", 332 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 333 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 334 | }, 335 | "verror": { 336 | "version": "1.10.0", 337 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 338 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 339 | "requires": { 340 | "assert-plus": "^1.0.0", 341 | "core-util-is": "1.0.2", 342 | "extsprintf": "^1.2.0" 343 | } 344 | } 345 | } 346 | }, 347 | "@sap/xssec": { 348 | "version": "3.2.10", 349 | "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-3.2.10.tgz", 350 | "integrity": "sha512-gY7aRfPip1XW1e1F49k8q+alikFbgFXaQ3xpPzMwtmkWGEnEwFrTaVtOpkaGSiwG4CSWfh3sjDNyLLyr7X9uug==", 351 | "requires": { 352 | "axios": "^0.21.4", 353 | "debug": "4.3.2", 354 | "jsonwebtoken": "^8.5.1", 355 | "lru-cache": "6.0.0", 356 | "node-rsa": "^1.1.1", 357 | "valid-url": "1.0.9" 358 | }, 359 | "dependencies": { 360 | "debug": { 361 | "version": "4.3.2", 362 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 363 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 364 | "requires": { 365 | "ms": "2.1.2" 366 | } 367 | } 368 | } 369 | }, 370 | "@sindresorhus/is": { 371 | "version": "0.14.0", 372 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 373 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", 374 | "dev": true 375 | }, 376 | "@szmarczak/http-timer": { 377 | "version": "1.1.2", 378 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 379 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 380 | "dev": true, 381 | "requires": { 382 | "defer-to-connect": "^1.0.1" 383 | } 384 | }, 385 | "@tootallnate/once": { 386 | "version": "1.1.2", 387 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 388 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 389 | "dev": true, 390 | "optional": true 391 | }, 392 | "@ts-morph/common": { 393 | "version": "0.5.2", 394 | "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.5.2.tgz", 395 | "integrity": "sha512-eLmfYV6u6gUgHrB9QV9lpuWg3cD60mhXdv0jvM5exWR/Cor8HG+GziFIj2hPEWHJknqzuU4meZd8DTqIzZfDRQ==", 396 | "dev": true, 397 | "requires": { 398 | "@dsherret/to-absolute-glob": "^2.0.2", 399 | "fast-glob": "^3.2.2", 400 | "fs-extra": "^9.0.0", 401 | "is-negated-glob": "^1.0.0", 402 | "multimatch": "^4.0.0", 403 | "typescript": "~3.9.7" 404 | }, 405 | "dependencies": { 406 | "fs-extra": { 407 | "version": "9.1.0", 408 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", 409 | "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", 410 | "dev": true, 411 | "requires": { 412 | "at-least-node": "^1.0.0", 413 | "graceful-fs": "^4.2.0", 414 | "jsonfile": "^6.0.1", 415 | "universalify": "^2.0.0" 416 | } 417 | }, 418 | "jsonfile": { 419 | "version": "6.1.0", 420 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 421 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 422 | "dev": true, 423 | "requires": { 424 | "graceful-fs": "^4.1.6", 425 | "universalify": "^2.0.0" 426 | } 427 | }, 428 | "typescript": { 429 | "version": "3.9.9", 430 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", 431 | "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==", 432 | "dev": true 433 | }, 434 | "universalify": { 435 | "version": "2.0.0", 436 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 437 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 438 | "dev": true 439 | } 440 | } 441 | }, 442 | "@types/body-parser": { 443 | "version": "1.19.0", 444 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", 445 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", 446 | "dev": true, 447 | "requires": { 448 | "@types/connect": "*", 449 | "@types/node": "*" 450 | } 451 | }, 452 | "@types/connect": { 453 | "version": "3.4.34", 454 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", 455 | "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", 456 | "dev": true, 457 | "requires": { 458 | "@types/node": "*" 459 | } 460 | }, 461 | "@types/express": { 462 | "version": "4.17.12", 463 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.12.tgz", 464 | "integrity": "sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q==", 465 | "dev": true, 466 | "requires": { 467 | "@types/body-parser": "*", 468 | "@types/express-serve-static-core": "^4.17.18", 469 | "@types/qs": "*", 470 | "@types/serve-static": "*" 471 | } 472 | }, 473 | "@types/express-serve-static-core": { 474 | "version": "4.17.21", 475 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.21.tgz", 476 | "integrity": "sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA==", 477 | "dev": true, 478 | "requires": { 479 | "@types/node": "*", 480 | "@types/qs": "*", 481 | "@types/range-parser": "*" 482 | } 483 | }, 484 | "@types/jsonwebtoken": { 485 | "version": "8.5.5", 486 | "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.5.tgz", 487 | "integrity": "sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==", 488 | "requires": { 489 | "@types/node": "*" 490 | } 491 | }, 492 | "@types/lodash": { 493 | "version": "4.14.170", 494 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.170.tgz", 495 | "integrity": "sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q==", 496 | "dev": true 497 | }, 498 | "@types/mime": { 499 | "version": "1.3.2", 500 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 501 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", 502 | "dev": true 503 | }, 504 | "@types/minimatch": { 505 | "version": "3.0.4", 506 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", 507 | "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", 508 | "dev": true 509 | }, 510 | "@types/node": { 511 | "version": "15.12.2", 512 | "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", 513 | "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" 514 | }, 515 | "@types/qs": { 516 | "version": "6.9.6", 517 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", 518 | "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", 519 | "dev": true 520 | }, 521 | "@types/range-parser": { 522 | "version": "1.2.3", 523 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", 524 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", 525 | "dev": true 526 | }, 527 | "@types/serve-static": { 528 | "version": "1.13.9", 529 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", 530 | "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", 531 | "dev": true, 532 | "requires": { 533 | "@types/mime": "^1", 534 | "@types/node": "*" 535 | } 536 | }, 537 | "abbrev": { 538 | "version": "1.1.1", 539 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 540 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 541 | "dev": true 542 | }, 543 | "accepts": { 544 | "version": "1.3.7", 545 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 546 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 547 | "requires": { 548 | "mime-types": "~2.1.24", 549 | "negotiator": "0.6.2" 550 | } 551 | }, 552 | "agent-base": { 553 | "version": "6.0.2", 554 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 555 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 556 | "requires": { 557 | "debug": "4" 558 | } 559 | }, 560 | "agentkeepalive": { 561 | "version": "4.2.1", 562 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", 563 | "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", 564 | "dev": true, 565 | "optional": true, 566 | "requires": { 567 | "debug": "^4.1.0", 568 | "depd": "^1.1.2", 569 | "humanize-ms": "^1.2.1" 570 | } 571 | }, 572 | "aggregate-error": { 573 | "version": "3.1.0", 574 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 575 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 576 | "dev": true, 577 | "optional": true, 578 | "requires": { 579 | "clean-stack": "^2.0.0", 580 | "indent-string": "^4.0.0" 581 | } 582 | }, 583 | "ansi-align": { 584 | "version": "3.0.0", 585 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", 586 | "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", 587 | "dev": true, 588 | "requires": { 589 | "string-width": "^3.0.0" 590 | }, 591 | "dependencies": { 592 | "ansi-regex": { 593 | "version": "4.1.0", 594 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 595 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 596 | "dev": true 597 | }, 598 | "is-fullwidth-code-point": { 599 | "version": "2.0.0", 600 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 601 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 602 | "dev": true 603 | }, 604 | "string-width": { 605 | "version": "3.1.0", 606 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 607 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 608 | "dev": true, 609 | "requires": { 610 | "emoji-regex": "^7.0.1", 611 | "is-fullwidth-code-point": "^2.0.0", 612 | "strip-ansi": "^5.1.0" 613 | } 614 | }, 615 | "strip-ansi": { 616 | "version": "5.2.0", 617 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 618 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 619 | "dev": true, 620 | "requires": { 621 | "ansi-regex": "^4.1.0" 622 | } 623 | } 624 | } 625 | }, 626 | "ansi-regex": { 627 | "version": "5.0.1", 628 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 629 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 630 | "dev": true 631 | }, 632 | "ansi-styles": { 633 | "version": "4.3.0", 634 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 635 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 636 | "requires": { 637 | "color-convert": "^2.0.1" 638 | } 639 | }, 640 | "antlr4": { 641 | "version": "4.8.0", 642 | "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.8.0.tgz", 643 | "integrity": "sha512-en/MxQ4OkPgGJQ3wD/muzj1uDnFSzdFIhc2+c6bHZokWkuBb6RRvFjpWhPxWLbgQvaEzldJZ0GSQpfSAaE3hqg==" 644 | }, 645 | "anymatch": { 646 | "version": "3.1.2", 647 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 648 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 649 | "dev": true, 650 | "requires": { 651 | "normalize-path": "^3.0.0", 652 | "picomatch": "^2.0.4" 653 | } 654 | }, 655 | "aproba": { 656 | "version": "2.0.0", 657 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 658 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", 659 | "dev": true 660 | }, 661 | "are-we-there-yet": { 662 | "version": "2.0.0", 663 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 664 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 665 | "dev": true, 666 | "requires": { 667 | "delegates": "^1.0.0", 668 | "readable-stream": "^3.6.0" 669 | } 670 | }, 671 | "array-differ": { 672 | "version": "3.0.0", 673 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", 674 | "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", 675 | "dev": true 676 | }, 677 | "array-flatten": { 678 | "version": "1.1.1", 679 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 680 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 681 | }, 682 | "array-union": { 683 | "version": "2.1.0", 684 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 685 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 686 | "dev": true 687 | }, 688 | "array.prototype.map": { 689 | "version": "1.0.3", 690 | "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.3.tgz", 691 | "integrity": "sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA==", 692 | "requires": { 693 | "call-bind": "^1.0.0", 694 | "define-properties": "^1.1.3", 695 | "es-abstract": "^1.18.0-next.1", 696 | "es-array-method-boxes-properly": "^1.0.0", 697 | "is-string": "^1.0.5" 698 | } 699 | }, 700 | "arrify": { 701 | "version": "2.0.1", 702 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", 703 | "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", 704 | "dev": true 705 | }, 706 | "asn1": { 707 | "version": "0.2.4", 708 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 709 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 710 | "requires": { 711 | "safer-buffer": "~2.1.0" 712 | } 713 | }, 714 | "async": { 715 | "version": "3.2.4", 716 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", 717 | "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" 718 | }, 719 | "at-least-node": { 720 | "version": "1.0.0", 721 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", 722 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", 723 | "dev": true 724 | }, 725 | "axios": { 726 | "version": "0.21.4", 727 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", 728 | "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", 729 | "requires": { 730 | "follow-redirects": "^1.14.0" 731 | } 732 | }, 733 | "balanced-match": { 734 | "version": "1.0.0", 735 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 736 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 737 | }, 738 | "bignumber.js": { 739 | "version": "9.0.1", 740 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", 741 | "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" 742 | }, 743 | "binary-extensions": { 744 | "version": "2.2.0", 745 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 746 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 747 | "dev": true 748 | }, 749 | "body-parser": { 750 | "version": "1.19.0", 751 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 752 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 753 | "requires": { 754 | "bytes": "3.1.0", 755 | "content-type": "~1.0.4", 756 | "debug": "2.6.9", 757 | "depd": "~1.1.2", 758 | "http-errors": "1.7.2", 759 | "iconv-lite": "0.4.24", 760 | "on-finished": "~2.3.0", 761 | "qs": "6.7.0", 762 | "raw-body": "2.4.0", 763 | "type-is": "~1.6.17" 764 | }, 765 | "dependencies": { 766 | "debug": { 767 | "version": "2.6.9", 768 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 769 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 770 | "requires": { 771 | "ms": "2.0.0" 772 | } 773 | }, 774 | "ms": { 775 | "version": "2.0.0", 776 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 777 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 778 | } 779 | } 780 | }, 781 | "boxen": { 782 | "version": "4.2.0", 783 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", 784 | "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", 785 | "dev": true, 786 | "requires": { 787 | "ansi-align": "^3.0.0", 788 | "camelcase": "^5.3.1", 789 | "chalk": "^3.0.0", 790 | "cli-boxes": "^2.2.0", 791 | "string-width": "^4.1.0", 792 | "term-size": "^2.1.0", 793 | "type-fest": "^0.8.1", 794 | "widest-line": "^3.1.0" 795 | }, 796 | "dependencies": { 797 | "ansi-regex": { 798 | "version": "5.0.0", 799 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 800 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 801 | "dev": true 802 | }, 803 | "chalk": { 804 | "version": "3.0.0", 805 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 806 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 807 | "dev": true, 808 | "requires": { 809 | "ansi-styles": "^4.1.0", 810 | "supports-color": "^7.1.0" 811 | } 812 | }, 813 | "emoji-regex": { 814 | "version": "8.0.0", 815 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 816 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 817 | "dev": true 818 | }, 819 | "is-fullwidth-code-point": { 820 | "version": "3.0.0", 821 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 822 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 823 | "dev": true 824 | }, 825 | "string-width": { 826 | "version": "4.2.2", 827 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 828 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 829 | "dev": true, 830 | "requires": { 831 | "emoji-regex": "^8.0.0", 832 | "is-fullwidth-code-point": "^3.0.0", 833 | "strip-ansi": "^6.0.0" 834 | } 835 | }, 836 | "strip-ansi": { 837 | "version": "6.0.0", 838 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 839 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 840 | "dev": true, 841 | "requires": { 842 | "ansi-regex": "^5.0.0" 843 | } 844 | } 845 | } 846 | }, 847 | "brace-expansion": { 848 | "version": "1.1.11", 849 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 850 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 851 | "requires": { 852 | "balanced-match": "^1.0.0", 853 | "concat-map": "0.0.1" 854 | } 855 | }, 856 | "braces": { 857 | "version": "3.0.2", 858 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 859 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 860 | "dev": true, 861 | "requires": { 862 | "fill-range": "^7.0.1" 863 | } 864 | }, 865 | "buffer-equal-constant-time": { 866 | "version": "1.0.1", 867 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 868 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 869 | }, 870 | "bytes": { 871 | "version": "3.1.0", 872 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 873 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 874 | }, 875 | "cacache": { 876 | "version": "15.3.0", 877 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", 878 | "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", 879 | "dev": true, 880 | "optional": true, 881 | "requires": { 882 | "@npmcli/fs": "^1.0.0", 883 | "@npmcli/move-file": "^1.0.1", 884 | "chownr": "^2.0.0", 885 | "fs-minipass": "^2.0.0", 886 | "glob": "^7.1.4", 887 | "infer-owner": "^1.0.4", 888 | "lru-cache": "^6.0.0", 889 | "minipass": "^3.1.1", 890 | "minipass-collect": "^1.0.2", 891 | "minipass-flush": "^1.0.5", 892 | "minipass-pipeline": "^1.2.2", 893 | "mkdirp": "^1.0.3", 894 | "p-map": "^4.0.0", 895 | "promise-inflight": "^1.0.1", 896 | "rimraf": "^3.0.2", 897 | "ssri": "^8.0.1", 898 | "tar": "^6.0.2", 899 | "unique-filename": "^1.1.1" 900 | } 901 | }, 902 | "cacheable-request": { 903 | "version": "6.1.0", 904 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 905 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 906 | "dev": true, 907 | "requires": { 908 | "clone-response": "^1.0.2", 909 | "get-stream": "^5.1.0", 910 | "http-cache-semantics": "^4.0.0", 911 | "keyv": "^3.0.0", 912 | "lowercase-keys": "^2.0.0", 913 | "normalize-url": "^4.1.0", 914 | "responselike": "^1.0.2" 915 | }, 916 | "dependencies": { 917 | "get-stream": { 918 | "version": "5.2.0", 919 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 920 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 921 | "dev": true, 922 | "requires": { 923 | "pump": "^3.0.0" 924 | } 925 | }, 926 | "lowercase-keys": { 927 | "version": "2.0.0", 928 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 929 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 930 | "dev": true 931 | } 932 | } 933 | }, 934 | "call-bind": { 935 | "version": "1.0.2", 936 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 937 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 938 | "requires": { 939 | "function-bind": "^1.1.1", 940 | "get-intrinsic": "^1.0.2" 941 | } 942 | }, 943 | "camelcase": { 944 | "version": "5.3.1", 945 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 946 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 947 | "dev": true 948 | }, 949 | "cds-routing-handlers": { 950 | "version": "3.0.5", 951 | "resolved": "https://registry.npmjs.org/cds-routing-handlers/-/cds-routing-handlers-3.0.5.tgz", 952 | "integrity": "sha512-jMRzRymfX5NtJF1amcpNUumWP+nuptTBNsVBa22em9Umo/LWqZb84B7AIyYh4EFjOYm4En3GTFKBUCDT5nD+zw==", 953 | "requires": { 954 | "@sap-cloud-sdk/core": "^1.45.0", 955 | "glob": "^7.1.7", 956 | "reflect-metadata": "^0.1.13" 957 | } 958 | }, 959 | "cds2types": { 960 | "version": "2.6.1", 961 | "resolved": "https://registry.npmjs.org/cds2types/-/cds2types-2.6.1.tgz", 962 | "integrity": "sha512-ofbV8sM0hsBMkIGM9enKRB6yzXtNX5g1fbqdClTDpuTYlbRIgr4CB/djLuLEK7v53OeZuRsdGQsqaJsEP7p5vQ==", 963 | "dev": true, 964 | "requires": { 965 | "@sap/cds": "^4.3.0", 966 | "@types/lodash": "^4.14.150", 967 | "commander": "^4.0.1", 968 | "fs-extra": "^8.1.0", 969 | "lodash": "^4.17.21", 970 | "prettier": "^2.2.1", 971 | "ts-morph": "^7.1.1" 972 | }, 973 | "dependencies": { 974 | "@sap/cds": { 975 | "version": "4.6.6", 976 | "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-4.6.6.tgz", 977 | "integrity": "sha512-LCzhIg8VVElfaarNU9fikgjVwn8AAel/M6zbLnamqSiW9wAbTMHH5oElHrQi2t9Byk6fVz8gkFjgHXBdmVVx+Q==", 978 | "dev": true, 979 | "requires": { 980 | "@sap/cds-compiler": "~1.50.0", 981 | "@sap/cds-foss": "^2", 982 | "@sap/cds-runtime": "~2.9.0" 983 | } 984 | }, 985 | "@sap/cds-compiler": { 986 | "version": "1.50.6", 987 | "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-1.50.6.tgz", 988 | "integrity": "sha512-5OPoXi9npsx5ZjZqi869dhT4oHfjVpQzBicKrY0mZr9MDYTI22i/Zu6sXgMRzMRjM76Sd9f2Gb3cwKElbXL5Fg==", 989 | "dev": true, 990 | "requires": { 991 | "antlr4": "4.8.0", 992 | "resolve": "1.8.1", 993 | "sax": "^1.2.4" 994 | } 995 | }, 996 | "@sap/cds-runtime": { 997 | "version": "2.9.12", 998 | "resolved": "https://registry.npmjs.org/@sap/cds-runtime/-/cds-runtime-2.9.12.tgz", 999 | "integrity": "sha512-sJvboxErKJnQdbsX4yyPOgvhFenO+Ef4uIeCXBg3Prz5yvKZLKh2YOvcrsTabs/zhww4XzsU2KdUkijYUn/kzg==", 1000 | "dev": true, 1001 | "requires": { 1002 | "@sap-cloud-sdk/core": "^1.41", 1003 | "@sap-cloud-sdk/util": "^1.41", 1004 | "@sap/cds-foss": "^2.2.0" 1005 | } 1006 | }, 1007 | "prettier": { 1008 | "version": "2.3.1", 1009 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", 1010 | "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", 1011 | "dev": true 1012 | } 1013 | } 1014 | }, 1015 | "chalk": { 1016 | "version": "4.1.1", 1017 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", 1018 | "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", 1019 | "requires": { 1020 | "ansi-styles": "^4.1.0", 1021 | "supports-color": "^7.1.0" 1022 | } 1023 | }, 1024 | "chokidar": { 1025 | "version": "3.5.1", 1026 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 1027 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 1028 | "dev": true, 1029 | "requires": { 1030 | "anymatch": "~3.1.1", 1031 | "braces": "~3.0.2", 1032 | "fsevents": "~2.3.1", 1033 | "glob-parent": "~5.1.0", 1034 | "is-binary-path": "~2.1.0", 1035 | "is-glob": "~4.0.1", 1036 | "normalize-path": "~3.0.0", 1037 | "readdirp": "~3.5.0" 1038 | } 1039 | }, 1040 | "chownr": { 1041 | "version": "2.0.0", 1042 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 1043 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 1044 | "dev": true 1045 | }, 1046 | "ci-info": { 1047 | "version": "2.0.0", 1048 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 1049 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", 1050 | "dev": true 1051 | }, 1052 | "clean-stack": { 1053 | "version": "2.2.0", 1054 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 1055 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 1056 | "dev": true, 1057 | "optional": true 1058 | }, 1059 | "cli-boxes": { 1060 | "version": "2.2.1", 1061 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", 1062 | "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", 1063 | "dev": true 1064 | }, 1065 | "clone-response": { 1066 | "version": "1.0.2", 1067 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 1068 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 1069 | "dev": true, 1070 | "requires": { 1071 | "mimic-response": "^1.0.0" 1072 | } 1073 | }, 1074 | "code-block-writer": { 1075 | "version": "10.1.1", 1076 | "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz", 1077 | "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", 1078 | "dev": true 1079 | }, 1080 | "color": { 1081 | "version": "3.0.0", 1082 | "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", 1083 | "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", 1084 | "requires": { 1085 | "color-convert": "^1.9.1", 1086 | "color-string": "^1.5.2" 1087 | }, 1088 | "dependencies": { 1089 | "color-convert": { 1090 | "version": "1.9.3", 1091 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1092 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1093 | "requires": { 1094 | "color-name": "1.1.3" 1095 | } 1096 | }, 1097 | "color-name": { 1098 | "version": "1.1.3", 1099 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1100 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 1101 | } 1102 | } 1103 | }, 1104 | "color-convert": { 1105 | "version": "2.0.1", 1106 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1107 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1108 | "requires": { 1109 | "color-name": "~1.1.4" 1110 | } 1111 | }, 1112 | "color-name": { 1113 | "version": "1.1.4", 1114 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1115 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1116 | }, 1117 | "color-string": { 1118 | "version": "1.5.5", 1119 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", 1120 | "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", 1121 | "requires": { 1122 | "color-name": "^1.0.0", 1123 | "simple-swizzle": "^0.2.2" 1124 | } 1125 | }, 1126 | "color-support": { 1127 | "version": "1.1.3", 1128 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 1129 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 1130 | "dev": true 1131 | }, 1132 | "colors": { 1133 | "version": "1.4.0", 1134 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 1135 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 1136 | }, 1137 | "colorspace": { 1138 | "version": "1.1.2", 1139 | "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", 1140 | "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", 1141 | "requires": { 1142 | "color": "3.0.x", 1143 | "text-hex": "1.0.x" 1144 | } 1145 | }, 1146 | "commander": { 1147 | "version": "4.1.1", 1148 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 1149 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 1150 | "dev": true 1151 | }, 1152 | "concat-map": { 1153 | "version": "0.0.1", 1154 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1155 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1156 | }, 1157 | "configstore": { 1158 | "version": "5.0.1", 1159 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", 1160 | "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", 1161 | "dev": true, 1162 | "requires": { 1163 | "dot-prop": "^5.2.0", 1164 | "graceful-fs": "^4.1.2", 1165 | "make-dir": "^3.0.0", 1166 | "unique-string": "^2.0.0", 1167 | "write-file-atomic": "^3.0.0", 1168 | "xdg-basedir": "^4.0.0" 1169 | } 1170 | }, 1171 | "console-control-strings": { 1172 | "version": "1.1.0", 1173 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 1174 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", 1175 | "dev": true 1176 | }, 1177 | "content-disposition": { 1178 | "version": "0.5.3", 1179 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 1180 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 1181 | "requires": { 1182 | "safe-buffer": "5.1.2" 1183 | }, 1184 | "dependencies": { 1185 | "safe-buffer": { 1186 | "version": "5.1.2", 1187 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1188 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1189 | } 1190 | } 1191 | }, 1192 | "content-type": { 1193 | "version": "1.0.4", 1194 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1195 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 1196 | }, 1197 | "cookie": { 1198 | "version": "0.4.0", 1199 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 1200 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 1201 | }, 1202 | "cookie-signature": { 1203 | "version": "1.0.6", 1204 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1205 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 1206 | }, 1207 | "core-util-is": { 1208 | "version": "1.0.2", 1209 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1210 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 1211 | }, 1212 | "crypto-random-string": { 1213 | "version": "2.0.0", 1214 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", 1215 | "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", 1216 | "dev": true 1217 | }, 1218 | "debug": { 1219 | "version": "4.3.1", 1220 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 1221 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 1222 | "requires": { 1223 | "ms": "2.1.2" 1224 | } 1225 | }, 1226 | "decompress-response": { 1227 | "version": "3.3.0", 1228 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 1229 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", 1230 | "dev": true, 1231 | "requires": { 1232 | "mimic-response": "^1.0.0" 1233 | } 1234 | }, 1235 | "deep-extend": { 1236 | "version": "0.6.0", 1237 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 1238 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 1239 | "dev": true 1240 | }, 1241 | "defer-to-connect": { 1242 | "version": "1.1.3", 1243 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", 1244 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", 1245 | "dev": true 1246 | }, 1247 | "define-properties": { 1248 | "version": "1.1.3", 1249 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1250 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1251 | "requires": { 1252 | "object-keys": "^1.0.12" 1253 | } 1254 | }, 1255 | "delegates": { 1256 | "version": "1.0.0", 1257 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 1258 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", 1259 | "dev": true 1260 | }, 1261 | "depd": { 1262 | "version": "1.1.2", 1263 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1264 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1265 | }, 1266 | "destroy": { 1267 | "version": "1.0.4", 1268 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 1269 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 1270 | }, 1271 | "detect-libc": { 1272 | "version": "2.0.1", 1273 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 1274 | "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", 1275 | "dev": true 1276 | }, 1277 | "dot-prop": { 1278 | "version": "5.3.0", 1279 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", 1280 | "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", 1281 | "dev": true, 1282 | "requires": { 1283 | "is-obj": "^2.0.0" 1284 | } 1285 | }, 1286 | "duplexer3": { 1287 | "version": "0.1.4", 1288 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 1289 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 1290 | "dev": true 1291 | }, 1292 | "ecdsa-sig-formatter": { 1293 | "version": "1.0.11", 1294 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 1295 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 1296 | "requires": { 1297 | "safe-buffer": "^5.0.1" 1298 | } 1299 | }, 1300 | "ee-first": { 1301 | "version": "1.1.1", 1302 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1303 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1304 | }, 1305 | "emoji-regex": { 1306 | "version": "7.0.3", 1307 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1308 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 1309 | "dev": true 1310 | }, 1311 | "enabled": { 1312 | "version": "2.0.0", 1313 | "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", 1314 | "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" 1315 | }, 1316 | "encodeurl": { 1317 | "version": "1.0.2", 1318 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1319 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 1320 | }, 1321 | "encoding": { 1322 | "version": "0.1.13", 1323 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", 1324 | "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", 1325 | "dev": true, 1326 | "optional": true, 1327 | "requires": { 1328 | "iconv-lite": "^0.6.2" 1329 | }, 1330 | "dependencies": { 1331 | "iconv-lite": { 1332 | "version": "0.6.3", 1333 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1334 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1335 | "dev": true, 1336 | "optional": true, 1337 | "requires": { 1338 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1339 | } 1340 | } 1341 | } 1342 | }, 1343 | "end-of-stream": { 1344 | "version": "1.4.4", 1345 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1346 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1347 | "dev": true, 1348 | "requires": { 1349 | "once": "^1.4.0" 1350 | } 1351 | }, 1352 | "env-paths": { 1353 | "version": "2.2.1", 1354 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 1355 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 1356 | "dev": true, 1357 | "optional": true 1358 | }, 1359 | "err-code": { 1360 | "version": "2.0.3", 1361 | "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", 1362 | "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", 1363 | "dev": true, 1364 | "optional": true 1365 | }, 1366 | "es-abstract": { 1367 | "version": "1.18.3", 1368 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", 1369 | "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", 1370 | "requires": { 1371 | "call-bind": "^1.0.2", 1372 | "es-to-primitive": "^1.2.1", 1373 | "function-bind": "^1.1.1", 1374 | "get-intrinsic": "^1.1.1", 1375 | "has": "^1.0.3", 1376 | "has-symbols": "^1.0.2", 1377 | "is-callable": "^1.2.3", 1378 | "is-negative-zero": "^2.0.1", 1379 | "is-regex": "^1.1.3", 1380 | "is-string": "^1.0.6", 1381 | "object-inspect": "^1.10.3", 1382 | "object-keys": "^1.1.1", 1383 | "object.assign": "^4.1.2", 1384 | "string.prototype.trimend": "^1.0.4", 1385 | "string.prototype.trimstart": "^1.0.4", 1386 | "unbox-primitive": "^1.0.1" 1387 | } 1388 | }, 1389 | "es-array-method-boxes-properly": { 1390 | "version": "1.0.0", 1391 | "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", 1392 | "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" 1393 | }, 1394 | "es-get-iterator": { 1395 | "version": "1.1.2", 1396 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", 1397 | "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", 1398 | "requires": { 1399 | "call-bind": "^1.0.2", 1400 | "get-intrinsic": "^1.1.0", 1401 | "has-symbols": "^1.0.1", 1402 | "is-arguments": "^1.1.0", 1403 | "is-map": "^2.0.2", 1404 | "is-set": "^2.0.2", 1405 | "is-string": "^1.0.5", 1406 | "isarray": "^2.0.5" 1407 | } 1408 | }, 1409 | "es-to-primitive": { 1410 | "version": "1.2.1", 1411 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1412 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1413 | "requires": { 1414 | "is-callable": "^1.1.4", 1415 | "is-date-object": "^1.0.1", 1416 | "is-symbol": "^1.0.2" 1417 | } 1418 | }, 1419 | "escape-goat": { 1420 | "version": "2.1.1", 1421 | "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", 1422 | "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", 1423 | "dev": true 1424 | }, 1425 | "escape-html": { 1426 | "version": "1.0.3", 1427 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1428 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1429 | }, 1430 | "etag": { 1431 | "version": "1.8.1", 1432 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1433 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 1434 | }, 1435 | "express": { 1436 | "version": "4.17.1", 1437 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 1438 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 1439 | "requires": { 1440 | "accepts": "~1.3.7", 1441 | "array-flatten": "1.1.1", 1442 | "body-parser": "1.19.0", 1443 | "content-disposition": "0.5.3", 1444 | "content-type": "~1.0.4", 1445 | "cookie": "0.4.0", 1446 | "cookie-signature": "1.0.6", 1447 | "debug": "2.6.9", 1448 | "depd": "~1.1.2", 1449 | "encodeurl": "~1.0.2", 1450 | "escape-html": "~1.0.3", 1451 | "etag": "~1.8.1", 1452 | "finalhandler": "~1.1.2", 1453 | "fresh": "0.5.2", 1454 | "merge-descriptors": "1.0.1", 1455 | "methods": "~1.1.2", 1456 | "on-finished": "~2.3.0", 1457 | "parseurl": "~1.3.3", 1458 | "path-to-regexp": "0.1.7", 1459 | "proxy-addr": "~2.0.5", 1460 | "qs": "6.7.0", 1461 | "range-parser": "~1.2.1", 1462 | "safe-buffer": "5.1.2", 1463 | "send": "0.17.1", 1464 | "serve-static": "1.14.1", 1465 | "setprototypeof": "1.1.1", 1466 | "statuses": "~1.5.0", 1467 | "type-is": "~1.6.18", 1468 | "utils-merge": "1.0.1", 1469 | "vary": "~1.1.2" 1470 | }, 1471 | "dependencies": { 1472 | "debug": { 1473 | "version": "2.6.9", 1474 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1475 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1476 | "requires": { 1477 | "ms": "2.0.0" 1478 | } 1479 | }, 1480 | "ms": { 1481 | "version": "2.0.0", 1482 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1483 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1484 | }, 1485 | "safe-buffer": { 1486 | "version": "5.1.2", 1487 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1488 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1489 | } 1490 | } 1491 | }, 1492 | "fast-glob": { 1493 | "version": "3.2.5", 1494 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", 1495 | "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", 1496 | "dev": true, 1497 | "requires": { 1498 | "@nodelib/fs.stat": "^2.0.2", 1499 | "@nodelib/fs.walk": "^1.2.3", 1500 | "glob-parent": "^5.1.0", 1501 | "merge2": "^1.3.0", 1502 | "micromatch": "^4.0.2", 1503 | "picomatch": "^2.2.1" 1504 | } 1505 | }, 1506 | "fast-safe-stringify": { 1507 | "version": "2.0.7", 1508 | "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", 1509 | "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" 1510 | }, 1511 | "fastq": { 1512 | "version": "1.11.0", 1513 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", 1514 | "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", 1515 | "dev": true, 1516 | "requires": { 1517 | "reusify": "^1.0.4" 1518 | } 1519 | }, 1520 | "fecha": { 1521 | "version": "4.2.1", 1522 | "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", 1523 | "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" 1524 | }, 1525 | "fill-range": { 1526 | "version": "7.0.1", 1527 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1528 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1529 | "dev": true, 1530 | "requires": { 1531 | "to-regex-range": "^5.0.1" 1532 | } 1533 | }, 1534 | "finalhandler": { 1535 | "version": "1.1.2", 1536 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1537 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1538 | "requires": { 1539 | "debug": "2.6.9", 1540 | "encodeurl": "~1.0.2", 1541 | "escape-html": "~1.0.3", 1542 | "on-finished": "~2.3.0", 1543 | "parseurl": "~1.3.3", 1544 | "statuses": "~1.5.0", 1545 | "unpipe": "~1.0.0" 1546 | }, 1547 | "dependencies": { 1548 | "debug": { 1549 | "version": "2.6.9", 1550 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1551 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1552 | "requires": { 1553 | "ms": "2.0.0" 1554 | } 1555 | }, 1556 | "ms": { 1557 | "version": "2.0.0", 1558 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1559 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1560 | } 1561 | } 1562 | }, 1563 | "fn.name": { 1564 | "version": "1.1.0", 1565 | "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", 1566 | "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" 1567 | }, 1568 | "follow-redirects": { 1569 | "version": "1.14.8", 1570 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", 1571 | "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" 1572 | }, 1573 | "forwarded": { 1574 | "version": "0.1.2", 1575 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 1576 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 1577 | }, 1578 | "fresh": { 1579 | "version": "0.5.2", 1580 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1581 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1582 | }, 1583 | "fs-extra": { 1584 | "version": "8.1.0", 1585 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1586 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1587 | "dev": true, 1588 | "requires": { 1589 | "graceful-fs": "^4.2.0", 1590 | "jsonfile": "^4.0.0", 1591 | "universalify": "^0.1.0" 1592 | } 1593 | }, 1594 | "fs-minipass": { 1595 | "version": "2.1.0", 1596 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 1597 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 1598 | "dev": true, 1599 | "requires": { 1600 | "minipass": "^3.0.0" 1601 | } 1602 | }, 1603 | "fs.realpath": { 1604 | "version": "1.0.0", 1605 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1606 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1607 | }, 1608 | "fsevents": { 1609 | "version": "2.3.2", 1610 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1611 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1612 | "dev": true, 1613 | "optional": true 1614 | }, 1615 | "function-bind": { 1616 | "version": "1.1.1", 1617 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1618 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1619 | }, 1620 | "gauge": { 1621 | "version": "3.0.2", 1622 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 1623 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 1624 | "dev": true, 1625 | "requires": { 1626 | "aproba": "^1.0.3 || ^2.0.0", 1627 | "color-support": "^1.1.2", 1628 | "console-control-strings": "^1.0.0", 1629 | "has-unicode": "^2.0.1", 1630 | "object-assign": "^4.1.1", 1631 | "signal-exit": "^3.0.0", 1632 | "string-width": "^4.2.3", 1633 | "strip-ansi": "^6.0.1", 1634 | "wide-align": "^1.1.2" 1635 | } 1636 | }, 1637 | "get-intrinsic": { 1638 | "version": "1.1.1", 1639 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1640 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1641 | "requires": { 1642 | "function-bind": "^1.1.1", 1643 | "has": "^1.0.3", 1644 | "has-symbols": "^1.0.1" 1645 | } 1646 | }, 1647 | "get-stream": { 1648 | "version": "4.1.0", 1649 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 1650 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 1651 | "dev": true, 1652 | "requires": { 1653 | "pump": "^3.0.0" 1654 | } 1655 | }, 1656 | "glob": { 1657 | "version": "7.1.7", 1658 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 1659 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 1660 | "requires": { 1661 | "fs.realpath": "^1.0.0", 1662 | "inflight": "^1.0.4", 1663 | "inherits": "2", 1664 | "minimatch": "^3.0.4", 1665 | "once": "^1.3.0", 1666 | "path-is-absolute": "^1.0.0" 1667 | } 1668 | }, 1669 | "glob-parent": { 1670 | "version": "5.1.2", 1671 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1672 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1673 | "dev": true, 1674 | "requires": { 1675 | "is-glob": "^4.0.1" 1676 | } 1677 | }, 1678 | "global-dirs": { 1679 | "version": "2.1.0", 1680 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", 1681 | "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", 1682 | "dev": true, 1683 | "requires": { 1684 | "ini": "1.3.7" 1685 | }, 1686 | "dependencies": { 1687 | "ini": { 1688 | "version": "1.3.7", 1689 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", 1690 | "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", 1691 | "dev": true 1692 | } 1693 | } 1694 | }, 1695 | "got": { 1696 | "version": "9.6.0", 1697 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 1698 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 1699 | "dev": true, 1700 | "requires": { 1701 | "@sindresorhus/is": "^0.14.0", 1702 | "@szmarczak/http-timer": "^1.1.2", 1703 | "cacheable-request": "^6.0.0", 1704 | "decompress-response": "^3.3.0", 1705 | "duplexer3": "^0.1.4", 1706 | "get-stream": "^4.1.0", 1707 | "lowercase-keys": "^1.0.1", 1708 | "mimic-response": "^1.0.1", 1709 | "p-cancelable": "^1.0.0", 1710 | "to-readable-stream": "^1.0.0", 1711 | "url-parse-lax": "^3.0.0" 1712 | } 1713 | }, 1714 | "graceful-fs": { 1715 | "version": "4.2.4", 1716 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1717 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 1718 | "dev": true 1719 | }, 1720 | "has": { 1721 | "version": "1.0.3", 1722 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1723 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1724 | "requires": { 1725 | "function-bind": "^1.1.1" 1726 | } 1727 | }, 1728 | "has-bigints": { 1729 | "version": "1.0.1", 1730 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 1731 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" 1732 | }, 1733 | "has-flag": { 1734 | "version": "4.0.0", 1735 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1736 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1737 | }, 1738 | "has-symbols": { 1739 | "version": "1.0.2", 1740 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 1741 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" 1742 | }, 1743 | "has-unicode": { 1744 | "version": "2.0.1", 1745 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1746 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", 1747 | "dev": true 1748 | }, 1749 | "has-yarn": { 1750 | "version": "2.1.0", 1751 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", 1752 | "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", 1753 | "dev": true 1754 | }, 1755 | "http-cache-semantics": { 1756 | "version": "4.1.0", 1757 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 1758 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", 1759 | "dev": true 1760 | }, 1761 | "http-errors": { 1762 | "version": "1.7.2", 1763 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 1764 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 1765 | "requires": { 1766 | "depd": "~1.1.2", 1767 | "inherits": "2.0.3", 1768 | "setprototypeof": "1.1.1", 1769 | "statuses": ">= 1.5.0 < 2", 1770 | "toidentifier": "1.0.0" 1771 | }, 1772 | "dependencies": { 1773 | "inherits": { 1774 | "version": "2.0.3", 1775 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1776 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1777 | } 1778 | } 1779 | }, 1780 | "http-proxy-agent": { 1781 | "version": "4.0.1", 1782 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 1783 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 1784 | "dev": true, 1785 | "optional": true, 1786 | "requires": { 1787 | "@tootallnate/once": "1", 1788 | "agent-base": "6", 1789 | "debug": "4" 1790 | } 1791 | }, 1792 | "https-proxy-agent": { 1793 | "version": "5.0.0", 1794 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1795 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1796 | "requires": { 1797 | "agent-base": "6", 1798 | "debug": "4" 1799 | } 1800 | }, 1801 | "humanize-ms": { 1802 | "version": "1.2.1", 1803 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 1804 | "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", 1805 | "dev": true, 1806 | "optional": true, 1807 | "requires": { 1808 | "ms": "^2.0.0" 1809 | } 1810 | }, 1811 | "iconv-lite": { 1812 | "version": "0.4.24", 1813 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1814 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1815 | "requires": { 1816 | "safer-buffer": ">= 2.1.2 < 3" 1817 | } 1818 | }, 1819 | "ignore-by-default": { 1820 | "version": "1.0.1", 1821 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1822 | "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", 1823 | "dev": true 1824 | }, 1825 | "import-lazy": { 1826 | "version": "2.1.0", 1827 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 1828 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 1829 | "dev": true 1830 | }, 1831 | "imurmurhash": { 1832 | "version": "0.1.4", 1833 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1834 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1835 | "dev": true 1836 | }, 1837 | "indent-string": { 1838 | "version": "4.0.0", 1839 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1840 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1841 | "dev": true, 1842 | "optional": true 1843 | }, 1844 | "infer-owner": { 1845 | "version": "1.0.4", 1846 | "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", 1847 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", 1848 | "dev": true, 1849 | "optional": true 1850 | }, 1851 | "inflight": { 1852 | "version": "1.0.6", 1853 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1854 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1855 | "requires": { 1856 | "once": "^1.3.0", 1857 | "wrappy": "1" 1858 | } 1859 | }, 1860 | "inherits": { 1861 | "version": "2.0.4", 1862 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1863 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1864 | }, 1865 | "ini": { 1866 | "version": "1.3.8", 1867 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1868 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1869 | "dev": true 1870 | }, 1871 | "ip": { 1872 | "version": "1.1.8", 1873 | "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", 1874 | "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", 1875 | "dev": true, 1876 | "optional": true 1877 | }, 1878 | "ipaddr.js": { 1879 | "version": "1.9.1", 1880 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1881 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1882 | }, 1883 | "is-absolute": { 1884 | "version": "1.0.0", 1885 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 1886 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 1887 | "dev": true, 1888 | "requires": { 1889 | "is-relative": "^1.0.0", 1890 | "is-windows": "^1.0.1" 1891 | } 1892 | }, 1893 | "is-arguments": { 1894 | "version": "1.1.0", 1895 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", 1896 | "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", 1897 | "requires": { 1898 | "call-bind": "^1.0.0" 1899 | } 1900 | }, 1901 | "is-arrayish": { 1902 | "version": "0.3.2", 1903 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", 1904 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" 1905 | }, 1906 | "is-bigint": { 1907 | "version": "1.0.2", 1908 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", 1909 | "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" 1910 | }, 1911 | "is-binary-path": { 1912 | "version": "2.1.0", 1913 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1914 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1915 | "dev": true, 1916 | "requires": { 1917 | "binary-extensions": "^2.0.0" 1918 | } 1919 | }, 1920 | "is-boolean-object": { 1921 | "version": "1.1.1", 1922 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", 1923 | "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", 1924 | "requires": { 1925 | "call-bind": "^1.0.2" 1926 | } 1927 | }, 1928 | "is-callable": { 1929 | "version": "1.2.3", 1930 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", 1931 | "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" 1932 | }, 1933 | "is-ci": { 1934 | "version": "2.0.0", 1935 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", 1936 | "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", 1937 | "dev": true, 1938 | "requires": { 1939 | "ci-info": "^2.0.0" 1940 | } 1941 | }, 1942 | "is-date-object": { 1943 | "version": "1.0.4", 1944 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", 1945 | "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" 1946 | }, 1947 | "is-extglob": { 1948 | "version": "2.1.1", 1949 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1950 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1951 | "dev": true 1952 | }, 1953 | "is-fullwidth-code-point": { 1954 | "version": "3.0.0", 1955 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1956 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1957 | "dev": true 1958 | }, 1959 | "is-glob": { 1960 | "version": "4.0.1", 1961 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1962 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1963 | "dev": true, 1964 | "requires": { 1965 | "is-extglob": "^2.1.1" 1966 | } 1967 | }, 1968 | "is-installed-globally": { 1969 | "version": "0.3.2", 1970 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", 1971 | "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", 1972 | "dev": true, 1973 | "requires": { 1974 | "global-dirs": "^2.0.1", 1975 | "is-path-inside": "^3.0.1" 1976 | } 1977 | }, 1978 | "is-lambda": { 1979 | "version": "1.0.1", 1980 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", 1981 | "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", 1982 | "dev": true, 1983 | "optional": true 1984 | }, 1985 | "is-map": { 1986 | "version": "2.0.2", 1987 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", 1988 | "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" 1989 | }, 1990 | "is-negated-glob": { 1991 | "version": "1.0.0", 1992 | "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", 1993 | "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", 1994 | "dev": true 1995 | }, 1996 | "is-negative-zero": { 1997 | "version": "2.0.1", 1998 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", 1999 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" 2000 | }, 2001 | "is-npm": { 2002 | "version": "4.0.0", 2003 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", 2004 | "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", 2005 | "dev": true 2006 | }, 2007 | "is-number": { 2008 | "version": "7.0.0", 2009 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2010 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2011 | "dev": true 2012 | }, 2013 | "is-number-object": { 2014 | "version": "1.0.5", 2015 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", 2016 | "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" 2017 | }, 2018 | "is-obj": { 2019 | "version": "2.0.0", 2020 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 2021 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", 2022 | "dev": true 2023 | }, 2024 | "is-path-inside": { 2025 | "version": "3.0.3", 2026 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 2027 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 2028 | "dev": true 2029 | }, 2030 | "is-regex": { 2031 | "version": "1.1.3", 2032 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", 2033 | "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", 2034 | "requires": { 2035 | "call-bind": "^1.0.2", 2036 | "has-symbols": "^1.0.2" 2037 | } 2038 | }, 2039 | "is-relative": { 2040 | "version": "1.0.0", 2041 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 2042 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 2043 | "dev": true, 2044 | "requires": { 2045 | "is-unc-path": "^1.0.0" 2046 | } 2047 | }, 2048 | "is-set": { 2049 | "version": "2.0.2", 2050 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", 2051 | "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" 2052 | }, 2053 | "is-stream": { 2054 | "version": "2.0.0", 2055 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", 2056 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" 2057 | }, 2058 | "is-string": { 2059 | "version": "1.0.6", 2060 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", 2061 | "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" 2062 | }, 2063 | "is-symbol": { 2064 | "version": "1.0.4", 2065 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 2066 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 2067 | "requires": { 2068 | "has-symbols": "^1.0.2" 2069 | } 2070 | }, 2071 | "is-typedarray": { 2072 | "version": "1.0.0", 2073 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2074 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 2075 | "dev": true 2076 | }, 2077 | "is-unc-path": { 2078 | "version": "1.0.0", 2079 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 2080 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 2081 | "dev": true, 2082 | "requires": { 2083 | "unc-path-regex": "^0.1.2" 2084 | } 2085 | }, 2086 | "is-windows": { 2087 | "version": "1.0.2", 2088 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2089 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2090 | "dev": true 2091 | }, 2092 | "is-yarn-global": { 2093 | "version": "0.3.0", 2094 | "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", 2095 | "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", 2096 | "dev": true 2097 | }, 2098 | "isarray": { 2099 | "version": "2.0.5", 2100 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 2101 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" 2102 | }, 2103 | "isexe": { 2104 | "version": "2.0.0", 2105 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2106 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2107 | "dev": true, 2108 | "optional": true 2109 | }, 2110 | "iterate-iterator": { 2111 | "version": "1.0.1", 2112 | "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", 2113 | "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" 2114 | }, 2115 | "iterate-value": { 2116 | "version": "1.0.2", 2117 | "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", 2118 | "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", 2119 | "requires": { 2120 | "es-get-iterator": "^1.0.2", 2121 | "iterate-iterator": "^1.0.1" 2122 | } 2123 | }, 2124 | "json-buffer": { 2125 | "version": "3.0.0", 2126 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 2127 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", 2128 | "dev": true 2129 | }, 2130 | "jsonfile": { 2131 | "version": "4.0.0", 2132 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 2133 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 2134 | "dev": true, 2135 | "requires": { 2136 | "graceful-fs": "^4.1.6" 2137 | } 2138 | }, 2139 | "jsonwebtoken": { 2140 | "version": "8.5.1", 2141 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 2142 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 2143 | "requires": { 2144 | "jws": "^3.2.2", 2145 | "lodash.includes": "^4.3.0", 2146 | "lodash.isboolean": "^3.0.3", 2147 | "lodash.isinteger": "^4.0.4", 2148 | "lodash.isnumber": "^3.0.3", 2149 | "lodash.isplainobject": "^4.0.6", 2150 | "lodash.isstring": "^4.0.1", 2151 | "lodash.once": "^4.0.0", 2152 | "ms": "^2.1.1", 2153 | "semver": "^5.6.0" 2154 | } 2155 | }, 2156 | "jwa": { 2157 | "version": "1.4.1", 2158 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 2159 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 2160 | "requires": { 2161 | "buffer-equal-constant-time": "1.0.1", 2162 | "ecdsa-sig-formatter": "1.0.11", 2163 | "safe-buffer": "^5.0.1" 2164 | } 2165 | }, 2166 | "jws": { 2167 | "version": "3.2.2", 2168 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 2169 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 2170 | "requires": { 2171 | "jwa": "^1.4.1", 2172 | "safe-buffer": "^5.0.1" 2173 | } 2174 | }, 2175 | "keyv": { 2176 | "version": "3.1.0", 2177 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 2178 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 2179 | "dev": true, 2180 | "requires": { 2181 | "json-buffer": "3.0.0" 2182 | } 2183 | }, 2184 | "kuler": { 2185 | "version": "2.0.0", 2186 | "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", 2187 | "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" 2188 | }, 2189 | "latest-version": { 2190 | "version": "5.1.0", 2191 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", 2192 | "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", 2193 | "dev": true, 2194 | "requires": { 2195 | "package-json": "^6.3.0" 2196 | } 2197 | }, 2198 | "lodash": { 2199 | "version": "4.17.21", 2200 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2201 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2202 | "dev": true 2203 | }, 2204 | "lodash.includes": { 2205 | "version": "4.3.0", 2206 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 2207 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 2208 | }, 2209 | "lodash.isboolean": { 2210 | "version": "3.0.3", 2211 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 2212 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 2213 | }, 2214 | "lodash.isinteger": { 2215 | "version": "4.0.4", 2216 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 2217 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 2218 | }, 2219 | "lodash.isnumber": { 2220 | "version": "3.0.3", 2221 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 2222 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 2223 | }, 2224 | "lodash.isplainobject": { 2225 | "version": "4.0.6", 2226 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 2227 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 2228 | }, 2229 | "lodash.isstring": { 2230 | "version": "4.0.1", 2231 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 2232 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 2233 | }, 2234 | "lodash.once": { 2235 | "version": "4.1.1", 2236 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 2237 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 2238 | }, 2239 | "logform": { 2240 | "version": "2.2.0", 2241 | "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", 2242 | "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", 2243 | "requires": { 2244 | "colors": "^1.2.1", 2245 | "fast-safe-stringify": "^2.0.4", 2246 | "fecha": "^4.2.0", 2247 | "ms": "^2.1.1", 2248 | "triple-beam": "^1.3.0" 2249 | } 2250 | }, 2251 | "lowercase-keys": { 2252 | "version": "1.0.1", 2253 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 2254 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", 2255 | "dev": true 2256 | }, 2257 | "lru-cache": { 2258 | "version": "6.0.0", 2259 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2260 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2261 | "requires": { 2262 | "yallist": "^4.0.0" 2263 | }, 2264 | "dependencies": { 2265 | "yallist": { 2266 | "version": "4.0.0", 2267 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2268 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2269 | } 2270 | } 2271 | }, 2272 | "make-dir": { 2273 | "version": "3.1.0", 2274 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 2275 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 2276 | "dev": true, 2277 | "requires": { 2278 | "semver": "^6.0.0" 2279 | }, 2280 | "dependencies": { 2281 | "semver": { 2282 | "version": "6.3.0", 2283 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2284 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2285 | "dev": true 2286 | } 2287 | } 2288 | }, 2289 | "make-fetch-happen": { 2290 | "version": "9.1.0", 2291 | "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", 2292 | "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", 2293 | "dev": true, 2294 | "optional": true, 2295 | "requires": { 2296 | "agentkeepalive": "^4.1.3", 2297 | "cacache": "^15.2.0", 2298 | "http-cache-semantics": "^4.1.0", 2299 | "http-proxy-agent": "^4.0.1", 2300 | "https-proxy-agent": "^5.0.0", 2301 | "is-lambda": "^1.0.1", 2302 | "lru-cache": "^6.0.0", 2303 | "minipass": "^3.1.3", 2304 | "minipass-collect": "^1.0.2", 2305 | "minipass-fetch": "^1.3.2", 2306 | "minipass-flush": "^1.0.5", 2307 | "minipass-pipeline": "^1.2.4", 2308 | "negotiator": "^0.6.2", 2309 | "promise-retry": "^2.0.1", 2310 | "socks-proxy-agent": "^6.0.0", 2311 | "ssri": "^8.0.0" 2312 | } 2313 | }, 2314 | "media-typer": { 2315 | "version": "0.3.0", 2316 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2317 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 2318 | }, 2319 | "merge-descriptors": { 2320 | "version": "1.0.1", 2321 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 2322 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 2323 | }, 2324 | "merge2": { 2325 | "version": "1.4.1", 2326 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2327 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2328 | "dev": true 2329 | }, 2330 | "methods": { 2331 | "version": "1.1.2", 2332 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 2333 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 2334 | }, 2335 | "micromatch": { 2336 | "version": "4.0.4", 2337 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 2338 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 2339 | "dev": true, 2340 | "requires": { 2341 | "braces": "^3.0.1", 2342 | "picomatch": "^2.2.3" 2343 | }, 2344 | "dependencies": { 2345 | "picomatch": { 2346 | "version": "2.3.0", 2347 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 2348 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 2349 | "dev": true 2350 | } 2351 | } 2352 | }, 2353 | "mime": { 2354 | "version": "1.6.0", 2355 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2356 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 2357 | }, 2358 | "mime-db": { 2359 | "version": "1.44.0", 2360 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 2361 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 2362 | }, 2363 | "mime-types": { 2364 | "version": "2.1.27", 2365 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 2366 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 2367 | "requires": { 2368 | "mime-db": "1.44.0" 2369 | } 2370 | }, 2371 | "mimic-response": { 2372 | "version": "1.0.1", 2373 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 2374 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 2375 | "dev": true 2376 | }, 2377 | "minimatch": { 2378 | "version": "3.0.4", 2379 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2380 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2381 | "requires": { 2382 | "brace-expansion": "^1.1.7" 2383 | } 2384 | }, 2385 | "minimist": { 2386 | "version": "1.2.6", 2387 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 2388 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 2389 | "dev": true 2390 | }, 2391 | "minipass": { 2392 | "version": "3.3.3", 2393 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", 2394 | "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", 2395 | "dev": true, 2396 | "requires": { 2397 | "yallist": "^4.0.0" 2398 | } 2399 | }, 2400 | "minipass-collect": { 2401 | "version": "1.0.2", 2402 | "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", 2403 | "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", 2404 | "dev": true, 2405 | "optional": true, 2406 | "requires": { 2407 | "minipass": "^3.0.0" 2408 | } 2409 | }, 2410 | "minipass-fetch": { 2411 | "version": "1.4.1", 2412 | "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", 2413 | "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", 2414 | "dev": true, 2415 | "optional": true, 2416 | "requires": { 2417 | "encoding": "^0.1.12", 2418 | "minipass": "^3.1.0", 2419 | "minipass-sized": "^1.0.3", 2420 | "minizlib": "^2.0.0" 2421 | } 2422 | }, 2423 | "minipass-flush": { 2424 | "version": "1.0.5", 2425 | "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", 2426 | "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", 2427 | "dev": true, 2428 | "optional": true, 2429 | "requires": { 2430 | "minipass": "^3.0.0" 2431 | } 2432 | }, 2433 | "minipass-pipeline": { 2434 | "version": "1.2.4", 2435 | "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", 2436 | "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", 2437 | "dev": true, 2438 | "optional": true, 2439 | "requires": { 2440 | "minipass": "^3.0.0" 2441 | } 2442 | }, 2443 | "minipass-sized": { 2444 | "version": "1.0.3", 2445 | "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", 2446 | "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", 2447 | "dev": true, 2448 | "optional": true, 2449 | "requires": { 2450 | "minipass": "^3.0.0" 2451 | } 2452 | }, 2453 | "minizlib": { 2454 | "version": "2.1.2", 2455 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 2456 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 2457 | "dev": true, 2458 | "requires": { 2459 | "minipass": "^3.0.0", 2460 | "yallist": "^4.0.0" 2461 | } 2462 | }, 2463 | "mkdirp": { 2464 | "version": "1.0.4", 2465 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 2466 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 2467 | "dev": true 2468 | }, 2469 | "moment": { 2470 | "version": "2.29.4", 2471 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", 2472 | "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" 2473 | }, 2474 | "ms": { 2475 | "version": "2.1.2", 2476 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2477 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2478 | }, 2479 | "multimatch": { 2480 | "version": "4.0.0", 2481 | "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", 2482 | "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", 2483 | "dev": true, 2484 | "requires": { 2485 | "@types/minimatch": "^3.0.3", 2486 | "array-differ": "^3.0.0", 2487 | "array-union": "^2.1.0", 2488 | "arrify": "^2.0.1", 2489 | "minimatch": "^3.0.4" 2490 | } 2491 | }, 2492 | "negotiator": { 2493 | "version": "0.6.2", 2494 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 2495 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 2496 | }, 2497 | "node-addon-api": { 2498 | "version": "4.3.0", 2499 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", 2500 | "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", 2501 | "dev": true 2502 | }, 2503 | "node-fetch": { 2504 | "version": "2.6.7", 2505 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 2506 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 2507 | "dev": true, 2508 | "requires": { 2509 | "whatwg-url": "^5.0.0" 2510 | } 2511 | }, 2512 | "node-gyp": { 2513 | "version": "8.4.1", 2514 | "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", 2515 | "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", 2516 | "dev": true, 2517 | "optional": true, 2518 | "requires": { 2519 | "env-paths": "^2.2.0", 2520 | "glob": "^7.1.4", 2521 | "graceful-fs": "^4.2.6", 2522 | "make-fetch-happen": "^9.1.0", 2523 | "nopt": "^5.0.0", 2524 | "npmlog": "^6.0.0", 2525 | "rimraf": "^3.0.2", 2526 | "semver": "^7.3.5", 2527 | "tar": "^6.1.2", 2528 | "which": "^2.0.2" 2529 | }, 2530 | "dependencies": { 2531 | "are-we-there-yet": { 2532 | "version": "3.0.0", 2533 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", 2534 | "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", 2535 | "dev": true, 2536 | "optional": true, 2537 | "requires": { 2538 | "delegates": "^1.0.0", 2539 | "readable-stream": "^3.6.0" 2540 | } 2541 | }, 2542 | "gauge": { 2543 | "version": "4.0.4", 2544 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", 2545 | "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", 2546 | "dev": true, 2547 | "optional": true, 2548 | "requires": { 2549 | "aproba": "^1.0.3 || ^2.0.0", 2550 | "color-support": "^1.1.3", 2551 | "console-control-strings": "^1.1.0", 2552 | "has-unicode": "^2.0.1", 2553 | "signal-exit": "^3.0.7", 2554 | "string-width": "^4.2.3", 2555 | "strip-ansi": "^6.0.1", 2556 | "wide-align": "^1.1.5" 2557 | } 2558 | }, 2559 | "graceful-fs": { 2560 | "version": "4.2.10", 2561 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 2562 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 2563 | "dev": true, 2564 | "optional": true 2565 | }, 2566 | "npmlog": { 2567 | "version": "6.0.2", 2568 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", 2569 | "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", 2570 | "dev": true, 2571 | "optional": true, 2572 | "requires": { 2573 | "are-we-there-yet": "^3.0.0", 2574 | "console-control-strings": "^1.1.0", 2575 | "gauge": "^4.0.3", 2576 | "set-blocking": "^2.0.0" 2577 | } 2578 | }, 2579 | "semver": { 2580 | "version": "7.3.7", 2581 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 2582 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 2583 | "dev": true, 2584 | "optional": true, 2585 | "requires": { 2586 | "lru-cache": "^6.0.0" 2587 | } 2588 | }, 2589 | "signal-exit": { 2590 | "version": "3.0.7", 2591 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2592 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2593 | "dev": true, 2594 | "optional": true 2595 | } 2596 | } 2597 | }, 2598 | "node-rsa": { 2599 | "version": "1.1.1", 2600 | "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", 2601 | "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", 2602 | "requires": { 2603 | "asn1": "^0.2.4" 2604 | } 2605 | }, 2606 | "nodemon": { 2607 | "version": "2.0.7", 2608 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", 2609 | "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", 2610 | "dev": true, 2611 | "requires": { 2612 | "chokidar": "^3.2.2", 2613 | "debug": "^3.2.6", 2614 | "ignore-by-default": "^1.0.1", 2615 | "minimatch": "^3.0.4", 2616 | "pstree.remy": "^1.1.7", 2617 | "semver": "^5.7.1", 2618 | "supports-color": "^5.5.0", 2619 | "touch": "^3.1.0", 2620 | "undefsafe": "^2.0.3", 2621 | "update-notifier": "^4.1.0" 2622 | }, 2623 | "dependencies": { 2624 | "debug": { 2625 | "version": "3.2.7", 2626 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 2627 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 2628 | "dev": true, 2629 | "requires": { 2630 | "ms": "^2.1.1" 2631 | } 2632 | }, 2633 | "has-flag": { 2634 | "version": "3.0.0", 2635 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2636 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2637 | "dev": true 2638 | }, 2639 | "supports-color": { 2640 | "version": "5.5.0", 2641 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2642 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2643 | "dev": true, 2644 | "requires": { 2645 | "has-flag": "^3.0.0" 2646 | } 2647 | } 2648 | } 2649 | }, 2650 | "nopt": { 2651 | "version": "5.0.0", 2652 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 2653 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 2654 | "dev": true, 2655 | "requires": { 2656 | "abbrev": "1" 2657 | } 2658 | }, 2659 | "normalize-path": { 2660 | "version": "3.0.0", 2661 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2662 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2663 | "dev": true 2664 | }, 2665 | "normalize-url": { 2666 | "version": "4.5.1", 2667 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", 2668 | "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", 2669 | "dev": true 2670 | }, 2671 | "npmlog": { 2672 | "version": "5.0.1", 2673 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 2674 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 2675 | "dev": true, 2676 | "requires": { 2677 | "are-we-there-yet": "^2.0.0", 2678 | "console-control-strings": "^1.1.0", 2679 | "gauge": "^3.0.0", 2680 | "set-blocking": "^2.0.0" 2681 | } 2682 | }, 2683 | "object-assign": { 2684 | "version": "4.1.1", 2685 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2686 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2687 | "dev": true 2688 | }, 2689 | "object-inspect": { 2690 | "version": "1.10.3", 2691 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", 2692 | "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" 2693 | }, 2694 | "object-keys": { 2695 | "version": "1.1.1", 2696 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2697 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 2698 | }, 2699 | "object.assign": { 2700 | "version": "4.1.2", 2701 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 2702 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 2703 | "requires": { 2704 | "call-bind": "^1.0.0", 2705 | "define-properties": "^1.1.3", 2706 | "has-symbols": "^1.0.1", 2707 | "object-keys": "^1.1.1" 2708 | } 2709 | }, 2710 | "on-finished": { 2711 | "version": "2.3.0", 2712 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2713 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2714 | "requires": { 2715 | "ee-first": "1.1.1" 2716 | } 2717 | }, 2718 | "once": { 2719 | "version": "1.4.0", 2720 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2721 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2722 | "requires": { 2723 | "wrappy": "1" 2724 | } 2725 | }, 2726 | "one-time": { 2727 | "version": "1.0.0", 2728 | "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", 2729 | "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", 2730 | "requires": { 2731 | "fn.name": "1.x.x" 2732 | } 2733 | }, 2734 | "opossum": { 2735 | "version": "6.1.0", 2736 | "resolved": "https://registry.npmjs.org/opossum/-/opossum-6.1.0.tgz", 2737 | "integrity": "sha512-vzZxPqjfJQisLhavf68PMPCTuGMBp6Ar38LjKD/uVrAF+htVMJ8FXtp/wJMBG5NZ9B+VRMDpVymvDP31FjFFDg==" 2738 | }, 2739 | "p-cancelable": { 2740 | "version": "1.1.0", 2741 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 2742 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", 2743 | "dev": true 2744 | }, 2745 | "p-map": { 2746 | "version": "4.0.0", 2747 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 2748 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 2749 | "dev": true, 2750 | "optional": true, 2751 | "requires": { 2752 | "aggregate-error": "^3.0.0" 2753 | } 2754 | }, 2755 | "package-json": { 2756 | "version": "6.5.0", 2757 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", 2758 | "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", 2759 | "dev": true, 2760 | "requires": { 2761 | "got": "^9.6.0", 2762 | "registry-auth-token": "^4.0.0", 2763 | "registry-url": "^5.0.0", 2764 | "semver": "^6.2.0" 2765 | }, 2766 | "dependencies": { 2767 | "semver": { 2768 | "version": "6.3.0", 2769 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2770 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2771 | "dev": true 2772 | } 2773 | } 2774 | }, 2775 | "parseurl": { 2776 | "version": "1.3.3", 2777 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2778 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2779 | }, 2780 | "path-is-absolute": { 2781 | "version": "1.0.1", 2782 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2783 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2784 | }, 2785 | "path-parse": { 2786 | "version": "1.0.7", 2787 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2788 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2789 | "dev": true 2790 | }, 2791 | "path-to-regexp": { 2792 | "version": "0.1.7", 2793 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2794 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 2795 | }, 2796 | "picomatch": { 2797 | "version": "2.2.2", 2798 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 2799 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 2800 | "dev": true 2801 | }, 2802 | "prepend-http": { 2803 | "version": "2.0.0", 2804 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 2805 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", 2806 | "dev": true 2807 | }, 2808 | "prettier": { 2809 | "version": "2.3.1", 2810 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", 2811 | "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", 2812 | "dev": true 2813 | }, 2814 | "process-nextick-args": { 2815 | "version": "2.0.1", 2816 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2817 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2818 | }, 2819 | "promise-inflight": { 2820 | "version": "1.0.1", 2821 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 2822 | "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", 2823 | "dev": true, 2824 | "optional": true 2825 | }, 2826 | "promise-retry": { 2827 | "version": "2.0.1", 2828 | "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", 2829 | "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", 2830 | "dev": true, 2831 | "optional": true, 2832 | "requires": { 2833 | "err-code": "^2.0.2", 2834 | "retry": "^0.12.0" 2835 | } 2836 | }, 2837 | "promise.allsettled": { 2838 | "version": "1.0.4", 2839 | "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.4.tgz", 2840 | "integrity": "sha512-o73CbvQh/OnPFShxHcHxk0baXR2a1m4ozb85ha0H14VEoi/EJJLa9mnPfEWJx9RjA9MLfhdjZ8I6HhWtBa64Ag==", 2841 | "requires": { 2842 | "array.prototype.map": "^1.0.3", 2843 | "call-bind": "^1.0.2", 2844 | "define-properties": "^1.1.3", 2845 | "es-abstract": "^1.18.0-next.2", 2846 | "get-intrinsic": "^1.0.2", 2847 | "iterate-value": "^1.0.2" 2848 | } 2849 | }, 2850 | "proxy-addr": { 2851 | "version": "2.0.6", 2852 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 2853 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 2854 | "requires": { 2855 | "forwarded": "~0.1.2", 2856 | "ipaddr.js": "1.9.1" 2857 | } 2858 | }, 2859 | "pstree.remy": { 2860 | "version": "1.1.8", 2861 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 2862 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", 2863 | "dev": true 2864 | }, 2865 | "pump": { 2866 | "version": "3.0.0", 2867 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2868 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2869 | "dev": true, 2870 | "requires": { 2871 | "end-of-stream": "^1.1.0", 2872 | "once": "^1.3.1" 2873 | } 2874 | }, 2875 | "pupa": { 2876 | "version": "2.1.1", 2877 | "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", 2878 | "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", 2879 | "dev": true, 2880 | "requires": { 2881 | "escape-goat": "^2.0.0" 2882 | } 2883 | }, 2884 | "qs": { 2885 | "version": "6.7.0", 2886 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 2887 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 2888 | }, 2889 | "queue-microtask": { 2890 | "version": "1.2.3", 2891 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2892 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2893 | "dev": true 2894 | }, 2895 | "range-parser": { 2896 | "version": "1.2.1", 2897 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2898 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2899 | }, 2900 | "raw-body": { 2901 | "version": "2.4.0", 2902 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 2903 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 2904 | "requires": { 2905 | "bytes": "3.1.0", 2906 | "http-errors": "1.7.2", 2907 | "iconv-lite": "0.4.24", 2908 | "unpipe": "1.0.0" 2909 | } 2910 | }, 2911 | "rc": { 2912 | "version": "1.2.8", 2913 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2914 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2915 | "dev": true, 2916 | "requires": { 2917 | "deep-extend": "^0.6.0", 2918 | "ini": "~1.3.0", 2919 | "minimist": "^1.2.0", 2920 | "strip-json-comments": "~2.0.1" 2921 | } 2922 | }, 2923 | "readable-stream": { 2924 | "version": "3.6.0", 2925 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2926 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2927 | "requires": { 2928 | "inherits": "^2.0.3", 2929 | "string_decoder": "^1.1.1", 2930 | "util-deprecate": "^1.0.1" 2931 | } 2932 | }, 2933 | "readdirp": { 2934 | "version": "3.5.0", 2935 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2936 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2937 | "dev": true, 2938 | "requires": { 2939 | "picomatch": "^2.2.1" 2940 | } 2941 | }, 2942 | "reflect-metadata": { 2943 | "version": "0.1.13", 2944 | "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", 2945 | "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" 2946 | }, 2947 | "registry-auth-token": { 2948 | "version": "4.2.1", 2949 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", 2950 | "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", 2951 | "dev": true, 2952 | "requires": { 2953 | "rc": "^1.2.8" 2954 | } 2955 | }, 2956 | "registry-url": { 2957 | "version": "5.1.0", 2958 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", 2959 | "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", 2960 | "dev": true, 2961 | "requires": { 2962 | "rc": "^1.2.8" 2963 | } 2964 | }, 2965 | "resolve": { 2966 | "version": "1.8.1", 2967 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", 2968 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", 2969 | "dev": true, 2970 | "requires": { 2971 | "path-parse": "^1.0.5" 2972 | } 2973 | }, 2974 | "responselike": { 2975 | "version": "1.0.2", 2976 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 2977 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", 2978 | "dev": true, 2979 | "requires": { 2980 | "lowercase-keys": "^1.0.0" 2981 | } 2982 | }, 2983 | "retry": { 2984 | "version": "0.12.0", 2985 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 2986 | "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", 2987 | "dev": true, 2988 | "optional": true 2989 | }, 2990 | "reusify": { 2991 | "version": "1.0.4", 2992 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2993 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2994 | "dev": true 2995 | }, 2996 | "rimraf": { 2997 | "version": "3.0.2", 2998 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2999 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3000 | "dev": true, 3001 | "requires": { 3002 | "glob": "^7.1.3" 3003 | } 3004 | }, 3005 | "run-parallel": { 3006 | "version": "1.2.0", 3007 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3008 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3009 | "dev": true, 3010 | "requires": { 3011 | "queue-microtask": "^1.2.2" 3012 | } 3013 | }, 3014 | "safe-buffer": { 3015 | "version": "5.2.1", 3016 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3017 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 3018 | }, 3019 | "safer-buffer": { 3020 | "version": "2.1.2", 3021 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3022 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 3023 | }, 3024 | "sax": { 3025 | "version": "1.2.4", 3026 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 3027 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 3028 | "dev": true 3029 | }, 3030 | "semver": { 3031 | "version": "5.7.1", 3032 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3033 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 3034 | }, 3035 | "semver-diff": { 3036 | "version": "3.1.1", 3037 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", 3038 | "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", 3039 | "dev": true, 3040 | "requires": { 3041 | "semver": "^6.3.0" 3042 | }, 3043 | "dependencies": { 3044 | "semver": { 3045 | "version": "6.3.0", 3046 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3047 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3048 | "dev": true 3049 | } 3050 | } 3051 | }, 3052 | "send": { 3053 | "version": "0.17.1", 3054 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 3055 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 3056 | "requires": { 3057 | "debug": "2.6.9", 3058 | "depd": "~1.1.2", 3059 | "destroy": "~1.0.4", 3060 | "encodeurl": "~1.0.2", 3061 | "escape-html": "~1.0.3", 3062 | "etag": "~1.8.1", 3063 | "fresh": "0.5.2", 3064 | "http-errors": "~1.7.2", 3065 | "mime": "1.6.0", 3066 | "ms": "2.1.1", 3067 | "on-finished": "~2.3.0", 3068 | "range-parser": "~1.2.1", 3069 | "statuses": "~1.5.0" 3070 | }, 3071 | "dependencies": { 3072 | "debug": { 3073 | "version": "2.6.9", 3074 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 3075 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 3076 | "requires": { 3077 | "ms": "2.0.0" 3078 | }, 3079 | "dependencies": { 3080 | "ms": { 3081 | "version": "2.0.0", 3082 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3083 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 3084 | } 3085 | } 3086 | }, 3087 | "ms": { 3088 | "version": "2.1.1", 3089 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 3090 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 3091 | } 3092 | } 3093 | }, 3094 | "serve-static": { 3095 | "version": "1.14.1", 3096 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 3097 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 3098 | "requires": { 3099 | "encodeurl": "~1.0.2", 3100 | "escape-html": "~1.0.3", 3101 | "parseurl": "~1.3.3", 3102 | "send": "0.17.1" 3103 | } 3104 | }, 3105 | "set-blocking": { 3106 | "version": "2.0.0", 3107 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 3108 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 3109 | "dev": true 3110 | }, 3111 | "setprototypeof": { 3112 | "version": "1.1.1", 3113 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 3114 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 3115 | }, 3116 | "signal-exit": { 3117 | "version": "3.0.3", 3118 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 3119 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 3120 | "dev": true 3121 | }, 3122 | "simple-swizzle": { 3123 | "version": "0.2.2", 3124 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", 3125 | "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", 3126 | "requires": { 3127 | "is-arrayish": "^0.3.1" 3128 | } 3129 | }, 3130 | "smart-buffer": { 3131 | "version": "4.2.0", 3132 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 3133 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 3134 | "dev": true, 3135 | "optional": true 3136 | }, 3137 | "socks": { 3138 | "version": "2.6.2", 3139 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", 3140 | "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", 3141 | "dev": true, 3142 | "optional": true, 3143 | "requires": { 3144 | "ip": "^1.1.5", 3145 | "smart-buffer": "^4.2.0" 3146 | } 3147 | }, 3148 | "socks-proxy-agent": { 3149 | "version": "6.2.1", 3150 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", 3151 | "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", 3152 | "dev": true, 3153 | "optional": true, 3154 | "requires": { 3155 | "agent-base": "^6.0.2", 3156 | "debug": "^4.3.3", 3157 | "socks": "^2.6.2" 3158 | }, 3159 | "dependencies": { 3160 | "debug": { 3161 | "version": "4.3.4", 3162 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3163 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3164 | "dev": true, 3165 | "optional": true, 3166 | "requires": { 3167 | "ms": "2.1.2" 3168 | } 3169 | } 3170 | } 3171 | }, 3172 | "sqlite3": { 3173 | "version": "5.0.3", 3174 | "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.3.tgz", 3175 | "integrity": "sha512-/cDwes7XtTOtKH5zYeJSuiavuaJ6jXxPjebw9lDFxBAwR/DvP0tnJ5MPZQ3zpnNzJBa1G6mPTpB+5O1T+AoSdQ==", 3176 | "dev": true, 3177 | "requires": { 3178 | "@mapbox/node-pre-gyp": "^1.0.0", 3179 | "node-addon-api": "^4.2.0", 3180 | "node-gyp": "8.x", 3181 | "tar": "^6.1.11" 3182 | } 3183 | }, 3184 | "ssri": { 3185 | "version": "8.0.1", 3186 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", 3187 | "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", 3188 | "dev": true, 3189 | "optional": true, 3190 | "requires": { 3191 | "minipass": "^3.1.1" 3192 | } 3193 | }, 3194 | "stack-trace": { 3195 | "version": "0.0.10", 3196 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 3197 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" 3198 | }, 3199 | "statuses": { 3200 | "version": "1.5.0", 3201 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3202 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 3203 | }, 3204 | "string-width": { 3205 | "version": "4.2.3", 3206 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3207 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3208 | "dev": true, 3209 | "requires": { 3210 | "emoji-regex": "^8.0.0", 3211 | "is-fullwidth-code-point": "^3.0.0", 3212 | "strip-ansi": "^6.0.1" 3213 | }, 3214 | "dependencies": { 3215 | "emoji-regex": { 3216 | "version": "8.0.0", 3217 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3218 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3219 | "dev": true 3220 | } 3221 | } 3222 | }, 3223 | "string.prototype.trimend": { 3224 | "version": "1.0.4", 3225 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 3226 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 3227 | "requires": { 3228 | "call-bind": "^1.0.2", 3229 | "define-properties": "^1.1.3" 3230 | } 3231 | }, 3232 | "string.prototype.trimstart": { 3233 | "version": "1.0.4", 3234 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 3235 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 3236 | "requires": { 3237 | "call-bind": "^1.0.2", 3238 | "define-properties": "^1.1.3" 3239 | } 3240 | }, 3241 | "string_decoder": { 3242 | "version": "1.3.0", 3243 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 3244 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 3245 | "requires": { 3246 | "safe-buffer": "~5.2.0" 3247 | } 3248 | }, 3249 | "strip-ansi": { 3250 | "version": "6.0.1", 3251 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3252 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3253 | "dev": true, 3254 | "requires": { 3255 | "ansi-regex": "^5.0.1" 3256 | } 3257 | }, 3258 | "strip-json-comments": { 3259 | "version": "2.0.1", 3260 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3261 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 3262 | "dev": true 3263 | }, 3264 | "supports-color": { 3265 | "version": "7.2.0", 3266 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3267 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3268 | "requires": { 3269 | "has-flag": "^4.0.0" 3270 | } 3271 | }, 3272 | "tar": { 3273 | "version": "6.1.11", 3274 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", 3275 | "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", 3276 | "dev": true, 3277 | "requires": { 3278 | "chownr": "^2.0.0", 3279 | "fs-minipass": "^2.0.0", 3280 | "minipass": "^3.0.0", 3281 | "minizlib": "^2.1.1", 3282 | "mkdirp": "^1.0.3", 3283 | "yallist": "^4.0.0" 3284 | } 3285 | }, 3286 | "term-size": { 3287 | "version": "2.2.1", 3288 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", 3289 | "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", 3290 | "dev": true 3291 | }, 3292 | "text-hex": { 3293 | "version": "1.0.0", 3294 | "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", 3295 | "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" 3296 | }, 3297 | "to-readable-stream": { 3298 | "version": "1.0.0", 3299 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 3300 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", 3301 | "dev": true 3302 | }, 3303 | "to-regex-range": { 3304 | "version": "5.0.1", 3305 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3306 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3307 | "dev": true, 3308 | "requires": { 3309 | "is-number": "^7.0.0" 3310 | } 3311 | }, 3312 | "toidentifier": { 3313 | "version": "1.0.0", 3314 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 3315 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 3316 | }, 3317 | "touch": { 3318 | "version": "3.1.0", 3319 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 3320 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 3321 | "dev": true, 3322 | "requires": { 3323 | "nopt": "~1.0.10" 3324 | }, 3325 | "dependencies": { 3326 | "nopt": { 3327 | "version": "1.0.10", 3328 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 3329 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", 3330 | "dev": true, 3331 | "requires": { 3332 | "abbrev": "1" 3333 | } 3334 | } 3335 | } 3336 | }, 3337 | "tr46": { 3338 | "version": "0.0.3", 3339 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 3340 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 3341 | "dev": true 3342 | }, 3343 | "triple-beam": { 3344 | "version": "1.3.0", 3345 | "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", 3346 | "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" 3347 | }, 3348 | "ts-morph": { 3349 | "version": "7.3.0", 3350 | "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-7.3.0.tgz", 3351 | "integrity": "sha512-BUKSoz7AFSKPcYTZODbICW2mOthAN4vc5juD6FL1lD/dLwZ0WvrC3zqBM3/X6f5gHxq3yaz+HmanHGaWm0ddbQ==", 3352 | "dev": true, 3353 | "requires": { 3354 | "@dsherret/to-absolute-glob": "^2.0.2", 3355 | "@ts-morph/common": "~0.5.2", 3356 | "code-block-writer": "^10.1.0" 3357 | } 3358 | }, 3359 | "type-fest": { 3360 | "version": "0.8.1", 3361 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 3362 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 3363 | "dev": true 3364 | }, 3365 | "type-is": { 3366 | "version": "1.6.18", 3367 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3368 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3369 | "requires": { 3370 | "media-typer": "0.3.0", 3371 | "mime-types": "~2.1.24" 3372 | } 3373 | }, 3374 | "typedarray-to-buffer": { 3375 | "version": "3.1.5", 3376 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 3377 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 3378 | "dev": true, 3379 | "requires": { 3380 | "is-typedarray": "^1.0.0" 3381 | } 3382 | }, 3383 | "typescript": { 3384 | "version": "4.3.4", 3385 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.4.tgz", 3386 | "integrity": "sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==", 3387 | "dev": true 3388 | }, 3389 | "unbox-primitive": { 3390 | "version": "1.0.1", 3391 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 3392 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 3393 | "requires": { 3394 | "function-bind": "^1.1.1", 3395 | "has-bigints": "^1.0.1", 3396 | "has-symbols": "^1.0.2", 3397 | "which-boxed-primitive": "^1.0.2" 3398 | } 3399 | }, 3400 | "unc-path-regex": { 3401 | "version": "0.1.2", 3402 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 3403 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 3404 | "dev": true 3405 | }, 3406 | "undefsafe": { 3407 | "version": "2.0.3", 3408 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", 3409 | "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", 3410 | "dev": true, 3411 | "requires": { 3412 | "debug": "^2.2.0" 3413 | }, 3414 | "dependencies": { 3415 | "debug": { 3416 | "version": "2.6.9", 3417 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 3418 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 3419 | "dev": true, 3420 | "requires": { 3421 | "ms": "2.0.0" 3422 | } 3423 | }, 3424 | "ms": { 3425 | "version": "2.0.0", 3426 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3427 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3428 | "dev": true 3429 | } 3430 | } 3431 | }, 3432 | "unique-filename": { 3433 | "version": "1.1.1", 3434 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", 3435 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", 3436 | "dev": true, 3437 | "optional": true, 3438 | "requires": { 3439 | "unique-slug": "^2.0.0" 3440 | } 3441 | }, 3442 | "unique-slug": { 3443 | "version": "2.0.2", 3444 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", 3445 | "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", 3446 | "dev": true, 3447 | "optional": true, 3448 | "requires": { 3449 | "imurmurhash": "^0.1.4" 3450 | } 3451 | }, 3452 | "unique-string": { 3453 | "version": "2.0.0", 3454 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", 3455 | "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", 3456 | "dev": true, 3457 | "requires": { 3458 | "crypto-random-string": "^2.0.0" 3459 | } 3460 | }, 3461 | "universalify": { 3462 | "version": "0.1.2", 3463 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3464 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 3465 | "dev": true 3466 | }, 3467 | "unpipe": { 3468 | "version": "1.0.0", 3469 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3470 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 3471 | }, 3472 | "update-notifier": { 3473 | "version": "4.1.3", 3474 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", 3475 | "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", 3476 | "dev": true, 3477 | "requires": { 3478 | "boxen": "^4.2.0", 3479 | "chalk": "^3.0.0", 3480 | "configstore": "^5.0.1", 3481 | "has-yarn": "^2.1.0", 3482 | "import-lazy": "^2.1.0", 3483 | "is-ci": "^2.0.0", 3484 | "is-installed-globally": "^0.3.1", 3485 | "is-npm": "^4.0.0", 3486 | "is-yarn-global": "^0.3.0", 3487 | "latest-version": "^5.0.0", 3488 | "pupa": "^2.0.1", 3489 | "semver-diff": "^3.1.1", 3490 | "xdg-basedir": "^4.0.0" 3491 | }, 3492 | "dependencies": { 3493 | "chalk": { 3494 | "version": "3.0.0", 3495 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 3496 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 3497 | "dev": true, 3498 | "requires": { 3499 | "ansi-styles": "^4.1.0", 3500 | "supports-color": "^7.1.0" 3501 | } 3502 | } 3503 | } 3504 | }, 3505 | "url-parse-lax": { 3506 | "version": "3.0.0", 3507 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 3508 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", 3509 | "dev": true, 3510 | "requires": { 3511 | "prepend-http": "^2.0.0" 3512 | } 3513 | }, 3514 | "util-deprecate": { 3515 | "version": "1.0.2", 3516 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3517 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 3518 | }, 3519 | "utils-merge": { 3520 | "version": "1.0.1", 3521 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3522 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 3523 | }, 3524 | "uuid": { 3525 | "version": "8.3.2", 3526 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 3527 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 3528 | }, 3529 | "valid-url": { 3530 | "version": "1.0.9", 3531 | "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", 3532 | "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" 3533 | }, 3534 | "vary": { 3535 | "version": "1.1.2", 3536 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3537 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 3538 | }, 3539 | "voca": { 3540 | "version": "1.4.0", 3541 | "resolved": "https://registry.npmjs.org/voca/-/voca-1.4.0.tgz", 3542 | "integrity": "sha512-8Xz4H3vhYRGbFupLtl6dHwMx0ojUcjt0HYkqZ9oBCfipd/5mD7Md58m2/dq7uPuZU/0T3Gb1m66KS9jn+I+14Q==" 3543 | }, 3544 | "webidl-conversions": { 3545 | "version": "3.0.1", 3546 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 3547 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 3548 | "dev": true 3549 | }, 3550 | "whatwg-url": { 3551 | "version": "5.0.0", 3552 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 3553 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 3554 | "dev": true, 3555 | "requires": { 3556 | "tr46": "~0.0.3", 3557 | "webidl-conversions": "^3.0.0" 3558 | } 3559 | }, 3560 | "which": { 3561 | "version": "2.0.2", 3562 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3563 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3564 | "dev": true, 3565 | "optional": true, 3566 | "requires": { 3567 | "isexe": "^2.0.0" 3568 | } 3569 | }, 3570 | "which-boxed-primitive": { 3571 | "version": "1.0.2", 3572 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 3573 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 3574 | "requires": { 3575 | "is-bigint": "^1.0.1", 3576 | "is-boolean-object": "^1.1.0", 3577 | "is-number-object": "^1.0.4", 3578 | "is-string": "^1.0.5", 3579 | "is-symbol": "^1.0.3" 3580 | } 3581 | }, 3582 | "wide-align": { 3583 | "version": "1.1.5", 3584 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 3585 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 3586 | "dev": true, 3587 | "requires": { 3588 | "string-width": "^1.0.2 || 2 || 3 || 4" 3589 | } 3590 | }, 3591 | "widest-line": { 3592 | "version": "3.1.0", 3593 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 3594 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 3595 | "dev": true, 3596 | "requires": { 3597 | "string-width": "^4.0.0" 3598 | }, 3599 | "dependencies": { 3600 | "ansi-regex": { 3601 | "version": "5.0.0", 3602 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 3603 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 3604 | "dev": true 3605 | }, 3606 | "emoji-regex": { 3607 | "version": "8.0.0", 3608 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3609 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3610 | "dev": true 3611 | }, 3612 | "is-fullwidth-code-point": { 3613 | "version": "3.0.0", 3614 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3615 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3616 | "dev": true 3617 | }, 3618 | "string-width": { 3619 | "version": "4.2.2", 3620 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 3621 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 3622 | "dev": true, 3623 | "requires": { 3624 | "emoji-regex": "^8.0.0", 3625 | "is-fullwidth-code-point": "^3.0.0", 3626 | "strip-ansi": "^6.0.0" 3627 | } 3628 | }, 3629 | "strip-ansi": { 3630 | "version": "6.0.0", 3631 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3632 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3633 | "dev": true, 3634 | "requires": { 3635 | "ansi-regex": "^5.0.0" 3636 | } 3637 | } 3638 | } 3639 | }, 3640 | "winston": { 3641 | "version": "3.3.3", 3642 | "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", 3643 | "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", 3644 | "requires": { 3645 | "@dabh/diagnostics": "^2.0.2", 3646 | "async": "^3.1.0", 3647 | "is-stream": "^2.0.0", 3648 | "logform": "^2.2.0", 3649 | "one-time": "^1.0.0", 3650 | "readable-stream": "^3.4.0", 3651 | "stack-trace": "0.0.x", 3652 | "triple-beam": "^1.3.0", 3653 | "winston-transport": "^4.4.0" 3654 | } 3655 | }, 3656 | "winston-transport": { 3657 | "version": "4.4.0", 3658 | "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", 3659 | "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", 3660 | "requires": { 3661 | "readable-stream": "^2.3.7", 3662 | "triple-beam": "^1.2.0" 3663 | }, 3664 | "dependencies": { 3665 | "isarray": { 3666 | "version": "1.0.0", 3667 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3668 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 3669 | }, 3670 | "readable-stream": { 3671 | "version": "2.3.7", 3672 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 3673 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 3674 | "requires": { 3675 | "core-util-is": "~1.0.0", 3676 | "inherits": "~2.0.3", 3677 | "isarray": "~1.0.0", 3678 | "process-nextick-args": "~2.0.0", 3679 | "safe-buffer": "~5.1.1", 3680 | "string_decoder": "~1.1.1", 3681 | "util-deprecate": "~1.0.1" 3682 | } 3683 | }, 3684 | "safe-buffer": { 3685 | "version": "5.1.2", 3686 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3687 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 3688 | }, 3689 | "string_decoder": { 3690 | "version": "1.1.1", 3691 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3692 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3693 | "requires": { 3694 | "safe-buffer": "~5.1.0" 3695 | } 3696 | } 3697 | } 3698 | }, 3699 | "wrappy": { 3700 | "version": "1.0.2", 3701 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3702 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3703 | }, 3704 | "write-file-atomic": { 3705 | "version": "3.0.3", 3706 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 3707 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 3708 | "dev": true, 3709 | "requires": { 3710 | "imurmurhash": "^0.1.4", 3711 | "is-typedarray": "^1.0.0", 3712 | "signal-exit": "^3.0.2", 3713 | "typedarray-to-buffer": "^3.1.5" 3714 | } 3715 | }, 3716 | "xdg-basedir": { 3717 | "version": "4.0.0", 3718 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 3719 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", 3720 | "dev": true 3721 | }, 3722 | "yallist": { 3723 | "version": "4.0.0", 3724 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3725 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3726 | "dev": true 3727 | } 3728 | } 3729 | } 3730 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cap-bookshop-typescript", 3 | "version": "1.0.0", 4 | "description": "A simple self-contained bookshop service.", 5 | "dependencies": { 6 | "@sap/cds": "^5.1.5", 7 | "cds-routing-handlers": "^3.0.5", 8 | "express": "^4.17.1", 9 | "reflect-metadata": "^0.1.13" 10 | }, 11 | "devDependencies": { 12 | "@types/express": "^4.17.12", 13 | "cds2types": "^2.6.1", 14 | "nodemon": "^2.0.7", 15 | "prettier": "^2.3.1", 16 | "sqlite3": "^5.0.3", 17 | "typescript": "^4.3.4" 18 | }, 19 | "scripts": { 20 | "start": "node ./srv/server.js", 21 | "dev": "npm run build:cds && nodemon", 22 | "deploy": "cds deploy --to sqlite:bookshop.db", 23 | "build": "npm run build:cds && npm run build:ts", 24 | "build:cds": "echo 'Compiling cds sources...' && cds2types --cds ./srv/cat-service.cds --output ./src/entities.ts --prefix I -f && cds build && cp .cdsrc.json gen/srv", 25 | "build:ts": "echo 'Compiling *.ts sources...' && tsc" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # cap-bookshop-typescript 2 | 3 | This is a sample implementation of the [SAP Application Programming Model (CAP)](https://cap.cloud.sap/) Node.js Runtime using TypeScript. 4 | The implementation is based on the Bookshop example of [SAP samples](https://github.com/SAP-samples/cloud-cap-samples). 5 | 6 | ## Usefull packages 7 | 8 | The following two tools were used in this example: 9 | 10 | ### [cds2types](https://www.npmjs.com/package/cds2types) 11 | 12 | Module to convert CDS definitions to native TypeScript types. 13 | It creates interfaces and enums from the CDS definitions for all entities. These interfaces can be used in TypeScript to implement a complete and consistent typing. 14 | 15 | ### [cds-routing-handlers](https://www.npmjs.com/package/cds-routing-handlers) 16 | 17 | Module to route and implement CDS handlers via a class based system in Typescript. 18 | 19 | ## How it works 20 | 21 | A standard CAP project has the following project structure: 22 | 23 | ``` 24 | CAP-Project 25 | ├── db 26 | │ ├── schema.cds (Domain models) 27 | ├── srv 28 | │ ├── service.cds (Service models) 29 | │ ├── service.js 30 | ├── package.json 31 | ``` 32 | 33 | This structure can be extended in a TypeScript based project with a `src` folder. This folder contains the implementations of the handlers and any other code in TypeScript. 34 | 35 | The build of a project now consists of the following steps: 36 | 37 | 1. First, `cds build` builds the contents of `srv` and writes it to the output folder (`/gen/srv/srv` by default). 38 | 2. Second, the TypeScript code from `src` is compiled into the output folder of CAP (`./gen/srv/srv` by default). 39 | See config `compilerOptions.outDir` of `tsconfig.json` 40 | 41 | Since the implementation of the handlers is in the `src` folder as TypeScript code, CAP compiles only the \*.cds files of the `srv` folder and copies them to the output folder. 42 | Then, the TypeScript code must be compiled directly into CAP's output folder. 43 | 44 | > 📣 The two build steps can also be switched, the TypeScript compiler can compile into the `srv` folder and CAP copies the files into the output folder. However, this approach was not used since the TypeScript compiler can also compile directly into the output folder, which save a step in cds build. 45 | 46 | ### Content & Project structure 47 | 48 | ``` 49 | CAP-Project-TypeScript 50 | ├── db 51 | │ ├── schema.cds (Domain models) 52 | ├── src 53 | │ ├── service.ts 54 | │ ├── someOtherCode.ts 55 | ├── srv 56 | │ ├── service.cds (Service models) 57 | ├── package.json 58 | ├── tsconfig.json 59 | ``` 60 | 61 | The following is an explanation of the project structure 62 | 63 | | Folder | Description | 64 | | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | 65 | | `/db` | Domain models and database-related content | 66 | | `/src` | Your code written in TypeScript. All your service implementations and handlers go in here and will be compiled to JavaScript when building your project. | 67 | | `/srv` | This folder contains only the cds files of the service so that CAP can find them during build. **DO NOT MODIFY THE CODE IN HERE.** | 68 | 69 | ## Running the Sample 70 | 71 | Install all dependencies: 72 | 73 | ``` 74 | npm install 75 | ``` 76 | 77 | ### Local Development 78 | 79 | For local development, **[nodemon](https://nodemon.io/)** is used, which restarts the node service when changes are made to the TypeScript sources. Here the sources are recompiled and the service is restarted. 80 | 81 | ``` 82 | npm run dev 83 | ``` 84 | 85 | If the sources are only to be built without starting the node service, this can be done by using the build script: 86 | 87 | ``` 88 | npm run build 89 | ``` 90 | 91 | The following script can be used to deploy to the local SQLite database: 92 | 93 | ``` 94 | npm run deploy 95 | ``` 96 | 97 | ## MTA Definition 98 | 99 | In `mta.yaml` you can find an example how to configure it for the TypeScript project. 100 | -------------------------------------------------------------------------------- /src/entities.ts: -------------------------------------------------------------------------------- 1 | export namespace cap.bookshop.typescript { 2 | export interface IAuthor extends IManaged { 3 | ID: number; 4 | name: string; 5 | dateOfBirth: Date; 6 | dateOfDeath: Date; 7 | placeOfBirth: string; 8 | placeOfDeath: string; 9 | books?: IBook[]; 10 | } 11 | 12 | export interface IBook extends IManaged { 13 | ID: number; 14 | title: string; 15 | descr: string; 16 | author?: IAuthor; 17 | author_ID?: number; 18 | genre?: IGenre; 19 | genre_ID?: number; 20 | stock: number; 21 | price: number; 22 | currency: sap.common.ICurrencies; 23 | currency_code?: string; 24 | } 25 | 26 | export interface IGenre extends sap.common.ICodeList { 27 | ID: number; 28 | parent?: IGenre; 29 | parent_ID?: number; 30 | children: IGenre[]; 31 | } 32 | 33 | export enum Entity { 34 | Author = "cap.bookshop.typescript.Author", 35 | Book = "cap.bookshop.typescript.Book", 36 | Genre = "cap.bookshop.typescript.Genre", 37 | } 38 | 39 | export enum SanitizedEntity { 40 | Author = "Author", 41 | Book = "Book", 42 | Genre = "Genre", 43 | } 44 | } 45 | 46 | export namespace sap.common { 47 | export interface ICodeList { 48 | name: string; 49 | descr: string; 50 | } 51 | 52 | export interface ICountries extends sap.common.ICodeList { 53 | code: string; 54 | } 55 | 56 | export interface ICurrencies extends sap.common.ICodeList { 57 | code: string; 58 | symbol: string; 59 | } 60 | 61 | export interface ILanguages extends sap.common.ICodeList { 62 | code: string; 63 | } 64 | 65 | export enum Entity { 66 | CodeList = "sap.common.CodeList", 67 | Countries = "sap.common.Countries", 68 | Currencies = "sap.common.Currencies", 69 | Languages = "sap.common.Languages", 70 | } 71 | 72 | export enum SanitizedEntity { 73 | CodeList = "CodeList", 74 | Countries = "Countries", 75 | Currencies = "Currencies", 76 | Languages = "Languages", 77 | } 78 | } 79 | 80 | export namespace CatalogService { 81 | export interface IBook { 82 | createdAt?: Date; 83 | modifiedAt?: Date; 84 | ID: number; 85 | title: string; 86 | descr: string; 87 | author: string; 88 | genre?: IGenre; 89 | genre_ID?: number; 90 | stock: number; 91 | price: number; 92 | currency: ICurrencies; 93 | currency_code?: string; 94 | } 95 | 96 | export interface ICurrencies { 97 | name: string; 98 | descr: string; 99 | code: string; 100 | symbol: string; 101 | } 102 | 103 | export interface IGenre { 104 | name: string; 105 | descr: string; 106 | ID: number; 107 | parent?: IGenre; 108 | parent_ID?: number; 109 | children: IGenre[]; 110 | } 111 | 112 | export enum ActionSubmitOrder { 113 | name = "submitOrder", 114 | paramBook = "book", 115 | paramAmount = "amount", 116 | } 117 | 118 | export interface IActionSubmitOrderParams { 119 | book: number; 120 | amount: number; 121 | } 122 | 123 | export enum Entity { 124 | Book = "CatalogService.Book", 125 | Currencies = "CatalogService.Currencies", 126 | Genre = "CatalogService.Genre", 127 | } 128 | 129 | export enum SanitizedEntity { 130 | Book = "Book", 131 | Currencies = "Currencies", 132 | Genre = "Genre", 133 | } 134 | } 135 | 136 | export type User = string; 137 | 138 | export interface ICuid { 139 | ID: string; 140 | } 141 | 142 | export interface IManaged { 143 | createdAt?: Date; 144 | createdBy?: string; 145 | modifiedAt?: Date; 146 | modifiedBy?: string; 147 | } 148 | 149 | export interface ITemporal { 150 | validFrom: Date; 151 | validTo: Date; 152 | } 153 | 154 | export enum Entity { 155 | Cuid = "cuid", 156 | Managed = "managed", 157 | Temporal = "temporal", 158 | } 159 | 160 | export enum SanitizedEntity { 161 | Cuid = "Cuid", 162 | Managed = "Managed", 163 | Temporal = "Temporal", 164 | } 165 | -------------------------------------------------------------------------------- /src/entities/BookHandler.ts: -------------------------------------------------------------------------------- 1 | import { Handler, Req, AfterRead, Entities, BeforeRead } from "cds-routing-handlers"; 2 | import { CatalogService } from "../entities"; 3 | 4 | /** 5 | * Book handler. 6 | * 7 | * @export 8 | * @class BookHandler 9 | */ 10 | @Handler(CatalogService.SanitizedEntity.Book) 11 | export class BookHandler { 12 | // You can also decorate multiple methods with the same docorator (@BeforRead in this example) 13 | // This way you can structure the code which should be executed on the beforRead hook and break it down into smaller pieces 14 | @BeforeRead() 15 | public async checkAuth() {} 16 | @BeforeRead() 17 | public async doSomeOtherThings() {} 18 | 19 | // The @Entities decorator imports the read entities 20 | // The @Req decorator imports the current request object 21 | // And there are lots of more decorators (@Jwt, @Data, @User, @Locale, @Param ...) 22 | @AfterRead() 23 | public async addDiscount(@Entities() book: CatalogService.IBook[], @Req() req: any): Promise { 24 | console.log("Read Books"); 25 | 26 | const addDiscount = (book) => { 27 | if (book.stock > 111) book.title += ` -- 11% discount!`; 28 | return book 29 | } 30 | 31 | const isIterable = (obj) => { 32 | // checks for null and undefined 33 | if (obj == null) { 34 | return false; 35 | } 36 | return typeof obj[Symbol.iterator] === 'function'; 37 | } 38 | 39 | if (isIterable(book)) { 40 | for (const each of book) { 41 | addDiscount(each); 42 | } 43 | } else { 44 | addDiscount(book); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/functions/FunctionHandler.ts: -------------------------------------------------------------------------------- 1 | import cds from "@sap/cds"; 2 | import { Handler, Req, Param, Action } from "cds-routing-handlers"; 3 | import { CatalogService } from "../entities"; 4 | 5 | /** 6 | * Function handler. 7 | * 8 | * @export 9 | * @class FunctionHandler 10 | */ 11 | @Handler() 12 | export class FunctionHandler { 13 | // The @Param decorator imports a url-parameter defined in your function definition 14 | // The @Req decorator import the current request object 15 | @Action(CatalogService.ActionSubmitOrder.name) 16 | public async submitOrder( 17 | @Param(CatalogService.ActionSubmitOrder.paramBook) bookId: CatalogService.IBook["ID"], 18 | @Param(CatalogService.ActionSubmitOrder.paramAmount) amount: number, 19 | @Req() req: any 20 | ): Promise { 21 | console.log(`Action ${CatalogService.ActionSubmitOrder.name} called`); 22 | const n = await cds 23 | .update(CatalogService.SanitizedEntity.Book) 24 | .with({ stock: { "-=": amount } }) 25 | .where({ ID: bookId, stock: { ">=": amount } }); 26 | n > 0 || req.error(409, `${amount} exceeds stock for book #${bookId}`); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/server.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import express from "express"; 3 | import { createCombinedHandler } from "cds-routing-handlers"; 4 | import cds from "@sap/cds"; 5 | 6 | export class Server { 7 | public static async run() { 8 | const app = express(); 9 | 10 | const hdl = createCombinedHandler({ 11 | handler: [__dirname + "/entities/**/*.js", __dirname + "/functions/**/*.js"], 12 | }); 13 | 14 | await cds.connect("db"); 15 | await cds 16 | .serve("all") 17 | .at("odata") 18 | .in(app) 19 | .with(srv => hdl(srv)); 20 | 21 | // Redirect requests to the OData Service 22 | app.get('/', function(req, res) { 23 | res.redirect('/odata/') 24 | }) 25 | 26 | // Run the server. 27 | const port = process.env.PORT || 3001; 28 | app.listen(port, async () => { 29 | console.info(`Server is listing at http://localhost:${port}`); 30 | }); 31 | } 32 | } 33 | 34 | Server.run(); -------------------------------------------------------------------------------- /srv/cat-service.cds: -------------------------------------------------------------------------------- 1 | using {cap.bookshop.typescript as my} from '../db/schema'; 2 | 3 | service CatalogService { 4 | 5 | @readonly 6 | entity Book as projection on my.Book { 7 | * , author.name as author 8 | } excluding { 9 | createdBy, 10 | modifiedBy 11 | }; 12 | 13 | @requires_ : 'authenticated-user' 14 | action submitOrder(book : Book:ID, amount : Integer); 15 | } 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["ES2019"], 4 | "module": "commonjs", 5 | "target": "ES2019", 6 | "esModuleInterop": true, 7 | "inlineSourceMap": true, 8 | "inlineSources": true, 9 | "outDir": "./gen/srv/srv", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "preserveConstEnums": true, 13 | "skipLibCheck": true 14 | }, 15 | "include": ["src"], 16 | "exclude": ["node_modules"] 17 | } 18 | -------------------------------------------------------------------------------- /xs-security.json: -------------------------------------------------------------------------------- 1 | { 2 | "xsappname": "cap.bookshop.typescript", 3 | "tenant-mode": "dedicated", 4 | "description": "Security profile of called application", 5 | "scopes": [ 6 | { 7 | "name": "uaa.user", 8 | "description": "UAA" 9 | } 10 | ], 11 | "role-templates": [ 12 | { 13 | "name": "Token_Exchange", 14 | "description": "UAA", 15 | "scope-references": ["uaa.user"] 16 | } 17 | ] 18 | } 19 | --------------------------------------------------------------------------------