mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-04-14 07:04:09 +02:00
Update scripts for OpenAPI 3.1
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
This commit is contained in:
parent
c3a4f5b109
commit
4fafc98773
|
|
@ -133,16 +133,15 @@ base_url = args.base_url.rstrip("/")
|
||||||
logging.basicConfig()
|
logging.basicConfig()
|
||||||
|
|
||||||
output = {
|
output = {
|
||||||
"basePath": "/",
|
|
||||||
"consumes": ["application/json"],
|
|
||||||
"produces": ["application/json"],
|
|
||||||
"host": "matrix.org",
|
|
||||||
# The servers value will be picked up by RapiDoc to provide a way
|
# The servers value will be picked up by RapiDoc to provide a way
|
||||||
# to switch API servers. Useful when one wants to test compliance
|
# to switch API servers. Useful when one wants to test compliance
|
||||||
# of their server with the API.
|
# of their server with the API.
|
||||||
"servers": [
|
"servers": [
|
||||||
{
|
{
|
||||||
"url": "https://{homeserver_address}/",
|
"url": "https://matrix.org",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://{homeserver_address}",
|
||||||
"variables": {
|
"variables": {
|
||||||
"homeserver_address": {
|
"homeserver_address": {
|
||||||
"default": "matrix-client.matrix.org",
|
"default": "matrix-client.matrix.org",
|
||||||
|
|
@ -151,20 +150,21 @@ output = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"schemes": ["https"],
|
|
||||||
"info": {
|
"info": {
|
||||||
"title": available_apis[selected_api],
|
"title": available_apis[selected_api],
|
||||||
"version": release_label,
|
"version": release_label,
|
||||||
},
|
},
|
||||||
"securityDefinitions": {},
|
"components": {
|
||||||
|
"securitySchemes": {}
|
||||||
|
},
|
||||||
"paths": {},
|
"paths": {},
|
||||||
"swagger": "2.0",
|
"openapi": "3.1.0",
|
||||||
}
|
}
|
||||||
|
|
||||||
selected_api_dir = os.path.join(api_dir, selected_api)
|
selected_api_dir = os.path.join(api_dir, selected_api)
|
||||||
try:
|
try:
|
||||||
with open(os.path.join(selected_api_dir, 'definitions', 'security.yaml')) as f:
|
with open(os.path.join(selected_api_dir, 'definitions', 'security.yaml')) as f:
|
||||||
output['securityDefinitions'] = yaml.safe_load(f)
|
output['components']['securitySchemes'] = yaml.safe_load(f)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print("No security definitions available for this API")
|
print("No security definitions available for this API")
|
||||||
|
|
||||||
|
|
@ -174,12 +174,12 @@ for filename in os.listdir(selected_api_dir):
|
||||||
continue
|
continue
|
||||||
filepath = os.path.join(selected_api_dir, filename)
|
filepath = os.path.join(selected_api_dir, filename)
|
||||||
|
|
||||||
print("Reading swagger API: %s" % filepath)
|
print("Reading OpenAPI: %s" % filepath)
|
||||||
with open(filepath, "r") as f:
|
with open(filepath, "r") as f:
|
||||||
api = yaml.safe_load(f.read())
|
api = yaml.safe_load(f.read())
|
||||||
api = resolve_references(filepath, api)
|
api = resolve_references(filepath, api)
|
||||||
|
|
||||||
basePath = api['basePath']
|
basePath = api['servers'][0]['variables']['basePath']['default']
|
||||||
for path, methods in api["paths"].items():
|
for path, methods in api["paths"].items():
|
||||||
path = basePath + path
|
path = basePath + path
|
||||||
for method, spec in methods.items():
|
for method, spec in methods.items():
|
||||||
|
|
|
||||||
294
scripts/package-lock.json
generated
294
scripts/package-lock.json
generated
|
|
@ -9,19 +9,18 @@
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nopt": "^3.0.2",
|
"@apidevtools/swagger-parser": "^10.1.0",
|
||||||
"swagger-parser": "^10.0.3"
|
"nopt": "^3.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@apidevtools/json-schema-ref-parser": {
|
"node_modules/@apidevtools/json-schema-ref-parser": {
|
||||||
"version": "9.0.9",
|
"version": "9.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz",
|
||||||
"integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==",
|
"integrity": "sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jsdevtools/ono": "^7.1.3",
|
"@jsdevtools/ono": "^7.1.3",
|
||||||
"@types/json-schema": "^7.0.6",
|
|
||||||
"call-me-maybe": "^1.0.1",
|
"call-me-maybe": "^1.0.1",
|
||||||
"js-yaml": "^4.1.0"
|
"js-yaml": "^3.13.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@apidevtools/openapi-schemas": {
|
"node_modules/@apidevtools/openapi-schemas": {
|
||||||
|
|
@ -38,16 +37,17 @@
|
||||||
"integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg=="
|
"integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg=="
|
||||||
},
|
},
|
||||||
"node_modules/@apidevtools/swagger-parser": {
|
"node_modules/@apidevtools/swagger-parser": {
|
||||||
"version": "10.0.3",
|
"version": "10.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz",
|
||||||
"integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==",
|
"integrity": "sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apidevtools/json-schema-ref-parser": "^9.0.6",
|
"@apidevtools/json-schema-ref-parser": "9.0.6",
|
||||||
"@apidevtools/openapi-schemas": "^2.0.4",
|
"@apidevtools/openapi-schemas": "^2.1.0",
|
||||||
"@apidevtools/swagger-methods": "^3.0.2",
|
"@apidevtools/swagger-methods": "^3.0.2",
|
||||||
"@jsdevtools/ono": "^7.1.3",
|
"@jsdevtools/ono": "^7.1.3",
|
||||||
"call-me-maybe": "^1.0.1",
|
"ajv": "^8.6.3",
|
||||||
"z-schema": "^5.0.1"
|
"ajv-draft-04": "^1.0.0",
|
||||||
|
"call-me-maybe": "^1.0.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"openapi-types": ">=7"
|
"openapi-types": ">=7"
|
||||||
|
|
@ -58,52 +58,85 @@
|
||||||
"resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
|
||||||
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
|
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/json-schema": {
|
|
||||||
"version": "7.0.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
|
|
||||||
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ=="
|
|
||||||
},
|
|
||||||
"node_modules/abbrev": {
|
"node_modules/abbrev": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
||||||
},
|
},
|
||||||
|
"node_modules/ajv": {
|
||||||
|
"version": "8.11.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
|
||||||
|
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
|
||||||
|
"dependencies": {
|
||||||
|
"fast-deep-equal": "^3.1.1",
|
||||||
|
"json-schema-traverse": "^1.0.0",
|
||||||
|
"require-from-string": "^2.0.2",
|
||||||
|
"uri-js": "^4.2.2"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/epoberezkin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ajv-draft-04": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
|
||||||
|
"peerDependencies": {
|
||||||
|
"ajv": "^8.5.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"ajv": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/argparse": {
|
"node_modules/argparse": {
|
||||||
"version": "2.0.1",
|
"version": "1.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
|
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||||
|
"dependencies": {
|
||||||
|
"sprintf-js": "~1.0.2"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/call-me-maybe": {
|
"node_modules/call-me-maybe": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
|
||||||
"integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
|
"integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw=="
|
||||||
},
|
},
|
||||||
"node_modules/commander": {
|
"node_modules/esprima": {
|
||||||
"version": "2.20.3",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
||||||
"optional": true
|
"bin": {
|
||||||
|
"esparse": "bin/esparse.js",
|
||||||
|
"esvalidate": "bin/esvalidate.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fast-deep-equal": {
|
||||||
|
"version": "3.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||||
},
|
},
|
||||||
"node_modules/js-yaml": {
|
"node_modules/js-yaml": {
|
||||||
"version": "4.1.0",
|
"version": "3.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||||
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"argparse": "^2.0.1"
|
"argparse": "^1.0.7",
|
||||||
|
"esprima": "^4.0.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"js-yaml": "bin/js-yaml.js"
|
"js-yaml": "bin/js-yaml.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lodash.get": {
|
"node_modules/json-schema-traverse": {
|
||||||
"version": "4.4.2",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||||
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
|
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
||||||
},
|
|
||||||
"node_modules/lodash.isequal": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
|
||||||
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
|
|
||||||
},
|
},
|
||||||
"node_modules/nopt": {
|
"node_modules/nopt": {
|
||||||
"version": "3.0.6",
|
"version": "3.0.6",
|
||||||
|
|
@ -122,55 +155,45 @@
|
||||||
"integrity": "sha512-sR23YjmuwDSMsQVZDHbV9mPgi0RyniQlqR0AQxTC2/F3cpSjRFMH3CFPjoWvNqhC4OxPkDYNb2l8Mc1Me6D/KQ==",
|
"integrity": "sha512-sR23YjmuwDSMsQVZDHbV9mPgi0RyniQlqR0AQxTC2/F3cpSjRFMH3CFPjoWvNqhC4OxPkDYNb2l8Mc1Me6D/KQ==",
|
||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/swagger-parser": {
|
"node_modules/punycode": {
|
||||||
"version": "10.0.3",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||||
"integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==",
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||||
"dependencies": {
|
|
||||||
"@apidevtools/swagger-parser": "10.0.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/validator": {
|
"node_modules/require-from-string": {
|
||||||
"version": "13.7.0",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||||
"integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
|
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.10"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/z-schema": {
|
"node_modules/sprintf-js": {
|
||||||
"version": "5.0.1",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||||
"integrity": "sha512-Gp8xU2lULhREqTWj9t4BEAeA7M835n4fWJ9KjGWksV3wmLUdOJo2hAr+QYvkVZIGOOTyeN274g1f95dKRsgYgQ==",
|
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
|
||||||
|
},
|
||||||
|
"node_modules/uri-js": {
|
||||||
|
"version": "4.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||||
|
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lodash.get": "^4.4.2",
|
"punycode": "^2.1.0"
|
||||||
"lodash.isequal": "^4.5.0",
|
|
||||||
"validator": "^13.6.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"z-schema": "bin/z-schema"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.0.0"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"commander": "^2.7.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apidevtools/json-schema-ref-parser": {
|
"@apidevtools/json-schema-ref-parser": {
|
||||||
"version": "9.0.9",
|
"version": "9.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz",
|
||||||
"integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==",
|
"integrity": "sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@jsdevtools/ono": "^7.1.3",
|
"@jsdevtools/ono": "^7.1.3",
|
||||||
"@types/json-schema": "^7.0.6",
|
|
||||||
"call-me-maybe": "^1.0.1",
|
"call-me-maybe": "^1.0.1",
|
||||||
"js-yaml": "^4.1.0"
|
"js-yaml": "^3.13.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@apidevtools/openapi-schemas": {
|
"@apidevtools/openapi-schemas": {
|
||||||
|
|
@ -184,16 +207,17 @@
|
||||||
"integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg=="
|
"integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg=="
|
||||||
},
|
},
|
||||||
"@apidevtools/swagger-parser": {
|
"@apidevtools/swagger-parser": {
|
||||||
"version": "10.0.3",
|
"version": "10.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz",
|
||||||
"integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==",
|
"integrity": "sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@apidevtools/json-schema-ref-parser": "^9.0.6",
|
"@apidevtools/json-schema-ref-parser": "9.0.6",
|
||||||
"@apidevtools/openapi-schemas": "^2.0.4",
|
"@apidevtools/openapi-schemas": "^2.1.0",
|
||||||
"@apidevtools/swagger-methods": "^3.0.2",
|
"@apidevtools/swagger-methods": "^3.0.2",
|
||||||
"@jsdevtools/ono": "^7.1.3",
|
"@jsdevtools/ono": "^7.1.3",
|
||||||
"call-me-maybe": "^1.0.1",
|
"ajv": "^8.6.3",
|
||||||
"z-schema": "^5.0.1"
|
"ajv-draft-04": "^1.0.0",
|
||||||
|
"call-me-maybe": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@jsdevtools/ono": {
|
"@jsdevtools/ono": {
|
||||||
|
|
@ -201,49 +225,64 @@
|
||||||
"resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
|
||||||
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
|
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
|
||||||
},
|
},
|
||||||
"@types/json-schema": {
|
|
||||||
"version": "7.0.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
|
|
||||||
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ=="
|
|
||||||
},
|
|
||||||
"abbrev": {
|
"abbrev": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
||||||
},
|
},
|
||||||
|
"ajv": {
|
||||||
|
"version": "8.11.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
|
||||||
|
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
|
||||||
|
"requires": {
|
||||||
|
"fast-deep-equal": "^3.1.1",
|
||||||
|
"json-schema-traverse": "^1.0.0",
|
||||||
|
"require-from-string": "^2.0.2",
|
||||||
|
"uri-js": "^4.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ajv-draft-04": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
|
||||||
|
"requires": {}
|
||||||
|
},
|
||||||
"argparse": {
|
"argparse": {
|
||||||
"version": "2.0.1",
|
"version": "1.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
|
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||||
|
"requires": {
|
||||||
|
"sprintf-js": "~1.0.2"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"call-me-maybe": {
|
"call-me-maybe": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
|
||||||
"integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
|
"integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw=="
|
||||||
},
|
},
|
||||||
"commander": {
|
"esprima": {
|
||||||
"version": "2.20.3",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
|
||||||
"optional": true
|
},
|
||||||
|
"fast-deep-equal": {
|
||||||
|
"version": "3.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "4.1.0",
|
"version": "3.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||||
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"argparse": "^2.0.1"
|
"argparse": "^1.0.7",
|
||||||
|
"esprima": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lodash.get": {
|
"json-schema-traverse": {
|
||||||
"version": "4.4.2",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||||
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
|
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
||||||
},
|
|
||||||
"lodash.isequal": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
|
||||||
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
|
|
||||||
},
|
},
|
||||||
"nopt": {
|
"nopt": {
|
||||||
"version": "3.0.6",
|
"version": "3.0.6",
|
||||||
|
|
@ -259,28 +298,27 @@
|
||||||
"integrity": "sha512-sR23YjmuwDSMsQVZDHbV9mPgi0RyniQlqR0AQxTC2/F3cpSjRFMH3CFPjoWvNqhC4OxPkDYNb2l8Mc1Me6D/KQ==",
|
"integrity": "sha512-sR23YjmuwDSMsQVZDHbV9mPgi0RyniQlqR0AQxTC2/F3cpSjRFMH3CFPjoWvNqhC4OxPkDYNb2l8Mc1Me6D/KQ==",
|
||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"swagger-parser": {
|
"punycode": {
|
||||||
"version": "10.0.3",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||||
"integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==",
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||||
"requires": {
|
|
||||||
"@apidevtools/swagger-parser": "10.0.3"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"validator": {
|
"require-from-string": {
|
||||||
"version": "13.7.0",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||||
"integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
|
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
|
||||||
},
|
},
|
||||||
"z-schema": {
|
"sprintf-js": {
|
||||||
"version": "5.0.1",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||||
"integrity": "sha512-Gp8xU2lULhREqTWj9t4BEAeA7M835n4fWJ9KjGWksV3wmLUdOJo2hAr+QYvkVZIGOOTyeN274g1f95dKRsgYgQ==",
|
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
|
||||||
|
},
|
||||||
|
"uri-js": {
|
||||||
|
"version": "4.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||||
|
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"commander": "^2.7.1",
|
"punycode": "^2.1.0"
|
||||||
"lodash.get": "^4.4.2",
|
|
||||||
"lodash.isequal": "^4.5.0",
|
|
||||||
"validator": "^13.6.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nopt": "^3.0.2",
|
"@apidevtools/swagger-parser": "^10.1.0",
|
||||||
"swagger-parser": "^10.0.3"
|
"nopt": "^3.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
var nopt = require("nopt");
|
var nopt = require("nopt");
|
||||||
var parser = require("swagger-parser");
|
var parser = require("@apidevtools/swagger-parser");
|
||||||
var path = require("path");
|
var path = require("path");
|
||||||
|
|
||||||
var opts = nopt({
|
var opts = nopt({
|
||||||
|
|
@ -14,8 +14,8 @@ var opts = nopt({
|
||||||
|
|
||||||
if (opts.help) {
|
if (opts.help) {
|
||||||
console.log(
|
console.log(
|
||||||
"Use swagger-parser to validate against Swagger 2.0\n"+
|
"Use swagger-parser to validate against OpenAPI 3.1.0\n" +
|
||||||
"Usage:\n"+
|
"Usage:\n" +
|
||||||
" node validator.js -s <schema_file_or_folder>"
|
" node validator.js -s <schema_file_or_folder>"
|
||||||
);
|
);
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
|
|
@ -26,7 +26,7 @@ if (!opts.schema) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var errFn = function(err, api) {
|
var errFn = function (err, api) {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -45,7 +45,7 @@ var errFn = function(err, api) {
|
||||||
function makeHandler(scope) {
|
function makeHandler(scope) {
|
||||||
if (!scope)
|
if (!scope)
|
||||||
scope = "Schema";
|
scope = "Schema";
|
||||||
return function(err, api, metadata) {
|
return function (err, api, metadata) {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error("%s is not valid.", scope || "Schema");
|
console.error("%s is not valid.", scope || "Schema");
|
||||||
errFn(err, api, metadata); // Won't return
|
errFn(err, api, metadata); // Won't return
|
||||||
|
|
@ -68,11 +68,11 @@ function makeHandler(scope) {
|
||||||
var isDir = fs.lstatSync(opts.schema).isDirectory();
|
var isDir = fs.lstatSync(opts.schema).isDirectory();
|
||||||
if (isDir) {
|
if (isDir) {
|
||||||
console.log("Checking directory %s for .yaml files...", opts.schema);
|
console.log("Checking directory %s for .yaml files...", opts.schema);
|
||||||
fs.readdir(opts.schema, function(err, files) {
|
fs.readdir(opts.schema, function (err, files) {
|
||||||
if (err) {
|
if (err) {
|
||||||
errFn(err); // Won't return
|
errFn(err); // Won't return
|
||||||
}
|
}
|
||||||
files.forEach(function(f) {
|
files.forEach(function (f) {
|
||||||
var suffix = ".yaml";
|
var suffix = ".yaml";
|
||||||
if (f.indexOf(suffix, f.length - suffix.length) > 0) {
|
if (f.indexOf(suffix, f.length - suffix.length) > 0) {
|
||||||
parser.validate(path.join(opts.schema, f), makeHandler(f));
|
parser.validate(path.join(opts.schema, f), makeHandler(f));
|
||||||
|
|
@ -80,7 +80,7 @@ if (isDir) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
parser.validate(opts.schema, makeHandler(opts.schema));
|
parser.validate(opts.schema, makeHandler(opts.schema));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue