Merged
Conversation
## 🧰 Changes As we're building a new major v30 release of `oas` this removes some long deprecated exports from `oas/types`: * [x] `isOAS30` has been removed, please use `isOpenAPI30` instead. * [x] `isOAS31` has been removed, please use `isOpenAPI31` instead.
## 🧰 Changes In preparation of a major breaking release to support `$ref` support within `oas` this enables Typescript `strict` mode to handle cases where we might have a `ReferenceObject` where we were previously expecting a dereferenced object. * [x] Enforced TS strict mode everywhere. Some function return types have changed as a result of this but only to enforce what these methods were already returning. * [x] Improved the documentation on (most) every library method, with links to the OpenAPI specification when appropriate. I've also made one other unrelated change to `Operation.getCallbacks()` so that it now always returns an array containing callbacks (or not). Previously if the operation had no callbacks it would return false, however that existence check is better suited for `Operation.hasCallbacks()`. --------- Co-authored-by: Darren Yong <contact.darrenyong@gmail.com> Co-authored-by: Maximilian Falco Widjaya <maximilianfalco@gmail.com> Co-authored-by: Darren Yong <41130056+darrenyong@users.noreply.github.com>
darrenyong
approved these changes
Feb 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🐳 Context
Because we are experience some pretty serious performance issues with large API definitions post-dereferencing we are adding general support for handling
$refpointers intooas, without requiring the need for a full dereference.Important
This is a major breaking change to
oas. Becauseoashas long assumed that the OpenAPI definition it contained was dereferenced this is a huge shift in departure so I expect there to be issues, and as such will be releasing this in v30 RCs until it's stable.📚 Accompanied work
dereferencemethod onOperation#1054🧠 Breaking changes
oas$refpointers on the following accessors:.getAuth().getPaths().getWebhooks()oas/operation.dereference(). This is a new alternative toOas.dereference()and allows you to dereference a single operation, rather than needing to dereference the entire API definition..getCallbacks()now always returns an array. Previously if the operation had no callbacks it would returnfalse, however that existence check is better suited forOperation.hasCallbacks().oas/typesisOAS30has been removed, please useisOpenAPI30instead.isOAS31has been removed, please useisOpenAPI31instead.oas/utilsfindSchemaDefinitionis no longer exported. If you need to dereference a$refpointer we suggest you either invokeOas.dereference()to dereference your entire API definition, use the newOperation.dereference()feature in this release for dereferencing a single API operation, or use a library like @apidevtools/json-schema-ref-parser for dereferencing.🧬 QA & Testing
I've written a good amount of new tests for these changes but the real Q&A will have to be done within our internal repository, and I expect this work as-is to contain issues so I'll be tagging RC's until it's fully ready for the general public.