diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f93290..bee7b29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/). ### Added ### Changed +- Removed special characters from placeholders for fields like short text, description, etc. ### Deprecated ### Removed ### Fixed diff --git a/lib/compile/csdl2openapi.js b/lib/compile/csdl2openapi.js index 7ed02a7..5cb53c0 100644 --- a/lib/compile/csdl2openapi.js +++ b/lib/compile/csdl2openapi.js @@ -120,8 +120,8 @@ module.exports.csdl2openapi = function ( Object.keys(entityContainer).forEach(element => { if (entityContainer[element].$Type) { const fullTypeName = entityContainer[element].$Type; - const type = fullTypeName.startsWith(serviceName + '.') - ? fullTypeName.substring(serviceName.length + 1) + const type = fullTypeName.startsWith(serviceName + '.') + ? fullTypeName.substring(serviceName.length + 1) : nameParts(fullTypeName).name; if ((csdl[serviceName]?.[type]?.['@cds.autoexpose'] || csdl[serviceName]?.[type]?.['@cds.autoexposed']) && (!entityContainer[type] || type.endsWith('_texts'))) { @@ -288,7 +288,7 @@ module.exports.csdl2openapi = function ( description = containerSchema[meta.voc.Core.Description]; } else { - description = "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description."; + description = "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description."; } description += (diagram ? new Diagram(meta).getResourceDiagram(entityContainer) : ''); let title; @@ -296,7 +296,7 @@ module.exports.csdl2openapi = function ( title = entityContainer[meta.voc.Common.Label]; } else { - title = "Use @title: '...' on your CDS service to provide a meaningful title."; + title = "Use the title annotation on your CDS service to provide a meaningful title."; } return { title, @@ -338,7 +338,7 @@ module.exports.csdl2openapi = function ( shortText = containerSchema[meta.voc.Core.Description]; } else { - shortText = "Use @Core.Description: '...' on your CDS service to provide a meaningful short text."; + shortText = "Use the Core.Description annotation on your CDS service to provide a meaningful short text."; } return shortText; } diff --git a/package-lock.json b/package-lock.json index 9766b78..b05a943 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,6 +51,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -65,6 +66,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -530,6 +532,7 @@ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.1.tgz", "integrity": "sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==", "dev": true, + "peer": true, "dependencies": { "debug": "^4.4.0", "extract-zip": "^2.0.1", @@ -679,6 +682,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-6.6.0.tgz", "integrity": "sha512-cttVQhuzobLsnaGjmCz6gOXdUdHRawTbUK8UsUPnOIOboAOJRvLbrX4RF/iY6VxewpupDcx+FhfDCbAupO3EwQ==", + "peer": true, "bin": { "cdsc": "bin/cdsc.js", "cdshi": "bin/cdshi.js", @@ -692,6 +696,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-2.1.1.tgz", "integrity": "sha512-X+4v4LBAT8HIt0zr28/kJNS15nlNlcM97vAMW+agLrmK134nyBiMwUMcp8BMhxlG9B2PykrnAKH56D9O3tfoBg==", + "peer": true, "peerDependencies": { "@sap/cds": ">=8", "express": "^4" @@ -737,7 +742,8 @@ "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@types/d3": { "version": "7.4.3", @@ -1033,6 +1039,7 @@ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -1086,6 +1093,7 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -1099,7 +1107,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1121,6 +1128,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, + "peer": true, "engines": { "node": ">= 14" } @@ -1146,6 +1154,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -1207,13 +1216,15 @@ "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "peer": true }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, + "peer": true, "dependencies": { "tslib": "^2.0.1" }, @@ -1235,6 +1246,7 @@ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", "dev": true, + "peer": true, "peerDependencies": { "react-native-b4a": "*" }, @@ -1255,6 +1267,7 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "dev": true, + "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, @@ -1270,6 +1283,7 @@ "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", @@ -1295,6 +1309,7 @@ "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", "dev": true, "optional": true, + "peer": true, "engines": { "bare": ">=1.14.0" } @@ -1305,6 +1320,7 @@ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "bare-os": "^3.0.1" } @@ -1315,6 +1331,7 @@ "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", "dev": true, "optional": true, + "peer": true, "dependencies": { "streamx": "^2.21.0" }, @@ -1337,6 +1354,7 @@ "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -1366,6 +1384,7 @@ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, + "peer": true, "engines": { "node": ">=10.0.0" } @@ -1386,6 +1405,7 @@ "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "peer": true, "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", @@ -1409,6 +1429,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -1416,7 +1437,8 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "peer": true }, "node_modules/brace-expansion": { "version": "1.1.12", @@ -1469,6 +1491,7 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "peer": true, "engines": { "node": "*" } @@ -1477,6 +1500,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -1485,6 +1509,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "peer": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -1497,6 +1522,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -1543,7 +1569,6 @@ "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", "dev": true, - "peer": true, "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", @@ -1606,6 +1631,7 @@ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", "dev": true, + "peer": true, "dependencies": { "mitt": "3.0.1", "zod": "3.23.8" @@ -1631,6 +1657,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -1713,6 +1740,7 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "peer": true, "dependencies": { "safe-buffer": "5.2.1" }, @@ -1724,6 +1752,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -1732,6 +1761,7 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -1739,7 +1769,8 @@ "node_modules/cookie-signature": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "peer": true }, "node_modules/cose-base": { "version": "1.0.3", @@ -1755,6 +1786,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -1807,7 +1839,6 @@ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", "dev": true, - "peer": true, "engines": { "node": ">=0.10" } @@ -2229,7 +2260,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "dev": true, - "peer": true, "engines": { "node": ">=12" } @@ -2329,6 +2359,7 @@ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, + "peer": true, "engines": { "node": ">= 14" } @@ -2367,6 +2398,7 @@ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, + "peer": true, "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -2389,6 +2421,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -2397,6 +2430,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "peer": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -2434,6 +2468,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -2446,18 +2481,21 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "peer": true }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "peer": true }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -2467,6 +2505,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, + "peer": true, "dependencies": { "once": "^1.4.0" } @@ -2476,6 +2515,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -2485,6 +2525,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "peer": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -2493,6 +2534,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "peer": true, "engines": { "node": ">= 0.4" } @@ -2501,6 +2543,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "peer": true, "engines": { "node": ">= 0.4" } @@ -2509,6 +2552,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "peer": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -2521,6 +2565,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -2528,7 +2573,8 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "peer": true }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -2547,6 +2593,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "peer": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -2568,7 +2615,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -2689,6 +2735,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -2743,6 +2790,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -2770,6 +2818,7 @@ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", "dev": true, + "peer": true, "dependencies": { "bare-events": "^2.7.0" } @@ -2778,6 +2827,7 @@ "version": "4.22.1", "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -2823,6 +2873,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -2830,13 +2881,15 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "peer": true }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "peer": true, "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -2862,7 +2915,8 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/fast-glob": { "version": "3.3.3", @@ -2927,6 +2981,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "peer": true, "dependencies": { "pend": "~1.2.0" } @@ -2959,6 +3014,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -2976,6 +3032,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -2983,7 +3040,8 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "peer": true }, "node_modules/find-up": { "version": "5.0.0", @@ -3024,6 +3082,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -3032,6 +3091,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -3063,6 +3123,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "peer": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -3071,6 +3132,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -3094,6 +3156,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "peer": true, "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -3107,6 +3170,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "peer": true, "dependencies": { "pump": "^3.0.0" }, @@ -3122,6 +3186,7 @@ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, + "peer": true, "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -3159,6 +3224,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -3185,6 +3251,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -3222,6 +3289,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "peer": true, "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", @@ -3242,6 +3310,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "peer": true, "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -3255,6 +3324,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -3267,6 +3337,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -3351,7 +3422,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "peer": true }, "node_modules/internmap": { "version": "2.0.3", @@ -3367,6 +3439,7 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, + "peer": true, "engines": { "node": ">= 12" } @@ -3375,6 +3448,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "peer": true, "engines": { "node": ">= 0.10" } @@ -3383,7 +3457,8 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -3426,6 +3501,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -3462,7 +3538,6 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, - "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -3500,7 +3575,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/js-yaml": { "version": "4.1.1", @@ -3523,7 +3599,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "peer": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -3668,6 +3745,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -3688,6 +3766,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "peer": true, "engines": { "node": ">= 0.4" } @@ -3696,6 +3775,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -3704,6 +3784,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "peer": true, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -3722,7 +3803,6 @@ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.2.tgz", "integrity": "sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==", "dev": true, - "peer": true, "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", @@ -3762,6 +3842,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -3783,6 +3864,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "peer": true, "bin": { "mime": "cli.js" }, @@ -3794,6 +3876,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -3802,6 +3885,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -3825,7 +3909,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/mlly": { "version": "1.8.0", @@ -3883,6 +3968,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -3892,6 +3978,7 @@ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "peer": true, "engines": { "node": ">= 0.4.0" } @@ -3927,6 +4014,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -3947,6 +4035,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -3959,6 +4048,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "peer": true, "dependencies": { "wrappy": "1" } @@ -4015,6 +4105,7 @@ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", "dev": true, + "peer": true, "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", @@ -4034,6 +4125,7 @@ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, + "peer": true, "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -4071,6 +4163,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -4088,6 +4181,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -4125,7 +4219,8 @@ "node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "peer": true }, "node_modules/pathe": { "version": "2.0.3", @@ -4137,7 +4232,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/picocolors": { "version": "1.1.1", @@ -4267,7 +4363,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -4434,6 +4529,7 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "peer": true, "engines": { "node": ">=0.4.0" } @@ -4442,6 +4538,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "peer": true, "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -4455,6 +4552,7 @@ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -4473,13 +4571,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, + "peer": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -4522,6 +4622,7 @@ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.11.1.tgz", "integrity": "sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==", "dev": true, + "peer": true, "dependencies": { "@puppeteer/browsers": "2.6.1", "chromium-bidi": "0.11.0", @@ -4539,6 +4640,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "license": "BSD-3-Clause", + "peer": true, "dependencies": { "side-channel": "^1.1.0" }, @@ -4598,6 +4700,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -4606,6 +4709,7 @@ "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "peer": true, "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", @@ -4621,7 +4725,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -4631,7 +4734,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "dev": true, - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -4690,6 +4792,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -4824,6 +4927,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -4835,6 +4939,7 @@ "version": "0.19.2", "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -4858,6 +4963,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -4865,12 +4971,14 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "peer": true }, "node_modules/serve-static": { "version": "1.16.3", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "peer": true, "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -4884,7 +4992,8 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "peer": true }, "node_modules/shebang-command": { "version": "2.0.0", @@ -4911,6 +5020,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "peer": true, "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -4929,6 +5039,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "peer": true, "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -4944,6 +5055,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "peer": true, "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -4961,6 +5073,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "peer": true, "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -4980,6 +5093,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "peer": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -4990,6 +5104,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, + "peer": true, "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" @@ -5004,6 +5119,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -5028,6 +5144,7 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -5054,6 +5171,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -5063,6 +5181,7 @@ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "dev": true, + "peer": true, "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", @@ -5083,6 +5202,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5097,6 +5217,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5198,7 +5319,6 @@ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "dev": true, - "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -5236,6 +5356,7 @@ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "dev": true, + "peer": true, "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -5250,6 +5371,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, + "peer": true, "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -5261,6 +5383,7 @@ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", "dev": true, + "peer": true, "dependencies": { "b4a": "^1.6.4" } @@ -5299,7 +5422,8 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/tinyexec": { "version": "1.0.2", @@ -5348,7 +5472,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "peer": true, "engines": { "node": ">=12" }, @@ -5372,6 +5495,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "peer": true, "engines": { "node": ">=0.6" } @@ -5413,6 +5537,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "peer": true, "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -5425,14 +5550,14 @@ "version": "2.12.0", "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5452,6 +5577,7 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, + "peer": true, "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -5476,6 +5602,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -5491,6 +5618,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -5523,6 +5651,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "peer": true, "engines": { "node": ">= 0.4.0" } @@ -5544,6 +5673,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -5626,6 +5756,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5642,13 +5773,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/ws": { "version": "8.18.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -5670,6 +5803,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "peer": true, "engines": { "node": ">=10" } @@ -5679,6 +5813,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "peer": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -5697,6 +5832,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -5706,6 +5842,7 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "peer": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -5728,6 +5865,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 6e1868d..790f5bc 100644 --- a/package.json +++ b/package.json @@ -39,5 +39,10 @@ "eslint": "^9.33.0", "typescript": "^5.9.2", "@mermaid-js/mermaid-cli": "^11.12.0" + }, + "cds": { + "openapi": { + "foo": "bar" + } } } diff --git a/test/lib/compile/csdl2openapi.test.js b/test/lib/compile/csdl2openapi.test.js index 010098f..9576a91 100644 --- a/test/lib/compile/csdl2openapi.test.js +++ b/test/lib/compile/csdl2openapi.test.js @@ -112,7 +112,7 @@ describe("Edge cases", () => { openapi: "3.0.2", info: { title: - "Use @title: '...' on your CDS service to provide a meaningful title.", + "Use the title annotation on your CDS service to provide a meaningful title.", description: "", version: "", }, @@ -120,7 +120,7 @@ describe("Edge cases", () => { "x-odata-version": "4.01", "x-sap-api-type": "ODATAV4", "x-sap-shortText": - "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", components: { schemas: {} }, }; const openapi = lib.csdl2openapi(csdl, {}); @@ -156,7 +156,7 @@ describe("Edge cases", () => { openapi: "3.0.2", info: { title: - "Use @title: '...' on your CDS service to provide a meaningful title.", + "Use the title annotation on your CDS service to provide a meaningful title.", description: "", version: "", }, @@ -164,7 +164,7 @@ describe("Edge cases", () => { "x-odata-version": "4.01", "x-sap-api-type": "ODATAV4", "x-sap-shortText": - "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", components: { schemas: {}, }, @@ -201,14 +201,14 @@ describe("Edge cases", () => { openapi: "3.0.2", info: { title: - "Use @title: '...' on your CDS service to provide a meaningful title.", + "Use the title annotation on your CDS service to provide a meaningful title.", description: "", version: "", }, "x-odata-version": "4.01", "x-sap-api-type": "ODATAV4", "x-sap-shortText": - "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", paths: {}, components: { schemas: {}, @@ -2182,7 +2182,7 @@ see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-prot const csdl = require('./data/non-expandable.json'); const actual = lib.csdl2openapi(csdl, {}); const pagesSchema = actual.components.schemas['CatalogService.Pages']; - + assert.strictEqual(Object.hasOwn(pagesSchema.properties, 'parent'), false, 'parent navigation property should be excluded from schema'); assert.strictEqual(Object.hasOwn(pagesSchema.properties, 'parent_ID'), true, 'parent_ID foreign key should be included in schema'); assert.strictEqual(Object.hasOwn(pagesSchema.properties, 'number'), true, 'number property should be included in schema'); @@ -2337,7 +2337,7 @@ see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-prot assert.deepStrictEqual( actual.info.description.split("\n"), [ - "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.", + "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.", "", "## Entity Data Model", "![ER Diagram](https://yuml.me/diagram/class/[root{bg:lightslategray}],[root]->[other],[other{bg:lightslategray}],[act{bg:lawngreen}]->[root],[act{bg:lawngreen}]in->[root],[others%20{bg:lawngreen}]++-*>[other],[roots%20{bg:lawngreen}]++-*>[root])", diff --git a/test/lib/compile/data/Northwind-key-as-segment.openapi3.json b/test/lib/compile/data/Northwind-key-as-segment.openapi3.json index b518881..d70f87d 100644 --- a/test/lib/compile/data/Northwind-key-as-segment.openapi3.json +++ b/test/lib/compile/data/Northwind-key-as-segment.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Category{bg:lightslategray}],[CustomerDemographic{bg:lightslategray}],[Customer{bg:lightslategray}],[Customer]*-*[CustomerDemographic],[Employee{bg:lightslategray}],[Employee]*-0..1[Employee],[Order_Detail{bg:lightslategray}],[Order_Detail]*-[Order],[Order{bg:lightslategray}],[Order]*-0..1[Customer],[Order]*-0..1[Employee],[Product{bg:lightslategray}],[Product]*-0..1[Category],[Product]-*[Order_Detail],[Region{bg:lightslategray}],[Shipper{bg:lightslategray}],[Shipper]0..1-*[Order],[Supplier{bg:lightslategray}],[Supplier]0..1-*[Product],[Territory{bg:lightslategray}],[Territory]*-[Region],[Territory]*-*[Employee],[Alphabetical_list_of_product{bg:lightslategray}],[Category_Sales_for_1997{bg:lightslategray}],[Current_Product_List{bg:lightslategray}],[Customer_and_Suppliers_by_City{bg:lightslategray}],[Invoice{bg:lightslategray}],[Order_Details_Extended{bg:lightslategray}],[Order_Subtotal{bg:lightslategray}],[Orders_Qry{bg:lightslategray}],[Product_Sales_for_1997{bg:lightslategray}],[Products_Above_Average_Price{bg:lightslategray}],[Products_by_Category{bg:lightslategray}],[Sales_by_Category{bg:lightslategray}],[Sales_Totals_by_Amount{bg:lightslategray}],[Summary_of_Sales_by_Quarter{bg:lightslategray}],[Summary_of_Sales_by_Year{bg:lightslategray}],[Summary_of_Sales_by_Years%20{bg:lawngreen}]++-*>[Summary_of_Sales_by_Year],[Summary_of_Sales_by_Quarters%20{bg:lawngreen}]++-*>[Summary_of_Sales_by_Quarter],[Sales_Totals_by_Amounts%20{bg:lawngreen}]++-*>[Sales_Totals_by_Amount],[Sales_by_Categories%20{bg:lawngreen}]++-*>[Sales_by_Category],[Products_by_Categories%20{bg:lawngreen}]++-*>[Products_by_Category],[Products_Above_Average_Prices%20{bg:lawngreen}]++-*>[Products_Above_Average_Price],[Product_Sales_for_1997%20{bg:lawngreen}]++-*>[Product_Sales_for_1997],[Orders_Qries%20{bg:lawngreen}]++-*>[Orders_Qry],[Order_Subtotals%20{bg:lawngreen}]++-*>[Order_Subtotal],[Order_Details_Extendeds%20{bg:lawngreen}]++-*>[Order_Details_Extended],[Invoices%20{bg:lawngreen}]++-*>[Invoice],[Customer_and_Suppliers_by_Cities%20{bg:lawngreen}]++-*>[Customer_and_Suppliers_by_City],[Current_Product_Lists%20{bg:lawngreen}]++-*>[Current_Product_List],[Category_Sales_for_1997%20{bg:lawngreen}]++-*>[Category_Sales_for_1997],[Alphabetical_list_of_products%20{bg:lawngreen}]++-*>[Alphabetical_list_of_product],[Territories%20{bg:lawngreen}]++-*>[Territory],[Suppliers%20{bg:lawngreen}]++-*>[Supplier],[Shippers%20{bg:lawngreen}]++-*>[Shipper],[Regions%20{bg:lawngreen}]++-*>[Region],[Products%20{bg:lawngreen}]++-*>[Product],[Orders%20{bg:lawngreen}]++-*>[Order],[Order_Details%20{bg:lawngreen}]++-*>[Order_Detail],[Employees%20{bg:lawngreen}]++-*>[Employee],[Customers%20{bg:lawngreen}]++-*>[Customer],[CustomerDemographics%20{bg:lawngreen}]++-*>[CustomerDemographic],[Categories%20{bg:lawngreen}]++-*>[Category])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Category{bg:lightslategray}],[CustomerDemographic{bg:lightslategray}],[Customer{bg:lightslategray}],[Customer]*-*[CustomerDemographic],[Employee{bg:lightslategray}],[Employee]*-0..1[Employee],[Order_Detail{bg:lightslategray}],[Order_Detail]*-[Order],[Order{bg:lightslategray}],[Order]*-0..1[Customer],[Order]*-0..1[Employee],[Product{bg:lightslategray}],[Product]*-0..1[Category],[Product]-*[Order_Detail],[Region{bg:lightslategray}],[Shipper{bg:lightslategray}],[Shipper]0..1-*[Order],[Supplier{bg:lightslategray}],[Supplier]0..1-*[Product],[Territory{bg:lightslategray}],[Territory]*-[Region],[Territory]*-*[Employee],[Alphabetical_list_of_product{bg:lightslategray}],[Category_Sales_for_1997{bg:lightslategray}],[Current_Product_List{bg:lightslategray}],[Customer_and_Suppliers_by_City{bg:lightslategray}],[Invoice{bg:lightslategray}],[Order_Details_Extended{bg:lightslategray}],[Order_Subtotal{bg:lightslategray}],[Orders_Qry{bg:lightslategray}],[Product_Sales_for_1997{bg:lightslategray}],[Products_Above_Average_Price{bg:lightslategray}],[Products_by_Category{bg:lightslategray}],[Sales_by_Category{bg:lightslategray}],[Sales_Totals_by_Amount{bg:lightslategray}],[Summary_of_Sales_by_Quarter{bg:lightslategray}],[Summary_of_Sales_by_Year{bg:lightslategray}],[Summary_of_Sales_by_Years%20{bg:lawngreen}]++-*>[Summary_of_Sales_by_Year],[Summary_of_Sales_by_Quarters%20{bg:lawngreen}]++-*>[Summary_of_Sales_by_Quarter],[Sales_Totals_by_Amounts%20{bg:lawngreen}]++-*>[Sales_Totals_by_Amount],[Sales_by_Categories%20{bg:lawngreen}]++-*>[Sales_by_Category],[Products_by_Categories%20{bg:lawngreen}]++-*>[Products_by_Category],[Products_Above_Average_Prices%20{bg:lawngreen}]++-*>[Products_Above_Average_Price],[Product_Sales_for_1997%20{bg:lawngreen}]++-*>[Product_Sales_for_1997],[Orders_Qries%20{bg:lawngreen}]++-*>[Orders_Qry],[Order_Subtotals%20{bg:lawngreen}]++-*>[Order_Subtotal],[Order_Details_Extendeds%20{bg:lawngreen}]++-*>[Order_Details_Extended],[Invoices%20{bg:lawngreen}]++-*>[Invoice],[Customer_and_Suppliers_by_Cities%20{bg:lawngreen}]++-*>[Customer_and_Suppliers_by_City],[Current_Product_Lists%20{bg:lawngreen}]++-*>[Current_Product_List],[Category_Sales_for_1997%20{bg:lawngreen}]++-*>[Category_Sales_for_1997],[Alphabetical_list_of_products%20{bg:lawngreen}]++-*>[Alphabetical_list_of_product],[Territories%20{bg:lawngreen}]++-*>[Territory],[Suppliers%20{bg:lawngreen}]++-*>[Supplier],[Shippers%20{bg:lawngreen}]++-*>[Shipper],[Regions%20{bg:lawngreen}]++-*>[Region],[Products%20{bg:lawngreen}]++-*>[Product],[Orders%20{bg:lawngreen}]++-*>[Order],[Order_Details%20{bg:lawngreen}]++-*>[Order_Detail],[Employees%20{bg:lawngreen}]++-*>[Employee],[Customers%20{bg:lawngreen}]++-*>[Customer],[CustomerDemographics%20{bg:lawngreen}]++-*>[CustomerDemographic],[Categories%20{bg:lawngreen}]++-*>[Category])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/data/People.openapi3.json b/test/lib/compile/data/People.openapi3.json index ec5198d..df2ecbc 100644 --- a/test/lib/compile/data/People.openapi3.json +++ b/test/lib/compile/data/People.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Supplier{bg:lightslategray}],[Supplier]++-0..1[Address],[Supplier]-*>[ProductService.Product{bg:whitesmoke}],[Address],[Person{bg:lightslategray}],[Person]^[Customer{bg:lightslategray}],[Person]^[Employee{bg:lightslategray}],[PersonDetail{bg:lightslategray}],[PersonDetail]++-0..1[Address],[PersonDetail]0..1-0..1[Person],[PersonDetails%20{bg:lawngreen}]++-*>[PersonDetail],[People%20{bg:lawngreen}]++-*>[Person],[Suppliers%20{bg:lawngreen}]++-*>[Supplier])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Supplier{bg:lightslategray}],[Supplier]++-0..1[Address],[Supplier]-*>[ProductService.Product{bg:whitesmoke}],[Address],[Person{bg:lightslategray}],[Person]^[Customer{bg:lightslategray}],[Person]^[Employee{bg:lightslategray}],[PersonDetail{bg:lightslategray}],[PersonDetail]++-0..1[Address],[PersonDetail]0..1-0..1[Person],[PersonDetails%20{bg:lawngreen}]++-*>[PersonDetail],[People%20{bg:lawngreen}]++-*>[Person],[Suppliers%20{bg:lawngreen}]++-*>[Supplier])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/data/Products.openapi3.json b/test/lib/compile/data/Products.openapi3.json index 6030cb4..9c2c67b 100644 --- a/test/lib/compile/data/Products.openapi3.json +++ b/test/lib/compile/data/Products.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Product{bg:lightslategray}],[Product]*-*[Category],[Product]-0..1>[PeopleService.Supplier{bg:whitesmoke}],[Product]^[FeaturedProduct{bg:lightslategray}],[FeaturedProduct]0..1-0..1[Advertisement],[ProductDetail{bg:lightslategray}],[ProductDetail]0..1-0..1[Product],[Category{bg:lightslategray}],[Advertisement{bg:lightslategray}],[Advertisements%20{bg:lawngreen}]++-*>[Advertisement],[Categories%20{bg:lawngreen}]++-*>[Category],[ProductDetails%20{bg:lawngreen}]++-*>[ProductDetail],[Products%20{bg:lawngreen}]++-*>[Product])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Product{bg:lightslategray}],[Product]*-*[Category],[Product]-0..1>[PeopleService.Supplier{bg:whitesmoke}],[Product]^[FeaturedProduct{bg:lightslategray}],[FeaturedProduct]0..1-0..1[Advertisement],[ProductDetail{bg:lightslategray}],[ProductDetail]0..1-0..1[Product],[Category{bg:lightslategray}],[Advertisement{bg:lightslategray}],[Advertisements%20{bg:lawngreen}]++-*>[Advertisement],[Categories%20{bg:lawngreen}]++-*>[Category],[ProductDetails%20{bg:lawngreen}]++-*>[ProductDetail],[Products%20{bg:lawngreen}]++-*>[Product])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/data/aggregation.openapi3.json b/test/lib/compile/data/aggregation.openapi3.json index 0dda979..3f3b3d5 100644 --- a/test/lib/compile/data/aggregation.openapi3.json +++ b/test/lib/compile/data/aggregation.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Category{bg:lightslategray}],[Category]-*>[Product],[Currency{bg:lightslategray}],[Customer{bg:lightslategray}],[Customer]-*>[Sales],[Product{bg:lightslategray}],[Product]-0..1>[Category],[Product]-*>[Sales],[Sales{bg:lightslategray}],[Sales]->[Customer],[Sales]->[Time],[Sales]->[Product],[Sales]->[SalesOrganization],[Sales]->[Currency],[SalesOrganization{bg:lightslategray}],[SalesOrganization]-0..1>[SalesOrganization],[Time{bg:lightslategray}],[Currencies%20{bg:lawngreen}]++-*>[Currency],[Sales%20{bg:lawngreen}]++-*>[Sales])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Category{bg:lightslategray}],[Category]-*>[Product],[Currency{bg:lightslategray}],[Customer{bg:lightslategray}],[Customer]-*>[Sales],[Product{bg:lightslategray}],[Product]-0..1>[Category],[Product]-*>[Sales],[Sales{bg:lightslategray}],[Sales]->[Customer],[Sales]->[Time],[Sales]->[Product],[Sales]->[SalesOrganization],[Sales]->[Currency],[SalesOrganization{bg:lightslategray}],[SalesOrganization]-0..1>[SalesOrganization],[Time{bg:lightslategray}],[Currencies%20{bg:lawngreen}]++-*>[Currency],[Sales%20{bg:lawngreen}]++-*>[Sales])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/data/autoexposed-texts.openapi3.json b/test/lib/compile/data/autoexposed-texts.openapi3.json index 38145cc..9a1ab24 100644 --- a/test/lib/compile/data/autoexposed-texts.openapi3.json +++ b/test/lib/compile/data/autoexposed-texts.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/data/description-fallback.openapi3.json b/test/lib/compile/data/description-fallback.openapi3.json index 99cd2f6..63ec641 100644 --- a/test/lib/compile/data/description-fallback.openapi3.json +++ b/test/lib/compile/data/description-fallback.openapi3.json @@ -1,7 +1,7 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", "description": "Service with only Description annotation\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Book{bg:lightslategray}],[doSomething{bg:lawngreen}],[Books%20{bg:lawngreen}]++-*>[Book])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, diff --git a/test/lib/compile/data/example.openapi3.json b/test/lib/compile/data/example.openapi3.json index 998a11a..f592216 100644 --- a/test/lib/compile/data/example.openapi3.json +++ b/test/lib/compile/data/example.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Product{bg:lightslategray}],[Product]*-*[Category],[Product]^[FeaturedProduct{bg:lightslategray}],[FeaturedProduct]0..1-0..1[Advertisement],[ProductDetail{bg:lightslategray}],[ProductDetail]0..1-0..1[Product],[Category{bg:lightslategray}],[Supplier{bg:lightslategray}],[Supplier]++-0..1[Address],[Supplier]0..1-*[Product],[Address],[Person{bg:lightslategray}],[Person]^[Customer{bg:lightslategray}],[Person]^[Employee{bg:lightslategray}],[PersonDetail{bg:lightslategray}],[PersonDetail]++-0..1[Address],[PersonDetail]0..1-0..1[Person],[Advertisement{bg:lightslategray}],[IncreaseSalaries{bg:lawngreen}],[Advertisements%20{bg:lawngreen}]++-*>[Advertisement],[PersonDetails%20{bg:lawngreen}]++-*>[PersonDetail],[Persons%20{bg:lawngreen}]++-*>[Person],[Suppliers%20{bg:lawngreen}]++-*>[Supplier],[Categories%20{bg:lawngreen}]++-*>[Category],[ProductDetails%20{bg:lawngreen}]++-*>[ProductDetail],[Products%20{bg:lawngreen}]++-*>[Product])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Product{bg:lightslategray}],[Product]*-*[Category],[Product]^[FeaturedProduct{bg:lightslategray}],[FeaturedProduct]0..1-0..1[Advertisement],[ProductDetail{bg:lightslategray}],[ProductDetail]0..1-0..1[Product],[Category{bg:lightslategray}],[Supplier{bg:lightslategray}],[Supplier]++-0..1[Address],[Supplier]0..1-*[Product],[Address],[Person{bg:lightslategray}],[Person]^[Customer{bg:lightslategray}],[Person]^[Employee{bg:lightslategray}],[PersonDetail{bg:lightslategray}],[PersonDetail]++-0..1[Address],[PersonDetail]0..1-0..1[Person],[Advertisement{bg:lightslategray}],[IncreaseSalaries{bg:lawngreen}],[Advertisements%20{bg:lawngreen}]++-*>[Advertisement],[PersonDetails%20{bg:lawngreen}]++-*>[PersonDetail],[Persons%20{bg:lawngreen}]++-*>[Person],[Suppliers%20{bg:lawngreen}]++-*>[Supplier],[Categories%20{bg:lawngreen}]++-*>[Category],[ProductDetails%20{bg:lawngreen}]++-*>[ProductDetail],[Products%20{bg:lawngreen}]++-*>[Product])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/data/immutable-composition.openapi3.json b/test/lib/compile/data/immutable-composition.openapi3.json index faeb240..1444ff6 100644 --- a/test/lib/compile/data/immutable-composition.openapi3.json +++ b/test/lib/compile/data/immutable-composition.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Parent{bg:lightslategray}],[Parent]++->[Child],[Parent]++->[Child],[Child{bg:lightslategray}],[Parents%20{bg:lawngreen}]++-*>[Parent])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Parent{bg:lightslategray}],[Parent]++->[Child],[Parent]++->[Child],[Child{bg:lightslategray}],[Parents%20{bg:lawngreen}]++-*>[Parent])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/data/miscellaneous.openapi3.json b/test/lib/compile/data/miscellaneous.openapi3.json index 223ef8f..54cacad 100644 --- a/test/lib/compile/data/miscellaneous.openapi3.json +++ b/test/lib/compile/data/miscellaneous.openapi3.json @@ -1,7 +1,7 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", "description": "Examples from Part 3: CSDL\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Measurement],[Example7to11],[Product{bg:lightslategray}],[Product]*-[Category],[Product]-0..1>[Supplier],[Supplier{bg:lightslategray}],[Customer{bg:lightslategray}],[Order{bg:lightslategray}],[Category{bg:lightslategray}],[Employee{bg:lightslategray}],[Employee]-0..1>[Manager],[Employee]^[Manager{bg:lightslategray}],[Manager]-*>[Employee],[Category17{bg:lightslategray}],[Category18{bg:lightslategray}],[Category18]++-[EntityInfo],[EntityInfo],[OrderLine{bg:lightslategray}],[Dimensions],[Product22{bg:lightslategray}],[Product22]++-0..1[Dimensions],[Product22]++-0..1[Dimensions],[ShipmentBox{bg:lightslategray}],[ShipmentBox]++-0..1[Dimensions],[Size],[Size]++-0..1[Length],[Size]++-0..1[Weight],[Product2{bg:lightslategray}],[NullablePrimitiveTypes],[NullablePrimitiveTypes]++-0..1[Color],[NullablePrimitiveTypes]++-0..1[IntegerDecimal],[NonNullablePrimitiveTypes],[NonNullablePrimitiveTypes]++-[Color],[NonNullablePrimitiveTypes]++-[IntegerDecimal],[NonNullablePrimitiveTypes]++-[Text],[Weird{bg:lightslategray}],[Weird]++-[Core.Permission{bg:whitesmoke}],[Weird]++-0..1[Core.Permission{bg:whitesmoke}],[Address],[Address]-0..1>[City],[Address]-0..1>[Region],[Address]-0..1>[Country],[City{bg:lightslategray}],[Region{bg:lightslategray}],[Country{bg:lightslategray}],[Planet{bg:lightslategray}],[NavigationOnly],[NavigationOnly]-0..1>[Planet],[AnnotationOnly],[Order{bg:lightslategray}],[PersonType],[MovieType],[FriendType{bg:lightslategray}],[PersonType]^[DeveloperType],[ScrumTeamType],[ScrumTeamType]++-0..1[DeveloperType],[MovieType]^[ArchivedMovieType],[SomeThingType],[SomeThingType]++-*[PersonType],[SomeThingType]-*>[FriendType],[ChangeTrackingType],[Categories35%20{bg:lawngreen}]++-*>[Category],[Categories34%20{bg:lawngreen}]++-*>[Category],[ProductsByRating{bg:lawngreen}]-*>[Product],[LeaveRequestApproval{bg:lawngreen}],[MainSupplier%20{bg:lawngreen}]++->[Supplier],[Suppliers%20{bg:lawngreen}]++-*>[Supplier],[Categories%20{bg:lawngreen}]++-*>[Category],[Products%20{bg:lawngreen}]++-*>[Product],[TopSellingProducts{bg:lawngreen}]-*>[Product],[Orders%20{bg:lawngreen}]++-*>[Order],[PreferredCustomers%20{bg:lawngreen}]++-*>[Customer],[StandardCustomers%20{bg:lawngreen}]++-*>[Customer])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, diff --git a/test/lib/compile/data/non-expandable.openapi3.json b/test/lib/compile/data/non-expandable.openapi3.json index e745a60..00955a6 100644 --- a/test/lib/compile/data/non-expandable.openapi3.json +++ b/test/lib/compile/data/non-expandable.openapi3.json @@ -1,19 +1,71 @@ - { - "openapi": "3.0.3", + "openapi": "3.0.2", "info": { - "title": "CatalogService", - "version": "1.0" + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Books{bg:lightslategray}],[Books]++-*>[Pages],[Pages{bg:lightslategray}],[Pages]->[Books],[Pages%20{bg:lawngreen}]++-*>[Pages],[Books%20{bg:lawngreen}]++-*>[Books])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "version": "" }, + "x-sap-api-type": "ODATAV4", + "x-odata-version": "4.01", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", + "servers": [ + { + "url": "https://localhost/service-root" + } + ], + "tags": [ + { + "name": "Books" + }, + { + "name": "Pages" + } + ], "paths": { + "/$batch": { + "post": { + "summary": "Sends a group of requests", + "description": "Group multiple requests into a single request payload, see [Batch Requests](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BatchRequests).\n\n*Please note that \"Try it out\" is not supported for this request.*", + "tags": [ + "Batch Requests" + ], + "requestBody": { + "required": true, + "description": "Batch request", + "content": { + "multipart/mixed;boundary=request-separator": { + "schema": { + "type": "string" + }, + "example": "--request-separator\nContent-Type: application/http\nContent-Transfer-Encoding: binary\n\nGET Books HTTP/1.1\nAccept: application/json\n\n\n--request-separator--" + } + } + }, + "responses": { + "200": { + "description": "Batch response", + "content": { + "multipart/mixed": { + "schema": { + "type": "string" + }, + "example": "--response-separator\nContent-Type: application/http\n\nHTTP/1.1 200 OK\nContent-Type: application/json\n\n{...}\n--response-separator--" + } + } + }, + "4XX": { + "$ref": "#/components/responses/error" + } + } + } + }, "/Books": { "get": { - "summary": "Read all instances of Books", - "operationId": "Books_get", + "summary": "Retrieves a list of books.", + "tags": [ + "Books" + ], "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, { "$ref": "#/components/parameters/top" }, @@ -21,34 +73,81 @@ "$ref": "#/components/parameters/skip" }, { - "$ref": "#/components/parameters/count" + "$ref": "#/components/parameters/search" }, { - "$ref": "#/components/parameters/filter" + "name": "$filter", + "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)", + "in": "query", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/orderby" + "$ref": "#/components/parameters/count" }, { - "$ref": "#/components/parameters/search" + "name": "$orderby", + "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "ID", + "ID desc" + ] + } + } }, { - "$ref": "#/components/parameters/select" + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "ID" + ] + } + } }, { - "$ref": "#/components/parameters/expand" + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "pages" + ] + } + } } ], "responses": { "200": { - "description": "Retrieved instances of Books", + "description": "Retrieved books", "content": { "application/json": { "schema": { "type": "object", + "title": "Collection of Books", "properties": { - "@odata.context": { - "type": "string" + "@count": { + "$ref": "#/components/schemas/count" }, "value": { "type": "array", @@ -61,32 +160,30 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "post": { - "summary": "Create a new instance of Books", - "operationId": "Books_post", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - } + "summary": "Creates a single book.", + "tags": [ + "Books" ], "requestBody": { - "description": "New instance of Books", + "description": "New book", + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogService.Books" + "$ref": "#/components/schemas/CatalogService.Books-create" } } } }, "responses": { "201": { - "description": "Created instance of Books", + "description": "Created book", "content": { "application/json": { "schema": { @@ -95,39 +192,68 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } } }, "/Books({ID})": { + "parameters": [ + { + "description": "key: ID", + "in": "path", + "name": "ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], "get": { - "summary": "Read an instance of Books", - "operationId": "Books_get_by_key", + "summary": "Retrieves a single book.", + "tags": [ + "Books" + ], "parameters": [ { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "ID" + ] + } } }, { - "$ref": "#/components/parameters/select" - }, - { - "$ref": "#/components/parameters/expand" + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "pages" + ] + } + } } ], "responses": { "200": { - "description": "Retrieved instance of Books", + "description": "Retrieved book", "content": { "application/json": { "schema": { @@ -136,101 +262,71 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "patch": { - "summary": "Update an instance of Books", - "operationId": "Books_patch", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - } + "summary": "Changes a single book.", + "tags": [ + "Books" ], "requestBody": { - "description": "Updated instance of Books", + "description": "New property values", + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogService.Books" + "$ref": "#/components/schemas/CatalogService.Books-update" } } } }, "responses": { - "200": { - "description": "Updated instance of Books", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CatalogService.Books" - } - } - } - }, "204": { - "description": "Updated instance of Books" + "description": "Success" }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "delete": { - "summary": "Delete an instance of Books", - "operationId": "Books_delete", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - } + "summary": "Deletes a single book.", + "tags": [ + "Books" ], "responses": { "204": { - "description": "Deleted instance of Books" + "description": "Success" }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } } }, "/Books({ID})/pages": { + "parameters": [ + { + "description": "key: ID", + "in": "path", + "name": "ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], "get": { - "summary": "Read all instances of pages", - "operationId": "Books_pages_get", + "summary": "Retrieves a list of pages of a book.", + "tags": [ + "Books", + "Pages" + ], "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, { "$ref": "#/components/parameters/top" }, @@ -238,34 +334,87 @@ "$ref": "#/components/parameters/skip" }, { - "$ref": "#/components/parameters/count" + "$ref": "#/components/parameters/search" }, { - "$ref": "#/components/parameters/filter" + "name": "$filter", + "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)", + "in": "query", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/orderby" + "$ref": "#/components/parameters/count" }, { - "$ref": "#/components/parameters/search" + "name": "$orderby", + "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "number", + "number desc", + "content", + "content desc", + "parent_ID", + "parent_ID desc" + ] + } + } }, { - "$ref": "#/components/parameters/select" + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "number", + "content", + "parent_ID" + ] + } + } }, { - "$ref": "#/components/parameters/expand" + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "parent" + ] + } + } } ], "responses": { "200": { - "description": "Retrieved instances of pages", + "description": "Retrieved pages", "content": { "application/json": { "schema": { "type": "object", + "title": "Collection of Pages", "properties": { - "@odata.context": { - "type": "string" + "@count": { + "$ref": "#/components/schemas/count" }, "value": { "type": "array", @@ -278,41 +427,31 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "post": { - "summary": "Create a new instance of pages", - "operationId": "Books_pages_post", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - } + "summary": "Creates a single page of a book.", + "tags": [ + "Books", + "Pages" ], "requestBody": { - "description": "New instance of pages", + "description": "New page", + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogService.Pages" + "$ref": "#/components/schemas/CatalogService.Pages-create" } } } }, "responses": { "201": { - "description": "Created instance of pages", + "description": "Created page", "content": { "application/json": { "schema": { @@ -321,57 +460,91 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } } }, - "/Books({ID})/pages(parent_ID={parent_ID},number={number})": { + "/Books({ID})/pages(parent_ID={parent_ID_1},number={number_1})": { + "parameters": [ + { + "description": "key: ID", + "in": "path", + "name": "ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "description": "key: parent_ID", + "in": "path", + "name": "parent_ID_1", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "description": "key: number", + "in": "path", + "name": "number_1", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], "get": { - "summary": "Read an instance of pages", - "operationId": "Books_pages_get_by_key", + "summary": "Retrieves a single page of a book.", + "tags": [ + "Books", + "Pages" + ], "parameters": [ { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "parent_ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "number", + "content", + "parent_ID" + ] + } } }, { - "name": "number", - "in": "path", - "required": true, + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "parent" + ] + } } - }, - { - "$ref": "#/components/parameters/select" - }, - { - "$ref": "#/components/parameters/expand" } ], "responses": { "200": { - "description": "Retrieved instance of pages", + "description": "Retrieved page", "content": { "application/json": { "schema": { @@ -380,128 +553,148 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "patch": { - "summary": "Update an instance of pages", - "operationId": "Books_pages_patch", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "parent_ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "number", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - } + "summary": "Changes a single page of a book.", + "tags": [ + "Books" ], "requestBody": { - "description": "Updated instance of pages", + "description": "New property values", + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogService.Pages" + "$ref": "#/components/schemas/CatalogService.Pages-update" } } } }, "responses": { - "200": { - "description": "Updated instance of pages", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CatalogService.Pages" - } - } - } - }, "204": { - "description": "Updated instance of pages" + "description": "Success" }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "delete": { - "summary": "Delete an instance of pages", - "operationId": "Books_pages_delete", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } + "summary": "Deletes a single page of a book.", + "tags": [ + "Books" + ], + "responses": { + "204": { + "description": "Success" }, + "4XX": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/Books({ID})/pages(parent_ID={parent_ID_1},number={number_1})/parent": { + "parameters": [ + { + "description": "key: ID", + "in": "path", + "name": "ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "description": "key: parent_ID", + "in": "path", + "name": "parent_ID_1", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "description": "key: number", + "in": "path", + "name": "number_1", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "get": { + "summary": "Retrieves parent of a book.", + "tags": [ + "Books" + ], + "parameters": [ { - "name": "parent_ID", - "in": "path", - "required": true, + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "ID" + ] + } } }, { - "name": "number", - "in": "path", - "required": true, + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "pages" + ] + } } } ], "responses": { - "204": { - "description": "Deleted instance of pages" + "200": { + "description": "Retrieved parent", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CatalogService.Books" + } + } + } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } } }, "/Pages": { "get": { - "summary": "Read all instances of Pages", - "operationId": "Pages_get", + "summary": "Retrieves a list of pages.", + "tags": [ + "Pages" + ], "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, { "$ref": "#/components/parameters/top" }, @@ -509,34 +702,87 @@ "$ref": "#/components/parameters/skip" }, { - "$ref": "#/components/parameters/count" + "$ref": "#/components/parameters/search" }, { - "$ref": "#/components/parameters/filter" + "name": "$filter", + "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)", + "in": "query", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/orderby" + "$ref": "#/components/parameters/count" }, { - "$ref": "#/components/parameters/search" + "name": "$orderby", + "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "number", + "number desc", + "content", + "content desc", + "parent_ID", + "parent_ID desc" + ] + } + } }, { - "$ref": "#/components/parameters/select" + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "number", + "content", + "parent_ID" + ] + } + } }, { - "$ref": "#/components/parameters/expand" + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, + "schema": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "parent" + ] + } + } } ], "responses": { "200": { - "description": "Retrieved instances of Pages", + "description": "Retrieved pages", "content": { "application/json": { "schema": { "type": "object", + "title": "Collection of Pages", "properties": { - "@odata.context": { - "type": "string" + "@count": { + "$ref": "#/components/schemas/count" }, "value": { "type": "array", @@ -549,32 +795,30 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "post": { - "summary": "Create a new instance of Pages", - "operationId": "Pages_post", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - } + "summary": "Creates a single page.", + "tags": [ + "Pages" ], "requestBody": { - "description": "New instance of Pages", + "description": "New page", + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogService.Pages" + "$ref": "#/components/schemas/CatalogService.Pages-create" } } } }, "responses": { "201": { - "description": "Created instance of Pages", + "description": "Created page", "content": { "application/json": { "schema": { @@ -583,48 +827,80 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } } }, "/Pages(parent_ID={parent_ID},number={number})": { + "parameters": [ + { + "description": "key: parent_ID", + "in": "path", + "name": "parent_ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "description": "key: number", + "in": "path", + "name": "number", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], "get": { - "summary": "Read an instance of Pages", - "operationId": "Pages_get_by_key", + "summary": "Retrieves a single page.", + "tags": [ + "Pages" + ], "parameters": [ { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "parent_ID", - "in": "path", - "required": true, + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "number", + "content", + "parent_ID" + ] + } } }, { - "name": "number", - "in": "path", - "required": true, + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "parent" + ] + } } - }, - { - "$ref": "#/components/parameters/select" - }, - { - "$ref": "#/components/parameters/expand" } ], "responses": { "200": { - "description": "Retrieved instance of Pages", + "description": "Retrieved page", "content": { "application/json": { "schema": { @@ -633,98 +909,128 @@ } } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "patch": { - "summary": "Update an instance of Pages", - "operationId": "Pages_patch", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" - }, - { - "name": "parent_ID", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "number", - "in": "path", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - } + "summary": "Changes a single page.", + "tags": [ + "Pages" ], "requestBody": { - "description": "Updated instance of Pages", + "description": "New property values", + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogService.Pages" + "$ref": "#/components/schemas/CatalogService.Pages-update" } } } }, "responses": { - "200": { - "description": "Updated instance of Pages", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CatalogService.Pages" - } - } - } - }, "204": { - "description": "Updated instance of Pages" + "description": "Success" }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } }, "delete": { - "summary": "Delete an instance of Pages", - "operationId": "Pages_delete", - "parameters": [ - { - "$ref": "#/components/parameters/sap-language" + "summary": "Deletes a single page.", + "tags": [ + "Pages" + ], + "responses": { + "204": { + "description": "Success" }, + "4XX": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/Pages(parent_ID={parent_ID},number={number})/parent": { + "parameters": [ + { + "description": "key: parent_ID", + "in": "path", + "name": "parent_ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "description": "key: number", + "in": "path", + "name": "number", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "get": { + "summary": "Retrieves parent of a page.", + "tags": [ + "Pages", + "Books" + ], + "parameters": [ { - "name": "parent_ID", - "in": "path", - "required": true, + "name": "$select", + "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "ID" + ] + } } }, { - "name": "number", - "in": "path", - "required": true, + "name": "$expand", + "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", + "in": "query", + "explode": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "*", + "pages" + ] + } } } ], "responses": { - "204": { - "description": "Deleted instance of Pages" + "200": { + "description": "Retrieved parent", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CatalogService.Books" + } + } + } }, - "default": { - "$ref": "#/components/responses/Error" + "4XX": { + "$ref": "#/components/responses/error" } } } @@ -733,31 +1039,62 @@ "components": { "schemas": { "CatalogService.Books": { + "title": "Books", "type": "object", "properties": { "ID": { "type": "integer", - "format": "int32", - "nullable": false + "format": "int32" }, "pages": { "type": "array", "items": { "$ref": "#/components/schemas/CatalogService.Pages" } + }, + "pages@count": { + "$ref": "#/components/schemas/count" + } + } + }, + "CatalogService.Books-create": { + "title": "Books (for create)", + "type": "object", + "properties": { + "ID": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CatalogService.Pages-create" + } } }, "required": [ "ID" ] }, + "CatalogService.Books-update": { + "title": "Books (for update)", + "type": "object", + "properties": { + "pages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CatalogService.Pages-create" + } + } + } + }, "CatalogService.Pages": { + "title": "Pages", "type": "object", "properties": { "number": { "type": "integer", - "format": "int32", - "nullable": false + "format": "int32" }, "content": { "type": "string", @@ -765,35 +1102,83 @@ }, "parent_ID": { "type": "integer", - "format": "int32", - "nullable": false + "format": "int32" + } + } + }, + "CatalogService.Pages-create": { + "title": "Pages (for create)", + "type": "object", + "properties": { + "number": { + "type": "integer", + "format": "int32" }, + "content": { + "type": "string", + "maxLength": 1111 + }, + "parent_ID": { + "type": "integer", + "format": "int32" + } + }, "required": [ + "parent_ID", "number" ] }, + "CatalogService.Pages-update": { + "title": "Pages (for update)", + "type": "object", + "properties": { + "content": { + "type": "string", + "maxLength": 1111 + } + } + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "description": "The number of entities in the collection. Available when using the [$count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount) query option." + }, "error": { "type": "object", + "required": [ + "error" + ], "properties": { "error": { "type": "object", + "required": [ + "code", + "message" + ], "properties": { "code": { - "type": "string", - "description": "The error code." + "type": "string" }, "message": { - "type": "string", - "description": "The error message." + "type": "string" }, "target": { - "type": "string", - "description": "The target of the error." + "type": "string" }, "details": { "type": "array", "items": { "type": "object", + "required": [ + "code", + "message" + ], "properties": { "code": { "type": "string" @@ -804,34 +1189,13 @@ "target": { "type": "string" } - }, - "required": [ - "code", - "message" - ] - }, - "description": "Details of the error." + } + } }, "innererror": { "type": "object", - "description": "The inner error." + "description": "The structure of this object is service-specific" } - }, - "required": [ - "code", - "message" - ] - } - } - } - }, - "responses": { - "Error": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/error" } } } @@ -845,7 +1209,8 @@ "schema": { "type": "integer", "minimum": 0 - } + }, + "example": 50 }, "skip": { "name": "$skip", @@ -859,27 +1224,11 @@ "count": { "name": "$count", "in": "query", - "description": "Include count of items, see [Paging - Count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)", + "description": "Include count of items, see [Count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)", "schema": { "type": "boolean" } }, - "filter": { - "name": "$filter", - "in": "query", - "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)", - "schema": { - "type": "string" - } - }, - "orderby": { - "name": "$orderby", - "in": "query", - "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)", - "schema": { - "type": "string" - } - }, "search": { "name": "$search", "in": "query", @@ -887,29 +1236,17 @@ "schema": { "type": "string" } - }, - "select": { - "name": "$select", - "in": "query", - "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)", - "schema": { - "type": "string" - } - }, - "expand": { - "name": "$expand", - "in": "query", - "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)", - "schema": { - "type": "string" - } - }, - "sap-language": { - "name": "sap-language", - "in": "header", - "description": "Language for localized data", - "schema": { - "type": "string" + } + }, + "responses": { + "error": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error" + } + } } } } diff --git a/test/lib/compile/data/parameter-with-both-descriptions.openapi3.json b/test/lib/compile/data/parameter-with-both-descriptions.openapi3.json index e0ea908..069c7d6 100644 --- a/test/lib/compile/data/parameter-with-both-descriptions.openapi3.json +++ b/test/lib/compile/data/parameter-with-both-descriptions.openapi3.json @@ -1,13 +1,13 @@ { "openapi": "3.0.2", "info": { - "title": "Use @title: '...' on your CDS service to provide a meaningful title.", - "description": "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Item{bg:lightslategray}],[processItem{bg:lawngreen}],[Items%20{bg:lawngreen}]++-*>[Item])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", + "title": "Use the title annotation on your CDS service to provide a meaningful title.", + "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Item{bg:lightslategray}],[processItem{bg:lawngreen}],[Items%20{bg:lawngreen}]++-*>[Item])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])", "version": "" }, "x-sap-api-type": "ODATAV4", "x-odata-version": "4.01", - "x-sap-shortText": "Use @Core.Description: '...' on your CDS service to provide a meaningful short text.", + "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.", "servers": [ { "url": "https://localhost/service-root" diff --git a/test/lib/compile/openapi.test.js b/test/lib/compile/openapi.test.js index 27d60c8..397aa59 100644 --- a/test/lib/compile/openapi.test.js +++ b/test/lib/compile/openapi.test.js @@ -223,7 +223,7 @@ service CatalogService { ); let openapi = toOpenApi(csn, { service: 'A' }); assert.deepStrictEqual(openapi.servers, [{ url: '/a' }]); - assert.strictEqual(openapi.info.description, "Use @Core.LongDescription: '...' or @Core.Description: '...' on your CDS service to provide a meaningful description.") + assert.strictEqual(openapi.info.description, "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.") openapi = toOpenApi(csn, { service: 'A', 'openapi:url': 'http://foo.bar:8080' }); assert.deepStrictEqual(openapi.servers, [{ url: 'http://foo.bar:8080' }]);