APIDevTools / swagger-parser

Swagger 2.0 and OpenAPI 3.0 parser/validator
https://apitools.dev/swagger-parser
MIT License
1.09k stars 154 forks source link

V3 spec checks #198

Open stueynz opened 2 years ago

stueynz commented 2 years ago

Re-did all my changes from last June/July into the top of main branch. Hopefully can be picked up this time.

Added checks and validations for v3.0.x OpenAPI schemas to match the pre-existing Swagger (or v2.0) schema checks. Added more known-errors - now that we're checking v3.0.x schemas, various real-world APIs are naughty.

philsturgeon commented 2 years ago

Thank you @stueynz! Checks are failing on lint, can you run npm run lint and make sure its not moaning about anything before resubmitting?

stueynz commented 2 years ago

Thank you @stueynz! Checks are failing on lint, can you run npm run lint and make sure its not moaning about anything before resubmitting?

Sure thing ... I'm assuming that warnings from things I haven't touched are ok. e.g explicit any in index.d.ts

stueynz commented 2 years ago

Added a few more checks when doing validateSpec() - OpenAPI keeps what used to be in #/definitions under #/components/{schemas, requestBodies, responses, parameters} so they all need to be checked for weirdness.

Also, when API doesn't have circular $refs we can recursively check schemas of all the properties when doing validateSchema()

philsturgeon commented 2 years ago

Finally, I've managed to unblock the release pipeline and we've got a stable test suite again. PHEW.

Sadly we cannot use optional chaining, and I'm not entirely sure why. I think it might be a dependency of simplifyify being out of date or something, but nothing I can do on my end is getting past an error with lib/validation/spec.js having a unexpected . on line 42.